
Tenho um aplicativo Rails em execução, que envia e-mails usando o postfix como retransmissão. Aqui está o fluxo
Rails -> Resque trabalhadores -> Postfix -> SES -> enviar e-mail para clientes
meu problema é que quero encontrar uma relação entre os logs do Rails e do postfix, para garantir que nem mesmo um único e-mail seja perdido e enviado corretamente ao destinatário.
por exemplo, se os logs do Rails forem exibidos, o e-mail será enviado para "[e-mail protegido]"então posso verificar os registros para os quais o e-mail foi enviado[e-mail protegido], e também quero verificar o mesmo e-mail no postfix. Claro que terá uma entrada lá, mas para ser preciso e preciso descobrir se aquele e-mail específico foi enviado usando postifx ou não? como um destinatário pode enviar 100 e-mails para[e-mail protegido], ou pode ser 50, com intervalo de tempo diferente, então como posso adicionar qualquer TAG especial, um ID ou qualquer coisa no aplicativo Rails, que possa rastreá-lo nos logs postifx?
Espero que o problema esteja claro.
Obrigado
Responder1
Se o seu Rails usa SMTP para conexões com o Postfix, você está interessado na 250
resposta:
250 2.0.0 Ok: queued as 41F1A40412
Se você fizer com que seu Rails registre esse ID, será fácil encontrar nos logs do Postfix o que aconteceu com ele posteriormente:
$ grep 41F1A40412 /var/log/mail.log
postfix/smtpd[1900]: 41F1A40412: client=localhost[127.0.0.1]
postfix/cleanup[1903]: 41F1A40412: message-id=<[email protected]>
postfix/qmgr[29213]: 41F1A40412: from=<[email protected]>, size=299, nrcpt=1 (queue active)
postfix/smtp[1904]: 41F1A40412: to=<[email protected]>,
relay=example.net[198.51.100.51]:25, delay=14, delays=13/0.07/0.26/0.71, dsn=2.0.0,
status=sent (250 2.0.0 OK 5D47140412)
postfix/qmgr[29213]: 41F1A40412: removed
Pelo menos o deliver.now!
método mostra esta resposta pois força o envio imediato. Se isso não acontecer com o deliver
método normal, provavelmente é porque o SMTP por design não é ambíguo sobre quem tem a responsabilidade de entregar a mensagem: ele só deve ser removido de qualquer fila quando o próximo salto aceitar a responsabilidade pela própria 250 Ok
resposta.