Featured image of post 域安全:设置 SPF、DKIM 和 DMARC 设置Featured image of post 域安全:设置 SPF、DKIM 和 DMARC 设置

域安全:设置 SPF、DKIM 和 DMARC 设置

通过在 Cloudflare 或目标注册商上构造验证记录,避免进入垃圾邮件目录。

介绍

电子邮件身份验证对于防止域欺骗、网络钓鱼和垃圾邮件文件夹拒绝至关重要。三个基于 DNS 的标准 — SPFDKIMDMARC — 共同验证声称来自您的域的电子邮件是否合法。如果没有这些记录,攻击者就可以代表您发送伪造的电子邮件,而合法电子邮件可能会进入收件人的垃圾邮件文件夹。本指南解释了每个标准并展示了如何在 Cloudflare 或您的 DNS 提供商上配置它们。


SPF:发件人策略框架

SPF 发布授权为您的域发送电子邮件的 IP 地址列表。收件人邮件服务器根据 SPF 记录检查 Return-Path 域。

SPF 记录格式

SPF 记录是 DNS TXT 记录:

example.com  TXT  "v=spf1 include:_spf.google.com include:spf.mailgun.org ~all"
机制意义
占位符_0SPF 版本标识符
占位符_0将授权委托给另一个域
ip4:/ip6:授权特定 IP 范围
占位符_0授权域名的A记录
占位符_0授权域的 MX 服务器
占位符_0不匹配发件人的默认操作

预选赛

预选赛行动
占位符_0通过(默认)
占位符_0SoftFail(已标记但已接受)
占位符_0失败(应该被拒绝)
占位符_0中立(无断言)

在初始设置期间使用 ~all,然后在验证后迁移到 -all


DKIM:域名密钥识别邮件

DKIM 为每封发出的电子邮件附加加密数字签名。接收服务器从 DNS 检索发件人的公钥,以验证电子邮件没有被篡改。

DKIM 记录

DKIM 记录是特定选择器名称下的 DNS TXT 记录:

default._domainkey.example.com  TXT  "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
标签意义
占位符_0版本(始终为 DKIM1
占位符_0键类型(rsaed25519
占位符_0Base64 编码的公钥

Google Workspace、Mailgun 或 SendGrid 等电子邮件服务会自动生成 DKIM 密钥。您只需将公钥作为 DNS TXT 记录发布。


DMARC:基于域的消息身份验证、报告和一致性

DMARC 定义了收件人应如何处理未通过 SPF 和/或 DKIM 检查的电子邮件的策略。它还提供报告来帮助您监控身份验证结果。

DMARC 记录格式

DMARC 记录是 DNS TXT 记录:

_dmarc.example.com  TXT  "v=DMARC1; p=quarantine; rua=mailto:[email protected]; pct=100"
标签意义共同价值观
占位符_0版本(始终为 DMARC1占位符_2
占位符_0未经身份验证的电子邮件的政策nonequarantinereject
占位符_0受政策约束的电子邮件百分比1100
占位符_0汇总报告电子邮件地址mailto: URI
占位符_0取证故障报告地址mailto: URI
占位符_0子域策略(如果设置则覆盖 pp 相同

DMARC 策略级别

  1. p=none — 仅监控,不采取任何操作(首先使用此进行验证)
  2. p=quarantine — 将失败标记为垃圾邮件
  3. p=reject — 彻底拒绝失败(最严格)

他们如何合作

Sender sends email      →   Receiver checks SPF (is IP authorized?)
                         →   Receiver checks DKIM (is signature valid?)
                         →   Receiver checks DMARC policy
                              →   p=none:       no action
                              →   p=quarantine: move to spam
                              →   p=reject:     reject delivery

要使电子邮件通过 DMARC,它必须通过**SPF(带对齐)DKIM(带对齐)。 对齐 表示 From 标头中的域与用于 SPF 或 DKIM 的域匹配。


Cloudflare 上的配置

  1. 添加 SPF 记录:为 @ 创建一条 TXT 记录,其值为 v=spf1 include:_spf.google.com ~all
  2. 添加 DKIM 记录:使用提供商的公钥为 default._domainkey 创建 TXT 记录
  3. 添加 DMARC 记录:为 _dmarc 创建一条 TXT 记录,其值为 v=DMARC1; p=none; rua=mailto:[email protected]
  4. p=none 开始,审核报告一周,然后升级到 p=quarantinep=reject

检查工具

  • MXToolbox — 检查 SPF、DKIM 和 DMARC 记录
  • Google 管理工具箱 — 验证 DMARC 政策和报告
  • DMARC 分析器 — 解析和可视化 DMARC 聚合报告
  • dig 命令
    dig TXT example.com
    dig TXT default._domainkey.example.com
    dig TXT _dmarc.example.com
    

结论

SPF、DKIM 和 DMARC 构成了分层的电子邮件身份验证策略。 SPF 授权发送 IP,DKIM 提供加密完整性,DMARC 规定执行策略。从监控模式 (p=none) 开始,以确保合法邮件正确进行身份验证,查看 DMARC 报告,然后逐步实施更严格的策略。如果配置正确,这些记录可以显着减少垃圾邮件分类并防止域欺骗。