Ubuntu 22.04下Postfix备份邮件服务器连接被拒绝问题:如何确认服务状态并修复?
我最近碰到个闹心的问题:手里有两台跑Ubuntu 22.04的Postfix邮件服务器,主服务器一直工作得顺顺当当,但为了避免主服务器维护或更新期间邮件被退回,特意搭了一台备份邮件服务器——本来指望主服务器离线时它先接收邮件,等主服务器恢复后再把邮件转发回去,结果现在备份服务器居然出现了连接被拒绝的状况!
先跟大家说下我的配置背景:
- 主服务器是照着基础Postfix邮件服务器教程搭的,备份服务器则是跟着备份邮件服务器的专属教程配置的
- 主服务器配置了两个MX记录和对应的A记录:
mail.mydomain.com和mail2.mydomain.com
折腾了好一阵后,我整理出一套排查和修复的步骤,分享给同样踩坑的朋友:
第一步:先确认备份服务器的Postfix服务状态
连接被拒绝最常见的原因就是服务根本没在运行,先在备份服务器上执行这条命令看看状态:
sudo systemctl status postfix
如果输出里显示active (running),那服务层面没问题;要是显示inactive或者failed,先尝试启动服务:
sudo systemctl start postfix
要是启动失败也别慌,查看Postfix的实时日志就能找到问题根源:
sudo journalctl -u postfix -f
日志里会明明白白告诉你是配置文件语法错了、权限不够还是其他系统层面的问题。
第二步:检查Postfix的端口监听情况
邮件服务默认用25端口,得确认Postfix真的在监听这个端口。执行这条命令:
sudo ss -tulpn | grep postfix
正常情况下,你应该能看到状态为LISTEN的:25端口。如果没看到,就去修改Postfix的主配置文件/etc/postfix/main.cf,检查这两个参数:
inet_interfaces = all inet_protocols = ipv4
确保inet_interfaces不是只设置了本地回环地址(比如localhost),改完配置后记得重启Postfix生效:
sudo systemctl restart postfix
第三步:排查防火墙规则
Ubuntu默认用ufw防火墙,很大概率是25端口没对外开放,导致外部连不上。先查看当前防火墙规则:
sudo ufw status
如果看不到25/tcp被允许的条目,就添加一条允许规则:
sudo ufw allow 25/tcp sudo ufw reload
第四步:验证MX记录与DNS解析
有时候DNS配置出错也会导致连接异常,你可以在本地用dig命令检查MX记录的优先级和解析情况:
dig mydomain.com MX +short
记住,备份服务器的MX记录优先级数值要比主服务器大(比如主服务器优先级设为10,备份服务器就设为20),这样邮件会优先投递到主服务器,主服务器不可用时才会转向备份服务器。同时要确认MX记录对应的A记录能正确解析到备份服务器的公网IP。
第五步:测试主备服务器之间的连通性
备份服务器最终要把邮件转发给主服务器,得确保两者之间的25端口能正常连通。在备份服务器上执行telnet测试:
telnet mail.mydomain.com 25
如果连接失败,要么是主服务器的Postfix服务没运行,要么是主服务器的防火墙没允许备份服务器的IP访问25端口,得去主服务器上对应排查。
备注:内容来源于stack exchange,提问作者DanRan

