技术解析 · 附来源的解答
DMARC 记录:定义与配置指南
DMARC 记录是一条 DNS TXT 记录,用于告诉收件邮件服务器如何处理未通过 SPF 或 DKIM 身份验证的邮件。域名所有者可以为未经验证的邮件指定 none、quarantine 或 reject 策略,确保只有经过授权的发件人才能使用该域名。
工作机制
DMARC 通过检查 From 头中的域名与 SPF、DKIM 所验证的域名之间是否对齐来工作。如果 SPF 检查通过且域名匹配,或者 DKIM 签名有效且域名匹配,该邮件就符合 DMARC 要求。如果两者都失败或都未对齐,收件方会按照 DMARC 记录中定义的策略,决定投递、标记还是拦截该邮件。
对发件人的重要性
DMARC 让发件人能够控制收件方如何处理未经授权的邮件,从而防止域名伪造和网络钓鱼。如果没有 DMARC 记录,收件方对身份验证失败的邮件缺乏明确的处理指示,可能导致投递结果不一致。实施严格的策略可以降低攻击者发送看似来自您官方企业域名的欺诈邮件的风险。
运维说明与常见错误
一个常见错误是在分析报告数据之前就切换到 reject 策略。发件人应从 p=none 开始,在不影响投递的情况下监控流量。另一个常见错误是 TXT 记录语法不正确,例如缺少分号或使用了无效标签。在部署前使用 SendHQ 或其免费工具(https://sendhq.cc/tools)可以帮助验证记录格式是否正确。
具体示例
一条典型的 DMARC 记录如下:v=DMARC1; p=quarantine; rua=mailto:reports@example.com。在此示例中,v=DMARC1 标识记录版本,p=quarantine 指示收件方将未通过验证的邮件放入垃圾邮件文件夹,rua 指定接收 XML 汇总报告以供分析的邮箱地址。
策略级别
主要有三个策略级别。p=none 为监控模式,不对未通过验证的邮件采取任何措施。p=quarantine 会将未通过验证的邮件放入收件人的垃圾邮件文件夹。p=reject 是最严格的级别,指示收件服务器直接退回该邮件,使其根本无法到达收件人的邮箱。
团队常问的问题
DMARC 会取代 SPF 或 DKIM 吗?
不会,DMARC 建立在 SPF 和 DKIM 之上。它要求至少其中一项存在且有效,才能验证发件人身份,并规定两者失败时应采取的策略。
rua 和 ruf 有什么区别?
rua 用于汇总报告,提供邮件量和身份验证情况的宏观统计。ruf 用于取证报告,提供单封验证失败邮件的详细信息。
可以配置多条 DMARC 记录吗?
不可以,一个域名只能有一条 DMARC 记录。如果在 DNS 中发现多条记录,收件服务器通常会全部忽略,使该域名失去保护。
一手资料
- RFC 7489:基于域的消息认证、报告与一致性(DMARC) — RFC Editor
- RFC 7208:发件人策略框架(SPF) — RFC Editor
- RFC 6376:DomainKeys 识别邮件(DKIM) — RFC Editor