
在维护邮件系统(如 Postfix、Exim、Sendmail 等)的过程中,邮件投递失败是再常见不过的问题。要有效定位和解决问题,必须从收到的退信或错误提示出发,一步步追踪邮件的完整投递链路和后台日志记录,准确找出失败原因。
本篇文章将结合实际经验,系统梳理邮件投递失败的排查流程,并讲解如何解析邮件日志中的关键状态码(如 bounced、deferred、expired)及多跳转发(relay)路径的日志追踪技巧,助你快速锁定问题。
当用户或系统收到一封退信(bounce email)时,里面包含了解决问题的线索。应首先提取以下关键字段:
<20251024.abc123@yourdomain.com>,是邮件在系统中的唯一标识。550 5.1.1(用户不存在),421 4.7.0(服务不可达),是判断失败原因的重要依据。mail.remote.com[192.0.2.10]:25,提示了邮件发送目标服务器。这些信息将用于下一步的日志匹配。
大多数邮件系统在日志中记录发送、队列、状态变化等过程,通常位于 /var/log/maillog、/var/log/mail.log 或 /var/log/exim/mainlog。
方法一:按 Message-ID 搜索(最直接)
grep '20251024.abc123' /var/log/maillog方法二:按收件人/发件人搜索
grep 'to=<user@example.com>' /var/log/maillog
grep 'from=<admin@yourdomain.com>' /var/log/maillog方法三:按 queue ID 搜索(Postfix 特有)
日志中每封邮件会分配一个队列ID(如 3A2C712345),你可以先定位 ID,再追踪全过程:
grep '3A2C712345' /var/log/maillogbounced / deferred / expired 含义Postfix、Exim 等系统的日志中会包含邮件状态字段,以下为三种常见失败状态:
1. status=bounced
User unknown)status=bounced (host mail.example.com[1.2.3.4] said: 550 5.1.1 User unknown)2. status=deferred
status=deferred (connect to mail.remote.com[192.0.2.10]:25: Connection timed out)3. status=expired
status=expired (delivery temporarily suspended: connect to mail.example.com[1.2.3.4]: Connection refused)在一些中继场景中,邮件不会直接从 MTA 发送到目标服务器,而是经过多跳 relay(转发服务器)传递。典型路径如下:
User → Mail Submission Agent (MSA) → MTA → Smart Relay → Target MX如何识别中继路径:
查看日志中的 relay 信息,例如:
relay=relay1.mail.com[10.0.0.2]:25
relay=mx.example.com[203.0.113.55]:25每个中继跳点都会产生新的日志片段,追踪方法包括:
relay= 字段追踪中继路径是否可达,判断在哪一跳失败。场景:
用户反映某封邮件未收到,并收到了退信。退信中提示:
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 <abc@target.com>: Recipient address rejected: User unknown分析步骤:
1. 从退信中提取 Message-ID。
2. grep 日志文件:
grep 'Message-ID' /var/log/maillog3. 查找 queue ID,如3A2C712345,再追踪全部记录:
grep '3A2C712345' /var/log/maillog4. 确认状态:
status=bounced (host mail.target.com[203.0.113.5] said: 550 5.1.1 User unknown)结论:
该邮件在投递至目标服务器时被拒收,原因是用户地址错误,应通知发件人核对收件人地址。
pflogsumm 工具:生成 Postfix 日志摘要,快速查看投递失败概况。postqueue -p | grep -c deferred 定期监控。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。