Фильтрация спама в The Bat! версии 3.x

После выхода Бата версии 3.0 все мои статьи, посвящённые антиспамным фильтрам в одначасье устарели. Причина -- летучая мышь ветки 3.x поменяла сортировщик, в результате чего многие старые фильтры перестали работать. Моё желание схалтурить и не писать новую статью наткнулось на непрерывный ручеёк писем от пользователей о том, как приспособить старые добрые фильтры, которые исправно работали на версии 2.x, к новому сортировщику. Поэтому и назрела необходимость, хотя и с большим опозданием, восполнить этот пробел, так как по мощи сортировщика Бат по-прежнему не имеет себе равных.

Сами схемы фильтрации не претерпели никаких изменений.

  • Схема I. Фильтрация почты методом подтверждения переписки (жёсткая схема) была впервые описана в статье "Убийство спама в The Bat!". Сейчас этот метод в чистом виде не применяется в силу его негибкости (жёсткости) и некоторых недостатков, хотя сама статья почему-то больше всех остальных распространилась по и-нету.
  • Схема II. Фильтрация почты на основе полей заголовков письма (мягкая фильтрация) описана в статье "Жёсткая и мягкая фильтрация спама в The Bat!". В этой же статье значительно усовершенствована жёсткая схема из предыдущей статьи. В результате получилась достаточно сложная конструкция фильтров, что делает её пригодной практически только для гурманов, хотя и не снижает ценность отдельных групп фильтров (наверное, никто и не использует эту схему целиком).
  • Схема III. Переадресация почты от незнакомых адресатов через защищённый почтовый сервер описана в статье "Уничтожение спама в незащищённых почтовых ящиках". Этой методикой я пользуюсь до сих пор, так как она очень проста в реализации (всего 2-3 фильтра), наиболее эффективна и лишена недостатков предшествующих схем.

Схема III. Переадресация почты от незнакомых адресатов через защищённый почтовый сервер

Начнём с описания последней схемы, как самой новой и эффективной. Эта схема подходит только для неуправляемых через web-интерфейс почтовых ящиков (как правило провайдерских). Если заспамился управляемый ящик, то городить огород в Бате не стоит, т.к. можно просто войти через web-интерфейс в настройки ящика и поставить переадресацию почты на адрес на защищённом почтовом сервере.

Её суть можно описать следующим алгоритмом:

Имеем: заспамленый ящик pupkin@provider.ru (назовём его основным) на незащищённом и неуправляемом через web-интерфейс почтовом сервере провайдера, не имеющем антиспамной защиты.

Задача: очистить этот ящик от всякой гадости без всякого геморроя.

Схема решения:

  1. На любом защищённом сервере заводим дополнительный ящик, через который и будем потом прогонять почту от незнакомцев. Например: spam-sortir@yandex.ru на Яндексе (у них защита - Спамоборона) или можно на mail.ru (у них защита - Спамтест)
  2. Через web-интерфейс на Яндексе в ящике spam-sortir@yandex.ru нужно поставить всего 2 фильтра:
    а) Название: Вирусы
    Условие: Письма, содержащие вирусы
    Действие: Удалять
    б) Название: Спам
    Условие: Письма, попавшие в папку "Рассылки-Спам"
    Действие: Удалять
    На сервере mail.ru по-моему фильтрация осуществляется автоматически без какой-либо ручной настройки фильтров (но врать не буду).
  3. В The Bat! соответственно тоже должны быть настроены эти же 2 ящика (основной и дополнительный)
  4. Принимаем Батом всю почту из основного ящика pupkin@provider.ru вместе со спамом.
    • Если письмо пришло от адресата, который уже есть в нашей адресной книге, то это хороший человек (оставляем его во "Входящих" или сортируем фильтром в нужную папку)
    • Если пришло письмо от незнакомца (его нет в адресной книге) пересылаем это письмо в доп. ящик spam-sortir@yandex.ru на защищённом сервере
  5. В том же почтовом сеансе принимаем Батом всю почту из spam-sortir@yandex.ru -- это чистая почта без всякого дерьма.

На защищённом сервере и происходит необходимая нам фильтрация. Спамоборона Яндекса или Спамтест Mail.ru отсекает весь спам, а полезные письма остаются в доп. ящике, откуда мы их и забираем Батом.

Спамоборона детектирует спам как массовую рассылку. Единичные полезные письма не являются рассылкой, поэтому они и не будут удалены антиспамной системой почтового сервера и дойдут до Вас.

Решение:

В The Bat! на ящике pupkin@provider.ru нужно поставить всего 2 фильтра:

Фильтр № 3.1. Перенаправление незнакомых

  1. Сортировщик, правило [Входящая почта]
  2. Кнопка [Новый]
  3. Вкладка [Общие]
  4. Имя: "Перенаправление незнакомых"
  5. Условие:
  6. [Адресная книга]   [не содержит]   [отправитель]
  7. Вкладка [Действия]
  8. Пометить письмо как прочитанное
    Кнопка [Добавить]
    Перенаправить письмо в spam-sortir@yandex.ru
    Кнопка [Добавить]
    Удалить письмо
    Кнопка [Добавить]
  9. Вкладка [Опции]
  10. Отсылать созданные сообщения:
    [+] немедленно
  11. Кнопка [Ok] - сохраняем фильтр

Фильтр № 3.2. Удаление дубликатов

  1. Сортировщик, правило [Отправленные письма]
  2. Кнопка [Новый]
  3. Вкладка [Общие]
  4. Имя: "Удаление дубликатов"
  5. Условие:
  6. [Адресат]   [содержится]   spam-sortir@yandex.ru
  7. Вкладка [Действия]
  8. Удалить письмо
    Кнопка [Добавить]
  9. Кнопка [Ok] - сохраняем фильтр

На ящик spam-sortir@yandex.ru в Бате (правило [Входящая почта]) можно поставить ещё один необязательный фильтр, который автоматически добавляет адресатов в адресную книгу, чтобы не делать этого вручную. Это те незнакомцы, которые написали нам в первый раз. Они не спамеры и не вирусоразносчики (спам через Спамоборону прорываеися очень редко).

Фильтр № 3.3. Добавление нового адресата

  1. Сортировщик, правило [Входящая почта]
  2. Кнопка [Новый]
  3. Вкладка [Общие]
  4. Имя: "Добавление нового адресата"
  5. Условие:
  6. [Адресная книга]   [не содержит]   [отправитель]
  7. Вкладка [Действия]
  8. Доступные действия:
  9. Взять адреса
    Кнопка [Добавить]
    Поля заголовка, откуда добавляются адреса
    [√] От
    Кнопка [Ok]
  10. Кнопка [Ok] - сохраняем фильтр

Вот такая изящная схема! Её эффективность приближается к 100%.

Если желаете уменьшить поток прогоняемого через доп. ящик спама, скомбинируйте эту схему со схемой II. На работе, где у меня выделенка, я поступил ещё радикальнее: между заспамленым ящиком и почтовым клиентом поставил программу Spampal. Письма, маркируемые в теме Spampal'ом флагом **SPAM** рубятся сразу после скачивания из основного ящика (а это 85-90% всего спама), остальные письма от незнакомых прогоняются через доп. ящик, где Яндекс добивает остатки спама. Но Spampal может плохо работать на медленных коммутируемых линиях, где связь с интернетом постоянно рвётся, поэтому для таких случаев идеальнее всего связка "схема III + схема II".

Схема II. Фильтрация почты на основе полей заголовков письма

Мягкая фильтрация основана на обработке письма по его заголовку. Его ещё называют техническим конвертом. В The Bat! заголовок можно увидеть, если, выделив письмо, нажать клавишу F9.

Заголовок письма частично формируется почтовой программой на компьютере пользователя (поля: From, To, Subject, Date, Message-Id, X-Mailer, Content-Type и др.). Далее каждый сервер, через который проходит письмо, добавляет к техническому конверту как минимум одну запись (поля: Received, Delivered и т.д.). Поля заголовка определяются стандартом RFC-822.

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

Например, в спам-сообщениях могут отсутствовать одно или несколько обязательных полей (From, To, Subject, Date, Message-Id), которые есть во всех нормальных письмах. В полях From или To может отсутствовать email-адрес. Вы встречали почтовую программу или почтовый сервер, которые не пишут адрес в эти поля?

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

Первый фильтр данной схемы удаляет письма, не соответствующие стандарту RFC-822 и не содержащие одно из обязательных полей в заголовке письма (From, To, Subject, Date, Message-ID), а при жёстком подходе и некоторых необязательных полей (X-Mailer и др.).

Фильтр № 2.1. Нет полей в заголовке RFC-822

  1. Сортировщик, правило [Выборочное скачивание]
  2. Кнопка [Новый]
  3. Вкладка [Общие]
  4. Имя: "Нет полей в заголовке RFC-822"
  5. Условие:
  6. [Поле заголовока]   [Date]   [не соответствует]   .
    кнопка [Добавить]
    OR [Поле заголовока]   [From]   [не соответствует]   .
    кнопка [Добавить]
    OR [Поле заголовока]   [To]   [не соответствует]   .
    кнопка [Добавить]
    OR [Поле заголовока]   [Subject]   [не соответствует]   .
  7. Вкладка [Действия]
  8. Действие:
  9. [+] Удалить
    Кнопка [Ok]
  10. Кнопка [Ok] - сохраняем фильтр

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

Более жёстко этот фильтр будет работать (и больше спама убьёт на сервере), если в него добавить поля "Message-ID:" и "X-Mailer:". Но при этом нужно иметь в виду, что он также удалит сообщения MAILER-DAEMON, у которых нет в заголовке хотя бы одного из этих полей.

Поле Message-ID (идентификатор письма) обязательно должно присутствовать в заголовке письма и практически все почтовые программы и почтовые web-сервисы следуют этому правилу. Исключение составляют спец. сообщения, например, те же MAILER-DAEMON некоторых почтовых серверов.

Поле “X-Mailler:” ставится практически всеми почтовыми клиентами и известными мне почтовыми web-службами, хотя является необязательным с точки зрения стандарта RFC-822 (начинается с префикса X-). Некоторые зарубежные почтовые серверы вместо поля X-Mailer пишут X-Sender или X-SenderIP, поэтому существует небольшая вероятность блокирования полезных писем.

Прежде чем принимать решение включать или не включать поля Message-ID и X-Mailer, нужно изучить заголовки приходящих к Вам писем. Руководствоваться надо принципами “Не навреди”, “Семь раз отмерь и один раз отрежь”, но лучше перестраховаться, чем потерять хотя бы одно полезное письмо.

Следующий фильтр удаляет письма, у которых в поле From отсутствует email-адрес. Email-адрес можно закодировать с помощью регулярного выражения:

\w+[-\w]*@\w+[-\w]*\.?\w+[-\w]*\.\w{2,4}

Фильтр № 2.2. Без отправителя

  1. Сортировщик, правило [Выборочное скачивание]
  2. Кнопка [Новый]
  3. Вкладка [Общие]
  4. Имя: "Без отправителя"
  5. Условие:
  6. [Поле заголовка]   [From]   [не соответствует]   \w+[-\w]*@\w+[-\w]*\.?\w+[-\w]*\.\w{2,4}
  7. Вкладка [Действия]
  8. Действие:
  9. [+] Удалить
    Кнопка [Ok]
  10. Кнопка [Ok] - сохраняем фильтр

Излюбленный приём спаммеров, имитировать Вас в качестве отправителя письма Вам же. Писать самому себе с точки зрения пользователя бессмысленно, кроме случая тестирования своего собственного ящика. Третий фильтр удалит письма, у которых в поле From стоит Ваш адрес (например, pupkin@provider.ru).

Фильтр № 2.3. От меня

  1. Сортировщик, правило [Выборочное скачивание]
  2. Кнопка [Новый]
  3. Вкладка [Общие]
  4. Имя: "От меня"
  5. Условие:
  6. [Поле заголовка]   [From]   [содержится]   pupkin@provider.ru
  7. Вкладка [Действия]
  8. Действие:
  9. [+] Удалить
    Кнопка [Ok]
  10. Кнопка [Ok] - сохраняем фильтр

Ещё один спаммерский приём – в поле To (кому) ставить любой вымышленный, но не Ваш адрес. Такие письма зарубит фильтр “Не мне”.

Фильтр № 2.4. Не мне

  1. Сортировщик, правило [Выборочное скачивание]
  2. Кнопка [Новый]
  3. Вкладка [Общие]
  4. Имя: "Не мне"
  5. Условие:
  6. [Поле заголовка]   [To]   [не содержится]   pupkin@provider.ru
  7. Вкладка [Действия]
  8. Действие:
  9. [+] Удалить
    Кнопка [Ok]
  10. Кнопка [Ok] - сохраняем фильтр

Если Ваш адрес pupkin@provider.ru используется для сбора почты с других Ваших адресов (например, с vasya-pupkin@hotmail.com и с pupvasya@mail.ru), то нужно перечислить их все:

5. Условие:
[Поле заголовка]   [To]   [не содержится]   pupkin@provider.ru
кнопка [Добавить]
OR [Поле заголовка]   [To]   [не содержится]   vasya-pupkin@hotmail.com
кнопка [Добавить]
OR [Поле заголовка]   [To]   [не содержится]   pupvasya@mail.ru

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

В заголовках большинства спам-сообщений можно заметить такую строку:

To: pupkin <pupkin@provider.ru>

Напишет ли такое имя Ваш друг или знакомый? Вряд ли. Скорее всего, он напишет так:

To: Вася Пупкин <pupkin@provider.ru>

Строке вида “pupkin <pupkin@provider.ru>” соответствует следующее регулярное выражение:

^pupkin\s<pupkin@provider.ru>

Фильтр № 2.5. "Паранойя" как раз для такого случая:

  1. Сортировщик, правило [Выборочное скачивание]
  2. Кнопка [Новый]
  3. Вкладка [Общие]
  4. Имя: "Паранойя"
  5. Условие:
  6. [Поле заголовка]   [To]   [соответствует]   ^pupkin\s<pupkin@provider.ru>
  7. Вкладка [Действия]
  8. Действие:
  9. [+] Удалить
    Кнопка [Ok]
  10. Кнопка [Ok] - сохраняем фильтр

Последние 2 фильтра предназначены для ведения чёрного списка email-адресов спамеров.

Ручной фильтр "Добавление в стоп-лист" срабатывает по нажатию Ctrl+Ё и добавляет адреса спаммеров в стоп-лист (в файл spam.txt).

Фильтр № 2.6. Добавление в стоп-лист

  1. Сортировщик, правило [Прочитанные письма]
  2. Кнопка [Новый]
  3. Вкладка [Общие]
  4. Имя: "Добавление в стоп-лист"
  5. Вкладка [Действия]
  6. Действие:
  7. Экспорт сообщения
    Кнопка [Добавить]
    Экспортировать письмо в файл: C:\spam.txt
    Формат экспорта:
    [+] Только текст     Кнопка [Шаблон]
    Вкладка [General]
    Конопка [Ok]
    [+] Присоединить к существующему файлу
    Конопка [Ok]
  8. Действие:
  9. Удалить письмо (Можно: Переместить письмо в папку Корзина)
    Кнопка [Добавить]
  10. Вкладка [Опции]
  11. [√] Использовать этот фильтр только для ручной фильтрации
    [√] Выполнять действие для этого фильтра по нажатию клавиши
    Ctrl + Ё
    [√] Правило выполняется только при нажатии горячей клавиши
  12. Кнопка [Ok] - сохраняем фильтр и закрываем сортировщик
Фильтр "Удаление спама по стоп-листу" удаляет письма спамеров на сервере, если их адреса уже имеются в файле spam.txt

Фильтр № 2.7. Удаление спама по стоп-листу

  1. Сортировщик, правило [Выборочное скачивание]
  2. Кнопка [Новый]
  3. Вкладка [Общие]
  4. Имя: "Удаление спама по стоп-листу"
  5. Условие:
  6. [Отправитель]   [находится]
  7. Вкладка [Действия]
  8. Действие
  9. [+] Удалить
    [+] Загрузить сигнальные строки из файла:
    spam.txt
  10. Кнопка [Ok] - сохраняем фильтр и закрываем сортировщик

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

Всего получено спама: 216 100%
Отфильтровано по заголовку 107 49,5%
- Нет полей в заголовке
55 25,5%
- Без отправителя
0 -
- От меня
0 -
- Не мне
29 13,4%
- Паранойя
23 10,6%
- Стоп-лист
0 -
Отфильтровано Spampal 189 87,5%
Отфильтр. по заголовку + Spampal 207 95,8%

Из таблицы видно, что фильтрация только по заголовкам писем даёт около 50%. Эффективность программы Spampal составляет около 88%. А совокупный эффект фильтров по заголовкам и программы Spampal составляет 96%.

Из всех мягких фильтров самые работающие "Нет полей в заг.", "Не мне", "Паранойя". Безработные фильтры: "Без отправителя", "От меня", "Стоп-лист". Последний фильтр не работает потому, что в поле From спамеры ставят неповторяющиеся фальшивые адреса, которые генерируются программой, рассылающей спам.

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

Рассмотрим комбинации схемы III (пересылка через доп. ящик) с другими схемами.

   Спама будет убито на Вашей машине Спама пройдёт через доп. ящик и будет убито на защищённом сервере
Схема III + схема II 50% 50%
Схема III + Spampal 88% 12%
Схема III + схема II + Spampal 96% 4%

Схема I. Фильтрация почты методом подтверждения переписки (жёсткая схема)

Это самый первый и самый радикальный метод. Его суть состоит в том, что в ответ на письмо незнакомца (которого нет в адресной книге) отправляется извещение с кодом в теме письма. Обычный пользователь должен автоответить на извещение и, таким образом, подтвердить, что он "живой юзер", а не бездушный спаммерский робот. Письма с правильным кодом в теме (в том числе и автответы на извещения) свободно проходят на Ваш компьютер. Спамеры автоответить на извещения не могут, т.к. ставят в поле отправителя вымышленные (не существующие) адреса. Почтовые серверы в ответ на отсылку извещений на несуществующие адреса шлют диагностические сообщения (плюшки) MAILER-DAEMON.

Статья "Убийства спама в The Bat!" с описанием этого метода очень широко распространилась в интеренете, а сама схема фильтрации стала достаточно популярной, хотя и самой критикуемой.

Я честно отбивался от озверевших спамеров и проницательных юзеров. В следующей статье "Жёсткая и мягкая фильтрация спама в The Bat!" я попытался усовершенствовать схему, что привело к её чрезмерному усложнению. Юзвери были готовы четвертовать автора не только за конкретную реализацию этой схемы в Бате (совершенно справедоиво), но и за саму схему (вполне легальную), а это уже совсем не справедливо, т.к. точно такая же схема действует сейчас на портале KM.ru. Другое дело, что средствами сортировщика The Bat! нельзя реализовать все тонкости, что можно сделать на сервере с помощью спец. программных средств, либо кое-что можно, но за счёт непомерного усложнения и неприемлимого увеличения количества фильтров.

Самые тяжелые критические минусы этого метода фильтрации следующие:

  1. Жёсткая схема не подходит для тех лиц и организаций, для которых новые адресаты являются критически важными (например, если Вы ждёте писем от новых клиентов).
  2. При первом контакте, получив извещение в ответ на своё письмо, юзер может не захотеть подтвердить переписку, т.е. не автоответить на извеещение. Это психологическая причина, по которой контакт по e-mail может не состояться.
  3. Поток входящих диагностических сообщений MAILER-DAEMON равен потоку извещений на несуществующие адреса (т.е. потоку входящего спама), поэтому плюшки приходится удалять. Но если Вы ошибётесь в email-адресе при написании и отсылке письма кому-либо, то об этом не узнаете, т.к. будет удалена и полезная для Вас плюшка.
    Можно, конечно, выковыривать из плюшек MAILER-DAEMON несуществующие адреса и копить их в файле или в адресной книге, а потом удалять по ним входящий спам. Но выше в эксперименте было показано, что фальшивые адреса генерятся спамерской программой и практически не повторяются (фильтр "Стоп-лист" практически бесполезен). Если это сделать только ради полезных плюшек, то вся схема невероятно усложнится.
  4. Возможен эффект "пинг-понг" зацикливания схемы, когда в переписку вступят 2 юзера, у которых реализована данная схема. В ответ на извещение одного ему посылается извещение от второго и так до бесконечности. Пинг-понг возникает, если у обоих корреспондентов в теме извещения не будет "пропускного" кода, а его надо набирать вручную.

Следует отметить, что посылка извещений на адрес отправителя -- это слишком примитивный способ проверки его существования. Других средств в Бате нет. Отсюда и невозможность красиво и правильно реализовать схему I с помощью The Bat!. Гораздо предпочтительней для этого использовать сторонние антиспамные программы, например тот же Spampal.

Взвесив все "за" и "против" я решил не переводить схему I на язык сортировщика летучей мыши версии 3.x. Те, кому она будет очень нужна, сделают это без проблем по примеру приведённых в этой статье фильтров.

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Дата публикации:
Автор публикации: