Linux邮件服务需禁用开放中继:检查服务运行与端口监听,限制Postfix仅本地提交,关闭SASL认证,卸载无关组件,并通过telnet或MXToolbox验证中继已禁用。

Linux系统默认邮件服务(如Postfix、Sendmail)若配置不当,可能被攻击者利用为开放中继(Open Relay),导致服务器被用于发送垃圾邮件,进而被列入黑名单、影响业务邮件送达。禁用不必要的邮件转发功能并加固中继策略,是基础但关键的安全措施。
确认当前邮件服务是否运行及监听范围
很多服务器其实并不需要对外提供SMTP服务,但默认安装或残留配置可能让服务监听在0.0.0.0:25上,暴露中继风险。
- 检查是否运行邮件服务:systemctl list-units --type=service | grep -E "(postfix|sendmail|exim)"
- 查看监听端口:ss -tlnp | grep ":25",重点关注Local Address是否为127.0.0.1:25(仅本地)还是*:25(全网可访问)
- 若无需发信功能(如纯Web服务器、数据库服务器),直接停用并禁启:systemctl stop postfix && systemctl disable postfix
限制Postfix仅允许本地提交(最常用场景)
对于需发送监控告警、日志通知等本地邮件的服务器,应确保Postfix不接受外部IP的MAIL FROM或RCPT TO请求,只响应127.0.0.1/::1。
- 编辑/etc/postfix/main.cf,确认以下参数:
- mynetworks = 127.0.0.0/8 [::1]/128 —— 仅信任本地网络
- inet_interfaces = 127.0.0.1 或 inet_interfaces = loopback-only —— 不监听公网接口
- smtpd_relay_restrictions = permit_mynetworks reject_unauth_destination —— 明确拒绝非本机网络的中继请求
- 修改后执行:postfix reload
关闭不必要的SMTP认证与SASL中继入口
若未部署邮箱系统或用户SMTP发信服务,应禁用SASL认证相关模块,避免被暴力破解后滥用为中继。
- 检查/etc/postfix/main.cf中是否含smtpd_sasl_auth_enable = yes;如有且无真实需求,设为no
- 确认smtpd_recipient_restrictions中不含宽松规则如permit_sasl_authenticated(除非你确实运行了带认证的邮件网关)
- 卸载无关组件可进一步减面:apt remove sasl2-bin libsasl2-modules(Debian/Ubuntu)或yum remove cyrus-sasl*(RHEL/CentOS)
验证中继是否已关闭
加固后务必实测,防止配置遗漏。可用telnet或swaks从外部机器模拟发信尝试:
- 从另一台服务器执行:telnet your-server-ip 25,然后手动输入:
HELO test.com
MAIL FROM:<test@domain.com>
RCPT TO:<victim@gmail.com>
若返回554 5.7.1: Relay access denied ,说明中继已禁用成功 - 也可用在线工具如MXToolbox SMTP Diagnostics远程检测开放中继










