
Tengo un script Perl que utiliza NET::IMAPClient
y MIME::Parser
que simplemente lee nuevos correos electrónicos de un servidor IMAP y guarda los archivos adjuntos en el disco.
Mi pregunta es: ¿cuál es la mejor manera de ejecutar este script tan pronto como haya un nuevo correo electrónico? Puedo usar cron para ejecutar periódicamente el script, incluso podría verificarlo cada pocos segundos, pero sospecho que hay una manera mejor.
Lo ideal sería actuar inmediatamente al recibir un correo electrónico, como un evento del sistema. ¿Cuáles son el software y las técnicas comunes para lograr esto? Estoy usando un sistema Debian.
Respuesta1
En general, sigues comprobando el correo electrónico a menos que, como menciona@JoelDavis, el servidor se puede ampliar con algún comando push.
Además, si su servidor de correo electrónico lo admite, puede utilizar la extensión IDLE para IMAP4:
IMAPClient tiene soporte nativo para IDLE:
Respuesta2
En general, los programas que transfieren datos funcionan mediante "encuesta" o "empuje". A menos que el servidor IMAP pueda modificarse para enviar los datos al servidor con el script Perl, sólo podrá sondear periódicamente los eventos.
Una alternativa cron
sería simplemente demonizar el script Perl para que funcione sleep
después de cada verificación. Esto le ahorra execve
y, dependiendo de la frecuencia con la que realice el sondeo, incluso podría ahorrar el tiempo necesario para establecer la conexión TCP.