
Eu tenho um script Perl que usa NET::IMAPClient
e MIME::Parser
que simplesmente lê novos e-mails de um servidor IMAP e salva todos os anexos em disco.
Minha pergunta é: qual a melhor forma de executar esse script assim que houver um novo email? Posso usar o cron para executar o script periodicamente, posso até verificar a cada poucos segundos, mas suspeito que haja uma maneira melhor.
Idealmente, eu agiria imediatamente ao receber um e-mail, como um evento do sistema. Quais são os softwares e técnicas comuns para conseguir isso? Estou usando um sistema Debian.
Responder1
Em geral, você continua verificando e-mails, a menos que, conforme mencionado por@JoelDavis, o servidor pode ser estendido com algum comando push.
Além disso, se o seu servidor de e-mail suportar, você poderá usar a extensão IDLE para IMAP4:
O IMAPClient possui suporte nativo para IDLE:
Responder2
Em geral, os programas que transferem dados operam por “poll” ou “push”. A menos que o servidor IMAP possa ser modificado para enviar os dados ao servidor com o script perl nele, você só poderá pesquisar eventos periodicamente.
Uma alternativa cron
seria apenas daemonizar o script perl para que ele fosse executado sleep
após cada verificação. Isso economiza execve
e dependendo da frequência com que você pesquisa, você pode até economizar o tempo necessário para estabelecer a conexão TCP