最近,我在管理一个旧有域名example.life
(隐去真实域名) 时,发生了一件小事件:我收到了来自 Google 的一封邮件,内容是关于example.life
域名的DMARC 报告。
这些报告通常是说:有一些邮件声称是从你的域名发送的,然而实际的发送服务器 IP,设置,SPF/DKIM 等证明或者未通过。
什么是 DMARC?#
DMARC (Domain-based Message Authentication, Reporting, and Conformance),是邮件验证的一种标准,主要功能有三个:
- 验证:跟踪 SPF/DKIM 验证结果,确定邮件是否真的来自指定域名;
- 报告:每天把检测结果到证邮件发送给你指定的邮箱;
- 处理策略:在邮件未通过验证时,指示收件方怎样处理(不管,隔离,或拒收)。
DMARC 未配置就有什么风险?#
- 别人可以假写你域名发送邮件,有可能被用作骗子、垃圾邮件。
- 有些深层骗子邮件,不验证就很难被分辨,导致业务或信用损失。
问题分析#
收到 DMARC 报告后,我检查了example.life
的现有配置,发现:
- DNS 托管于 Cloudflare,而非 Namecheap。
- MX 记录指向 Namecheap 的邮件转发服务,但我已不需要邮件功能;
- SPF 记录是 “禁止任何发件”,但同时存在了先前的转发 SPF 设置;
- DMARC 记录重复,有一条 p=none,一条 p=reject,需要统一;
- DKIM TXT 记录为空,没有公钥,无意义。
关于空值的*_domainkey
TXT 记录:
在 Cloudflare 通过 Email Record Creator 生成 DMARC 配置时,默认也会生成一条空值的*_domainkey
TXT 记录,但这条记录实际上没有公钥,也不负责 DKIM 验证,存在没有意义。
如果我不提供邮件发送服务,那么这条记录最好直接删除:
- 防止邮件检查工具报错(软性报警);
- 使域名 DNS 配置更加清洁。
如果有自己的邮件服务,那就应该从邮件服务提供商生成正确的 DKIM 公钥,补全记录。
总结:目前 example.life 不需要邮件功能,因此直接删除空 DKIM TXT 记录,是最好的选择。
解决方案#
- 确定保持 DNS 托管于 Cloudflare,不切换回 Namecheap BasicDNS。
- 删除所有 MX 记录,不再支持任何邮件功能。
- 保留 SPF TXT:
说明我的域名不允许发送任何邮件。
v=spf1 -all
- 保留 DMARC TXT:
确保严格拦截任何未通过验证的邮件。
v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s;
- 删除空值 DKIM TXT 记录,保证 DNS 清洁。
- 删除不再需要的
_acme-challenge
记录(如果不再自动维护证书)。 - 使用 Cloudflare 自带的 DNS 管理控制面,简单高效地操作。
总结#
通过此次清理,example.life
域名达到了极简简洁,安全性最大化:
- 不提供任何邮件服务;
- 完全禁止假写,促使域名信赖度最大化;
- 充分使用 Cloudflare 的防护、加速和简单管理能力。
记录这次实际操作,如有类似问题的,期望这些经验对你有所帮助。