如何正确配置SPF、DKIM和DMARC邮件验证记录?

来源:网络学院作者:韦伯头衔:草根站长
导读:本期聚焦于韦伯创作的《如何正确配置SPF、DKIM和DMARC邮件验证记录?》,敬请观看详情。邮件伪造与钓鱼攻击日益猖獗,域名所有者如果忽略邮件身份验证,轻则被冒名发送垃圾邮件,重则导致客户信息泄露。要解决这类问题,核心在于正确配置SPF、DKIM与DMARC这三类DNS记录。本文从零开始梳理它们的配置方法,包括各记录的语法格式、常见参数含义以及三者配合使用的策略。通过实例展示如何在DNS服务商后台添加TXT记录,并给出验证与排错的命令。配置完成后,收件方可以验证发件人身份,有效提升邮件可信度与送达率,同时降低域名被伪造的风险。

SPF、DKIM和DMARC是邮件身份验证体系中的三大支柱,它们分别从发件人IP授权、邮件签名验证和接收方处理策略三个层面,帮助邮件系统确认一封邮件是否真的来自声称的域名。没有这些记录,攻击者很容易伪造发件人地址,导致品牌受损、用户被骗,甚至被列入垃圾邮件黑名单。下面详细拆解三类记录的配置方法和注意事项。

如何正确配置SPF、DKIM和DMARC邮件验证记录?

SPF记录配置详解

SPF(Sender Policy Framework)基于发件人IP地址的授权机制,告诉收件方哪些IP或主机被允许使用该域名发送邮件。它的本质是一条TXT记录,放置在域名的根区域。当收件服务器收到来自该域名的一封邮件时,会查询发件人域名的SPF记录,检查发件服务器IP是否在授权列表中。如果不在,则可能拒绝或标记为垃圾邮件。

SPF记录的语法以版本号开头,后面跟着一个或多个机制(mechanism),每个机制可以带前缀加号、减号、问号或波浪号,分别表示通过、拒绝、中性或软拒绝。常用的机制包括ip4ip6includeamxall。例如,如果公司只使用自己的Exchange服务器(IP为192.0.2.25)和一个第三方营销平台(spf.ipipp.com)发送邮件,可以配置如下记录:

v=spf1 ip4:192.0.2.25 include:spf.ipipp.com -all

这条记录表示:允许IP 192.0.2.25发送邮件,允许包含在spf.ipipp.com的SPF记录中的服务器发送邮件,其他所有来源一律拒绝(-all)。使用-all是严格模式,如果对第三方发件来源不清楚,可以先使用~all(软拒绝),观察一段时间后再改为-all。需要特别说明的是,每个域名只能有一条SPF记录,多余的记录会被收件方忽略或导致验证失败。另外,SPF记录中的DNS查询次数不能超过10次,否则会返回永久错误,因此要避免过多的include嵌套。

配置完成后,可以使用命令nslookup -type=txt yourdomain.comdig txt yourdomain.com查看SPF记录是否正确。常见错误包括:记录值前多了空格、缺少v=spf1、或者同时存在多条SPF记录。

DKIM记录配置详解

DKIM(DomainKeys Identified Mail)通过非对称加密对邮件进行签名,保证邮件内容在传输过程中未被篡改,并且发件域名确实对该邮件负责。发送方使用私钥对邮件头和正文的一部分进行签名,然后将公钥发布在DNS的TXT记录中。接收方从DNS获取公钥,验证签名是否有效。DKIM记录必须放在一个特定的子域名下,格式为选择器._domainkey.你的域名,其中选择器是发送方自定义的标识,例如defaultgoogleselector1

生成密钥对通常由邮件服务提供商或自建邮件服务器完成。以常见的OpenDKIM为例,可以使用opendkim-genkey命令生成私钥和公钥。公钥内容需要以TXT记录的形式发布到DNS,私钥则保存在邮件服务器上。一条典型的DKIM记录如下:

v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC...

记录中的v=DKIM1表示版本号,k=rsa表示密钥类型,p=后面是Base64编码的公钥。注意公钥内容可能很长,超过255字符时需要拆分成多个字符串片段,每个片段用双引号包裹,但在DNS管理后台直接粘贴整段内容一般也能自动处理。选择器的命名应当有意义,例如mailnewsletter,同一个域名可以配置多个不同选择器的DKIM记录,分别对应不同的发信系统。

DKIM配置中最常见的错误是公钥与私钥不匹配、选择器拼写错误、DNS记录中的公钥被截断或包含多余的换行符。验证时可以使用dig txt selector._domainkey.yourdomain.com查询记录,并通过专用DKIM测试工具检查签名。另外要注意,DKIM不能单独解决域名伪造问题,它必须与SPF和DMARC结合才能充分发挥作用。

DMARC记录配置详解

DMARC(Domain-based Message Authentication, Reporting and Conformance)建立在SPF和DKIM之上,告诉收件方当认证失败时应该如何处理邮件,并向域名所有者发送汇总报告。DMARC记录同样是一条TXT记录,放置在_dmarc.你的域名子域下。它解决了SPF和DKIM单独使用时的一个空白:即使验证失败,收件方也往往不知道如何处理,而DMARC给出了明确的策略。

一条基本的DMARC记录如下:

v=DMARC1; p=quarantine; rua=mailto:dmarc@ipipp.com; ruf=mailto:dmarc-forensic@ipipp.com; fo=1; aspf=r; adkim=s

其中p是核心策略,可选值为nonequarantinerejectnone表示只监控不处理,quarantine表示将失败邮件放入垃圾箱,reject表示直接拒绝。建议初次部署时先使用p=none,收集一段时间报告,确认所有合法邮件都能通过验证后再升级为quarantinerejectrua用于接收汇总报告,ruf用于接收取证报告,fo=1表示任何认证失败都生成取证报告。aspf=r表示SPF对齐模式为宽松,adkim=s表示DKIM对齐模式为严格。对齐模式决定SPF和DKIM验证时的域名匹配程度,严格模式更安全。

DMARC配置完成后,所有支持DMARC的收件方都会定期发送XML格式的报告到rua指定的邮箱,这些报告会列出哪些IP在发送该域名邮件、认证结果如何。通过分析报告可以及时发现未授权的发件源,并逐步收紧策略。需要注意,如果ruaruf的邮箱地址使用了第三方域名,可能需要在对应域名的SPF记录中包含报告服务提供商的IP,否则报告邮件可能被拒收。

配置后的验证与排错

完成三类记录的添加后,一定要进行完整验证。除了使用dignslookup查询记录外,还可以使用邮件服务商提供的在线检测工具,例如Gmail的“检查邮件认证”功能、Microsoft 365的消息追踪,或者第三方SPF/DKIM/DMARC检测网站。这些工具会模拟收件方查询记录并给出详细的认证结果。

最简单的命令行验证方式如下:

dig txt yourdomain.com
dig txt default._domainkey.yourdomain.com
dig txt _dmarc.yourdomain.com

如果查询结果中找不到记录,首先检查记录是否添加到了正确的DNS主机提供商,以及记录类型是否正确为TXT。常见错误包括:记录名称写成了完整域名(例如_dmarc.yourdomain.com.yourdomain.com)、在DNS管理后台选择了错误的区域、或记录了多余的引号和空格。对于SPF记录,还要检查是否存在多条SPF记录,因为多条记录会被视为验证失败。

SPF、DKIM和DMARC是一套需要协同配合的体系。SPF负责授权IP,DKIM负责内容签名,DMARC负责统一策略和报告。单独配置其中任何一项都能带来一定改善,但只有三者齐全且策略正确时,才能最大限度防止域名被伪造,同时保证正常邮件不被误判。建议每季度查看一次DMARC报告,及时调整SPF和DKIM记录,以适应发信渠道的变化。

SPF记录DKIM记录DMARC记录修改时间:2026-08-20 05:37:30

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。