Exim、Dovecot无法发送邮件:/var/log/exim/mainlog多错误求助
排查Exim邮件发送超时问题的解决方案
你已经确认了IP未被拉黑、本地25端口连通正常,结合日志里的defer (110): Connection timed out和login authenticator fai...错误,咱们可以从以下几个方向深入排查:
1. 验证目标邮件服务器的SMTP连通性
日志里显示是连接hotmail.fr的服务器超时,这时候需要直接从你的服务器测试对目标MX服务器的25端口连通性:
# 先获取hotmail.fr的MX记录 dig mx hotmail.fr # 然后telnet其中一个MX服务器的25端口,比如mx1.hotmail.com telnet mx1.hotmail.com 25
如果这个telnet操作超时,很大概率是你的服务器所在机房/服务商封禁了出站25端口(很多云服务商为了防垃圾邮件默认禁用25端口)。这种情况下你可以:
- 联系服务商申请解封出站25端口;
- 改用第三方SMTP中继服务(比如用专业邮件服务的587端口发送,需要在Exim里配置对应authenticator)。
2. 检查Exim的DNS解析配置
错误中的R=lookuphost表示Exim通过DNS查找目标MX记录,若DNS解析异常也会导致连接超时:
# 测试DNS解析是否正常 dig mx hotmail.fr
如果解析慢、无结果或返回错误,可以尝试更换服务器的DNS服务器(比如修改/etc/resolv.conf添加nameserver 8.8.8.8),之后重启Exim服务:
systemctl restart exim
3. 修复Exim的Login Authenticator配置
日志里提到login authenticator fai...(认证失败),需要检查Exim的认证配置:
- 找到Exim的主配置文件(通常是
/etc/exim.conf或/etc/exim4/exim4.conf),定位到login类型的authenticator段落; - 确认配置中的
username、password是否正确,同时检查是否启用了合适的加密方式(比如tls_require = true如果目标服务器要求TLS); - 如果你是通过PHP
mail()函数发送,默认是本地投递,需确保Exim允许本地连接无需认证(检查配置中的acl_smtp_rcpt规则,是否放过本地IP的请求)。
4. 检查服务器防火墙/出站规则
虽然本地telnet 25端口正常,但可能防火墙限制了出站的25端口:
# 查看iptables出站规则 iptables -L OUTPUT -n # 如果用ufw,检查规则 ufw status # 如果用firewalld firewall-cmd --list-all
确保没有规则阻止TCP 25端口的出站请求,若有则添加允许规则。
5. 手动测试Exim发送,获取详细日志
直接用Exim命令行发送测试邮件,能拿到更详细的调试信息:
echo "Test email content" | exim -v ln-1@hotmail.fr
观察输出中的每一步,比如DNS解析是否成功、是否发起了连接、认证过程是否出错,这能帮你快速定位问题根源。
内容的提问来源于stack exchange,提问作者Marceau Lenoir
相关产品推荐
相关产品推荐

