Google拒收已通过DKIM/SPF验证的邮件且停止发送DMARC报告的问题求助
问题背景
我遇到一个棘手的邮件认证问题:我们发送的邮件明明同时通过了DKIM签名验证和SPF发件人验证,其他ISP都能正常接收,且邮件头也确认了认证有效,但Google却一直在拒收这些邮件。更奇怪的是,自从我们把DMARC策略改成reject后,Google就不再给我们发送DMARC报告了,但其他ISP还能正常发送同域名的报告,说明DMARC配置本身是生效的。
我们的DMARC记录如下:
v=DMARC1; p=reject; ruf=mailto:support@mydomain.com; rua=mailto:support@mydomain.com; fo=1; adkim=r; aspf=r; pct=100; rf=afrf; ri=28800; sp=reject;
Google拒收日志详情
Jul 19 15:24:04 uksvl-web03-rs postfix/smtp[18671]: C180250BFA: to=<recipient.email>, relay=aspmx.l.google.com[64.233.167.27]:25, delay=0.66, delays=0.32/0/0.04/0.31, dsn=5.7.26, status=bounced (host aspmx.l.google.com[64.233.167.27] said: 550-5.7.26 Unauthenticated email from mydomain.com is not accepted due to 550-5.7.26 domain's DMARC policy. Please contact the administrator of 550-5.7.26 mydomain.com domain if this was a legitimate mail. Please visit 550-5.7.26 https://support.google.com/mail/answer/2451690 to learn about the 550 5.7.26 DMARC initiative. p13-20020adfe60d000000b00314343692b7si2238651wrm.545 - gsmtp (in reply to end of DATA command))
其他ISP的认证结果示例(验证邮件合法)
Authentication-Results: spf=pass (sender IP is x.x.x.x)
smtp.mailfrom=uksvl-web03-rs.mydomain.com; dkim=pass (signature was verified)
header.d=senderdomain.com;dmarc=pass action=none
header.from=senderdomain.com;compauth=pass reason=100
Received-SPF: Pass (protection.outlook.com: domain of
uksvl-web03-rs.mydomain.com designates x.x.x.x as permitted sender)
receiver=protection.outlook.com; client-ip=x.x.x.x;
helo=uksvl-web03-rs.mydomain.com; pr=C
分析与排查建议
作为常年处理邮件认证问题的从业者,我觉得可以从这几个核心方向入手解决:
1. 优先解决Google拒收问题:DMARC对齐漏洞
从日志看Google判定邮件“未认证”,但Outlook那边全pass,核心矛盾点大概率在DMARC对齐规则上——哪怕SPF/DKIM单独验证通过,只要和DMARC绑定的域名没对齐,Google就会触发拒载:
- 检查
header.from(用户看到的发件人域名)与DMARC绑定域名的匹配度:你Outlook的记录里header.from是senderdomain.com,但DMARC是给mydomain.com设置的,这直接违反了DMARC的对齐要求!哪怕你设了aspf=r(宽松对齐),也要求发件人域名和DMARC域名存在关联(比如子域名),完全无关的域名会直接导致DMARC失败。 - 核对DKIM签名域名:你的DKIM签名域名是
senderdomain.com,同样和DMARC绑定的mydomain.com无关联,就算DKIM验证通过,也无法满足DMARC的DKIM对齐要求。
解决思路:要么把header.from改成mydomain.com或其子域名,要么给senderdomain.com单独配置DMARC记录,确保发件人域名、DKIM签名域名、DMARC域名三者对齐。
2. 排查Google停止发送DMARC报告的原因
之前用非reject策略能收到报告,改策略后收不到,可能的原因有这些:
- 邮箱拦截:检查
support@mydomain.com的垃圾邮件箱,或者邮箱的反垃圾规则,是不是把Google的DMARC报告邮件当成垃圾拦截了。Google发送报告的地址一般是dmarc-noreply@google.com,可以把这个地址加入白名单。 - 策略触发的报告调整:当DMARC设为
p=reject且pct=100时,Google可能认为已经严格执行了拒载策略,会降低报告发送频率,甚至暂时停止发送。你可以临时把pct调低到10%,测试下是否能收到报告,确认报告通道是否正常。 - 记录有效性:用
dig _dmarc.mydomain.com TXT命令再次确认DMARC记录完全正确,没有拼写错误,比如rua/ruf的邮箱地址是否准确。
3. 辅助排查工具
- 绑定Google Postmaster Tools到你的域名,能看到Google那边详细的邮件认证状态、拒收原因,比单纯看日志更直观。
- 发送测试邮件到
check-auth@verifier.port25.com,会收到一份多维度的详细认证报告,能精准定位对齐问题。
备注:内容来源于stack exchange,提问作者Kinexus

