Как стать автором
Обновить
VK
Технологии, которые объединяют

Тяжелая жизнь антиспамеров или как это происходит на самом деле

Время на прочтение7 мин
Количество просмотров38K
Поводом для этой публикации послужили недавние серьезные изменения, внесенные в механизм борьбы со спамом в рамках нашего почтового сервиса. Нам хочется поделиться новостью, но не в форме сухого пресс-релиза. Поэтому мы решили рассказать о том, как устроен АнтиСпам в Почте@Mail.Ru, и конечно — с удовольствием ответить на ваши вопросы. Итак…

Архитектура антиспама Mail.Ru


Собственный антиспам в Mail.Ru существует уже много лет. Желание разработать собственный продукт вполне объяснимо, т.к. на определенном этапе развития проекта требования к качеству и масштабируемости механизма борьбы со спамом стали слишком велики, чтобы их могли удовлетворить даже очень сильно кастомизированные «чужие» продукты. Конечно, какие-то сервисы и компоненты независимых поставщиков мы используем по-прежнему (например, для проверки писем на вирусную составляющую), но их роль сейчас уже не является определяющей.

Требования к нашему собственному антиспаму были очень понятными и логичными — максимальная скорость и точность срабатывания. Конечно, предела совершенству нет, отношения спамеров с их противниками представляют собой вечную борьбу щита и меча. Но сейчас мы уже с уверенностью можем говорить, что серьезно продвинулись к заветной цели и продолжаем наращивать «обороты».

Итак, как он выглядит и работает — современный антиспам Почты@Mail.Ru?

Прежде всего, еще на «подходе» к почтовым серверам все отправители проверяются по базе IP-адресов, замеченных в спам-рассылках. База динамически обновляется в режиме реального времени: одни IP «обеляются», другие попадают в «черный список». Соответственно, письма с IP-адресов с «подмоченной» репутацией не принимаются — таким образом нам удается отсечь большинство ботнетов.

Если IP отправителя нет в черном списке, то письмо принимается сервером и проходит проверку двумя системами антиспама: Kaspersky Anti-Spam (или коротко KAS) и разработанной в Mail.Ru системой фильтрации спама — MRAS (Mail.Ru Anti-Spam). Эти две системы всегда работают параллельно.

Название MRAS фигурирует, в частности, в служебных заголовках практически каждого письма, проходящего через почту Mail.Ru. Например, заголовок «X-Mras: Ok» говорит о том, что в данном письме не обнаружены спам-сигнатуры.

При выборе архитектуры MRAS мы воспользовались наиболее распространенным подходом: сбор образцов спам-писем, их анализ и генерация сигнатур. Если говорить упрощенно, то сигнатура — это кусок значимой информации в письме: номер телефона, ссылка, характерная фраза или ключевое слово и т.п. Оценка письма в MRAS производится по сигнатурам согласно простой логике: если в письме присутствуют сигнатуры, характерные для спам-рассылок — скорее всего, это письмо является спамом.

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

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

Когда мы выбирали движок для имплементации правил, обсуждались различные варианты. Основными требованиями были: высокая производительность, гибкость синтаксиса и легкая расширяемость. Обнаружили, что вышеперечисленным условиям соответствовал встраиваемый интерпретатор языка Lua. В результате мы получили мощный и гибкий инструмент, который пригодился не только для создания правил. Сейчас с помощью Lua-скриптов в MRAS реализуется значительная часть бизнес-логики, например, механизмы парсинга изображений и частотных шинглов, различные репутационные механизмы.

Откуда MRAS узнает о спам-рассылках?


Существует несколько источников образцов спама для MRAS. Основным источником являются жалобы пользователей, нажимающих в веб-интерфейсе почты кнопку «Это спам». Они группируются, проходят автоматическую фильтрацию и затем поступают в систему принятия решений.

Еще одним из важнейших источников являются ящики-ловушки — специально зарегистрированные и «засвеченные» в Интернете ящики, куда попадает только спам. Внешне они выглядят как ящики обычных пользователей — это могут быть аккаунты в Моем Мире и других социальных сетях, сообщения на форумах и в гостевых книгах и т.п. Недобросовестные рассыльщики, собирающие базу адресов по Интернету, с высокой долей вероятности зацепят несколько «ловушек» — и когда на них придет письмо, оно наверняка послужит основной для спам-сигнатуры.

Наконец, на третьем этапе находится группа аналитиков Почты@Mail.Ru, которые в режиме 24x7 в реальном времени анализируют полученные от пользователей жалобы на письма, возможно являющиеся спамом, контент ящиков-«ловушек» и т.д.

Далее — что происходит с письмом на выходе из MRAS? Проработав значимые сигнатуры писем, на выходе MRAS дает письму финальную оценку, которая может принимать одно из трех значений:
  1. письмо не спам
  2. письмо, возможно, является спамом
  3. письмо точно спам.
Такие же оценки выдает KAS. Если обе антиспам-системы считают письмо хорошим — письмо отправляется в папку «Входящие», если одна или обе системы пометили письмо как возможный спам — то в папку «Спам». Если хотя бы одна из систем уверена, что письмо — спам, то такое письмо не попадает к пользователю, а отправителю уходит сообщение о недоставке (bounce message).

Важно отметить, что эта же система обрабатывает и исходящие письма с серверов Mail.Ru. Так что если пользователь пытается отослать спам-письмо, ему приходит извещение о том, что послание не может быть отправлено.

Интересно отметить, что MRAS проверяет письмо не только на входе, но и через некоторое время после того, как оно попало в пользовательский ящик — это связано с тем, что новые данные о спам-рассылках могли изменить ситуацию и, соответственно, мнение системы. Поэтому если в тот момент, когда письмо обрабатывалось MRAS, оно не определялось как спам-рассылка, а через несколько минут — уже определилось, MRAS перекладывает письмо из «Входящих» в папку «Спам». Естественно, это происходит строго до того, как пользователь зашел в папку «Входящие» и увидел письма.

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

Что нового?


Не секрет, что с массовым распространением социальных сетей, онлайн-игр, интернет-магазинов и прочих сервисов, активно общающихся со своей аудиторией посредством электронной почты, в ящиках пользователей начали скапливаться горы различных уведомлений. И проведенные нами исследования показывают, что для современных пользователей спам — уже далеко не только массовая рассылка про «печать визиток», «гринкарты» или «увеличение самизнаетечего». Спамом люди считают любое нежелательное письмо, будь то надоевшая рассылка с непрозрачной отпиской или давно неинтересный интернет-сервис, который с завидной регулярностью попадает во «Входящие».

Согласно внутренней статистике Mail.Ru, пользователи ежедневно получают по несколько десятков разнообразных рассылок от социальных сетей, магазинов и интернет-сервисов. Продвинутый пользователь легко избегает скопления рассылок во «Входящих» с помощью фильтров или черных списков. Для того чтобы облегчить жизнь всем остальным пользователям, мы внедрили персональный антиспам.

Теперь любой пользователь может в один клик раз и навсегда избавиться от надоевшей рассылки интернет сервиса, соц.сети или магазина — т.е. вполне легитимных сервисов. Достаточно выделить одно ненужное письмо и нажать кнопку «Это спам», после чего все письма от этого отправителя будут приходить уже в папку «Спам». И конечно, это не повлияет на доставку писем другим пользователям, речь в данном случае идет о сугубо индивидуальной настройке антиспам-механизма «под себя».

Кстати, у кнопки «Это спам» есть антипод, без которого механизм персонального антиспама был бы не полным. Кнопка «Это не спам», доступная для писем из папки «Спам», позволяет переместить во Входящие письмо, попавшее в Спам по ошибке и «обелить» адрес отправителя. В дальнейшем все письма от этого отправителя будут поступать во Входящие.

Разумеется, в реальности все несколько сложнее. При формировании индивидуальных черных и белых списков мы учитываем не только адрес отправителя, но и другие параметры письма. В противном случае, мы бы сделали слишком приятно отправителям спама, подделывающим заголовок From ;)

И конечно, кроме пополнения индивидуальных спам-фильтров, нажатия кнопок «Это спам» и «Это не спам» используется и для обучения общего антиспама. Так что, нажимая эти кнопки, пользователь делает лучше не только себе, но и всем остальным пользователям.

Интересные факты и цифры


Первые же дни после запуска персонального антиспама показали, что эта фича здорово упрощает жизнь пользователей. Уже к концу первой недели работы персонального антиспама в спам стали отправляться более 1 000 000 писем в сутки — и конечно, в основном это уведомления от соцсетей.

Нам было интересно проанализировать, какие еще письма пользователи отправляют в «Спам». Вот как выглядит распределение:



Кстати, как и следовало ожидать, кнопку «Это не спам» пользователи нажимают в 10-20 раз реже, чем «Это спам».

И наконец… как отправлять почту ;)


Многие из вас имеют прямое отношения к веб-разработке и, так или иначе, отправляют письма своим пользователям. Чтобы ваши письма доставлялись надежно, мы сформулировали рекомендации для отправителей. Их выполнение, конечно, не строго обязательно, однако делает мир лучше ;) Рекомендации общего характера лежат по адресу http://help.mail.ru/mail-help/rules/general, а более конкретные технические требования — по адресу http://help.mail.ru/mail-help/rules/technical.

Главная задача почты — доставлять письма своим пользователям. Поэтому мы старательно боремся с ложными срабатываниями антиспама, когда они возникают. Если ваши письма не доходят до пользователей — пишите на abuse@corp.mail.ru. Для того чтобы разобраться в проблеме, нужно приложить полную копию письма, которое вы отправляли (со всеми служебными заголовками), а также ответ о недоставке (тоже полностью).

Особенное внимание хочется обратить на механизмы, которые призваны компенсировать недостатки протоколов передачи электронной почты. Речь идет об указании корректных записей SPF и особенно о подписывании каждого сообщения с помощью DKIM, о котором не раз писали на хабре.

По сути, если все честные отправители будут использовать эти подходы — мировая ситуация со спамом радикально улучшится. Поэтому призываем вас скорее внедрить эти технологии, тем более что настроить это достаточно просто (вот например, документация для настройки DKIM в exim или одна из реализаций DKIM для postfix).

Сергей Мартынов,
Руководитель Почты@Mail.Ru
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 81: ↑63 и ↓18+45
Комментарии90

Публикации

Информация

Сайт
team.vk.company
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия