邮件认证指南:按正确顺序配置 SPF、DKIM 与 DMARC

按正确顺序配置 SPF、DKIM 和 DMARC,满足 Gmail 与 Yahoo 的发件人要求。涵盖 SPF 10 次查询上限、DKIM 2048 位密钥、DMARC 分阶段推进,以及每条记录的验证方法。
5 分钟阅读
更新于 2026-11-04
配置教程
spfdkimdmarc认证

邮件认证早已不是可选项。自 2024 年 2 月起,Gmail 和 Yahoo 要求所有日投递量超过 5,000 封的发件人配置 SPF、DKIM 与 DMARC,微软也随即对 Outlook.com 的批量发件人提出类似要求。缺少三者之一会直接丢失收件箱位置;而配置顺序不对,则可能把自己的正常邮件也拦下来。

本指南说明三个协议各自解决什么问题、避免事故的配置顺序,以及如何用免费工具逐条验证。

一封邮件上 SPF、DKIM、DMARC 的协同工作流程
一封邮件上 SPF、DKIM、DMARC 的协同工作流程

三个协议分别做什么

面对每一封邮件,接收服务器会问三个不同的问题,三个协议各答一个:

  • SPF 回答的是这台服务器有权代表这个域名发信吗?它是一条 DNS TXT 记录,列出授权的 IP 地址和 include 域名。
  • DKIM 回答的是这封邮件在传输途中有没有被篡改?它真的来自声称的发件方吗?它为邮件加上加密签名,接收方用 DNS 中的公钥即可验证。
  • DMARC 回答的是SPF 或 DKIM 校验失败时,接收方应该怎么处理?它还要求对齐:通过 SPF 或 DKIM 的域名必须与信头 From 域名一致——正是这一条挫败了直接伪造。

一个常见误解是"配了 SPF 就能防伪造"。并不能。SPF 校验的是信封发件人(Return-Path),而攻击者可以随意控制它,与收件人看到的 From 信头无关。只有 DMARC 的对齐机制才把校验结果绑定到收件人实际看到的域名上。

正确的配置顺序

顺序很重要,因为 DMARC 的评估建立在 SPF 和 DKIM 之上。基础没打好就上强制策略,拦掉的第一批邮件就是你自己的。按这个顺序来:

  1. 盘点所有发件来源。列出所有以你的域名发信的服务:邮件服务器、CRM、营销平台、工单系统、账单系统、网站表单、打印机。漏掉的发件源是 DMARC 失败的头号原因。
  2. 发布一条 SPF 记录,覆盖全部来源。
  3. 在每个发送服务里启用 DKIM,并发布对应密钥。
  4. 发布 p=none 的 DMARC 记录并填入 rua 报告地址,观察 2–4 周。
  5. 确认所有正常邮件都通过后,再逐步升级到 quarantine、reject。

第一步:SPF

SPF 记录是域名根下的一条 TXT 记录。典型的多来源配置:

v=spf1 include:_spf.google.com include:mailgun.org ip4:203.0.113.10 ~all

三条最容易把记录做坏的规则:

  • 一个域名只能有一条 SPF 记录。两条以 v=spf1 开头的 TXT 会导致永久失败。多出的 include 要合并进同一条记录。
  • DNS 查询最多 10 次。每个 include、a、mx、redirect、ptr 机制都消耗一次查询,嵌套 include 同样计数。超过 10 次整条记录以 permerror 失败,接收方视同没有 SPF。接近上限时参考 SPF 扁平化指南。
  • 验证期以 ~all 结尾,待 DMARC 报告确认覆盖完整后再改成 -all。

用 SPF 检测 验证记录——它会解析机制、统计查询次数并标记语法错误。从零构建记录可以用 SPF 生成器。

第二步:DKIM

DKIM 是按发送服务逐个启用的,不是按域名。在每个服务商的管理后台为你的域名开启 DKIM 签名,并发布它给出的 DNS 记录——通常是 <selector>._domainkey.yourdomain.com 下含公钥的 TXT 记录,或一条指向服务商密钥的 CNAME。

需要检查的三点:

  • 使用 2048 位密钥。1024 位密钥虽仍能通过多数校验,但已被视为弱密钥,部分接收方直接拒收。
  • 签名的 d= 域名必须是你的域名(宽松对齐允许子域名)。如果服务商用自己的域名签名,DKIM 本身通过了,但 DMARC 对齐失败——这是最常见的 DMARC 失败原因。
  • 定期轮换密钥,每年一次是合理的默认节奏。

在 DKIM 检测 中输入域名和服务商使用的 selector 即可验证。

第三步:DMARC

DMARC 记录是 _dmarc.yourdomain.com 下的一条 TXT 记录。安全的起步策略:

v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com; fo=1

p=none 不会拦截任何邮件——接收方只是每天把聚合报告发到你的 rua 地址。报告会列出所有以你的域名发信的来源、每个 IP 的 SPF/DKIM 结果,以及 DMARC 是否对齐。用 DMARC 报告分析器阅读这些 XML。

只有当所有正常来源都通过后再升级:

  1. p=none —— 监控并修复失败的正常发件源(2–4 周)。
  2. p=quarantine; pct=25 —— 对 25% 的失败邮件执行垃圾箱处理,再逐步提高 pct。
  3. p=reject —— 直接拒收失败邮件。

一份报告都没看过就直接上 p=reject,是很多公司把自己的发票送进对方垃圾箱的原因。记录可以用 DMARC 生成器生成。

如何验证整套配置

记录发布后,向 Gmail 账号发一封测试邮件,打开显示原始邮件,找这三行:

SPF:    PASS with IP 203.0.113.10
DKIM:   'PASS' with domain yourdomain.com
DMARC:  'PASS'

如果 SPF 和 DKIM 都是 PASS 而 DMARC 是 FAIL,就是对齐问题——通过的域名与 From 域名不一致。排查方法见 DMARC 失败排查指南。

要一次检查域名的全部记录,运行 邮件健康检查或完整的 邮件投递测试。

各服务商配置教程

上面的通用流程适用于所有服务商,但控制台路径和记录值各家不同。如果你的邮箱或发信平台在下面列表里,直接看对应专篇能省一轮摸索:

常见问题

三个协议都必须配吗?

用自己的域名发信就必须配。SPF 单独存在时一遇转发就失效;DKIM 单独存在时接收方不知道失败邮件该怎么处理;DMARC 没有 SPF 和 DKIM 就无从评估。2024 年起,大型收件方已把三者作为批量发件人的基线要求。

SPF 失败时 DMARC 还能通过吗?

能。只要 SPF 或 DKIM 其中之一通过对齐,DMARC 即通过。转发场景经常破坏 SPF,而有效的 DKIM 签名往往幸存——这正是 DKIM 重要的原因。

DNS 生效需要多久?

多数改动几分钟内可见,但完整传播最长需要 24–48 小时。测试期间把 TTL 调到一小时以内,迭代会快很多。

Gmail 和 Yahoo 2024 年新规是什么?

两家均要求批量发件人(每日向其用户投递 5,000 封以上)配置 SPF、DKIM 对齐和 DMARC 记录,强制商业邮件支持一键退订(RFC 8058),并将投诉率控制在 0.3% 以下。详见 Gmail 与 Yahoo 发件人要求指南。

这篇指南有帮助吗?