Жёсткая и мягкая фильтрация спама в The Bat

OSzone.net » Программы » Обзоры программ » Интернет » Жёсткая и мягкая фильтрация спама в The Bat
Иcточник: http://www.izcity.com
Опубликована: 01.02.2005
С момента публикации статьи "Убийство спама в The Bat!" накопился определённый опыт эксплуатации в реальных условиях описанных там антиспамных фильтров, что заставило меня вновь уткнуться в компьютер и обобщить сильные и слабые стороны предложенной в этой статье системы фильтров, а также внести в схему построения фильтров некоторые усовершенствования.

Большое спасибо всем читателям, которые откликнулись на данную статью и написали мне все свои замечания, просьбы и предложения. Ставя точку в той статье, я и не планировал писать продолжение, наивно полагая, что всё и так хорошо и будет идеально работать. Именно вопросы, возникшие при использовании фильтров в The Bat! и выявленные в результате моего личного опыта и общения по мылу с читателями, послужили стимулом к написанию продолжения.

Вся прелесть этих фильтров состоит в их полном автоматизме: нажал на кнопку “Получить новую почту” и отдыхай, пока Бат не сделает всё сам. Никаких напрягов – не надо до опупения всматриваться в заголовки сообщений и искать в них знакомые и незнакомые адреса, не надо вчитываться в темы, не надо читать всякий рекламный вздор, не надо его вручную разгребать и перетаскивать в корзину...

Вместе с тем, система фильтров, описанная в старой статье, не достаточно гибка. Принцип фильтрации основан на методе белого списка. Белый список – это вся адресная книга. Письма, пришедшие от “знакомых” адресатов (т.е. из адресной книги) пропускаются, а от незнакомых – удаляются. Последним рассылаются уведомления с предложением набрать в теме письма ключевое слово (цифровой код). Входящие сообщения с этим кодом в теме тоже проходят через фильтры.

Какие же минусы у данной схемы?

Во-первых: из 100 спамеров всегда найдётся 1, у которого реальный обратный адрес. Поэтому вполне вероятно, что спамер наберёт Ваш код и его письмо дойдёт до Вас. Лично у меня было несколько таких случаев. Не менять же код ради нескольких спамеров! Здесь сразу же напрашивается идея прикрутить чёрный список, куда можно было бы засунуть адреса прорвавшихся спамеров.

Во-вторых: при большом количестве спама некоторые читатели отметили возросший исходящий трафик, состоящий из уведомлений. Если в почтовом ящике на сервере лежит 20 сообщений от неизвестных адресатов, то им будет отослано ровно 20 уведомлений.

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

В-третьих: в старой конструкции слабо задействована фильтрация по заголовку письма, кроме фильтра № 1 “Спам по заголовку”, который удаляет сообщения, адресованные не Вам, сообщения с Вашего адреса и сообщения без адреса отправителя. Полномасштабный формальный анализ позволяет удалить 40-80% откровенного спама без рассылки уведомлений и при практически нулевом трафике. Выйдя на работу после отпуска, я обнаружил в ящике 304 письма (около 8Мб). С помощью чистильщика на основе формальных признаков было выделено и удалено 252 сообщения (83%)!

А если спам идёт с одного и того же адреса? Было бы неплохо запоминать адреса отправителей, чтобы не посылать многократно уведомления одному и тому же адресату, возможно несуществующему. В последнем случае (если адрес не существует), почтовые серверы разразятся руганью и возвратят Вам диагностические сообщения MAILER-DAEMON@mailserv.ru, сообщающие о несуществующем адресе или об ошибке DNS. Поэтому при отсутствии истории отправителей, придётся платить не только за лишний исходящий трафик на тупую рассылку уведомлений одним и тем же несуществующим адресатам, но и за обратный входящий трафик для обработки сообщений типа MAILER-DAEMON@mailserv.ru.

В-четвёртых: схема, описанная в статье “Убийство спама в The Bat!”, требует от получившего уведомление вручную добавлять код в тему письма, а отправителю письма обязательно нужно заносить адрес человека, которому он пишет впервые, в адресную книгу. Иначе возможна ситуация, когда два пользователя, имеющие жёсткую систему фильтров, будут бесконечно обмениваться уведомлениями (так называемый email-пинг-понг). Вы написали мне письмо и забыли занести мой адрес в адресную книгу, мой фильтр послал Вам уведомление, а в ответ на моё уведомление Ваш фильтр послал мне уведомление и так до бесконечности. Правда, этим же недостатком грешат и специальные антиспамные программы, типа WinAntispam, имеющие такую же жёсткую схему фильтрации, основанную на белых/чёрных списках и уведомлениях.

В-пятых: письма от незнакомых отправителей в старой схеме полностью удалялись, хотя предварительно скачивались на компьютер пользователя (для обработки фильтром "От неизвестного адресата"). Разумнее всё-таки некоторое время (например, 30 дней) хранить их в корзине, раз уж они скачиваются, чтобы не заставлять незнакомого адресата повторно отправлять письмо.

Таким образом, появилась потребность усовершенствовать старую конструкцию фильтров. Новая схема – это та же старая схема + чёрные списки + фильтрация по заголовку до скачивания письма. Чёрные списки – это текстовый файл "spam.txt" и спец. группы в адресной книге, где накапливаются адреса от незнакомых отправителей, не набравших Ваш код в теме письма, либо адреса спамеров, набравших проходной код. Если от этой категории отправителей продолжают идти письма, то повторные сообщения удаляются уже без посылки уведомления, что не было реализовано в старой системе фильтров.

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

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

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

Описанная ниже система фильтров было разработана и успешно испытана для версии The Bat! не ниже 1.62.

Жёсткая система фильтров.

Новая конструкция состоит из 2 групп фильтров. Первая группа в сортировщике The Bat! входит в правило “Входящая почта”. Фильтры первой группы пропускают письма от знакомых адресатов и с заданным кодом в теме, удаляют сообщения от незнакомых адресатов, рассылают им уведомления и ведут чёрные списки спамеров.

Вторая группа фильтров входит в правило сортировки “Выборочное скачивание” и осуществляет фильтрацию на основе полей заголовка письма RFC-822. Для срабатывания фильтров этой группы с сервера скачиваются только заголовки писем.

Особенностью сортировщика The Bat! является то, что первым срабатывает правило сортировки “Выборочное скачивание” (хотя оно в сортировщике стоит последним), а затем – “Входящая почта”. Это противоречие связано с тем, что правило “Выборочное скачивание” появилось в более поздних версиях (раньше его не было), т.е. было прикручено к сортировщику. Сначала Бат скачивает с сервера заголовки писем, обрабатывает их фильтрами “Выборочное скачивание” (письма, удовлетворяющие условиям фильтрации, либо удаляются с сервера, либо исключаются из списка загрузки, т.е. остаются на сервере). Затем оставшиеся в списке сообщения скачиваются с сервера, после чего обрабатываются фильтрами “Входящая почта”. Так и хочется здесь воскликнуть: “Господа, это не глюк программы, это её свойство!”. Вот почему фильтры этой группы очень существенно экономят входящий трафик. Чем больше хлама (спама) мы предварительно убьём на сервере (в “Выборочном скачивании”), тем меньше потом придётся качать и обрабатывать во “Входящей почте”. Правило сортировки “Выборочное скачивание” в старой статье вообще не было задействовано, тем не менее, схема успешно работала.

Наконец, мы подошли к описанию сути новой конструкции фильтров.

Создадим в адресной книге 3 группы адресов (открываем адресную книгу: меню [Инструменты / Адресная книга]; выделяем “Personal address book”; меню [Правка / Создать новую группу…]). Назовём их, например, так:

_Отстойник
_Сортир
_Шлюз

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

В “_Отстойник” будут кидаться адреса писем от незнакомых отправителей, т.е. от тех, кто написал в первый раз. В результате в этой группе накопится большое кол-во спам-email-адресов, на 100% не существующих. Периодически (раз в год - в полгода) сюда нужно заходить, чтобы вычистить авгиевы конюшни :-).

В группу “_Шлюз” из “_Отстойника” будут автоматически перемещены те адресаты, кто введёт заданный нами код в теме письма. Если адрес находится в “_Шлюзе”, то письма с него будут проходить на наш компьютер. Чтобы адресат стал доверенным, его адрес нужно из “_Шлюза” вручную перетащить в любую группу (кроме этих трёх) или в корень “Personal address book”. В идеале папка “_Шлюз” должна быть пустая, т.к. там только временно хранятся адресаты, которые станут либо друзьями, либо врагами (спамерами).

Группа “_Сортир“ – это чёрный список спамеров. В _Сортир мы вручную или с помощью спец. фильтра из _ Шлюза переносим адреса прорвавшихся спамеров, т.е. тех, которые набрали наш код. Если спамер попал в _Сортир, пусть он хоть до потери пульса пишет нам письма – они будут методично удаляться, не смотря на набранный код.

Таким образом, при скачивании почты всё происходит автоматически. Как только Вы получили новое письмо от незнакомца с Вашим кодом в теме, зайдите в адресную книгу и из “_Шлюза” перетащите его либо в группу друзей, либо в “_Сортир” на вечный покой. И раз в год в “_Отстойнике” грохните все мёртвые адреса, ежели не жалко :-). Вот и все дела :-))).

Общая схема фильтров будет выглядеть так:

  1. На сервере правилом «Выборочное скачивание» удаляются следующие сообщения:
    • без адреса отправителя в поле “From:”;
    • с моим адресом в поле “From:” (от меня);
    • если в поле “To:” не мой адрес (не мне);
    • если в заголовке письма отсутствуют некоторые поля;
    • для некоторых очень характерных для спама случаев (паранойя);
    • для адресатов из стоп-листа.
  2. Далее оставшиеся письма скачиваются на Ваш компьютер и обрабатываются правилом «Входящая почта».
  3. Принимаем все письма от известных адресатов.
  4. Обрабатываем диагностические сообщения MAILER-DAEMON.
  5. Пропускаем все письма, в теме которых стоит наш код (кроме адресатов из _Сортира), а отправителей перемещаем из _Отстойника в _Шлюз.
  6. Удаляем в корзину спам от отправителей из _Отстойника и _Сортира.
  7. Обрабатываем письма от неизвестных адресатов:
    • перемещаем письма от них в корзину и храним там 30 дней;
    • помещаем их адреса в “_Отстойник”;
    • рассылаем им уведомления с предложением ввести код в тему нового письма или автоответить на уведомление с уже введённым кодом.
  8. Удаляем отосланные уведомления.

Если некто (возможно полезный отправитель) не позднее 30 дней автоответит на наше уведомление, то его письмо по теме и дате отправления можно найти в корзине. Если это спамер, выделяем его письмо и нажимаем заветную комбинацию клавиш – это письмо удаляется, а его адрес перемещается в _Сортир и в стоп-лист (файл spam.txt). Письма от адресатов, попавших в стоп-лист уничтожаются прямо на почтовом сервере и не скачиваются на наш компьютер.

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

Правило сортировки

Фильтр

Действие

Входящая почта

1.

Пропускает сообщения от известных адресатов для указанных групп адресной книги

2. MAILER-DAEMON

Извлекает несуществующие адреса из сообщений MAILER-DAEMON и добавляет их в стоп-лист (файл spam.txt)

3. Пропуск по ключу

Пропускает письмо с нашим кодом в теме, перемещает адресата из _Отстойника в _Шлюз

4. Спам-отстой

Перемещает письмо от адресата из _Отстойника в корзину

5. Спам-сортир

Удаляет письмо от адресата из _Сортира, добавляет его адрес в стоп-лист (файл spam.txt)

6. От неизвестного адресата

Перемещает письмо в корзину, где оно хранятся 30 дней, добавляет адрес отправителя в _Отстойник, высылает ему извещение

Отправленные письма

7. Удаление извещений неизвестным адресатам

Удаляет отправленные извещения

Прочитанные письма

8. Обработка спама
(ручной фильтр)

С помощью комбинации клавиш удаляем выделенное письмо от “прорвавшегося” спамера, перемещаем его адрес из _Шлюза в _Сортир и добавляем в стоп-лист (файл spam.txt)

Выборочное скачивание

9. Без отправителя

Удаляет письма без адреса отправителя в поле “From:”

10. От меня

Удаляет письма с моим адресом в поле “From:”

11. Не мне

Удаляет письма, если в поле “To:” не мой адрес

12. Нет полей в заголовке RFC-822

Удаляет письма, если в их заголовке отсутствуют поля "Date:", “From:”, “To:”, “Subject:”, “Message-ID:”, “X-Mailer:”

13. Паранойя

Удаление писем по специфическим признакам, например:
To: pupkin

14. Стоп-лист

Удаляет письма от отправителей из стоп-листа из файла spam.txt

Обработка входящей почты.

Пусть Ваш email-адрес, как в старой статье, будет pupkin@mailserver.ru.

Если у Вас старая система фильтров, то фильтр № 1, который раньше назывался “Спам по заголовку” удалим. В новой схеме его заменят правила фильтрации по формальным признакам (правило “Выборочное скачивание”, см. далее).

Теперь фильтром № 1 будет стандартное правило сортировщика (известные адресаты). Оно работает так: если к Вам пришло письмо, адрес отправителя которого находится в указанных Вами группах адресной книги, то это письмо пропускается на Ваш компьютер и по умолчанию кладётся в спец. папку [Входящие – Известные адресаты].

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

Фильтр № 1.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Разворачиваем [+] правило сортировки [Входящая почта]
  4. Выделяем правило
  5. Вкладка [Известные адресаты]
  6. Переместить письмо от известных адресатов в папку   (кнопка [Выбор папки])
    [Входящие]
  7. Искать в адресных книгах:
    • ставим галки напротив всех групп, кроме “_Отстойник”, “_Шлюз” и “_Сортир”
  8. [√] Правило активно
  9. [√] Продолжать обработку последующих правил
  10. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

Фильтр № 1 пропускает на Ваш компьютер письма от знакомых адресатов из всех отмеченных групп, кроме групп “_Отстойник”, “_Шлюз” и “_Сортир”. Более мягкий вариант, если в пункте 7 напротив “_Шлюза” поставить галку, тогда отправитель, один раз набрав код в теме письма, станет доверенным адресатом. При отсутствии галки – адресату из “_Шлюза” нужно каждый раз набирать код.

В пункте 6 нужно обязательно выбрать папку [Входящие] вместо стоящей по умолчанию [Входящие – Известные адресаты], если письма в дальнейшем нужно раскладывать с помощью других фильтров по папкам, иначе все письма от знакомых будут валиться во [Входящие – Известные адресаты], а нижестоящие фильтры будут игнорироваться.

Фильтр № 2 обрабатывает диагностическое сообщение MAILER-DAEMON: извлекает из него адрес несуществующего адресата и записывает этот адрес в стоп-лист.

Фильтр № 2.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Входящая почта]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “MAILER-DAEMON
  7. Переместить письмо в папку
    [Корзина]
  8. Сигнальные строки:

    Строки

    Наличие

    Где

    MAILER-DAEMON

    Отправитель

    Да

  9. Вкладка [Альтернативы]
  10. Кнопка [Добавить набор]

    Строки

    Наличие

    Где

    Mail Delivery System

    Отправитель

    Да

  11. Кнопка [Добавить набор]

    Строки

    Наличие

    Где

    Mail Delivery Subsystem

    Отправитель

    Да

  12. Вкладка [Действия]
  13. [√] Пометить письмо как прочитанное
  14. [√] Экспортировать письмо в файл
    C:spam.txt
    Формат   [Текст]
    • Добавить к существующему файлу
  15. Кнопка [Шаблон] - вставляем в редакторе шаблонов текст:
    %REGEXPTEXT="w+[-w]*@w+[-w.]+w{2,4}" %Cursor
  16. Кнопка [Ok] – сохраняем шаблон и возвращаемся в сортировщик писем
  17. Остальные пункты оставляем по умолчанию.
  18. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр.

Сами плюшки MAILER-DAEMON в этом фильтре перемещаются в корзину, но, если надо, можно изменить для них папку назначения и создать специальную.

Не исключено, что данный фильтр вообще никогда не сработает :-), т.к. сообщения MAILER-DAEMON по каким-либо формальным признакам будут удалены ещё раньше при “Выборочном скачивании” (см. далее “Обработка почты на сервере”, фильтр № 12).

Фильтр № 3 пропускает письма отправителей с заданным нами кодом в теме (например, 456123), кроме тех, которые уже попали в группу "_Сортир". Раньше в старой схеме этого фильтра не было. Зачем же он нужен? Именно этот фильтр перемещает адрес отправителя, набравшего код в теме, из _Отстойника в _Шлюз, откуда мы впоследствии с помощью фильтра или вручную перенесём его либо в группу друзей, либо в группу спамеров "_Сортир".

Фильтр № 3.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Входящая почта]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “Пропуск по ключу
  7. Переместить письмо в папку
    [Входящие]
  8. Сигнальные строки:

    Строки

    Наличие

    Где

    456123

    Тема

    Да

  9. Вкладка [Действия]
  10. [√] Добавить адрес(а) в адресную книгу Элементы: [Отправитель (От)] Добавить в группы: [_Шлюз]
  11. [√] Удалить адрес(а) из адресной книги: Элементы: [Отправитель (От)]
    • Из групп:[_Отстойник]
  12. Вкладка [Дополнительно]
  13. [√] Адрес должен присутствовать в адресной книге: Элементы: [Отправитель] [√] Адрес должен принадлежать группам: [_Отстойник+_Шлюз]
  14. [√] Адрес должен отсутствовать в адресной книге: Элементы: [Отправитель] [√] Проверять только следующие группы: [_Сортир]
  15. Остальные пункты оставляем по умолчанию
  16. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр
Следующие два фильтра № 4 и 5 удаляют спам от отправителей из _Отстойника и _Сортира. Два фильтра понадобились потому, что повторные письма от адресатов из _Отстойника накапливаются в корзине, а их адреса не заносятся в стоп-лист, иначе они заблокируются на сервере, а письма от людей из _Сортира (они же из стоп-листа) уничтожаются непосредственно на сервере. Стоп-лист – это текстовый файл "spam.txt", который в нашем примере находится на диске C:, хотя его можно положить на любой диск в любую папку. Такая схема выглядит несколько избыточной: группа _Сортир в адресной книге дублирует стоп-лист в файле "spam.txt". Если отказаться от этого файла, то нельзя будет удалять сообщения на сервере правилом “Выборочное скачивание”. Тогда, может быть, обойтись только стоп-листом без _Сортира? Конечно можно, но при случайном удалении spam.txt, последний автоматически восстанавливается благодаря _Сортиру.

Фильтр № 4.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Входящая почта]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “Спам-отстой
  7. Переместить письмо в папку
    [Корзина]
  8. Вкладка [Действия]
  9. [√] Пометить письмо как прочитанное
  10. Вкладка [Дополнительно]
  11. [√] Адрес должен присутствовать в адресной книге Элементы: [Отправитель] [√] Адрес должен принадлежать группам: [_Отстойник]
  12. Остальные пункты оставляем по умолчанию
  13. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр


Фильтр № 5.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Входящая почта]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “Спам-сортир
  7. Переместить письмо в папку
    [Корзина]
  8. Вкладка [Действия]
  9. [√] Удалить письмо
  10. [√] Экспортировать письмо в файл
    C:spam.txt
    Формат   [Текст]
    • Добавить к существующему файлу
  11. Кнопка [Шаблон] - вставляем в редакторе шаблонов текст:
    %REGEXPTEXT="w+[-w]*@w+[-w.]+w{2,4}" %Cursor
  12. Кнопка [Ok] – сохраняем шаблон и возвращаемся в сортировщик писем
  13. Вкладка [Дополнительно]
  14. [√] Адрес должен присутствовать в адресной книге Элементы: [Отправитель] [√] Адрес должен принадлежать группам: [_Сортир]
  15. Остальные пункты оставляем по умолчанию
  16. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

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

Фильтр № 6 обрабатывает письма от незнакомцев: перемещает их в корзину, рассылает им уведомления и помещает их адреса в _Отстойник. В уведомлении неизвестному адресату предлагается либо автоответить этим уведомлением (с уже введённым кодом), либо написать новое письмо с этим же кодом в теме. Если незнакомец авотоответит уведомлением, то его старое письмо уже лежит в нашей корзине, мы просто его там найдём по дате отправления и теме, указанными в вернувшемся уведомлении.

В нашем примере используется цифровой код 456123. Можно задать код английскими буквами, но не русскими, чтобы избежать проблем с кодировками кириллицы.

Фильтр № 6.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Входящая почта]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “От неизвестного адресата
  7. Переместить письмо в папку
    [Корзина]
  8. Сигнальные строки:

    Строки

    Наличие

    Где

    456123

    Тема

    Нет

  9. Вкладка [Действия]
  10. [√] Пометить письмо как прочитанное
  11. [√] Добавить адрес(а) в адресную книгу Элементы: [Отправитель От] Добавить в группы: [_Отстойник]
  12. [√] Отправить автоответ
  13. Кнопка [Шаблон] – вставляем в редакторе шаблонов текст:
    Уважаемый отправитель письма %OFROMNAME! Вы написали %ODATE в %OTIMELONG с адреса %OFROMADDR на адрес %OTOADDR. Ваше сообщение было автоматически удалено фильтрами от спама и в течение 30 дней будет храниться в корзине моей почтовой программы. Исходное сообщение: ====================================================================== От: %OFROMNAME Кому: %OTONAME Отправлено: %ODATESHORT %OTIMELONG Тема: %OSUBJ ====================================================================== Если Вы хотите, чтобы я: а) прочитал Ваше письмо, ответьте этим письмом. б) получил от Вас новое письмо, добавьте в его тему число 456123. Приношу извинения за доставленное неудобство при первом контакте. С наилучшими пожеланиями - автоответчик %FROMADDR %SUBJECT="%OSUBJ 456123" %ATTACHFILE="C:message.msg"
  14. Кнопка [Ok] – сохраняем шаблон и возвращаемся в сортировщик писем
  15. Экспортировать письмо в файл
    C:message.msg
    Формат   [RFC-822 (MSG)]
  16. Вкладка [Свойства]
  17. Отправка созданных писем:
    • немедленная
  18. Вкладка [Дополнительно]
  19. [√] Адрес должен отсутствовать в адресной книге Элементы: [Отправитель]
  20. Остальные пункты оставляем по умолчанию
  21. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

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

%ATTACHFILE="C:message.msg"

и пункт 15 из фильтра № 6.

Итак, фильтр № 6 “От неизвестного адресата” переместит письмо от незнакомца в корзину, где оно должно пролежать какой-то срок, например 30 дней, чтобы либо дождаться автоответа от пользователя и быть прочитанным, либо через 30 дней сгинуть в небытиё.

Чтобы корзина могла подчищать себя от старых писем месячной давности, нажмём на неё правой кнопкой мыши и в свойствах укажем:

  1. [√] Срок хранения писем (дней)   [30]
  2. [√] Удалить старые письма

Обработка отправленных и прочитанных писем.

Здесь, в основном, сосредоточены обслуживающие фильтры, без которых, однако, очень трудно обойтись. Фильтр № 7 удаляет уведомления, которые мы разослали неизвестным адресатам. Оригиналы писем от незнакомцев пролежат в корзине 30 дней, а сами уведомления нам не нужны, т.к. они только захламят папку “Отправленные” или корзину.

Фильтр № 7.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Отправленные письма]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “Удаление извещения неизвестному адресату
  7. Переместить письмо в папку:
    [Корзина]
  8. Сигнальные строки:
     

    Строки

    Наличие

    Где

    456123

    Текст

    Да

    автоответчик

    Текст

    Да

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

  9. Вкладка [Действия]
  10. [√] Удалить письмо
  11. Остальные пункты оставляем по умолчанию
  12. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

Представим себе ситуацию, когда найдётся несколько спамеров, имеющие реальный обратный адрес, которые наберут наш код в теме своего очередного рекламного сообщения. Не менять же нам код ради нескольких выскочек! Я, например, вообще не собираюсь менять код, который установил полгода назад. Просто нужно переместить их адреса из _Шлюза в _Сортир и в стоп-лист, а присланное спам-сообщение выбросить в корзину. А ещё лучше завести специальный фильтр № 8 “Обработка спама”, который всё сделает сам.

Фильтр № 8.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Прочитанные письма]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “Обработка спама
  7. Переместить письмо в папку:
    [Корзина]
  8. Правило
    [√] Активно
    [√] Ручное
  9. Вкладка [Действия]
  10. [√] Пометить письмо как прочитанное
  11. [√] Добавить адрес(а) в адресную книгу Элементы: [Отправитель От] Добавить в группы: [_Сортир]
  12. [√] Удалить адреса из адресной книги: Элементы: [Отправитель (От)]
    • Из групп:[_Отстойник+_Шлюз]
  13. [√] Экспортировать письмо в файл
    C:spam.txt
    Формат   [Текст]
    • Добавить к существующему файлу
  14. Кнопка [Шаблон] - вставляем в редакторе шаблонов текст:
    %OFROMADDR %Cursor
  15. Кнопка [Ok] – сохраняем шаблон и возвращаемся в сортировщик писем
  16. Вкладка [Свойства]
  17. [√] Применить правило к выбранному письму при нажатии:
    [ Ctrl + Ё ] [√] Это правило исполняется только при нажатии
  18. Остальные пункты оставляем по умолчанию
  19. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

Теперь всё просто – выделяем письмо “прорвавшегося” спамера и Ctrl+Ё его :)))

Обработка почты на сервере.

Это примерно от 40 до 80% входящего почтового трафика. Совсем не хило, если прямо на сервере в почтовом ящике испаряется такое количество спама. А всё дело в том, что есть стандарт RFC-822, который определяет, какие поля обязательно должны присутствовать в заголовке почтового сообщения. И все почтовые клиенты и web-службы соблюдают этот стандарт. Так, например, в заголовке письма должны быть поля "Date:" (дата и время создания письма), "From:" (от кого), "To:" (кому), "Subject:" (тема),"Message-ID:" (идентификатор сообщения) и необязательные с префиксом "X-": X-Mailer (почтовый клиент) и др. В полях From и To должны быть email-адреса вида “username@servername.dom”, причём в поле To – ваш адрес.

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

Увидеть заголовок письма в The Bat! можно, нажав меню [Вид / Показывать заголовки (RFC-822)].

Для обработки почты на сервере в The Bat! используется правило сортировки “Выборочное скачивание”. Вся прелесть этого правила состоит в том, что оно срабатывает первым, и удаляет письма без скачивания непосредственно на сервере.

Сначала на компьютер пользователя скачивается список заголовков писем, лежащих на сервере. Фильтрация осуществляется на основе наличия или отсутствия полей или какого-то текста в этик полях заголовка письма, в результате чего можно определить, какие письма являются 100% спамом. Затем все нежелательные сообщения удаляются с сервера, а оставшиеся скачиваются на машину пользователя и передаются для дальнейшей обработки фильтрам правила “Входящая почта”.

Фильтр № 9 удалит письма, у которых в поле From отсутствует email-адрес. Как известно, email-адрес должен обязательно содержать символы “@” и “.” (точку). Если эти символы отсутствуют, значит в поле From нет email-адреса.

Фильтр № 9.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Выборочное скачивание]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “Без отправителя
  7. Определять по
    • Отправителю
  8. Сигнальные строки
    @
    .
  9. Правило
    [√] Активно
  10. Вкладка [Дополнительно]
  11. Действие
    • Удалить
  12. Метод определения
    • Хотя бы одна строка не должна быть найдена
  13. Остальные пункты оставляем по умолчанию
  14. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

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

Фильтр № 10.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Выборочное скачивание]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “От меня
  7. Определять по
    • Отправителю
  8. Сигнальные строки
    pupkin@mailserver.ru
  9. Правило
    [√] Активно
  10. Вкладка [Дополнительно]
  11. Действие
    • Удалить
  12. Метод определения
    • Любая строка найдена
  13. Остальные пункты оставляем по умолчанию
  14. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

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

Фильтр № 11.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Выборочное скачивание]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “Не мне
  7. Определять по
    • Получателю
  8. Сигнальные строки
    pupkin@mailserver.ru
  9. Правило
    [√] Активно
  10. Вкладка [Дополнительно]
  11. Действие
    • Удалить
  12. Метод определения
    • Ни одна из строк не должна быть найдена
  13. Остальные пункты оставляем по умолчанию
  14. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

Здесь следует отметить, что если Ваш ящик pupkin@mailserver.ru используется для сбора почты с других адресов, то в фильтре № 11 в сигнальных строках (п. 8) нужно перечислить все адреса, с которых осуществляется пересылка на Ваш ящик.

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

Фильтр № 12.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Выборочное скачивание]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “Нет полей в заголовке RFC-822
  7. Определять по
    • Заголовкам
  8. Сигнальные строки
    Date:
    From:
    To:
    Subject:
  9. Правило
    [√] Активно
  10. Вкладка [Дополнительно]
  11. Действие
    • Удалить
  12. Метод определения
    • Хотя бы одна строка не должна быть найдена
  13. Остальные пункты оставляем по умолчанию
  14. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

Более жёстко этот фильтр будет работать и, соответственно, больше спама убьёт на сервере, если в сигнальные строки добавить поля "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, нужно изучить заголовки приходящих к Вам писем. В Бате увидеть заголовок письма можно, нажав меню [Вид / Показать заголовки (RFC-822)]. И руководствоваться надо принципами “Не навреди”, “Семь раз отмерь и один раз отрежь”. Но лучше перестраховаться и согласиться на некоторое увеличение входящего трафика, чем потерять хотя бы одно полезное письмо.

Ещё один фильтр, названный мной “Паранойя”, помогает “зарубить” много спама на сервере благодаря тому, что спамеры в заголовке письма в строке получателя пишут:

To: pupkin

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

To: Вася Пупкин

Описать строку вида “To: pupkin ” можно с помощью регулярных выражений. Такой строке соответствует следующее регулярное выражение:

To:s[Pp]upkins

В результате фильтр “Паранойя” будет выглядеть таким образом:

Фильтр № 13.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Выборочное скачивание]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “Паранойя
  7. Определять по
    • Заголовкам
  8. Сигнальные строки
    To:s[Pp]upkins
    To:sPUPKINs
  9. Правило
    [√] Активно
  10. Вкладка [Дополнительно]
  11. Действие
    • Удалить
  12. Метод определения
    • Любая строка как регулярное выражение
  13. Остальные пункты оставляем по умолчанию
  14. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

И, наконец, последним идёт фильтр, который рубит на сервере письма “прорвавшихся” спамеров. Он “берёт” сигнальные строки из текстового файла "spam.txt". Это и есть неоднократно упоминавшийся в этой статье стоп-лист. Откуда же берутся email-адреса в файле "spam.txt"? Их туда добавляет:

Фильтр № 14.

  1. Выделяем ящик pupkin@mailserver.ru
  2. Меню [Ящик / Настройка сортировщика писем]
  3. Выделяем правило сортировки [Выборочное скачивание]
  4. Кнопка [Создать]
  5. Вкладка [Правила]
  6. Название фильтра “Стоп-лист
  7. Определять по
    • Отправителю
  8. Правило
    [√] Активно
  9. Вкладка [Дополнительно]
  10. Действие
    • Удалить
  11. Метод определения
    • Любая строка найдена
  12. [√] Прочитать сигнальные строки из файла
    C:spam.txt
  13. Остальные пункты оставляем по умолчанию
  14. Кнопка [Закрыть] – закрывает сортировщик и сохраняет введённый фильтр

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

Мягкая система фильтров.

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

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

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

Для служебного пользования кастрируем приведённую схему:

Всё, теперь никаких подтверждений и практически вся работа по отсечению спама ложится на правило "Выборочное скачивание". По-прежнему удаляем спам-сообщения комбинацией клавиш Ctrl+Ё. Теперь все спамерские email-адреса, в том числе и несущественные.


Ссылка: http://www.oszone.net/1698/