根据DMARC 常见问题解答可以为多个域制定单一策略,并且所有工具都参考该主策略:
如何才能同时将 DMARC 记录放在多个域名上?
一些组织可能出于品牌保护或其他原因注册了许多域名。管理所有这些域名通常很有挑战性。这里有一种可行的方法,可以将 DMARC 记录放在所有域名上,并轻松控制更改。您可以将 CNAME 用于 DMARC 记录,并使用通配符进行报告。
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:[email protected]" _dmarc.example.net. IN CNAME _dmarc.example.com. *._report._dmarc.example.com IN TXT "v=DMARC1"
现在只需管理一条 DMARC 记录。需要报告记录是因为您要求将 example.net 的汇总报告发送到另一个域 example.com。因此,该域必须表明它愿意接收此类报告。使用通配符,该域表示它愿意接收有关任何域的报告。正确设置邮箱的电子邮件过滤[电子邮件保护]以避免收到您不感兴趣的报告。
对于 Cloudflare 管理的别名域:
;; CNAME Records
_dmarc.lists.example.net. 300 IN CNAME _dmarc.example.org.
_dmarc.example.net. 300 IN CNAME _dmarc.example.org.
对于实际发送邮件并将成为主要策略的域:
;; TXT Records
_dmarc.example.org. 300 IN TXT "v=DMARC1\; p=quarantine\; pct=1\; rua=mailto:[email protected]"
*._report._dmarc.example.org. 300 IN TXT "v=DMARC1"
如上所示,我使用 dmarcian 来处理 dmarc 报告。当我测试时,它找不到 example.net 域的 dmarc 记录,其他工具(如 Mbox Proofpoint)也找不到。我相信常见问题解答没有撒谎(DNS 行为告诉我们这应该是可能的),但规范没有明确提到这个特性, 发生什么了?
答案1
如果 CNAME 指向其他域上的记录,建议确保将 Cloudflare 设置为仅 DNS。使用 Cloudflare 作为代理,DNS 返回 Cloudflare SOA 而不是 TXT 记录,如 dig 输出中所示:
;; AUTHORITY SECTION:
example.net. 3600 IN SOA jason.ns.cloudflare.com. dns.cloudflare.com. 2023909238 10000 2400 604800 3600
如果您禁用代理,它会使用正确的记录来回答:
;; ANSWER SECTION:
_dmarc.example.net. 300 IN CNAME _dmarc.example.org.
_dmarc.example.org. 300 IN TXT "v=DMARC1; p=quarantine; pct=1; rua=mailto:[email protected]"