Назад | Перейти на главную страницу

spamassassin имеет ложные срабатывания с электронными письмами, исходящими с адресов удаленного доступа

Я в основном счастливый администратор spamassassin (3.4.0-6) + exim4 (4.84.2), настройки для фильтрации спама на стороне сервера в системе Debian / jessie.

Недавно пользователь сообщил о ложных срабатываниях. При ближайшем рассмотрении оказывается, что подлинные электронные письма были

  1. отправлено с некоторого коммутируемого IP-адреса (который занесен в несколько черных списков)
  2. передается на почтовый сервер интернет-провайдера отправителя (с использованием любой аутентификации, которая у них была), которая
  3. затем доставил письмо на мой почтовый сервер
  4. который пометил письмо как СПАМ, потому что один из IP-адресов в заголовках "Получено" был занесен в черный список

spamassassin соответствует нескольким правилам черного списка (RCVD_IN_BL_SPAMCOP_NET, RCVD_IN_SBL_CSS, RCVD_IN_SORBS_SPAM, RCVD_IN_SORBS_WEB). Обратите внимание, что электронное письмо только получил положительные оценки из-за того, что IP занесен в черный список.

Соответствующий заголовок в электронном письме, инициировавшем пометку СПАМА:

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)

теперь учитывая, что:

... Я думаю, что spamassassin не должен был отмечать это письмо как спам.

Чтобы быть точным: мое чутье подсказывает мне, что spamassassin должен правильно добавлять оценку СПАМА для писем, непосредственно полученных с IP-адресов из черного списка. Однако, если почта прошла через «чистый» MTA (почтовые серверы ISP), sa должен предположить, что «они» (ISP) приняли надлежащие меры для обеспечения легитимности электронной почты.

Поскольку я запускаю свою установку довольно долго и до сих пор не получал много ложных срабатываний, мне интересно:

Я нашел решение, которое делает то, что я хочу. Вместо того, чтобы корректировать оценки, эти правила черного списка можно настроить так, чтобы пропустить первый (ненадежный) переход,

Вот внесенные мной изменения (изменения просто добавляют -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_SORBS_WEB работает ближе к тому, что вы хотите, чтобы все они делали:

check проверяет IP-адрес последнее ненадежное реле против DNSBL, поддерживаемого SORBS.

Если вы не доверяете этим тестам, вы всегда можете скорректировать оценки правил. score RCVD_IN_BL_SPAMCOP_NET 0 не добавляет очков, если тест соответствует, в результате чего тест будет полностью отключен.

Spamassassin не нужно тестировать только на самые последние Received: заголовок, поскольку это Received от вашего собственного MTA, который мог бы провести такой же тест и фактически отклонить почту с совпадающего IP-адреса вместо того, чтобы пометить ее как СПАМ.

В Постфикс 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-blacklisted-at заголовок

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 содержащие "угнанные" сетевые блоки.