最近,我在管理一个旧有域名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的防护、加速和简单管理能力。
记录这次实际操作,如有类似需求的同好,期望这些经验对你有所帮助。