技术解析 · 附来源的解答
什么是邮件身份验证:SPF、DKIM 与 DMARC 详解
邮件身份验证是一组基于 DNS 的协议,用于验证邮件发件人的身份。它允许收件邮件服务器确认发信服务器已获授权代表 From 邮件头中列出的域名发送邮件,从而防止域名伪造和网络钓鱼。
SPF(Sender Policy Framework,发件人策略框架)
SPF 是一种 DNS 记录,列出了获准代表特定域名发送邮件的所有 IP 地址和域名。服务器收到邮件时,会检查 Return-Path 地址中域名的 SPF 记录。如果发信服务器的 IP 不在 SPF 记录中,邮件可能会根据该记录的限定符被标记为垃圾邮件或被拒收。
DKIM(DomainKeys Identified Mail,域名密钥识别邮件)
DKIM 为邮件提供加密签名。发件方使用私钥对邮件头和正文签名,收件方则使用发布在域名 DNS 记录中的公钥验证签名。这可以确保邮件内容在传输过程中未被篡改,并确认该邮件确实归属于该域名。
DMARC(Domain-based Message Authentication, Reporting, and Conformance,基于域的消息认证、报告与一致性)
DMARC 将 SPF 和 DKIM 结合起来,向收件服务器提供如何处理身份验证失败邮件的指令。它要求可见的 From 地址与 SPF 或 DKIM 域名保持对齐。DMARC 策略可设为 none(监控)、quarantine(放入垃圾邮件)或 reject(完全拦截)。
配置与验证
配置身份验证需要在 DNS 服务商处添加 TXT 记录。开发者应确保 SPF 记录涵盖所有第三方发信服务,并定期轮换 DKIM 密钥。您可以使用 SendHQ 免费工具(https://sendhq.cc/tools)检查 DNS 记录格式是否正确并已生效。
团队常问的问题
SPF 能取代 DKIM 吗?
不能。SPF 验证的是发信服务器的 IP,而 DKIM 通过加密手段验证邮件内容和来源。完整的身份验证需要两者兼备。
如果没有配置 DMARC 会怎样?
没有 DMARC 时,收件服务器仍可能使用 SPF 和 DKIM,但它们没有明确的指令来决定是拒收还是隔离验证失败的邮件。
一个域名可以有多条 SPF 记录吗?
不可以。一个域名只能有一条 SPF 记录。多个获授权的发件方必须使用 include 机制合并到同一条 TXT 记录中。
一手资料
- RFC 7208:发件人策略框架(SPF) — RFC Editor
- RFC 6376:DomainKeys 识别邮件(DKIM) — RFC Editor
- RFC 7489:基于域的消息认证、报告与一致性(DMARC) — RFC Editor