如何检测并处理Sendmail中退信被回退的垃圾邮件服务器?
如何检测并处理Sendmail中退信被回退的垃圾邮件服务器?
老兄,这种循环退信的垃圾服务器确实够闹心的!我来给你分享几个经过实践验证的检测和处理办法:
一、先搞清楚怎么检测这类垃圾服务器
- 分析邮件头+小测试实锤:打开退信的邮件头,重点看
Return-Path、Received字段,定位源头服务器的IP和域名。这类垃圾服务器的典型特征是:只发邮件给你已删除的旧账号,自身完全拒收任何邮件——你可以随便编一个邮箱(比如test@垃圾服务器域名.com)发测试邮件,如果立刻被退回,基本就能实锤这是个只发不收的垃圾服务器了。 - 扒Sendmail日志找线索:查看Sendmail的日志文件(一般是
/var/log/mail.log或/var/log/sendmail.log),搜索包含status=bounced的记录,里面会有对方服务器的IP、HELO标识,还有具体的退信错误码(比如550 5.1.1 User unknown)。通过日志能快速锁定哪些IP在反复制造这种循环退信。
二、针对性的处理方案
- 用Sendmail自带访问列表直接拉黑:编辑
/etc/mail/access文件,把确认的垃圾IP或域名加进去,格式如下:
然后执行192.168.xxx.xxx REJECT spam-example.com REJECTmakemap hash /etc/mail/access < /etc/mail/access更新映射表,重启Sendmail就能生效。下次这个垃圾服务器发邮件过来会直接被拒收,从根源避免退信循环。 - 配置Fail2ban自动拦截恶意IP:针对Sendmail的退信日志,自定义Fail2ban规则:
- 在
/etc/fail2ban/filter.d/目录下新建sendmail-spam-bounce.conf,内容如下:[Definition] failregex = ^.*from=<.*> to=<.*> relay=.*\[<HOST>\].*status=bounced.* ignoreregex = - 打开
/etc/fail2ban/jail.local,添加这个jail配置:[sendmail-spam-bounce] enabled = true filter = sendmail-spam-bounce logpath = /var/log/mail.log maxretry = 3 bantime = 86400 - 重启Fail2ban服务,这样同一个IP反复触发退信记录超过3次,就会被自动拉黑24小时(可以根据需求调整
maxretry和bantime)。
- 在
- 启用SPF记录减少垃圾邮件流入:给你的域名配置SPF记录,明确指定哪些服务器可以代表你的域名发邮件,拒绝其他未授权来源的邮件。虽然不能直接解决当前的循环退信,但能从源头降低这类垃圾邮件进入服务器的概率。
另外,如果遇到批量的未知垃圾服务器,还可以给Sendmail配置靠谱的DNSBL(域名黑名单)服务,比如Spamhaus的列表,这样大部分已知的垃圾IP会被自动拦截,省不少手动拉黑的功夫。
备注:内容来源于stack exchange,提问作者Hack Saw
相关产品推荐
相关产品推荐

