如何将 EXIM4 配置从无反向 DNS 警告更改为主动拒绝无反向 DNS 的邮件

如何将 EXIM4 配置从无反向 DNS 警告更改为主动拒绝无反向 DNS 的邮件

默认情况下,EXIM4 仅对没有反向 DNS 的邮件发出警告。我需要阻止并主动拒绝没有反向 DNS 的邮件。我愿意接受一些合法邮件可能会被阻止,但是到目前为止,唯一没有反向 DNS 的邮件是垃圾邮件。

以下是 EXIM4 配置中反向 DNS 检查的代码。如何将其从警告更改为阻止。

# Warn if the sender host does not have valid reverse DNS.
  # 
  # If your system can do DNS lookups without delay or cost, you might want
  # to enable this.
  # If sender_host_address is defined, it's a remote call.  If
  # sender_host_name is not defined, then reverse lookup failed.  Use
  # this instead of !verify = reverse_host_lookup to catch deferrals
  # as well as outright failures.
  .ifdef CHECK_RCPT_REVERSE_DNS
  Reverse DNSReverse DNSwarn
    condition = ${if and{{def:sender_host_address}{!def:sender_host_name}}\
                      {yes}{no}}
    add_header = X-Host-Lookup-Failed: Reverse DNS lookup failed for $sender_host_address (${if eq{$host_lookup_failed}{1}{failed}{deferred}})
  .endif

答案1

此代码段应该可以完成此操作。如果您拒绝,您可能需要在接受邮局主管和滥用地址后​​在收件人 ACL 中执行此操作。注意您拒绝了哪些服务器,因为一些合法发件人(航空公司、银行、政府)已破坏了其自动发件人的 rDNS。

# Verify reverse DNS lookup of the sender's host.
deny
  message Reverse DNS verification failed
  !verify = reverse_host_lookup
  !hosts = ${if exists{CONFDIR/local_broken_dns_whitelist}\
                      {CONFDIR/local_broken_dns_whitelist} {}}

我发现很多垃圾邮件机器人如果没有足够快地收到连接横幅就会很快放弃。在连接 ACL 中包含以下内容可能会有所帮助。禁用流水线可以捕获大量行为不当的垃圾邮件机器人。如果延迟时间过长(超过 30 秒),一些合法服务器也会放弃。

# Verify reverse DNS lookup of the sender's host.
# Disable piplining and delay on failure.
warn
  !hosts = ${if exists{CONFDIR/local_broken_dns_whitelist}\
                      {CONFDIR/local_broken_dns_whitelist} {}}
  !verify = reverse_host_lookup
  control = no_pipelining
  delay = 10s

答案2

先前的答案对我不起作用。但我确实让这两个工作正常:

  deny message = Forged IP detected in HELO: $sender_helo_name
    log_message = Forged IP detected in HELO: $sender_helo_name
    condition = ${if eq{$sender_helo_name}{$interface_address}{yes}{no}}

  deny
    message = X-Host-Lookup-Failed: Reverse DNS lookup failed for $sender_host_address \
            (${if eq{$host_lookup_failed}{1}{failed}{deferred}})
    log_message = X-Host-Lookup-Failed: Reverse DNS lookup failed for $sender_host_address
    condition = ${if and{{def:sender_host_address}{!def:sender_host_name}}\
                      {yes}{no}}

希望有所帮助。

答案3

为什么不使用 sieve、spamassassin 或 rspamd,而只使用 no-rdns 作为 spam-score 的额外值(默认情况下该值已经存在)?您只需提高 no-rDNS 源的分数值,就大功告成了。此外,您还可以避免完全拒绝来自刚刚迁移或在新系统上启动的服务器的有效电子邮件的风险。您知道,对于 ipv6,正确的 rDNS 并不总是能迅速实现,或者被遗忘,而核心系统已经在使用 ipv6。误报选项的列表是无穷无尽的。

相关内容