关于Outlook对AWS SES发送的同一邮件随机判定DMARC通过或失败的问题咨询
关于Outlook对AWS SES发送的同一邮件随机判定DMARC通过或失败的问题咨询
嘿,这个问题我之前帮同行排查过类似的,咱们一步步来拆解:
从你贴的邮件头就能看出关键问题——DMARC对齐失败,但为什么会随机发生呢?先看细节:
你失败的邮件里,SPF和DKIM各自都验证通过了,但DMARC却判了fail:
Authentication-Results: spf=pass (sender IP is 54.240.48.132) smtp.mailfrom=amazonses.com; dkim=pass (signature was verified) header.d=amazonses.com;dmarc=fail action=none header.from=xxxxxx.com;compauth=fail reason=001 Received-SPF: Pass (protection.outlook.com: domain of amazonses.com designates 54.240.48.132 as permitted sender) receiver=protection.outlook.com; client-ip=54.240.48.132; helo=a48-132.smtp-out.amazonses.com; pr=C
这里的核心矛盾是:DMARC要求SPF的smtp.mailfrom域名,或者DKIM的header.d域名,必须和邮件里显示的发件人域名(header.from=xxxxxx.com)对齐,但你失败的邮件里,这两个用的都是AWS SES默认的amazonses.com,和你的业务域名xxxxxx.com完全不匹配,所以DMARC判定失败,Outlook就标记成了“未验证发件人”。
那为什么有时候又能通过呢?大概率是你的AWS SES配置里,部分发送请求触发了自定义域名的对齐配置,而另一部分用了SES默认的域名:
- 比如你可能在SES里设置了自定义MailFrom域名(比如
mail.xxxxxx.com),但某些发送场景下没用到这个配置, fallback到了默认的amazonses.com; - 或者DKIM签名有时候用了
xxxxxx.com的密钥,有时候用了SES默认的密钥,导致对齐结果不稳定。
给你几个落地的排查和解决步骤:
- 锁定AWS SES的自定义MailFrom配置:登录SES控制台,找到你的发送域名,确认已经设置了自定义MailFrom域名,并且这个域名已经完成了SPF和DKIM的DNS解析配置。确保所有发送请求都强制使用这个自定义MailFrom,别用默认的。
- 强制DKIM签名对齐:在SES的域名配置里,启用用
xxxxxx.com域名生成的DKIM密钥签名,禁用默认的SES域名签名。这样所有邮件的DKIMd=值都会和header.from一致,直接满足DMARC的对齐要求。 - 检查你的DMARC记录:去DNS服务商那里查
xxxxxx.com的DMARC记录,看看是不是设置了p=none(这个不会拦截邮件,但Outlook会基于对齐结果标记)。建议确保SPF/DKIM至少一个对齐的同时,把DMARC记录设置成p=quarantine或者p=reject(根据你的需求),这样邮件的验证结果会更稳定。 - 顺便确认SPF记录覆盖所有SES IP:虽然你的SPF已经通过了,但要确保
xxxxxx.com的SPF记录里包含了AWS SES的所有发送IP(或者用SES提供的SPF include记录),避免后续出其他问题。
另外,Outlook的compauth=fail reason=001就是复合验证失败,本质就是DMARC对齐不达标,把对齐问题解决了,这个随机标记的情况应该就消失了。
备注:内容来源于stack exchange,提问作者AlexD
相关产品推荐
相关产品推荐

