DMARC报告中DKIM策略评估失败但认证结果通过的问题排查咨询
兄弟,你遇到的这个问题其实是DMARC里的域名对齐失败,这是非常常见的坑,我来给你拆解清楚:
首先看你贴的DMARC报告细节:
<auth_results>
SENDERDOMAIN.onmicrosoft.com pass
<header_from>COMPANYDOMAIN.com</header_from>
这里的核心矛盾是:DKIM本身的认证是通过的,但DMARC要求DKIM签名的域名必须和邮件头里的From域名(也就是你的公司域名COMPANYDOMAIN.com)对齐——要么完全一致,要么是它的子域名(如果你的DMARC记录设了adkim=r宽松对齐的话,默认是s严格对齐)。而你的邮件是用微软默认的onmicrosoft.com域名签的DKIM,和你的自定义公司域名完全不匹配,所以DMARC的DKIM评估直接判了fail,哪怕DKIM本身是有效的。
至于你用dkimvalidator测试显示pass,是因为这类工具通常只验证DKIM签名本身是否合法,不会检查DMARC要求的域名对齐规则,所以才会出现和DMARC报告不一致的情况。
接下来给你说排查和解决步骤:
第一步:确认微软365的DKIM配置状态
你大概率还没为自己的自定义域名COMPANYDOMAIN.com配置专属的DKIM,一直在用微软默认的onmicrosoft.com签名。你需要登录微软365 admin中心,进入Exchange admin > 邮件流 > DKIM,找到你的自定义域名,点击「启用」。如果提示需要添加DNS记录,按照要求生成两个CNAME记录(一般是selector1和selector2开头),到你的域名DNS服务商后台添加,等DNS生效后再启用DKIM。第二步:验证签名域名是否对齐
启用自定义域名的DKIM后,发一封测试邮件,查看邮件头里的DKIM字段,确认d=后面跟着的是COMPANYDOMAIN.com,而不是onmicrosoft.com。第三步:等待DMARC报告验证结果
等下一次Google(或其他收件方)发送DMARC报告,检查policy_evaluated里的<dkim>字段是否变成pass,同时确认auth_results里的DKIM域名和header_from一致。
如果还有问题,可以检查你的DMARC记录是否设置了adkim=s(严格对齐,默认就是这个),如果临时想宽松测试,可以改成adkim=r,但长期来看还是用自定义域名的DKIM签名,保证严格对齐更安全。
备注:内容来源于stack exchange,提问作者EM0

