Фильтрация и принятие решения о приёме или об отказе принять почтовое сообщение может происходить синхронно и асинхронно. В синхронном режиме процесс проверки происходит во время 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%. То есть каждое третье письмо.
Выводы:
- Greylisting на начальном этапе достаточно эффективен. Он уменьшает трафик на 50%;
- Ранний этап (early rejection) позволяет на начальной стадии и с минимальными усилиями отклонить до 99% не желательных сообщений;
- Проверка контекста — «тяжёлая» операция. Нужно принять сообщение и провести проверку его содержимого. Это сильно использует ресурсы сервера: сеть, процессор, память. Потому чем больше вы отклоните сообщений на первом этапе, тем лучше вам будет жить на втором.
- Проверка контекста сообщений позволяет избавиться еще от 30% спама;
- Оставшиеся сообщения, по отзывам клиентов, содержат еще примерно 10% спама.
При анализе эффективности разных типов блокировки сообщений надо учитывать, что фильтры работают по цепочке друг за другом. И следующим фильтрам достаются только те сообщения, которые всё-таки прошли через предыдущие проверки. Если порядок фильтров поменять, то и их статистические показатели тоже изменятся.
Системы обучения на ложных срабатываниях антиспама и на неверно определенном спаме помогут свести спам к минимуму.









26.02.2009 в 10:34
а про самый эффективный метод забыли )))))) Байес у меня режет 89% всего почтового траффика и это круто если за день как хам проходит к примеру 1000 писем то из них не больше 100 это качественный спам который прошёл
пс: ну конечно же должна быть приличная спам база байеса
26.02.2009 в 11:29
Не, не забыл. Байес и подобные методы не очень хороши для крупных инсталляций с большим числом пользователей с разными интересами.
1. Если база одна общая для всех получателей — то важно обеспечить сбалансированное и качественное обучение базы на ham/spam. Что бы удовлетворить интересы всех пользователей. Это не всегда возможно и процент фильтрации падает.
2. Если для каждого иметь персональную базу, то надо учить получателя «обучать» фильтр. И мне кажется, что персональные базы, при большом количестве клиентов, достаточно требовательны к ресурсам.
26.02.2009 в 11:33
У нас Greylisting был отменён после 2 месячного тестирования, т.к. количество жалоб пользователей на не приходящую и не доставленную вовремя почту превысило количество спама (это конечно утрировано, но в общем верно).
Количество клиентов на которых тестировали около 800.
Да и с RFC у Greylist-а проблемы. Так как первый вопрос при разбирательстве именно этот, то дальше разговор обычно не движется.
26.02.2009 в 11:48
А какие проблемы с RFC?
Несколько лет назад я пробовал уже greylisting (если не ошибаюсь — это был milter-greylist) и тогда у меня тоже были к нему претензии. Сейчас — это greylisting на DCC. Он настроен не очень агрессивно (включено weak-IP), и пока (6 месяцев) проблем и жалоб нет. Первое обращение от неизвестного сервера — это задержка, но если она пройдена — то на месяц этот источник попадает в белый список. Так что основные источники почтового трафика никогда не выходят из белых списков.
27.02.2009 в 09:32
Greylisting можно использовать не на всю корреспонденцию (которая прошла впереди стоящие фильтры), тогда первые задержки для валидной почты могут быть исключены.
27.02.2009 в 22:28
А как вы боретесь с фолспозитивами DCC на рассылках?
28.02.2009 в 12:15
Да, валидные рассылки — это проблема DCC. Борюсь whitelist-ом. Или по заявкам от пользователей, или по анализу почтового лога. Раз в неделю по логу можно посчитать, сколько сообщений и из каких источников было заблокировано. Если есть источник с заметно бОльшим количеством заблокированных сообщений, то это повод посмотреть на него более внимательно.
14.03.2009 в 11:11
... первое правило — не принимать почту от машин без реверса. Очень эффективно.
В ближайшее время введу второе — не принимать почту от машин с «юзерскими» именами, типа
rev-net-0clo-0115-4t-015erhew.mtb
Я думаю, 99.9% спама это остановит. Практически не используя ресурсов.
14.03.2009 в 12:17
Мне кажется, что вообще не принимать без реверса — это слишком жестоко. Особенно, если это не ваш личный сервер, а крупный сервер с большим количеством клиентов. Без реверса вполне могут быть и «хорошие» источники. Потому я предпочитаю просто применять к ним более жёсткие ограничения: 1-2 письма в час проходят, остальные — нет. Это вполне себе хорошо работает.
А вот не принимать с адресов вида ppp-123.pool-456.dialup.myprovider.ru и советовать использовать SMTP сервер своего провайдера — это очень помогает снять спам-трафик со всяких DSL,XDSL,SDSL,ppp,dynamic,pppoe...
И хорошо бы снять все ограничения для отправки к вам писем на postmaster, abuse, support — что бы вам могли хоть как-то пожаловаться. Или где-нибудь предусмотреть web-форму для контактов.
17.03.2009 в 13:01
... не встречал я уже давно хороших клиентов без реверса.
14.04.2009 в 11:47
Да полно серверов без реверса! Уже достало слушать жалобы от клиентов типа от туда и от суда не приходить почта. У меня в списке уже больше полсотни ip адресов! Достали эти корявые полу админы.
31.07.2009 в 15:04
>>1. Если база одна общая для всех получателей
почемуже это ??? байес прекрасно работает с виртуальными юзерами
для каждого юзера можно определять письмо спам или не спам
и эффективность по теории нейросетей с ростом базы увеличивается
правда я письма обучаю в ручную что есть гуд для эффективности
и ни одного ложного срабатывания в плане нормальное письмо попало как спам или спам попал как нормальное не наблюдалось