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

Правило Spamassassin для отметки определенных IP-адресов MX

Я заметил поток спама, связанный с тем же диапазоном IP-адресов.

Все спам-сообщения имеют разный текст HTML (английский, но бессмысленный) и несколько встроенных изображений (которые я блокирую), но на самом деле явно генерируются машиной, и внутреннее форматирование очень похоже. Кстати, все ссылки и внешние картинки заблокированы моей почтовой программой.

Что я заметил, так это то, что все MX для адресного домена «от» находятся в небольшом диапазоне IP-адресов, все они находятся на одной и той же службе VPS «Node Outlet India LLP». Итак, кто-то использует эту службу для размещения фермы спам-ботов.

Я хотел бы создать правило spamassassin, которое говорит что-то вроде:

Я использую прокси spampd и spamassassin, работающие в Linux.

Чтобы уточнить, вот пример: спам-письмо от buymystuff@stufftobuy.com

Исходное электронное письмо проходит SPF, DMARC и подписано DKIM - все законно, но это спам. Только по этим проверкам он набирает очки.

Единственное, что рассылает спам - это контент. В основном это HTML и ссылки вне домена, встроенные изображения и небольшой текст, только благодаря этим функциям он вообще имеет рейтинг спама, но не большой. Эти электронные письма явно предназначены для того, чтобы избежать мер по борьбе со спамом.

Я выполняю поиск MX RR DNS на сайте stufftobuy.com, и вы получаете mail.stufftobuy.com, выполняю поиск A RR DNS на mail.stufftobuy.com, и он возвращает IPV4 с одного из нескольких адресов, которые бушуют, что все из домена MX записи указывают на.

Мне нужно провести дополнительный анализ, но похоже, что это всего лишь две серверные фермы, одна в Индии, а другая в Турции.

Из 1000 писем один IPV4 может появиться только дважды.

Я не могу просто подсчитать или заблокировать stufftobuy.com, так как это фактическое доменное имя можно использовать только один раз. Следующее сообщение может быть от makecatvids.com или другого.

Точно так же я не могу просто слепо заблокировать тысячи IPV4 в postfix, так как это сделало бы предположение, что провайдер плохой, а не один из их клиентов.

ОБНОВЛЕНИЕ: я вижу плагин askdns существует, но я не вижу, как одно правило может влиять на другое. Одного поиска в DNS недостаточно.

Намного важнее: Убедитесь, что вы используете репутацию IP-адреса отправителя, например через Спамхаус Дзен и Список блокировки SpamCop. По умолчанию они уже включены в SpamAssassin (см. RCVD_IN_PBL и RCVD_IN_BL_SPAMCOP_NET), просто убедитесь, что у вас есть Mail :: SpamAssassin :: Плагин :: DNSEval правильно загружен и вы работаете с включенными сетевыми тестами (что также требуется для AskDNS).

Mail :: SpamAssassin :: Плагин :: AskDNS не может этого сделать. Вам нужно будет написать свой собственный плагин, чтобы делать именно то, что вы ищете.

Однако, возможно, использование AskDNS поможет вам приблизиться:

ifplugin Mail::SpamAssassin::Plugin::AskDNS

askdns   JM_SPF_HAS_36_255 _AUTHORDOMAIN_ TXT /\sip4:36\.255\.(?:2[0-4]|3[01])\./
describe JM_SPF_HAS_36_255 From header's SPF record blesses an IP in 36.255.24.0/21
score    JM_SPF_HAS_36_255 2.0

endif

Это проверяет Структура политики отправителя (SPF) запись для заголовка From домена. Предостережения:

  • SPF - это список хостов, которым разрешено Отправить почта от имени домена (см. ниже)
  • SPF проверяет домены в SMTP-подключении. HELO & mail from команды, не заголовки
  • Записи SPF могут содержать домены, могут включать другие записи и т. Д., Но это правило смотрит только на IP-адреса.
    Например: v=spf1 ip4:198.51.100.21 mx a include:example.com ~all есть проблемы:
    • Здесь явно указан только один IP-адрес, и он не соответствует
    • Запись MX может совпадать, но она указана как mx и мы не можем разрешить это на IP
    • То же самое для записи A
    • То же для включения; возможно, в нем есть a или другой include:… который может перечислить этот IP

Что касается первого пункта: запись MX относится к получение mail, поэтому я считаю список разрешенных SPF отправка хосты, чтобы быть более актуальными в общем случае, хотя я не могу говорить о вашем точном намерении.


Обновить: Вы упомянули, что этот спам DKIM-подписано. Предполагая, что все они используют один и тот же домен подписи, просто заблокируйте на основе этого (поиск в сети не требуется!):

header   JM_DKIM_EVIL_EXAMPLE_COM  DKIM-Signature =~ /\sd=evil\.example\.com;/
describe JM_DKIM_EVIL_EXAMPLE_COM  Message has DKIM signed by evil.example.com
score    JM_DKIM_EVIL_EXAMPLE_COM  2.0

Вам понадобится одно из этих правил для домена подписи (d=…) вы найдете, а я ожидаю, что это небольшое число.
В качестве альтернативы вы можете использовать чередование регулярных выражений. Например:
/\sd=(?:(?:evil|spammer)\.example\.com|bad\.example\.info);/ заблокирует d=evil.example.com;, d=spammer.example.com;, и d=bad.example.info;.