邮件服务器被用作开放中继(Open Relay)怎么自查和关闭?

邮件服务器被用作开放中继(Open Relay)怎么自查和关闭?
严重性:开放中继意味着任何人可以通过你的服务器转发邮件——垃圾邮件发送者会滥用你的 IP 和域名发信,导致你的发信信誉迅速恶化,IP 被列入 RBL(实时黑名单),正常邮件被拒收。RFC 5321 Section 3.6 明确要求 SMTP 服务器必须限制中继。
自检方法:
① 在线检测工具——搜索 "Open Relay Test" 使用公开的中继检测服务(如 mxtoolbox.com 的 SMTP 检测),输入你的邮件服务器域名和 IP;
② 手动测试——从外部 IP telnet 你的 25 端口,尝试发一封邮件到外部域:
telnet mail.example.com 25
EHLO test.com
MAIL FROM:<test@test.com>
RCPT TO:<external@gmail.com>
# 如果返回 250 OK 而不是 554 Relay access denied → 你是 Open Relay!
③ 查看日志——grep "Relay access denied" /var/log/mail.log | wc -l 如果为零且从外部可中继,说明配置有问题。
关闭方法(Postfix):
# 编辑 /etc/postfix/main.cf,确保以下配置存在且正确:
# 1. 定义本地网络(仅允许内部网段不使用认证中继)
mynetworks = 127.0.0.0/8, [::1]/128, 10.0.0.0/8

# 2. 定义本服务器管理的域(仅这些域的邮件可被最终投递,不可被中继出去)
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 3. 明确的中继限制(多重防护)
smtpd_relay_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    defer_unauth_destination

# 4. 重启
systemctl reload postfix
设置后重新执行自检确认 Open Relay 已关闭。如果发现已被列入 RBL,在关闭中继后向对应 RBL 服务申请移除。

📎 RFC 5321 Section 3.6 中继限制;RFC 4954 SMTP AUTH;NIST SP 800-45 邮件安全