核心是分三层验证:本地连通性、网络可达性、服务商策略限制;25端口被云厂商默认封禁是主因,需用nc/telnet测试连接,查安全组与防火墙规则,并通过465/587端口对比验证,结合maillog日志定位阻断环节。

Linux中排查SMTP 25端口是否被封禁,核心是分三层验证:本地连通性、网络可达性、服务商策略限制。25端口被封是云服务器(如阿里云、腾讯云)的普遍策略,不是配置错误,而是主动拦截。
一、本地能否发起连接(检查本机出站)
运行以下命令测试是否能向外部SMTP服务器发起TCP连接:
- nc -zv smtp.qq.com 25 —— 若显示 Connection refused 或 timeout,说明连接失败
- telnet smtp.163.com 25 —— 若卡在 Trying... 或直接退出,也表明不通
- 若返回 succeeded 或出现 220 开头的SMTP欢迎响应,说明本机到目标IP:25是通的(但不等于没被中间设备拦截)
二、确认是否被云厂商或防火墙拦截
即使本地命令能通,也可能在出口被云平台拦截。关键判断依据:
- 查安全组规则:登录云控制台 → 找对应ECS实例 → 进入“安全组” → 看出方向规则是否放行 25/tcp;多数默认规则不包含25端口
- 查系统防火墙:sudo ufw status 或 sudo iptables -L OUTPUT -n,确认没有 REJECT 或 DROP 25端口的出站规则
- 注意:阿里云、华为云等明确说明25端口默认禁用,需单独提交工单申请解封(且常被拒),不建议强依赖25
三、用替代端口快速验证是否真是25的问题
如果25不通,但业务急需发信,可立即换465或587测试:
- nc -zv smtp.qq.com 465 和 nc -zv smtp.qq.com 587 —— 多数邮箱对这两个端口开放更宽松
- 若465/587能通,而25超时,基本锁定为“25被封”,不是DNS、密码或配置问题
- 此时应改用 mailx 配置 smtps://smtp.qq.com:465 并补全 SSL 相关设置,而非继续调试25
四、辅助验证:看日志和协议响应
仅靠 nc/telnet 不够,结合日志才能定位卡点:
- 执行 echo test | mail -v -s "test" your@domain.com,观察输出中是否出现 Connecting to smtp.qq.com [xxx.xxx.xxx.xxx] port 25... 后长时间无响应
- 查系统邮件日志:sudo tail -f /var/log/maillog,若看到 Connection timed out 或 Network is unreachable,就是网络层阻断
- 若日志里压根没记录尝试连接,可能是 mailx 配置未生效,或命令未真正走SMTP(比如 fallback 到 sendmail 本地队列)


















