← Blog

电子邮件认证完全指南:SPF、DKIM 和 DMARC 配置详解

技术 SPF、DKIM、DMARC、电子邮件身份验证、可递送性 July 9, 2026 by 邮件快递团队
电子邮件身份验证实操指南:真实的、可复制粘贴的SPF、DKIM和DMARC记录,如何使用dig和Gmail的显示原始内容验证它们,以及如何在不中断邮件的情况下将DMARC策略从p=none升级到p=reject。

你发送的每封电子邮件都会声明:”我被允许代表此域发送。”SPF、DKIM 和 DMARC 是三条 DNS 记录,让接收服务器验证该声明。配置正确,你的邮件将进入收件箱;配置错误——或干脆忽略——Gmail、Yahoo 和 Outlook 会越来越多地将其发送到垃圾箱或直接拒收。

自 2024 年以来,Gmail 和 Yahoo 要求批量发件人设置 SPF、DKIM和 DMARC 策略。这是一份实用的、可直接复制粘贴的指南,帮助你正确设置这三项、从命令行验证它们,以及在不破坏现有邮件的情况下推出 DMARC 策略。

如果你首先想要每一项的概念背景,请参见什么是 DKIM?、什么是 SPF 记录?和什么是 DMARC?。这篇文章是那三篇的实操配套指南。

90 秒心智模型

这三条记录回答关于邮件的三个不同问题:

SPF 和 DKIM 进行检查;DMARC 将这些检查转化为策略并为你提供可见性。你需要全部三项。

SPF:授权你的发件人

SPF 是显示在你信封发件人中的域上的单条 TXT 记录。如果你通过 MailerToGo 从 mtg.yourdomain.com 发送:

mtg.yourdomain.com.   TXT   "v=spf1 include:_spf.mailertogo.net ~all"

两条容易让人犯错的规则:

  1. 每个域一条 SPF 记录。 切勿在同一名称上发布两条 v=spf1 记录——那是永久性错误,SPF 会失败。将它们合并为一条:"v=spf1 include:_spf.mailertogo.net include:_spf.google.com ~all"。
  2. 10 次查询限制。 SPF 在评估时最多允许 10 次 DNS 查询。每条 include: 都计数。将你的 ESP、Google、Microsoft 和 MailerToGo 堆叠到一条根记录上可能会超过这个限制,从而破坏所有SPF——这是从专用子域发送应用邮件的重要原因。(参见为什么 MailerToGo 从 mtg.yourdomain.com 发送。)

DKIM:签署每条邮件

DKIM 用私钥签署每条邮件;接收方从 DNS 获取匹配的公钥。使用 MailerToGo,你无需生成或粘贴密钥——你发布一条 CNAME,将每个账户特定的选择器指向我们的密钥,我们为你轮换基础密钥:

; 选择器特定于你的账户——使用仪表板中的确切值
mtg1._domainkey.mtg.yourdomain.com.   CNAME   mtg1.dkim.mailertogo.net.

因为它是指向我们控制的记录的 CNAME,密钥轮换是自动的:当我们轮换密钥时,发布的公钥会在我们的一侧改变,你的 DNS 无需编辑。如果你检查已解析的记录,会看到标准 DKIM 公钥:

mtg1._domainkey.mtg.yourdomain.com.   TXT   "v=DKIM1; k=rsa; p=MIGfMA0GCSq...QAB"

有效的 DKIM 签名也是让你的邮件在转发中存活的东西,在转发中 SPF 通常会失败——所以 DKIM 是两个认证信号中更耐用的。

DMARC:设置策略并获取报告

DMARC 位于固定名称 _dmarc.<domain>,将 SPF/DKIM 结果与可见的 From: 域绑定。从监控模式开始,这样你在强制执行前可以学到什么在实际发送:

_dmarc.yourdomain.com.   TXT   "v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com; fo=1; adkim=s; aspf=s"

按标签分析:

DMARC 对齐是微妙的部分:SPF 或 DKIM通过还不够——它们通过的域必须对齐可见 From: 中的域。这是为什么发送架构很重要,以及为什么完全由你控制的子域使对齐变得直接。

从命令行验证所有内容

不要假设记录是实时的——检查它。dig(或 Windows 上的 nslookup)准确显示解析器看到的内容:

# SPF — 期望单行 v=spf1
dig +short TXT mtg.yourdomain.com

# DKIM — 跟随 CNAME 到发布的密钥
dig +short CNAME mtg1._domainkey.mtg.yourdomain.com
dig +short TXT   mtg1._domainkey.mtg.yourdomain.com

# DMARC — 始终在 _dmarc.<domain>
dig +short TXT _dmarc.yourdomain.com

然后向自己发送真实邮件并读取收据。在 Gmail 中,打开邮件 → ⋮ → 显示原始内容。你想看到:

SPF:   PASS  with domain mtg.yourdomain.com
DKIM:  PASS  with domain mtg.yourdomain.com
DMARC: PASS

如果全部三项都以对齐域说 PASS,你就完成了。

推出 DMARC 强制执行而不破坏邮件

破坏合法电子邮件的错误是直接跳到 p=reject。应该按梯度逐步推进,在每个步骤监视你的 rua 报告:

  1. p=none — 监控 1-2 周。读取汇总报告;确认每个合法发件人都在通过且对齐。
  2. p=quarantine; pct=25 → 逐步提高 pct 至 100。失败进入垃圾箱,而非虚空,所以错误是可恢复的。
  3. p=reject — 完全强制执行。仅在报告干净时来这里。这是 Gmail/Yahoo 奖励的级别,也是阻止精确域欺骗的级别。

常见失败及其含义

简短版本,以及 MailerToGo 的帮助

SPF 说明谁可以发送,DKIM 证明邮件真实且未修改,DMARC 将两者绑定到你的可见域并告诉接收方该怎么做。配置全部三项,用 dig 和 Gmail 的显示原始内容验证,并从 none → quarantine → reject 逐步推进 DMARC。

使用 MailerToGo,DKIM 密钥及其轮换由我们处理,你的仪表板显示要发布的确切 SPF/DKIM/DMARC 记录。如果你使用委托的 mtg.yourdomain.com 子域,我们从单条 NS 记录发布和维护所有记录——根本无需手动 DNS。更喜欢自己拥有记录?手动子域设置指南分步讲解应用配置(信封发件人 vs. From:)。

关于基础标准,MailerToGo 还维护 SPF、DKIM、DMARC 和它们如何配合的纯英文参考。