Я в основном счастливый администратор spamassassin (3.4.0-6) + exim4 (4.84.2), настройки для фильтрации спама на стороне сервера в системе Debian / jessie.
Недавно пользователь сообщил о ложных срабатываниях. При более внимательном рассмотрении выясняется, что легальные электронные письма были
spamassassin соответствовал нескольким правилам черного списка ( RCVD_IN_BL_SPAMCOP_NET
, RCVD_IN_SBL_CSS
, RCVD_IN_SORBS_SPAM
, RCVD_IN_SORBS_WEB
).
Note that the email only got positive scores due to the IP being blacklisted.
The relevant header in the email that triggered the SPAM flagging is:
Received: from [10.126.95.175] (unknown [109.126.64.1])
by smtpfilter1.public.one.com (Halon) with ESMTPSA
id ee1f1e82-251c-11e7-8f0e-b8ca3afa9d73;
Wed, 19 Apr 2017 16:26:25 +0000 (UTC)
now given that:
the mail server(s) of the sender's ISP are all clean (seemingly not listed in any blacklist)
I obviously don't know how the sender proves their email legit to their ISP, but I assume that some form of authentication does take place
... I think that spamassassin should not have flagged that email as spam.
To be precise: my gut feeling tells me that spamassassin should properly add SPAM score for mails directly received from blacklisted IP addresses. However, if the mail went through a "clean" MTA (the ISP's mail servers), sa should assume that "they" (the ISP) has taken proper measures to ensure the legitimacy of the email.
Since I'm running my setup for quite some time and haven't had many false positive reports until now, I wonder:
Is the above expected behaviour?
If not, is the problem on my side (e.g. i misconfigured my spam analysis to take parts of the received-chain into account which it shouldn't. if so, where should i look for a fix?)
If not, is the problem on the ISPs side? (e.g. they should better conceal the broken IP addresses from which they accepted authorized emails. if so, should i direct complaints to them?)
Я нашел решение, которое делает то, что я хочу. Вместо того, чтобы корректировать оценки, эти правила черного списка могут быть настроены так, чтобы пропускать первый (ненадежный) переход,
Вот внесенные мной корректировки (изменения просто добавляют суффикс -notfirsthop
к выражениям; например, zen
превращается в zen-notfirsthop
, чтобы пропустить проверку исходящего IP-адреса):
header RCVD_IN_SBL eval:check_rbl_sub('zen-notfirsthop', '127.0.0.2')
header RCVD_IN_SBL_CSS eval:check_rbl_sub('zen-notfirsthop', '127.0.0.3')
header RCVD_IN_BL_SPAMCOP_NET eval:check_rbl_txt('spamcop-notfirsthop', 'bl.spamcop.net.', '(?i:spamcop)')
Эти правила SpamAssassin соответствуют, если Ретранслятор в Полученных заголовках сообщения был указан ...
RCVD_IN_BL_SPAMCOP_NET
... в Spamcop DNSBL , автоматический список блокировки по времени.
RCVD_IN_SBL_CSS
для Spamhaus CSS , похоже, больше не существует, но RCVD_IN_SBL
делает то же самое для Spamhaus SBL , который включает компонент CSS.
В то время как RCVD_IN_SORBS_WEB
работает ближе к тому, что вы хотели бы, чтобы все они делали:
check проверяет IP-адрес последнего ненадежного реле против DNSBL, поддерживаемый SORBS.
Если вы не доверяете этим тестам, вы всегда можете изменить оценки правил . оценка RCVD_IN_BL_SPAMCOP_NET 0
не добавляет никаких оценок, если тест соответствует, в результате чего тест будет полностью отключен.
Spamassassin не должен тестировать только последнюю Получено:
, поскольку это заголовок Получено
от вашего собственного MTA, который мог бы провести такой же тест и фактически отклонить почту с совпадающего IP-адреса вместо того, чтобы пометить ее как СПАМ.
В Postfix main.cf
эквивалентные ограничения получателя будут такими:
smtpd_recipient_restrictions =
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client dnsbl.sorbs.net
И с Exim 4.x в acl_rcpt
ACL в exim.conf
:
deny message = Access denied - $sender_host_address\
listed by $dnslist_domain\n$dnslist_text
dnslists = sbl.spamhaus.org : \
bl.spamcop.net : \
dnsbl.sorbs.net
Если вы используете Exim dnslists
в режиме warn
, вы можете имитировать правила стиля RCVD_IN _ *
только для последней доставки MTA, добавив X- занесенный в черный список
заголовок
warn message = X-blacklisted-at: $dnslist_domain
dnslists = sbl.spamhaus.org : \
bl.spamcop.net : \
dnsbl.sorbs.net
, а затем оценка наличия (или содержания) этого заголовка в Spamassassin вместо RCVD_IN _ *
:
header LAST_RCVD_BLACKLISTED exists:X-blacklisted-at
score LAST_RCVD_BLACKLISTED 10.0
Обратите внимание на при этом списки отклонения могут быть слишком широкими для того, что вам действительно нужно, например, dnsbl.sorbs.net
- это совокупная зона, содержащая почти все доступные зоны SORBS . Прежде чем отклонять или даже отмечать на основании этого списка, вы должны ознакомиться с назначением каждого списка и решить, насколько агрессивным вы хотите быть.
Лично я доверяю SPF , DMARC ] и Байесовская фильтрация , и она будет очень чувствительной в отношении доверия к DNSBL, то есть использовать только списки с IP-адресами, которые определенно используются только для спама, например smtp.dnsbl.sorbs.net
для открытого ретранслятора SMTP. серверов или edrop.spamhaus.org
, содержащих «перехваченные» сетевые блоки.