如何修改 Postfix 的最大邮件大小限制?

Postfix 邮件大小由 message_size_limit(单封邮件,默认 10MB)与 mailbox_size_limit(邮箱容量)控制;用 postconf -e 修改后 reload。注意对方服务器与中间网关也有自己的限制。

最佳实践
如何修改 Postfix 的最大邮件大小限制?封面

核心参数:message_size_limit(单封邮件的最大字节数,含附件编码膨胀,默认 10MB ≈ 10240000)。用 postconf -e "message_size_limit = 20971520" 改为 20MB 并 reload 即生效。如需同时调整邮箱总容量,再改 mailbox_size_limit

修改步骤

# 1. 查看当前值
postconf message_size_limit mailbox_size_limit

# 2. 修改(20MB 示例;单位:字节)
sudo postconf -e "message_size_limit = 20971520"
sudo postconf -e "mailbox_size_limit = 0"      # 0 = 邮箱容量不限

# 3. 生效
sudo systemctl reload postfix

也可以直接编辑 /etc/postfix/main.cf 改对应行,效果相同。

换算要点

  • 附件经 Base64 编码后体积膨胀约 33%:想支持 15MB 附件,邮件上限至少设 20MB
  • 常用值:20MB = 20971520,50MB = 52428800,100MB = 104857600

调大未必就够:链路上的其他限制

你的服务器放行 50MB,不代表邮件能送达:

  1. 收件方服务器:对方 message_size_limit 比你小照样退信(Gmail 收信上限 25MB)
  2. 中间网关/反垃圾设备:有自己的体积阈值
  3. 客户端:Outlook 等客户端自身也有附件限制

大附件的正确姿势是发链接(网盘/对象存储预签名 URL),而不是硬抬邮件体积。

验证

postconf -n | grep size_limit
# 发测试信后看日志
tail -f /var/log/mail.log

超限的邮件在日志里会有 552 5.3.4 Message size exceeds ... 之类的记录。

观测云对照

退信原因归类统计。 mail.log 经 DataKit 采集与 Pipeline 解析后,552 体积超限类退信可单独统计告警——业务反馈"附件发不出去"时,数据先说话。

常见问题(FAQ)

Q:message_size_limit 设 0 是不限吗?
A:不是。0 对该参数意味着用默认;要"不限"只能设一个足够大的值。mailbox_size_limit 的 0 才是不限。

Q:只发邮件的服务器需要管 mailbox_size_limit 吗?
A:不需要,那是本地邮箱投递的容量限制,纯发送网关无本地邮箱。

Q:虚拟邮箱(virtual mailbox)受 mailbox_size_limit 管吗?
A:不受。虚拟邮箱用 virtual_mailbox_limit 控制。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台