Práticas de intervalo de repetição de fila de email

8

Estou configurando uma fila de correio personalizada. O problema é que pode haver erros ao enviar e-mail. Normalmente, não se sabe o motivo pelo qual o correio não chegou ao seu destino. Portanto, a solução mais simplista é tentar enviar o email novamente. Aqui estão alguns algoritmos que eu conheço de boca:

  • Duplique o tempo na fila para a próxima nova tentativa, iniciando em algum momento: 1 min, 2 min, 4 min, etc.
  • Especifique uma série de intervalos (que são um caso geral da opção anterior): 5 min, 5 min, 10 min, 30 min, etc.

Em algum momento, será inútil tentar enviar o e-mail novamente. De qualquer forma, o sistema inclui um log para emails não enviados.

O que você sabe sobre boas práticas em torno deste assunto? O que é um intervalo de espera "bom"? Pelo menos, quais fatos devo levar em consideração para escolher os intervalos?

Andras Gyomrey
fonte

Respostas:

6

Você deve seguir a RFC 5321, que declara explicitamente como implementar estratégias de nova tentativa: http://tools.ietf.org/html/rfc5321#section-4.5.4

Você precisa ler (e entender!) Completamente este RFC quando estiver tentando implementar seu próprio servidor de email. Mas devo enfatizar explicitamente que quase não há necessidade de implementar seu próprio servidor de email (cliente). Existem muitas soluções (testadas!) Já existentes que são produtivas por anos e décadas. Portanto, use o software existente em vez de começar do zero. Não vale a pena o problema que você encontrará. Você está ciente do IPv6? Se não, você deveria!

mailq
fonte
3
Naturalmente, não existe uma obrigação difícil de cumprir as RFCs, mas é altamente recomendável que o sistema precise trabalhar na Internet algum dia. Embora possa haver razões para implementar uma própria fila de correio, concordo plenamente que o código existente usado no software do servidor de correio deve ser reutilizado em vez de reinventar a roda.
the-wabbit