Борьба со спамом при помощи ASN
Блокируем целую подсеть спамеров одним махом
Бывает, что нужно отсечь почту, приходящую от целой сети. Отправители все время меняют свои адреса: отправляют определенное количество писем, меняют адрес, снова меняют адрес, снова отправляют... В таком случае помогает запрет на прием писем с определенных IP-адресов. А что делать, если таких адресов скапливается очень много? В итоге мы получаем целую «простыню» в настройках почтового сервера. Лично меня это не устраивает. Изучив часть из них, обратил внимание, что все они принадлежат одной сети. Посмотрев на список IP-адресов, закрепленных за этой сетью, понял, что список будет очень большим. Тогда же я заметил, что в регистрационных данных присутствует такая вещь, как ASN. Если очень кратко, то это уникальный идентификатор, присвоенный этой сети. Появилась мысль как-то использовать этот идентификатор в борьбе со спамом. Изучив список плагинов Spamassassin’а, увидел, что помимо прочих он также может определять не только вышеупомянутый ASN, но и подсеть отправителя.
Далее было дело техники. В настройках Spamassassin’а включаем загрузку этого модуля в v320.pre:
loadplugin Mail::SpamAssassin::Plugin::ASN
Дальше нам нужно, чтобы он вставлял нужные заголовки в получаемые письма. Для этого в local.cf добавляем следующую строку:
add_header all ASN _ASN_ _ASNCIDR_
Перезапускаем Spamassassin и... ничего не получилось. Заголовок вставляется, но данных в нем нет
X-Spam-ASN:
Я потратил почти полдня, пока нашел причину почему это не работает. Оказалось, что в параметрах запуска Spamassassin был указан параметр -L, который запрещает работу с DNS. После удаления этого параметра, заголовок приобрел более «осмысленный» вид:
X-Spam-ASN: AS25549 95.170.128.0/22
Вот теперь уже можно отдавать письмо на дополнительную проверку postfix. В файл header_checks добавляем строку:
/^X-Spam-ASN.*AS25549 .*/ DISCARD This is spamer
и перезапускаем postfix. Всё, больше писем из этой сети вы не получите.
Но, к сожалению, не все сети имеют ASN. Тогда бороться с ними остается только по IP-адресам.