You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用zen.spamhaus.org时MTA被拦截,但官网查询IP无异常

解决Sendmail误拦截AWS SES/Outlook等合法MTA的问题

核心原因

你的Sendmail服务器使用公共递归DNS查询Spamhaus ZEN时,被Spamhaus返回了虚假拦截结果——Spamhaus为防止公共DNS滥用其服务,会对未授权的公共DNS请求返回模拟的黑名单记录,导致合法IP被误判。这也是为什么官网查询IP正常,但本地Sendmail拦截的原因。

解决步骤

1. 验证本地DNS查询结果

在你的Sendmail服务器上执行反向DNS查询,确认是否收到错误的黑名单返回:

# 验证被拦截的SES IP
dig +short 2.226.251.23.zen.spamhaus.org
# 验证被拦截的Outlook IP
dig +short 106.41.92.40.zen.spamhaus.org

如果返回127.0.0.2/127.0.0.3等非127.0.0.10/127.0.0.11的结果,说明本地DNS被Spamhaus限制。

2. 修复DNS查询问题

Spamhaus仅允许授权的DNS服务器查询其ZEN列表,你有两种选择:

  • 使用Spamhaus授权的公共DNS:将服务器DNS改为8.141.141.141和8.141.141.142(Spamhaus免费公共DNS,专门用于邮件相关查询)
  • 配置本地递归DNS:确保你的递归DNS服务器IP未被Spamhaus列入公共DNS黑名单,且仅用于自身邮件流量查询(不对外提供公共DNS服务),符合Spamhaus的使用条款。

3. 确保白名单规则生效

之前access.db白名单无效,大概率是规则执行顺序问题——DNSBL检查在access.db之前执行,导致白名单未被触发。调整sendmail.mc配置:

  1. 确保access_db特性在dnsbl特性之前定义:
    # 先定义access_db白名单
    FEATURE(`access_db', `hash -T<TMPF> /etc/mail/access')dnl
    # 再定义DNSBL检查
    FEATURE(`dnsbl',`zen.spamhaus.org')dnl
    
  2. 在/etc/mail/access文件中添加需要放行的IP或域名:
    # AWS SES服务器
    e226-2.smtp-out.us-east-2.amazonses.com RELAY
    23.251.226.2 RELAY
    # Outlook服务器
    mail-dm6nam10olkn2106.outbound.protection.outlook.com RELAY
    40.92.41.106 RELAY
    
  3. 重新生成access.db并重启Sendmail:
    makemap hash /etc/mail/access < /etc/mail/access
    systemctl restart sendmail
    

4. 临时应急方案(若DNS问题无法立即解决)

如果需要快速恢复邮件接收,可临时注释掉ZEN的DNSBL配置,改用其他低误判率的DNSBL,或暂时禁用DNSBL检查:

# 注释掉原DNSBL配置
# FEATURE(`dnsbl',`zen.spamhaus.org')dnl

修改后重新编译sendmail.cf并重启服务:

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
systemctl restart sendmail

内容的提问来源于stack exchange,提问作者gerryd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:05:18