已通过SPF/DMARC/DKIM测试但邮件投递异常问题咨询
邮件投递异常问题排查与解决
我经常碰到这类邮件投递的实际问题,给你详细拆解下两个场景的排查方向和解决办法:
场景1:SPF/DKIM/DMARC全通过,但邮件仍进垃圾邮件箱
三大认证只是邮件合规的基础门槛,垃圾邮件过滤系统还有N多维度的判断,重点查这几个点:
- 内容本身踩了垃圾规则:
检查邮件里有没有垃圾邮件高频词(比如“免费领取”“限时特惠”这类夸张营销语,或者过多感叹号、可疑短链),还有排版是不是全图少字、附件带可疑后缀。很多系统用SpamAssassin这类工具打分,内容分太高的话,哪怕认证全过也会被扔进垃圾箱。 - 发送IP的信誉炸了:
你的IP可能在第三方黑名单里(比如Spamhaus、URIBL),或者之前被别人用来发过垃圾邮件。用dig +short 你的IP.bl.spamhaus.org命令就能快速查是否被拉黑,也可以用一些IP信誉工具查评分。尤其是云服务器的IP,很多IP段本身就被标记为高风险,因为之前的租户可能滥用过。 - 邮件头细节没做好:
核对From地址是否和SPF/DKIM的域名完全一致,Reply-To、Return-Path这些字段是不是合规。另外,缺失Message-ID、Date这类必填字段,或者格式不对,也会被系统扣分。 - 收件方的个性化过滤:
有些用户自己设了过滤规则,或者你的邮箱曾经被他们手动标记过垃圾。找几个不同服务商的邮箱测试(比如Gmail、Outlook、企业邮箱),如果只有某个域名的邮箱有问题,大概率是对方的个性化设置在搞鬼。 - 发送行为太激进:
新IP或者新域名如果短时间内发大量邮件,很容易被判定为垃圾。先做“暖IP”,逐步提升发送量,让收件方系统慢慢认可你的发送行为。
场景2:Amazon EC2 Ubuntu 14.04配置Postfix/DKIM/SPF后,邮件投递异常(推测是无法正常进入收件箱或进垃圾箱,原表述可能存在笔误)
EC2实例发邮件确实天生自带坑,哪怕配置了三大认证也容易出问题,核心原因是EC2的IP段信誉普遍不高,给你针对性的解决办法:
- 申请解除EC2 IP的邮件限制:
AWS默认对EC2公共IP的邮件发送有限制,而且很多邮件服务商把EC2 IP段列入灰名单。你可以登录AWS控制台提交工单,说明你的邮件发送是合法合规的(比如业务通知、验证码),申请移除限制。另外,一定要用弹性IP,别每次重启实例换IP,不然信誉积累不起来。 - Postfix配置要规范:
打开/etc/postfix/main.cf检查关键配置:myhostname必须设为你的自定义域名(比如mail.yourdomain.com),不能用EC2的默认主机名;smtpd_banner要设置成规范格式,别带EC2相关的标识;- 开启
smtpd_recipient_restrictions等安全规则,防止被当成开放中继;
用postconf -n命令可以快速查看当前生效的配置,核对参数是否正确。
- DKIM配置再验证一遍:
别光说配置了,用opendkim-testkey -d 你的域名 -s default命令验证DKIM密钥是否有效,同时检查域名的TXT记录是不是完全匹配生成的公钥,Postfix是不是正确调用了opendkim服务。 - SPF记录要精准:
SPF记录要包含你的EC2弹性IP,或者AWS的IP段,比如v=spf1 ip4:你的EC2IP include:amazonses.com ~all(如果后续转用SES的话)。别设置成+all这种宽松规则,会直接拉低信誉。 - 建议换用Amazon SES:
Ubuntu 14.04早就停止官方支持了,自建邮件服务器维护成本太高,而且EC2的IP信誉问题很难根治。不如直接用Amazon SES,它专门做邮件发送,自带优质IP池,和EC2集成也简单,稳定性和送达率都靠谱得多。
内容的提问来源于stack exchange,提问作者Malik Kamran Abid




