怎么读一封邮件的「原始邮件头」(Email Headers)快速诊断投递问题?Received 链、Authentication-Results 里的 SPF/DKIM/DMARC 怎么看?

66 怎么读一封邮件的「原始邮件头」(Email Headers)快速诊断投递问题?Received 链、Authentication-Results 里的 SPF/DKIM/DMARC 怎么看?
什么是邮件头

每封邮件携带完整的传输元数据——类似快递包裹上的逐站扫描记录。从发信到收信,每一跳 MTA 在邮件顶部添加一个 Received: 头,最终形成从下到上的完整路由链。此外还包括 SPF/DKIM/DMARC 验证结果、垃圾评分、发件人信息、时间戳等。邮件头是诊断投递问题的第一手证据

如何查看邮件头

Gmail(Web版):打开邮件 → 右上角三点 → 「显示原始邮件」
Outlook 桌面版:双击邮件 → File → Properties → Internet headers 文本框
Outlook.com Web版:打开邮件 → 三点 → 查看 → 查看邮件源
QQ/网易企业邮箱:打开邮件 → 更多 → 查看信头/显示原文

关键字段阅读顺序

1. Received 链(从下往上读)
底部第一条 Received: = 发信人邮件客户端 → 发信服务器(提交阶段)
中间每一条 Received: = 服务器到服务器的转跳
顶部最后一条 Received: = 最后一跳 MTA → 收件人邮箱
每行包含:服务器主机名、IP 地址、时间戳、with 协议(ESMTP/ESMTPS/LMTP)、TLS 加密版本(version=TLS1_2 或 version=TLS1_3)。找到时间跳变大的跳→ 该跳是瓶颈所在。

Authentication-Results(验证结果)

每个收件方服务器会在邮件头中加入一行:
Authentication-Results: mx.google.com; spf=pass smtp.mailfrom=yourdomain.com; dkim=pass header.d=yourdomain.com; dmarc=pass header.from=yourdomain.com
读法:
spf=pass/fail/neutral/softfail:SPF 验证结果——fail 说明发信 IP 不在你的 SPF 允许列表中
dkim=pass/fail/none:DKIM 签名验证结果——fail 说明签名被篡改或签名域名与 From 不匹配
dmarc=pass/fail:DMARC 对齐结果——即使 spf 和 dkim 都 pass,如果域名不对齐仍然 dmarc=fail

X-Spam 系列头(如果存在)

X-Spam-Status: Yes, score=7.8——score 是 SpamAssassin 等垃圾过滤器的评分,≥5 通常判定为垃圾。
X-Spam-Report:列出触发每条规则的得分明细——看哪条规则触发得分最高 → 针对性修改邮件内容。
注意:Gmail 和 Outlook 不对外暴露内部垃圾评分逻辑,仅有自建/开源 MTA 部分会带这些头。

在线分析工具

MXToolbox Email Header Analyzer:把整段原始邮件头粘贴进去 → 自动解析 Received 链、SPF/DKIM 状态、时间线可视化 → 比用手逐行看快很多。Google Admin Toolbox Messageheader 也提供类似功能。

参考:RFC 5322(Internet Message Format)· RFC 8601(Authentication-Results 头格式)· MXToolbox Email Header Analyzer · Google Admin Toolbox