我在使用代表客户发送电子邮件的中继邮件服务器时遇到了一个奇怪的情况。
我们当前的基础结构由 2 个配置了 Postfix 的邮件中继服务器组成,它们接收来自我们内部应用程序的所有电子邮件,并负责将它们发送到互联网。
现在我们看到的问题是,这些中继收到的所有电子邮件中约有 20% 都没有发送出去,并消失在活动队列中。
下面是一个 Postfix 日志示例,显示了未离开活动队列的电子邮件:
Feb 10 17:12:02 relay02 postfix/smtpd[31701]: EFF07209F6A3: client=coreapps02[10.11.12.202]
Feb 10 17:12:02 relay02 postfix/cleanup[10949]: EFF07209F6A3: message-id=<[email protected]>
Feb 10 17:12:02 relay02 postfix/qmgr[23160]: EFF07209F6A3: from=<[email protected]>, size=3581, nrcpt=1 (queue active)
由于目录中不存在该消息,因此该消息似乎已丢失/var/spool/postfix/active
。
以下是大约在同一时间发送到互联网的电子邮件示例:
Feb 10 17:12:02 relay02 postfix/smtpd[31701]: D8F67209F6AF: client=coreapps02[10.11.12.202]
Feb 10 17:12:02 relay02 postfix/cleanup[10949]: D8F67209F6AF: message-id=<[email protected]>
Feb 10 17:12:02 relay02 postfix/qmgr[23160]: D8F67209F6AF: from=<[email protected]>, size=3617, nrcpt=1 (queue active)
Feb 10 17:12:03 relay02 postfix/smtp[10738]: D8F67209F6AF: to=<[email protected]>, relay=cluster1.us.messagelabs.com[216.82.241.131]:25, conn_use=2, delay=0.18, delays=0/0/0.02/0.16, dsn=2.0.0, status=sent (250 ok 1486746723 qp 65173 server-8.tower-54.messagelabs.com!1486746722!118816510!2)
Feb 10 17:12:03 relay02 postfix/qmgr[23160]: D8F67209F6AF: removed
知道为什么 Postfix 会丢失部分(约 20%)消息吗?
答案1
Rsyslog 和 Systemd 日志具有速率限制,这导致即使电子邮件得到正确处理,一些 Postfix 消息也永远不会被记录。
我按照本指南删除了 rsyslog 速率限制:https://support.asperasoft.com/hc/en-us/articles/216128628-如何禁用-rsyslog-rate-limiting并使用这个来设置 systemd 日志:https://bani.com.br/2015/06/systemd-journal-what-does-systemd-journal-suppressed-n-messages-from-system-slice-mean/