配置严格SPF后仍有伪造本域发件人的垃圾邮件绕过拦截的技术求助
老哥,我仔细扒了你的问题和两封样本邮件头,这事儿的核心漏洞其实出在你的服务器没对自己域的发件人做SPF校验,还有白名单直接“放水”了,咱们一步步捋清楚:
先搞懂你看到的SPF Pass是啥意思
你邮件里的Received-SPF: pass (domain of gmail.com designates <spammer's IP> as permitted sender)根本不是在检查你的wickenburg.us域!要么是垃圾邮件伪造的头(毕竟邮件头可以随便编),要么是中转服务器在检查它自己的域,和你的SPF规则半毛钱关系都没有——你的SPF只规定了谁能发wickenburg.us的邮件,但你的服务器根本没执行这个检查!
现在给你解决步骤,按顺序来:
1. 先把白名单的“坑”填上
看你的SpamAssassin报告里,USER_IN_WHITELIST直接扣了-100分,这等于给所有声称来自jones@wickenburg.us的邮件开了“免死金牌”,不管是不是垃圾邮件都直接放行。赶紧去检查:
- 要么把
jones@wickenburg.us从全局白名单里删掉 - 要么改成**只允许来自你服务器IP(96.125.170.48)**的这个地址才能触发白名单
2. 让Exim强制检查本域发件人的SPF
你需要在Exim的配置文件里加一条规则,对所有声称来自wickenburg.us的邮件,必须过SPF验证,否则直接拒绝。
找到Exim的acl_check_recipient或者acl_check_data段,添加这段配置:
deny senders = *@wickenburg.us !verify = sender/spf message = SPF verification failed: Only our server (96.125.170.48) is allowed to send emails from wickenburg.us.
这段规则的意思是:只要发件人地址是@wickenburg.us结尾,且SPF验证不通过,直接打回,不给进服务器。
3. 配置DMARC记录,把SPF和From头绑定
你的SPF只检查信封发件人(SMTP协议里的MAIL FROM),但垃圾邮件会伪造显示在收件箱里的From头,这时候需要DMARC来管这个“对齐”问题。
给你的wickenburg.us域加一条DMARC TXT记录:v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc@wickenburg.us; ruf=mailto:dmarc@wickenburg.us; adkim=s; aspf=s
解释下关键参数:
p=reject:所有SPF/DKIM验证失败且对齐不匹配的邮件,直接拒绝adkim=s/aspf=s:严格对齐,要求DKIM/SPF的域和From头的域完全一致,不让垃圾邮件钻空子rua/ruf:接收DMARC报告,方便你后续看有没有漏网之鱼
4. 确认Exim的SPF模块已启用
一般Exim默认带SPF验证模块,但你得确保配置里调用了它。检查Exim配置里有没有类似这样的行:
spf_enable = true
如果没有,加上之后重启Exim。
为啥之前开DKIM没用?
看你的样本邮件,垃圾邮件的DKIM是@aol.com或者其他第三方域的,和你伪造的From头@wickenburg.us完全不沾边,没有DMARC的对齐检查,DKIM验证通过也没用——DMARC才是管“DKIM/SPF的域和显示的发件人域是不是一伙的”这个事儿的。
按上面的步骤弄完,基本就能把这类伪造本域的垃圾邮件拦在门外了!
备注:内容来源于stack exchange,提问作者Macs R We




