公司最近搞网络升级,最怕出问题的就是邮件服务。上周我们部门就遇到一次,新网络切完,好几个人收不到外部邮件,客户消息卡着回不了,急得直冒汗。后来查下来,其实是 DNS 没刷新,SMTP 路由没通。这类问题完全可以提前测出来。
为什么要测邮件服务?
很多人觉得网络一通,邮件自然就能用。其实不是。邮件依赖多个环节:DNS 解析、端口连通性、认证机制、防火墙规则。任何一个环节在升级后变了,都可能导致发不出去或者收不进来。比如你换个宽带运营商,公网 IP 变了,没做 SPF 记录更新,对方服务器可能直接把你标记为垃圾邮件。
几个关键测试步骤
第一步,查 DNS。打开终端或命令提示符,执行:
nslookup -type=mx yourdomain.com
看看返回的邮件服务器是不是你配置的那个。如果不对,说明 DNS 缓存没更新,得等 TTL 过期或者手动清本地缓存。
第二步,测端口。常用的是 SMTP 的 25、465 或 587 端口。可以用 telnet 快速验证:
telnet smtp.yourmailserver.com 587
如果连不上,可能是防火墙拦了,也可能是新网络策略没放行。这时候别急着改配置,先确认是不是本地网络的问题,换手机热点试试,缩小排查范围。
第三步,实际发一封测试邮件。用公司邮箱账号,发到 Gmail、QQ 邮箱、163 都试一下,看能不能收到,特别是垃圾箱里有没有。同时留意发送日志,Exchange 或阿里云邮件推送都有记录,能查到是否被拒发。
自动化脚本小技巧
如果你经常做网络切换,可以写个简单的检测脚本。比如用 Python 发一封测试邮件:
import smtplib
from email.mime.text import MIMEText
msg = MIMEText('这是一封网络升级测试邮件')
msg['Subject'] = '网络测试 - 自动发送'
msg['From'] = 'test@yourcompany.com'
msg['To'] = 'monitor@yourcompany.com'
try:
server = smtplib.SMTP('smtp.yourcompany.com', 587)
server.starttls()
server.login('test@yourcompany.com', 'yourpassword')
server.send_message(msg)
server.quit()
print('邮件发送成功')
except Exception as e:
print(f'发送失败: {e}')
把这个脚本放在网络切换后自动跑一遍,结果记日志,省事又靠谱。
前两天隔壁项目组上线新专线,提前跑了这套流程,当场发现 465 端口被拦截,运维立马联系运营商开白名单,避免了正式切换时全员断邮的尴尬。
网络升级不可怕,可怕的是没验证就默认一切正常。花半小时把邮件服务测一遍,能省下后面几小时的救火时间。