Версия для печати

rejectedФильтрация и принятие решения о приёме или об отказе принять почтовое сообщение может происходить синхронно и асинхронно.  В синхронном режиме процесс проверки происходит во время SMTP-диалога с отправляющей стороной. Асинхронная работа заключается в том, что письмо принимается в любом случае, SMTP-диалог завершается успешно, а далее происходит принятие решения о доставке или отказе в доставке сообщения в ящик пользователя.

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

Минусом асинхронного режима является ситуация, когда мы принимаем решение — отказать в доставке. В таком случае сообщение об ошибке доставки (bounce message) уходит на адрес отправителя. Распространенный ход при отправке спама — это подделка адреса отправителя. В результате этого, мы отправляем ошибку о доставке на поддельный адрес, который ничего не знает про исходное сообщение. А при большом потоке таких писем на наш сервер, мы можем попросту «завалить» чей-то ящик своими ошибками о доставке.

В настоящее время серверные ресурсы достаточно не дороги,  потому синхронный режим выглядит более успешным. Мы не принимаем тех сообщений, что нам не нравится. Спам остаётся у спамера. Мы не копим очереди с bounce message у себя на сервере и не заваливаем ими не виновные сервера и ящики. Все довольны!

В синхронном режиме можно выделить два этапа принятия решения: ранний этап (early rejection) и поздний (rejection). Разница между ними в том, что ранний этап происходит до начала передачи основного тела сообщения (DATA), а поздний этап происходит, когда всё письмо уже принято и отправляющая сторона ждёт от нас завершающего ответа. Отклонение сообщения на раннем этапе позволяет сэкономить трафик и ресурсы нашего сервера. Мы не приняли еще само сообщение, но у нас уже есть ip-адрес передающей стороны, email-адрес отправителя и email-адреса получателей. Если по этим данным уже можно принять решение об отказе в приёме сообщения — надо это делать на ранней стадии.

Давайте на примере суточной статистика одного почтового сервера рассмотрим эффективность разных типов борьбы с нежелательными сообщениями на разных стадиях.

Предварительно хочу обратить внимание, что вся следующая статистика приведена с учётом, что предварительно применяется технология greylisting (Серые списки). Применение серых списков позволяет снизить трафик на 50% и его применение достаточно эффективно сказывается на борьбе с нежелательными сообщениями. Если все попытки доставить сообщения принять за 100%, то получается такая картина:

0. Предварительная фильтрация:

  • заблокировано через greylisting:  4`090`760 (50%)

1. Оставшиеся 50% сообщений прошли на первую стадию фильтрации. Ранний этап (early rejection) в применении к оставшимся 50%:

  • заблокировано через DNSBL: 3`330`854  (81%)
  • не существующие ящики: 411`470  (10%)
  • локальный чёрный-список: 154`578 (3,8%)
  • заблокировано через SPF: 93`518 (2,3%)
  • ошибки в адресе отправителя (host name is unknown+DNS server failure+RFC822 blocks): 32`379 (0,8%)
  • ошибки SMTP протокола и не авторизованные попытки:  8`636 (0,2%)

На первом этапе (early rejection) мы отвергли 98% сообщений от 50%, прошедших нулевой этап. Или 99% от всего потока сообщений. Это достаточно хорошо, но при больших потоках сообщений оставшийся 1% писем — это тоже достаточно большое число.

2. Переходим ко второму этапу, куда прошёл только 1% сообщений. Анализируем содержимое сообщений:

  • свободный контекстный антиспам фильтр DCC: 16`890 (20%)
  • коммерческий контекстный антиспам фильтр — отвергнут явный спам: 1`618 (2%)
  • коммерческий контекстный антиспам фильтр — помечены похоже на спам сообщения: 6`483 (8%)
  • антивирус: 5 (<0,1%)

Получается, что из оставшегося 1% сообщений мы отфильтровали еще 30%. То есть каждое третье письмо.

Выводы:

  1. Greylisting на начальном этапе достаточно эффективен. Он уменьшает трафик на 50%;
  2. Ранний этап (early rejection) позволяет на начальной стадии и с минимальными усилиями отклонить до 99% не желательных сообщений;
  3. Проверка контекста — «тяжёлая» операция. Нужно принять сообщение и провести проверку его содержимого. Это сильно использует ресурсы сервера: сеть, процессор, память. Потому чем больше вы отклоните сообщений на первом этапе, тем лучше вам будет жить на втором.
  4. Проверка контекста сообщений позволяет избавиться еще от 30% спама;
  5. Оставшиеся сообщения, по отзывам клиентов, содержат еще примерно 10% спама.

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

Системы обучения на ложных срабатываниях антиспама и на неверно определенном спаме помогут  свести спам к минимуму.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

По теме:

Комментарии (12) на запись “Эффективность решений по борьбе с нежелательными сообщениями”

  1. Sw%00p aka Jerom пишет:

    а про самый эффективный метод забыли )))))) Байес у меня режет 89% всего почтового траффика и это круто если за день как хам проходит к примеру 1000 писем то из них не больше 100 это качественный спам который прошёл

    пс: ну конечно же должна быть приличная спам база байеса

  2. kocmuk.ru пишет:

    Не, не забыл. Байес и подобные методы не очень хороши для крупных инсталляций с большим числом пользователей с разными интересами.

    1. Если база одна общая для всех получателей — то важно обеспечить сбалансированное и качественное обучение базы на ham/spam. Что бы удовлетворить интересы всех пользователей. Это не всегда возможно и процент фильтрации падает.

    2. Если для каждого иметь персональную базу, то надо учить получателя «обучать» фильтр. И мне кажется, что персональные базы, при большом количестве клиентов, достаточно требовательны к ресурсам.

  3. Avatar пишет:

    У нас Greylisting был отменён после 2 месячного тестирования, т.к. количество жалоб пользователей на не приходящую и не доставленную вовремя почту превысило количество спама (это конечно утрировано, но в общем верно).

    Количество клиентов на которых тестировали около 800.

    Да и с RFC у Greylist-а проблемы. Так как первый вопрос при разбирательстве именно этот, то дальше разговор обычно не движется.

  4. kocmuk.ru пишет:

    А какие проблемы с RFC?

    Несколько лет назад я пробовал уже greylisting (если не ошибаюсь — это был milter-greylist) и тогда у меня тоже были к нему претензии. Сейчас — это greylisting на DCC. Он настроен не очень агрессивно (включено weak-IP), и пока (6 месяцев) проблем и жалоб нет. Первое обращение от неизвестного сервера — это задержка, но если она пройдена — то на месяц этот источник попадает в белый список. Так что основные источники почтового трафика никогда не выходят из белых списков.

  5. Anton K пишет:

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

  6. Арт пишет:

    А как вы боретесь с фолспозитивами DCC на рассылках?

  7. kocmuk.ru пишет:

    Да, валидные рассылки — это проблема DCC. Борюсь whitelist-ом. Или по заявкам от пользователей, или по анализу почтового лога. Раз в неделю по логу можно посчитать, сколько сообщений и из каких источников было заблокировано. Если есть источник с заметно бОльшим количеством заблокированных сообщений, то это повод посмотреть на него более внимательно.

  8. Alex Povolotsky пишет:

    ... первое правило — не принимать почту от машин без реверса. Очень эффективно.

    В ближайшее время введу второе — не принимать почту от машин с «юзерскими» именами, типа

    rev-net-0clo-0115-4t-015erhew.mtb

    Я думаю, 99.9% спама это остановит. Практически не используя ресурсов.

  9. kocmuk.ru пишет:

    Мне кажется, что вообще не принимать без реверса — это слишком жестоко. Особенно, если это не ваш личный сервер, а крупный сервер с большим количеством клиентов. Без реверса вполне могут быть и «хорошие» источники. Потому я предпочитаю просто применять к ним более жёсткие ограничения: 1-2 письма в час проходят, остальные — нет. Это вполне себе хорошо работает.

    А вот не принимать с адресов вида ppp-123.pool-456.dialup.myprovider.ru и советовать использовать SMTP сервер своего провайдера — это очень помогает снять спам-трафик со всяких DSL,XDSL,SDSL,ppp,dynamic,pppoe...

    И хорошо бы снять все ограничения для отправки к вам писем на postmaster, abuse, support — что бы вам могли хоть как-то пожаловаться. Или где-нибудь предусмотреть web-форму для контактов.

  10. Alex Povolotsky пишет:

    ... не встречал я уже давно хороших клиентов без реверса.

  11. slavik пишет:

    Да полно серверов без реверса! Уже достало слушать жалобы от клиентов типа от туда и от суда не приходить почта. У меня в списке уже больше полсотни ip адресов! Достали эти корявые полу админы.

  12. Sw%00p aka Jerom пишет:

    >>1. Если база одна общая для всех получателей

    почемуже это ??? байес прекрасно работает с виртуальными юзерами

    для каждого юзера можно определять письмо спам или не спам

    и эффективность по теории нейросетей с ростом базы увеличивается

    правда я письма обучаю в ручную что есть гуд для эффективности

    и ни одного ложного срабатывания в плане нормальное письмо попало как спам или спам попал как нормальное не наблюдалось

Оставить комментарий



Anti-spam image