Борьба со спамом в 2020 (rpamd, SpamAssassin и нейросети)

Уже 15 лет (ужас какой!) использую для фильтрации спама SpamAssassin, и что-то стали возникать к нему притензии. С одной стороны, кажется, спама в интернете стало сильно меньше, чем в конце нулевых. По моим ощущениям, мне стало в месяц приходить ~300 писем вместо нескольких тысяч. (Возможно дело в том, что крупные почтовые сервисы его довольно успешно фильтруют, благодаря своим ресурсам, и “обычные пользователи” стали сильно менее доступны для спамеров.) С другой же стороны, стал замечать, что SA успешно отфильтровывает примерно половину спама (с достаточно консервативными настройками без false-positive). С третьей стороны не байесом же единым, за последние десять лет и нейросети выросли и какой-нибудь SVM кажется кто-то должен уже был внедрить (по крайней мере Саша Петров мне еще в своей дипломной работе его прикручивал и вроде как неплохие результаты получал, хотя до продакшн решения не доделал).

В общем решил я посмотреть на то, что у нас нового появилось в этой области: количество инструментов увеличилось, но всё это просто классификаторы (практически все на наивном байесе, хотя некоторые, вроде как заявляется, и более точные, чем тот, что внутри SpamAssassin), в отличие от SA, который еще с кучей эвристик, нацеленных именно на анализ почты (корректность заголовков, работа с RBL, скоринг для хостов, сетей и автономных систем, участвовавших в передаче письма, DMARC, DKIM, SPF и прочее).

Но на фоне всего этого болота заметил довольно развитый и живой проект rspamd. По сути примерно такой же комбайн, как SpamAssassin, только вместо перла C и lua, ну и комьюнити сильно меньше. Зато встроенный milter, вроде как более “правильный” байес, встроенная реализация dkim (можно выкинуть opendkim), встроенный грейлистинг (он вообще сейчас от спама помогает?) и даже есть экспериментальный нейросетевой классификатор.

В общем показалось, что штука довольно интересная, чтобы ее попробовать – поставил и показалось, что работает оно гораздо лучше, чем SpamAssassin.

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

Ну раз так, то устроем side-by-side сравнение на живом трафике!

Дано:

  • Свежая чистая инсталляция почтового сервера: postfix + dovecot.
  • На postfix полностью отключены все аутлупы по rbl и фильтрации HELO, которые я использовал раньше.
  • rspamd 1.9.4 с чистой базой и дефолтными настройками. (add_header = 7)
  • SpamAssassin (через spamass-milter) с +/- дефолтными настройками (включил по максимуму разные модули, в том числе pyzor, razor и txrep) и тоже чистой базой. (required_score 7.0)
  • Немножко скриптов, которые отправляют на дообучение (в оба сервиса) те письма, которые были классифицированы неправильно (в тот момент, когда я перекладываю письмо в папку Junk или обратно).
  • Почтовый поток порядка нескольких тысяч писем в месяц, из которых две-три сотни – это спам.
  • Система “Спамографопостроитель 1.0”, которая рисует в реальном времени гистограммы оценок по всем полученным письмам.

Немного подробнее по гистограммам: они обновляются в реальном времени и рисуются в четырёх вариантах: общие оценки для rspamd и SA, оценки байесовского фильтра для rspamd и SA. Вертикальной чертой на каждом графике отображена граница спам/не спам, так что слева от нее мы видим не спам и фолс-негатив, а справа спам и фолс-позитив. Пока оценок мало + фильтры не натренированы графики должны быть довольно шумными, но, хочется надеяться, дальше ситуация исправится. Опять же по этим графикам можно будет прикинуть, насколько корректно выбрана граница для классификации.

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

А пока: давайте наблюдать!

PS. Дорогие спамеры, не могли бы насыпать мне побольше образцов спама на spam@gerasiov.net. Пожалуйста!

Сколько стоит информационный шум?

В последнее время появилось огромное количество “блогов”, на всякие странные темы. Вроде “Записки теоретика-культуролога”, “Газосварочные работы и не только”, “Всё про Анджелину Джоли”, “800 блюд из конского щавеля” и т.п. Туда пишутся малоадекватные никому не интересные простыни, явно спертые из каких-то книжек.
А еще появляются в большом количестве комментарии вроде “Вау, здорово!”, “Отличный пост, пиши еще.” и так далее.
И не роботы ведь (роботов не считаю, они спецсредствами отсеиваются) – всякие капчи заполняют, по кнопочкам тыркают…
Казалось бы что общего? Конечно много: УРЛы из вторых ведут в первые. Ну а на первых сэйп.ру и прочая фигня.
Еще новое веяние – это не просто посты писать, а пытаться что-то “по теме” сказать. Вроде напишешь про какое событие, а тебе в ответ “Да, я тоже там был, очень понравилось”, или в техлоблогах очень любят писать “А у меня не получилось”.
Ну и самый шик – это когда на blogs.yandex.ru ищут тематические посты и туда пишут. Тут вот сегодня у Гарика было в жж. Написал он пост с ключевым словом “ноут”. Вначале пришла одна девочка, спросила где он ноут покупал. Потом вторая подоспела с предложением, где именно купить. Они так по жж с чувством прошлись, я проверял. 🙂
Собственно я чего пишу: мне просто интересно (я по жизни вообще любопытный), сколько за такое платят? Cколько за проплаченные посты в блогах я в курсе, и примерно представляю как зарабатывают авторы. А как оно обстоит у комментаторов?
Господа, не стесняйтесь, рассказывайте. 🙂