我一直在 Postfix 文档和其他文档中徒劳地寻找,以了解 mailq 命令和 qshape 之间的输出差异。(根本问题是邮件传递速度慢。)
计算邮件队列中的邮件数量(mailq 命令的输出,或者查看 /var/spool/postfix/ 的子文件夹)
邮件投递 0 传入 0 活跃 4644 推迟 707 延期 698
我本来期望 qshape 命令能够得出与此类似的数字,但是它显示(当发出没有任何选项的 qshape 时,即 active + coming ):
# qshape 温度 5 10 20 40 80 160 320 640 1280 1280+ 总计 32 0 2 0 10 4 8 8 0 0 0 mydomain1com 30 0 2 0 8 4 8 8 0 0 0 mydomain2.net 2 0 0 0 2 0 0 0 0 0 0
因此,根据 qshape 文档,这类似于“健康队列”的图片。
但是这难道不是告诉我活动队列中只有 32 封邮件,而 mailq 命令同时显示有 4644 封吗?这种差异到底是怎么回事?
或者说这种差异有诊断价值吗?
据我了解,活动队列中的邮件是 Postfix 当前尝试发送的邮件。如果该活动队列中有 4644 封邮件,则必须有大量“暂停”等待 SMTP 连接(即没有实际错误,例如“找到域”等) - 这是正确的还是有其他含义?
答案1
由于几乎不看qshape
代码(它基于 Perl),因此此工具独立于mailq
命令。它的工作原理是
- 直接扫描queue_directory的内容(
/var/spool/postfix/
就你的情况而言) - 通过解析队列文件来检查文件内容的完整性。请参阅github 上的代码,特别是第 219-270 行(抱歉,我不太了解 Perl)
所以就你的情况来说,或许队列文件未通过健全性检查 2。
如果你感兴趣的话,最好把这个问题发布到 postfix 邮件列表上[电子邮件保护]。qshape
作者(Victor Duchovni)是该名单上的活跃成员。