邮件送达率与 DNS

SPF、DKIM 与 DMARC 邮件认证完整指南

作者:Alexey Bulygin
SPF、DKIM 与 DMARC 邮件认证关系示意图

SPF、DKIM 与 DMARC 邮件认证已成为域名发送邮件的基础配置。如果域名在 2025 或 2026 年发送真实业务邮件,这些记录会影响收件方对邮件的分类或拒收决定,但不能单独保证进入收件箱。若要先了解完整方案,请阅读小型企业的业务邮箱

在配置 SPF、DKIM 和 DMARC 时,许多团队先把问题归因于内容。内容有时确实有影响,但域名配置错误也很常见,例如错误的 SPF 记录、缺少 DKIM 密钥,或从未发布 DMARC 策略。随后可能出现 Outlook 拒收、Gmail 限速、Yahoo 错误分类,以及复杂的转发问题。

原理简单,实际部署却需要谨慎。SPF 说明哪些 IP 获准为实际 MAIL FROM 域发送;DKIM 证明签名有效且已签名数据未发生不兼容变更;DMARC 请求收件方在检查失败时采用特定处理,并核对认证域与可见 From 域的对齐。正确配置能提供重要信号,但不会独自决定收件方行为。

SPF、DKIM 与 DMARC 实际做什么

这三项协议组成收件服务评估邮件的多层体系。SPF 检查发送路径,DKIM 检查签名,DMARC 检查对齐和策略。适用的批量发送规则可能要求同时发布 SPF 和 DKIM,但 DMARC 通过只需要 SPF 或 DKIM 中至少一个认证成功且对齐。

协议主要作用检查内容常见故障
SPF授权连接 IP 是否获准为 envelope 域发送DNS 查询过多,或转发导致 IP 变化
DKIM完整性签名是否有效,以及签名数据是否保持完整selector 错误、密钥过期或传输中更改了签名内容
DMARC策略与对齐SPF 或 DKIM 是否通过并与可见 From 域对齐SaaS 使用自己的域名发送,导致对齐失败

请记住:DMARC 不要求 SPF 和 DKIM 同时通过。只要其中一项通过并与收件人看到的 From 域对齐即可。

SPF:谁获准为你的域名发送邮件

SPF 是邮件认证的第一层,相当于发送来源许可清单。收件服务器读取实际 envelope sender 域,也就是 MAIL FROM 域的 SPF TXT 记录,并判断连接 IP 是否获准发送。它速度快且实用,但容易受转发和过长 include 链影响。

SPF 以 TXT 记录形式存在于 DNS 中。常见记录如下:

v=spf1 include:_spf.google.com include:spf.trekmail.net -all

各部分含义如下:

  1. v=spf1 声明记录类型。
  2. include: 引用另一个域名发布的发送基础设施。
  3. -all 表示其他来源应得到 fail 结果。

许多配置首先遇到的是 10 次 DNS 查询限制,详见 RFC 7208。计数包括相关机制和修饰符,以及 include 背后的嵌套查询。超过限制时,收件方可能返回 PermError,SPF 评估无法正常完成。

你在两年前停用了某个 CRM,却留下它的 include:。营销平台又加入三个嵌套来源,客服系统再增加一个。记录表面正常,直到收件方计算完整查询链。

转发也会使 SPF 失败。若大学系统把邮件转发到 Gmail,Gmail 看到的可能是大学服务器 IP,而不是原始服务器。即使 SPF 配置正确,转发后仍可能失败,所以不能只依赖 SPF。

若通过 TrekMail 发送,文档会列出所需 include,并说明如何合并到现有 SPF 而不创建重复记录:必要 DNS 记录

DKIM:谁签署了邮件,签名数据是否改变

DKIM 是第二层。发送系统使用私钥为选定数据签名,收件方通过 DNS 中的公钥验证。与 SPF 不同,如果签名仍有效,且规范化后的签名标头与正文未发生不兼容变更,DKIM 通常可以经受转发。

DKIM 记录位于 selector 之下,例如 selector1._domainkey.example.comdkim._domainkey.example.com。发送方使用对应 selector 签名,收件方从 DNS 获取公钥并验证签名。

典型 DNS 值如下:

Host: dkim._domainkey
Type: TXT
Value: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4G...

运营中的原因通常并不复杂:

  1. 轮换密钥后,邮件服务器仍使用旧 selector。
  2. 更换服务商后,没有发布新的公钥。
  3. DNS 托管商破坏了较长的 TXT 值。
  4. 邮件列表改写正文,使签名失效。

对于新的兼容部署,如果平台和 DNS 支持,2048 位密钥通常是目前合理的推荐默认值。旧系统仍可能使用 1024 位密钥,在 2026 年也不例外,但具体长度必须与实际签名服务的能力相容。

按 TrekMail 当前条件,付费套餐使用托管 SMTP 时,域名邮件可用该域的 DKIM 密钥签名。若签名保持有效且对齐,它比只使用 SPF 更有机会经受转发。设置后遇到问题时,请查看邮件为何进入垃圾箱

DMARC:请求收件方如何处理的规则

DMARC 是构建在 SPF 和 DKIM 之上的策略层。它发布认证失败时希望收件方采用的处理方式,并检查可见 From 域与成功 SPF 或 DKIM 所用域名是否对齐。没有对齐就无法通过 DMARC。

DMARC 记录发布在 _dmarc.example.com。可以从简单设置开始:

v=DMARC1; p=none; rua=mailto:dmarc@example.com

完成清单与测试后再逐步加强:

v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com
v=DMARC1; p=reject; rua=mailto:dmarc@example.com

p=none 不请求因 DMARC 结果而限制邮件。p=quarantine 请求把失败视为可疑,p=reject 请求拒绝失败邮件。这些是发布的策略请求,不保证所有收件方采用完全相同的处理。

更大的陷阱是对齐。例如:

可见 From:newsletter@yourcompany.com
Return-Path:bounce.vendor.com
DKIM 域:vendor.com

SPF 可能通过,DKIM 也可能通过,但 DMARC 仍失败,因为两者都没有与 yourcompany.com 对齐。

这是 Mailchimp、HubSpot、Zendesk 和 CRM 配置中常见的问题:发送平台显示绿色状态,实际邮件却未对齐。Google 当前指南要求适用的、向个人 Gmail 帐号发送邮件的批量发件人设置 SPF 和 DKIM;直接邮件至少有一项与 From 域对齐。指南也要求最低限度的 DMARC 记录,即使策略只是 p=noneGoogle 发件人指南常见问题

SPF、DKIM 与 DMARC:哪一个最重要?

三项协议各有不同职责,因此不宜只选所谓最重要的一项。满足条件时,DKIM 对转发更稳健;SPF 仍是重要授权机制;DMARC 则增加对齐和策略层。适用规则及可靠配置需要完整体系。

问题SPFDKIMDMARC
检查发件 IP?通过 SPF 结果间接检查
检查邮件完整性?通过 DKIM 结果间接检查
能较好经受转发?通常可以,前提是签名数据保留仅当 SPF 或 DKIM 仍然通过且对齐
发布收件方策略?是,作为请求的策略
有助于阻止仿冒?部分部分执行策略时有帮助,但不能消除所有滥用

若只有一台邮件服务器且没有 SaaS 发送方,配置通常较简单。若客服、简报、CRM 和转发共用一个域名,DMARC 报告可帮助判断哪些真实路径已经对齐,哪些只是在控制面板中看似对齐。

为什么转发和邮件列表仍会产生异常失败

转发会影响 SPF,因为继续发送邮件的是转发服务器。若 DKIM 签名保持有效,它通常还能提供帮助;但中间节点若对签名正文或主题作不兼容改写,DKIM 也会失败。

因此,认证记录在 DNS 中看似正确,收件人仍可能看不到邮件。邮件经过间接路径,IP 变化使 SPF 失败,邮件列表添加页脚使 DKIM 失败,最后因为没有任何成功且对齐的信号导致 DMARC 失败。

转发邮件的 SPF、DKIM 和 DMARC 均失败时,ARC 允许中间节点记录接收邮件时看到的结果,供后续收件方按本地规则评估。ARC 不会自动保留信任,也不会把 DMARC 转换为 pass。Google 指南对转发和邮件列表流量的 DMARC 对齐另有说明,并建议间接邮件包含 ARC 标头。发件人通常不自行设置 ARC,更实际的工作是保持 DKIM 有效,并减少脆弱的转发链。若转发是核心需求,请继续阅读邮件转发指南。

仍会影响邮件处理的其他检查

即使认证记录发布正确,也不能保证进入收件箱。邮箱服务商还会考虑反向 DNS、TLS、投诉率和退订方式。SPF、DKIM 与 DMARC 是基础,而不是全部。

  1. 经正向确认的反向 DNS:发送 IP 需要 PTR 记录,该主机名应再次解析到同一 IP。Google 把有效的正向与反向 DNS 列为适用发件人的要求。
  2. TLS:大型服务商期望使用 TLS 传输。Google 常见问题说明,在适用情况下,未使用 TLS 可能导致临时或永久失败。
  3. 垃圾邮件投诉:Google 建议适用发件人把投诉率保持在 0.1% 以下,并避免达到 0.3%。
  4. 一键退订:适用的推广邮件应按 RFC 8058 使用退订标头,而不能只提供隐藏在页脚中的链接。

对新域名而言,这些因素更重要。缺少历史数据时,突发发送和质量不佳的名单可能在形成稳定信号前影响信誉。

如何在不破坏生产邮件的情况下配置 SPF、DKIM 与 DMARC

稳妥做法是先清点所有发送方,统一发布记录,用真实邮件验证,再分阶段把 DMARC 从观察转向执行。跳过清点可能会中断被遗忘的 SaaS 服务。

  1. 列出使用该域名发送的所有服务:邮箱托管、CRM、客服、简报、表单、开票工具和服务器。
  2. 把发送方合并到一条 SPF 记录中,不要发布两条 SPF TXT 记录。
  3. 为每个需要独立 selector 的发送方发布 DKIM。
  4. 先发布 p=none 的 DMARC,并在了解报告并不完整的前提下进行审查。
  5. 为外部发送方启用自定义域名认证,并使用真实邮件验证对齐。
  6. 经过多个有代表性的时间段,验证低频关键流程并准备回滚后,再转为 p=quarantine,然后转为 p=reject

对使用 TrekMail 托管发送的域名,基础记录可能如下;实际值必须取自当前控制面板与文档:

MX  @                mail.trekmail.net.            priority 10
TXT @                v=spf1 include:spf.trekmail.net -all
TXT dkim._domainkey  v=DKIM1; k=rsa; p=...unique key from dashboard...
TXT _dmarc           v=DMARC1; p=quarantine; rua=mailto:dmarc@trekmail.net

TrekMail 文档通过必要 DNS 记录检查 DNS 状态介绍记录布局与实时验证流程。若仍处于前期设置阶段,在自己的域名上设置邮箱可作为配套指南。

分散方式与集成方式

传统方式是为不需要的大型套件按用户付费,或自行维护邮件系统、DNS、TLS、DKIM selector 和信誉。另一种方式是把邮箱托管与发送分开,并使用能按所选套餐提供记录、验证和迁移路径的平台。

TrekMail 可用于这种模式。按本文所述当前条件,Nano 最多可托管 10 个域名,共享 5 GB 存储空间,并使用自有 SMTP。付费套餐从每月 $3.50 起,并可能包含托管 SMTP。自定义域名、IMAP 邮箱、catch-all、转发、内置 IMAP 迁移和 API 访问取决于具体套餐。付费套餐可能提供需信用卡才能开始的 14 天免费试用。按当前条件,Nano 可免费使用且无需银行卡。选择前请核实最新价格、功能和限制。

这种模式很重要,因为管理 SPF、DKIM 与 DMARC 是持续的运营工作。若管理许多域名,统一控制面板、共享存储、准备好的 DNS 记录和服务器端迁移可能减少分散流程,但不能取代验证。若这符合你的场景,请比较多域名邮箱托管。需要核对数字时,请查看 TrekMail 价格

结论:SPF、DKIM 与 DMARC 已是基础配置

SPF、DKIM 与 DMARC 邮件认证不再是少见的高级措施。SPF 指明 envelope 域允许的发送 IP,DKIM 证明选定数据的签名有效,DMARC 把成功机制与可见 From 域关联,并发布希望收件方采用的策略。

如果本周只能处理一项任务,请先清点发送方,发布一条有效 SPF、一个可用的 DKIM 记录和 p=none 的 DMARC。然后验证每条实际路径,包括低频流程和转发。在多个代表性期间观察并准备回滚之后,再加强策略。这样的准备可降低后续排查拒收的风险,但不会保证送达或节省成本。

分享这篇文章

我们使用运行和保护 TrekMail 所必需的技术。确认后还会允许《Cookie 政策》中所述的有限分析和广告衡量。

登录 TrekMail

访问您的控制面板、邮箱和 DNS。

12 个字符 两次密码一致

重置邮件已发送

如果该邮箱对应已有账户,我们已发送密码重置说明。

继续即表示您同意 TrekMail 的 服务条款隐私政策.