Recibir correos electrónicos a través de IMAP y analizarlos con un script con un retraso mínimo

Recibir correos electrónicos a través de IMAP y analizarlos con un script con un retraso mínimo

Tengo un script Perl que utiliza NET::IMAPClienty MIME::Parserque 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 cronsería simplemente demonizar el script Perl para que funcione sleepdespués de cada verificación. Esto le ahorra execvey, dependiendo de la frecuencia con la que realice el sondeo, incluso podría ahorrar el tiempo necesario para establecer la conexión TCP.

información relacionada