Receber e-mails por IMAP e analisar com um script com o mínimo de atraso

1

Eu tenho um script Perl que usa NET::IMAPClient e MIME::Parser , que simplesmente lê novos e-mails de um servidor IMAP e salva anexos no disco.

Minha pergunta é: qual é a melhor maneira de executar esse script assim que houver um novo e-mail? Eu posso usar cron para executar periodicamente o script, eu poderia verificar a cada poucos segundos, mas eu suspeito que há uma maneira melhor.

Idealmente, eu agiria imediatamente após o recebimento de um email, como um evento do sistema. Quais são os softwares e técnicas comuns para conseguir isso? Eu estou usando um sistema Debian.

    
por BryanK 25.06.2014 / 17:37

2 respostas

3

Em geral, você continua checando por e-mail, a menos que, como mencionado por @JoelDavis , o servidor possa ser estendido com algum comando push.

Além disso, se o seu servidor de e-mail suportar, pode-se usar a extensão IDLE para o IMAP4:

O IMAPClient tem suporte nativo para o IDLE:

por 25.06.2014 / 19:31
2

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 para o servidor com o script perl, você poderá consultar periodicamente os eventos.

Uma alternativa para cron seria simplesmente daemonizar o script perl para que ele vá para sleep após cada verificação. Isso economiza um execve e, dependendo da frequência de pesquisa, você pode até economizar o tempo necessário para estabelecer a conexão TCP

    
por 25.06.2014 / 19:24

Tags