DMARC(基于域名的消息身份验证)

电子邮件和安全
电子邮件身份验证协议,建立在SPF和DKIM之上,允许域名所有者指定如何处理未经身份验证的电子邮件。
← 返回词汇表

什么是DMARC?

DMARC(基于域的消息身份验证、报告与一致性)是基于SPF和DKIM的电子邮件身份验证协议。它允许域所有者发布指定接收服务器应如何处理未通过身份验证的消息的政策,并提供机制来监控电子邮件身份验证。

为什么DMARC至关重要

SPF和DKIM单独有关键间隙:它们不告诉接收器如何处理失败的消息。攻击者可以发送没有SPF/DKIM的欺骗电子邮件,接收器没有指导。

DMARC通过以下方式解决这个问题:

DMARC的工作原理

1. 发件人发布 DNS中的DMARC政策(TXT记录在_dmarc.domain.com)

2. 电子邮件被发送带有From: user@domain.com

3. 接收器检查 SPF和DKIM

4. 接收器检查对齐:From头中的身份验证域是否匹配?

5. 政策应用:基于DMARC记录(无、隔离、拒绝)

6. 发送报告:聚合报告到指定地址

DMARC对齐

DMARC要求"对齐"——From头中的域必须匹配以下任何一个:

没有对齐,SPF/DKIM通过但DMARC失败。

DMARC记录格式

DMARC记录是_dmarc.yourdomain.com处的TXT记录:

_dmarc.example.com.    IN    TXT    "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

DMARC标签

标签必需描述示例
v版本v=DMARC1
p政策p=none/quarantine/reject
rua聚合报告URIrua=mailto:reports@example.com
ruf法证报告URIruf=mailto:forensic@example.com
pct政策百分比pct=100
sp子域政策sp=reject
adkimDKIM对齐模式adkim=s(严格)或adkim=r(宽松)
aspfSPF对齐模式aspf=s或aspf=r

DMARC政策

p=none:仅监控——对失败的消息不采取任何行动
v=DMARC1; p=none; rua=mailto:dmarc@example.com
p=quarantine:将失败的消息发送到垃圾/垃圾
v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com
p=reject:完全拒绝失败的消息
v=DMARC1; p=reject; rua=mailto:dmarc@example.com

DMARC实施路径

阶段1:监控(p=none)

开始监控以理解你的电子邮件生态:

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

在2-4周内分析报告以识别:

阶段2:隔离(p=quarantine)

一旦合法来源得到身份验证:

v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc-reports@example.com

使用pct=10最初仅隔离10%,逐步增加。

阶段3:拒绝(p=reject)

完全保护:

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

DMARC报告

聚合报告(rua)

日常XML报告显示跨所有电子邮件的身份验证结果:

法证报告(ruf)

单个失败报告(由于隐私,并非所有接收器发送):

报告处理

原始DMARC报告是XML格式且难以阅读。使用服务如:

检查DMARC

dig _dmarc.example.com TXT
curl "https://domscan.net/v1/health?domain=example.com"

# 返回hasDMARC状态

常见DMARC问题

未收到报告:确保rua地址可以接收大型电子邮件;某些提供商过滤。 合法电子邮件失败:检查所有发送服务的SPF/DKIM配置;验证对齐。 第三方服务失败:许多服务需要自定义DKIM设置以获得DMARC对齐。

DMARC是电子邮件身份验证的顶峰——在SPF和DKIM工作正确后实施它。

将知识付诸实践

使用 DomScan 的 API 检查域名可用性、健康状态等。