设置DMARC防止电子邮件欺骗和网络钓鱼

目录

  1. 什么是DMARC及其重要性
  2. SPF、DKIM与DMARC的协作关系
  3. DMARC DNS记录结构
  4. 策略级别:none、quarantine、reject
  5. 分步配置DMARC
  6. 理解DMARC报告
  7. 子域名的DMARC配置
  8. 常见错误及解决方法
  9. 验证DMARC配置
  10. 常见问题

什么是DMARC及其重要性

DMARC 是 Domain-based Message Authentication, Reporting & Conformance(基于域名的消息认证、报告和一致性)的缩写,是一种国际电子邮件认证标准,允许域名所有者指定当声称来自其域名的邮件未通过认证检查时应如何处理。

电子邮件欺骗(Email Spoofing)是指攻击者伪造发件人地址(From标头),使其看起来来自可信域名(如 [email protected]),即使他们没有该域名的使用权限。DMARC为收件方邮件服务器提供了一种检测和拒绝此类伪造邮件的机制。

2026年DMARC为何更加重要:谷歌和雅虎要求批量发件人必须配置DMARC策略。2026年,全球主要电子邮件服务商进一步加强认证执行力度,DMARC已成为域名信誉和邮件送达率的必要条件。

SPF、DKIM与DMARC的协作关系

要理解DMARC,首先需要了解SPF和DKIM的基础知识:

标准功能DNS记录验证内容
SPF列出授权发送邮件的IP地址TXT (v=spf1...)邮件服务器IP地址
DKIM为邮件添加数字签名TXT (selector._domainkey)数字签名有效性
DMARC定义策略并接收报告TXT (_dmarc)对齐 + 策略执行

DMARC不替代SPF或DKIM,而是在两者基础上构建。DMARC检查对齐性——From标头中的域名是否与通过SPF或DKIM认证的域名一致。

DMARC DNS记录结构

DMARC记录是在域名的 _dmarc 子域名创建的TXT记录,例如:

_dmarc.yourcompany.com  TXT  "v=DMARC1; p=none; rua=mailto:[email protected]; fo=1"

各标签说明:

标签含义示例值
v版本(必填)DMARC1
p根域名策略(必填)none / quarantine / reject
sp子域名策略none / quarantine / reject
rua接收汇总报告的地址mailto:[email protected]
ruf接收取证报告的地址mailto:[email protected]
pct应用策略的邮件百分比100(默认)
adkimDKIM对齐模式r(宽松)/ s(严格)
aspfSPF对齐模式r(宽松)/ s(严格)
fo失败报告选项0 / 1 / d / s

策略级别:none、quarantine、reject

p= 值是DMARC的核心,共有3个级别:

1 p=none — 监控模式

认证失败的邮件仍正常投递,但您会收到报告。适合初学者或测试阶段——先收集数据再提高执行力度。

2 p=quarantine — 隔离模式

认证失败的邮件进入垃圾邮件文件夹而非收件箱。适合对SPF/DKIM配置有70-80%把握时使用。

3 p=reject — 完全拒绝

认证失败的邮件被完全拒绝,发件人收到退信通知。适合100%确认所有合法邮件都通过认证后使用。

分步配置DMARC

1 验证SPF记录已存在

dig TXT yourdomain.com | grep spf

预期结果:"v=spf1 include:mail.yourdomain.com ~all"

2 验证DKIM记录已存在

dig TXT default._domainkey.yourdomain.com

AsiaGB主机用户(DirectAdmin):开通邮件托管后DKIM会自动配置。

3 创建DMARC记录

在域名DNS管理器中创建TXT记录:

字段值
类型TXT
主机/名称_dmarc
值v=DMARC1; p=none; rua=mailto:[email protected]
TTL3600

4 等待DNS传播(24-48小时)

创建记录后,DNS全球传播通常需要1-24小时。

5 查看报告并逐步提升策略

收集2-4周报告后,分析是否有合法邮件失败,然后逐步升级至quarantine → reject。

理解DMARC报告

DMARC生成两种类型的报告:

类型标签频率内容
汇总报告rua=每日SPF/DKIM通过/失败的统计摘要
取证报告ruf=每次失败单封失败邮件的副本(部分服务商不发送)

报告以XML格式发送,建议使用以下工具解析:

子域名的DMARC配置

使用 sp= 标签为子域名设置不同策略:

"v=DMARC1; p=reject; sp=quarantine; rua=mailto:[email protected]"

此示例中,根域名使用reject而所有子域名使用quarantine——适合部分子域名尚未配置DKIM的情况。

提示:如果您使用多个子域名发送邮件(通讯、事务性邮件),请先确认每个子域名都有自己的SPF/DKIM记录,再启用严格策略。

常见错误及解决方法

错误原因解决方法
设置DMARC后垃圾邮件仍能发送使用p=none(仅监控模式)切换至p=quarantine或p=reject
合法邮件被拒绝SPF/DKIM未覆盖所有邮件服务检查汇总报告并添加缺失的SPF include
未收到DMARC报告rua=地址无效或邮箱已满验证目标邮箱和DNS语法
DMARC记录无效空格或语法错误使用MXToolbox DMARC检查器
SPF通过但对齐失败Mail From域名≠From标头域名使用aspf=r(宽松模式)或修正Mail From地址

验证DMARC配置

dig TXT _dmarc.yourdomain.com

# 预期输出:
_dmarc.yourdomain.com. 3600 IN TXT "v=DMARC1; p=reject; rua=mailto:[email protected]"

或使用在线工具:

总结:推荐的升级路径是 p=none(2-4周)→ p=quarantine pct=25 → pct=100 → p=reject。逐步提高执行力度,避免意外阻止合法邮件。

常见问题

什么是DMARC?
DMARC(基于域名的消息认证、报告和一致性)是一种电子邮件认证标准,通过与SPF和DKIM协同工作,防止域名欺骗,控制认证失败邮件的处理方式,并向域名所有者发送报告。
none、quarantine和reject策略有什么区别?
none = 仅监控,对失败邮件不采取任何行动;quarantine = 可疑邮件进入垃圾邮件文件夹;reject = 完全拒绝认证失败的邮件。建议初学者先使用none收集数据,再逐步提高策略级别。
设置DMARC会影响正常邮件发送吗?
使用p=none时,DMARC完全不影响邮件投递。只有quarantine和reject策略才会影响投递,且仅针对未通过认证的邮件,通过SPF/DKIM验证的正常邮件不受影响。
设置DMARC前需要先配置SPF和DKIM吗?
是的,必须先正确配置SPF和DKIM,因为DMARC依赖两者的验证结果来做决策。没有SPF/DKIM,所有邮件将立即通不过DMARC验证,可能导致所有邮件被阻止。
如何阅读DMARC报告?
在DMARC记录中设置rua=即可通过邮件接收汇总报告,报告以XML格式发送。建议使用MXToolbox DMARC Analyzer或dmarcanalyzer.com等工具解析和可视化数据。
如何验证DMARC配置是否正确?
使用 dig TXT _dmarc.yourdomain.com 命令查询DNS记录,或使用mxtoolbox.com/dmarc在线工具进行全面验证和分析。