Postfix main.cf 里 smtpd_helo_required = yes 会导致什么后果?

47 Postfix main.cf 里 smtpd_helo_required = yes 会导致什么后果?
原因

smtpd_helo_required = yes 强制要求发信方在 SMTP 会话开始时必须发送 HELO/EHLO 命令,否则拒绝连接。RFC 5321 §3.1 规定 HELO 是可选步骤,默认 Postfix 不强制要求。开启后兼容性问题最严重的是老旧设备和脚本。

操作

1. 受影响的第一批:老旧扫描仪/打印机。大量嵌入式设备(如 HP、Canon 办公室网络扫描仪、复印机)的 SMTP 客户端实现不完整,不会发送 HELO,直接跳 MAIL FROM。开启后这些设备报 503 5.5.2 Send hello first。无解,除非回到 no。
2. 受影响第二批:硬编码脚本。用 raw socket 发 SMTP 的 Python shell 脚本、bash telnet 运维脚本,如果没写 HELO 步骤则挂掉。
3. 不影响正常 MTA 和邮件客户端。Postfix、Exim、Outlook、Thunderbird、Gmail 等标准实现都会发 EHLO/HELO,不受影响。
4. 决策建议:如果你管理内部邮件系统且环境内有嵌入式设备或自定义脚本发信,建议保持默认 no。如果你是公网 MX(收外部邮件),启用 yes 能阻断部分低端垃圾邮件僵尸(bot 不发送 HELO 的比率较高)。
5. 验证命令:postconf smtpd_helo_required 查看当前值。

RFC 5321 §3.1 (SMTP Model) · Postfix SMTPD(8) manual page · RFC 4954 (SMTP AUTH)