先看现象。腾讯云 2 核 4G 的 Ubuntu 20.04,Postfix 发告警邮件一直卡在队列,mailq 里全是 Connection timed out,telnet smtp.exmail.qq.com 25 直接超时,换 465 能连通,云防火墙出站规则看着是全部放行。

排查方向其实有限,先把可能性排一排。云厂商默认封禁出站 25 端口,用来防垃圾邮件。也可能是安全组出站只放了部分端口,25 不在列表里。

另外,实例公网 IP 信誉低,对端直接拒收。

少数情况下是本地 ISP 或 IDC 在上游把 25 封了。

上来先确认两个端口到底通不通

nc -zv -w 5 smtp.exmail.qq.com 25; nc -zv -w 5 smtp.exmail.qq.com 465

接着看队列里积压了多少邮件

mailq | tail -20

然后改用 465 端口走 SSL 提交

postconf -e 'relayhost = [smtp.exmail.qq.com]:465' && postconf -e 'smtp_tls_wrappermode = yes'

等前面都确认过,再重载服务并重新投递队列

postfix reload && postqueue -f

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

中途换过一次思路,把范围缩到最小的那一层,反而快了。

恢复的判定其实很直接。mailq 清空,日志里出现 status=sent,告警邮件能正常收到。

云上 25 端口解封通常要提工单并核验用途,直接用 465 提交更省事,别把时间耗在等审批上。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189