我们在 CentOS 服务器上使用 postfix 接收传入邮件,然后进行一些过滤,然后将邮件发送到我们的真实邮件服务器,我们将在那里接收邮件。postfix 服务器在尝试发送到我们的真实邮件服务器时有时会出现较长的延迟。我们将看到如下传递日志:
Sep 01 10:09:52 <hostname> postfix/pickup[18057]: 4mGC2s3EdYa3LNN4: uid=12345 from=<sender-email> orig_id=4oGC2h1ZU4a3LNLd
Sep 01 10:09:52 <hostname> postfix/cleanup[28788]: 4mGC2s3EdYa3LNN4: message-id=<id>
Sep 01 10:09:53 <hostname> postfix/qmgr[28730]: 4mGC2s3EdYa3LNN4: from=<sender-email>, size=8874, nrcpt=1 (queue active)
Sep 01 10:12:44 <hostname> postfix/qmgr[24361]: 4mGC2s3EdYa3LNN4: from=<sender-email>, size=8874, nrcpt=1 (queue active)
Sep 01 10:15:49 <hostname> postfix/qmgr[20098]: 4mGC2s3EdYa3LNN4: from=<sender-email>, size=8874, nrcpt=1 (queue active)
Sep 01 10:17:50 <hostname> postfix/qmgr[29129]: 4mGC2s3EdYa3LNN4: from=<sender-email>, size=8874, nrcpt=1 (queue active)
Sep 01 10:20:09 <hostname> postfix/qmgr[30381]: 4mGC2s3EdYa3LNN4: from=<sender-email>, size=8874, nrcpt=1 (queue active)
Sep 01 10:22:05 <hostname> postfix/qmgr[15028]: 4mGC2s3EdYa3LNN4: from=<sender-email>, size=8874, nrcpt=1 (queue active)
Sep 01 10:25:11 <hostname> postfix/qmgr[12533]: 4mGC2s3EdYa3LNN4: from=<sender-email>, size=8874, nrcpt=1 (queue active)
Sep 01 10:28:33 <hostname> postfix/qmgr[30857]: 4mGC2s3EdYa3LNN4: from=<sender-email>, size=8874, nrcpt=1 (queue active)
Sep 01 10:30:16 <hostname> postfix/qmgr[21858]: 4mGC2s3EdYa3LNN4: from=<sender-email>, size=8874, nrcpt=1 (queue active)
Sep 01 10:32:41 <hostname> postfix/smtp[26435]: 4mGC2s3EdYa3LNN4: to=<[email protected]>, relay=server.example.com[x.x.x.x]:25, delay=1379, delays=1234/132/3.5/9.6, dsn=2.0.0, status=sent (250 OK)
Sep 01 10:32:41 <hostname> postfix/qmgr[12857]: 4mGC2s3EdYa3LNN4: from=<sender-email>, size=8874, nrcpt=1 (queue active)
目前我们还无法发现在这种情况下“(队列处于活动状态)”消息意味着什么。“(队列处于活动状态)”消息的原因是什么?为什么会导致消息延迟超过 1000 秒?
答案1
目前我们还无法发现“(队列活跃)”
Postfix 为待处理的邮件维护队列,“队列活跃”表示队列中有邮件。
要查看排队邮件的问题:
sudo mailq
或者
sudo postqueue -p
“(队列活动)”消息的原因是什么。
由于传递错误,邮件被排队。此类错误可能是:DNS 错误、邮箱已满或不存在邮件收件人。
为什么这会导致消息延迟超过 1000 秒
队列时间在 main.cf 文件中配置。根据 postfix文档
尝试传递延期消息之间的最短时间;在 Postfix 2.4 之前,默认值为 1000 秒。
如果 1000 秒对你来说太长,你可以更改计时器。我建议你阅读整个后缀调优指南在进行任何更改之前。
最后,您可以使用以下方法刷新队列(强制后缀立即处理队列)
sudo postqueue -f
或者
sudo postfix flush
答案2
我偶然发现了这个网站,上面有一些有趣的信息:
http://en.redinskala.com/postfix-maillog-interpretation/
我发现了几件事:
1)他们给出了一个示例日志行:
1 月 2 日 20:31:17 tmcent01 postfix/qmgr[26454]: B58C4330038: from=, size=711, nrcpt=1 (队列活跃)
有了这个解释,我的重点又加了一点:
第 4 行表示语法修正已完成现在邮件符合 RFC 822 标准,从此刻起,邮件就落入“qmgr”守护进程的手中。此守护进程负责将 qmgr 留下的邮件移至相应的队列。Qmgr 不断检查传入队列中哪些邮件具有“700”权限,如果看到这样的文件,它会自动将其发送到“活动”队列。这是因为,任何由 cleanup 留下的具有“700”权限的邮件都被视为已准备好传递到其最终目的地,无论是本地邮件还是外部邮件。在这一行中,我们可以看到发件人的邮箱、收件人的数量、邮件的总大小(到目前为止,因为在收件人的邮箱中收到邮件时最终大小可能会发生变化)以及邮件正在移动到的队列。
因此看起来“队列活动”可能意味着消息正在被移动到活动队列。
2)据报道,“延误”顺序如下:
smtpd、cleanup、qmgr 和 local,在邮件不是内部邮件的情况下,您将看到最后一次是“smtp”守护进程的最后一次,而不是“本地”的最后一次
这可能与此处列出的顺序不同:
因此,我认为,如果我看到多个“(队列活动)”条目,则可能是由于后缀重新加载或其他原因,恰好在正确的时间,从而导致将qmgr
消息重新排队到“活动”队列中。这是我目前的猜测,基于以下内容:
http://postfix.1071664.n5.nabble.com/Understanding-delays-td10263.html
谁杀死了您的队列管理器并重新启动了 Postfix?现在该消息必须重新进入活动队列。不要从 cron 频繁“重新加载”,...