邮件服务器怎么配置才能不被人当做开放中继(open relay)利用?

邮件服务器怎么配置才能不被人当做开放中继(open relay)利用?
什么是开放中继:RFC 5321 §4.4 定义了 SMTP 中继行为——开放中继(open relay)指 SMTP 服务器允许任何非授权用户通过它发邮件到任何目标域。一旦被扫描到,服务器会在几个小时内被垃圾邮件发送者纳入分发列表,IP 迅速进入 RBL(实时黑名单),所有正常邮件都将受影响。
Step 1 — 收紧 mynetworks:在 Postfix 的 main.cf 中,mynetworks 参数只包含本地回环(127.0.0.0/8)和授权的内网子网,绝对不要包含 0.0.0.0/0 或过大的 CIDR 段。
Step 2 — 清空 relay_domains:relay_domains 参数默认值为空,即不中继任何外部域。不要手动填入泛域名或 * 通配符。如果对接邮件网关需要中继特定域,明确列出且仅限内部域。
Step 3 — 设置 relay 安全锁:smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination。这是 Postfix 2.10+ 推荐的三层中继控制——先放行本地网络中的合法请求,再放行通过 SASL 认证的用户,其他一切中继请求直接拒绝。
Step 4 — 保护收件人限制链:如果提供 SASL 认证远程发信(如员工出差用客户端发信),smtpd_recipient_restrictions 中确保 permit_sasl_authenticatedpermit_mynetworks 之后,且列表以 rejectdefer 结尾。
自查与修复:用 MXToolbox Open Relay Test 工具从外部发起中继测试,确认服务器不会转发非授权的第三方邮件。如果发现已是 open relay,立即修复配置并检查 mailq 队列,清空中继产生的垃圾邮件残余。

📎 RFC 5321 §4.4 SMTP Relay;Postfix SMTPD_ACCESS_README