我正在运行 rails 应用程序,它使用 postfix 作为中继发送电子邮件。以下是流程
Rails -> Resque 工作人员 -> Postfix -> SES -> 发送电子邮件给客户
我的问题是我想找到 rails 和 postfix 日志之间的关系,以确保没有一封电子邮件丢失并且正确发送给收件人。
例如,如果 rails 日志显示,电子邮件将发送到“[电子邮件保护]“然后我可以检查电子邮件发送到的日志[电子邮件保护],我也想在 postfix 中检查同一封电子邮件。当然,它会在那里有一个条目,但要准确无误地找出该特定电子邮件是否使用 postifx 发送?就像收件人可以向[电子邮件保护],或者可能是 50,具有不同的时间间隔,那么如何在 rails 应用程序中添加任何特殊标签、ID 或任何内容,以便可以在 postifx 日志中跟踪它?
我希望问题清楚了。
谢谢
答案1
如果您的 Rails 使用 SMTP 连接到 Postfix,您会对以下250
响应感兴趣:
250 2.0.0 Ok: queued as 41F1A40412
如果你让 Rails 记录这个 ID,那么就可以很容易地从 Postfix 日志中找到后来发生的事情:
$ 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
至少该deliver.now!
方法在强制立即发送时会显示此响应。如果使用正常方法没有发生这种情况,deliver
那可能是因为 SMTP 在设计上明确了谁有责任传递消息:只有当下一跳通过响应接受责任时,它才应该从任何队列中删除250 Ok
。