如何查看 Postfix 的邮件队列大小?

postqueue -p 列出队列明细与总数;只看数量用 postqueue -p | tail -1 或 mailq;队列积压要查 mail 日志找卡信原因,postsuper 可清理。本文给出完整命令。

最佳实践
如何查看 Postfix 的邮件队列大小?封面

核心命令:postqueue -p——列出队列里每封信的 ID、大小、到达时间、收发件人,末尾有汇总行(共 K 封、总大小)。只看汇总:postqueue -p | tail -n 1。队列不为空时,重点不是"有多少",而是"为什么堵"。

查看命令

# 明细 + 汇总
postqueue -p

# 只看汇总行
postqueue -p | tail -n 1
# 输出示例:-- 10 Kbytes in 5 Requests.

空队列显示 Mail queue is empty

队列堵了怎么办

1. 强制重投一遍

postqueue -f     # flush,立即重试所有排队邮件

2. 查卡住的原因

tail -100 /var/log/mail.log    # Debian/Ubuntu
tail -100 /var/log/maillog     # RHEL/CentOS

常见原因:目标服务器拒收(550)、DNS 解析失败、灰名单(临时 450,会自动重试)、外发 25 端口被云厂商封禁。

3. 清理队列

sudo postsuper -d 队列ID        # 删指定信
sudo postsuper -d ALL           # 清空队列(⚠️ 全删)
sudo postsuper -d ALL deferred  # 只清延迟队列

队列文件位置

队列物理上在 /var/spool/postfix/ 下的 active/deferred/hold 等子目录,但别手动删文件,一律用 postqueue/postsuper 工具操作。

观测云对照

邮件队列纳入指标监控。 队列长度是邮件服务健康的关键指标:用 DataKit 采集 mail.log 并通过 Pipeline 统计队列堆积、退信率;队列长度超过阈值(如 50 封)用监控器告警,避免退信风暴无人知晓。

常见问题(FAQ)

Q:队列里的信会重试多久?
A:默认 5 天(maximal_queue_lifetime),期间按退避策略重投,超期退回发件人。

Q:大量同一发件人的信积压?
A:可能是账号被盗发垃圾邮件或被恶意利用,先 hold(postsuper -h)再排查账户安全。

Q:hold 队列的信怎么恢复投递?
A:postsuper -H 队列ID 解除 hold,或 -H ALL 全部放回。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台