По умолчанию EXIM4 только предупреждает о письмах без обратного DNS. Мне нужно заблокировать и активно отклонить почту, которая не имеет обратного DNS. Я готов согласиться с тем, что вполне возможно, что некоторые легальные письма будут заблокированы, однако пока единственной почтой, не имеющей обратного DNS, был спам.
Ниже приведен код для обратной проверки DNS из конфигурации EXIM4. Как мне изменить это с предупреждения на блокировку.
# 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
Предыдущий ответ не работал для меня. Но я заставил этих двоих работать:
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}}
Надеюсь, это поможет.
Этот фрагмент должен сделать это. Если вы отказываете, вы можете сделать это в 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