KLIRIK.NAROD.RU > ГЛАВНАЯ ДОБАВИТЬ В ИЗБРАННОЕ | ПОМОЩЬ
 [ Главная ] [ Лютеранство ] [ Полезности ] [ Гуделки ] [ Ссылки ] [ Форум ] [ Гостевая ] [ Автора! ]  
 

Антиспам BayesIt!

Последнее обновление:

Zakladki.ru

Добавить сайт:

Ваш архив:

Ваш персональный архив на Закладках.ru

Другие места

Карта сайта >

Оставить отзыв >

Обсудить >

Письмо автору >

 

Антиспамерский фильтр BayesIt!

English version here >>>

ВНИМАНИЕ! Это устаревший документ, актуальный лишь для версий плагина до 0.4gm включительно. Ввиду включения плагина BayesIt в дистрибутив последних версий The Bat!, информационная страница об установке и настройке плагина версий 0.5.x и старше теперь размещается на сайте RitLabs (http://www.ritlabs.com/ru/solutions/BayesIt.php)

BayesIt — антиспамерский фильтр для почтовой программы The Bat!, реализующий технологию статистической фильтрации писем. Подробнее об этой технологии можно прочитать в статье "Фильтрация спама по Байесу".

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

В The Bat! 1.63 Beta 7 появилась возможность подключать к нему внешние антиспамерские фильтры. Поначалу эти возможности были, увы, весьма ограничены. Однако с выходом The Bat! 2.00 эти возможности были расширены, что позволило прямо в The Bat! выполнять через фильтры операции, которые ранее приходилось выносить в отдельное приложение.

BayesIt! является одним из таких фильтров, позволяющий отфильтровывать нежелательную корреспонденцию. Я умышленно не называю её спамом, поскольку понятие "нежелательная" у разных людей разное.

Технические ограничения антиспам-плагинов The Bat!

BayesIt работает в интеграции с The Bat! по внутреннему интерфейсу, и ничего не знает о почтовых протоколах и тонкостях доставки почты. Он лишь получает от The Bat! письмо, и возвращает ему оценку "нежелательности" в шкале от 0 до 100. О том, откуда взялось это письмо (было получено через POP3, через IMAP по протоколу TLS, или же просто перемещается из папки в папку с использованием "локальной" доставки) фильтр не знает. Это целиком забота The Bat! В этом преимущество данного метода работы — всё, что приходит в почтовый ящик — может быть отфильтровано независимо от способа доставки. С другой стороны, единственная задача фильтра — вернуть число-ответ. Ничего более фильтр сообщить не может. Например, фильтр не может никак изменять переданное ему письмо — т.е. добавить в него что-нибудь вроде фразы "***SPAM***", увы, не удастся (а хотелось бы!). Это первое ограничение фильтра.

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

На основании полученной от фильтра оценки The Bat! в текущей версии может либо переместить письмо в папку "Junk folder" ("Макулатура"), либо просто удалить его. В первом случае есть некоторые неудобства с организацией самой папки Junk Mail . Эта папка является встроенной папкой The Bat!, и она автоматически создаётся при необходимости поместить в неё письмо (точно так же, как папка "Карантин" появляется лишь тогда, когда антивирусный плагин нашёл вирус во входящем письме). Настройка свойств для этой папки весьма ограничена — можно задавать лишь её местоположение и срок хранения писем. Основное неудобство — нежелательная почта при перемещении в эту папку всё же остаётся непрочитанной. К тому же перемещение каждого из писем сопровождается характерным звуком (что, правда, можно отключить через настройки в самом The Bat!). Фактически, письма в папке Junk Mail можно обработать только вручную. Никакие встроенные средства фильтрования с ней не работают (а иногда хотелось бы, например, чтобы письма по крайней мере помечались как прочитанные при помещении в эту папку).

Все три ограничения связаны непосредственно с особенностями работы The Bat! с антиспамерскими плагинами.

Установка плагина

Плагин предназначен для работы с The Bat! версии 2.00 и старше. Для работы с Beta-версиями серии 1.63 можно использовать предыдущую версию плагина.

Плагин постоянно обновляется: исправляются найденные ошибки, добавляются новые возможности, доделываются нереализованные ранее детали. Ссылку на последнюю версию, а также краткое описание изменений можно найти внизу этой страницы.

После скачивания файла дистрибутива запустите его. Вам будет предложено выбрать путь для установки BayesIt (по умолчанию — Program Files\BayesIt) и место для хранения оценочных баз программы (для Win NT/2K/XP — %APPDATA%\BayesIt, для Win 9x/ME — там же, где сама программа).

(Другой, "маленький" вариант дистрибутива — это обычный zip-архив. Если вы пользуетесь этим вариантом, то после распаковки архива вам нужно запустить файл install.bat)

Затем запускаем The Bat!, идём в меню "Свойства" — "Настройки". Выбираем там вкладку "Anti-Spam" и нажимаем кнопку "Add" ("Добавить").

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

Начальное обучение заключается в том, что фильтру передаются почтовые папки и указывается их содержимое. Фильтр обрабатывает полученные данные и строит статистическую базу для оценки писем. Единственное требование — среди ваших писем обязательно должны быть и хорошие, и плохие письма, иначе фильтр попросту не сможет работать! (то есть для работы фильтра ему нужно указать некоторое количество писем из ОБЕИХ категорий — "хорошие" и "нежелательные"). Подразумевается, что "хорошие" и "плохие" письма отсортированы по разным папкам (обычно все "хорошие" письма у пользователей рассортированы по различным признакам, а "плохие" просто свалены где-нибудь в одну папку). Обработке подлежит только входящая почта — т.е. обрабатывать такие папки, как "Исходящие" и "Отправленные" не нужно.

Для начала необходимо выбрать папки, предназначенные для обработки. Для этого нужно просто нажать кнопку "Select The Bat! folders..." (Также возможен альтернативный способ начального обучения фильтра).

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

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

Зелёным флажком помечаются папки, содержащие "хорошие" письма. По умолчанию им отмечены практически все папки, кроме Junk Folder.

Красным флажком помечаются папки, содержащие ту почту, которую вы лично считаете нежелательной. По умолчанию папки Junk Folder во всех ящиках (если таковые есть) отмечены этим флажком.

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

Если у вас имеются папки, которые фильтр не смог найти самостоятельно (например, какая-нибудь общая папка, которая размещается где-нибудь в особом месте), и вы желаете их добавить, то вам необходимо добавить эти папки при помощи кнопки "Add folder..." (добавляются файлы с расширением .tbb)

После выбора всех папок и нажатия кнопки "Ready", вы попадёте назад, в окно мастера.

В нижней части окна вы увидите количество отмеченных "хороших" и "плохих" папок, а также сможете, при желании, очистить или отредактировать их списки.

Нажав в нижней части окна кнопку "Далее" переходим ко второму шагу мастера.

Здесь настраивается такой параметр, как "частичное транслитерирование". Эта технология применяется ко всем входящим письмам на национальных языках (например, на русском) и позволяет определять национальные слова, написанные частично английскими буквами (например, буквы "А" и "A" в русском и английском алфавитах похожи, а также есть множество других подобных слов.

Для работы этой технологии фильтру необходимо знать, во-первых, "локальный" пользовательский алфавит (в нашем случае — русский), а также то, какие из английских букв в подобных "смешанных" словах следует заменять на русские. Технология работает следующим образом: если в слове находится хотя бы один символ из "национального" алфавита, то всё слово считается национальным. Затем в слове ищутся английские буквы, похожие на национальные, и заменяются на них. (Обычно такие слова встречаются лишь в "нежелательной" почте, а также письмах из FIDO-конференций. Нормальным пользователям вряд ли придёт в голову заменять русские буквы на аналогичные английские).

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

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

В противном случае нажимаем "No" и заполняем следующие два поля.

В поле Alphabet вводим национальный алфавит, в обоих регистрах (заглавные и прописные). Здесь можно просто впечатать что-нибудь вроде "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя", а можно ввести текущую локаль (для России это "Russian_Russia") и нажать кнопку "Generate". В результате получится примерно следующее:

Первые несколько символов — это буквы кириллического, но нерусского алфавита. Их нужно просто удалить.

Затем переходим к таблице транслитерации (Transliteration Table)

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

Введя алфавит и построив таблицу транслитерации, переходим к последнему шагу мастера.

Единственная кнопка, которая нас интересует — Create. Нажимаем её и идём пить чай. Обратите ВНИМАНИЕ на упоминание кнопки "Options..." в нижней части страницы, в описании конкретных версий фильтра!

По завершении процесса создания статистической базы станет доступна кнопка "Готово". Нажав на неё, выходим из мастера и снова оказываемся в меню The Bat!, где уже установлен наш фильтр.

Альтернативный способ начального обучения фильтра

Начиная с версии 0.4fm в фильтре реализован механизм обучения по кнопкам "Mark as..." в The Bat! Кому-то этот способ может показатся несколько удобнее, чем обучение через мастер выбора папок. В частности, вовсе не требуется изначально сортировать "плохие" и "хорошие" письма по разным папкам. Итак, для альтернативной настройки фильтра необходимо:

1. Выбрать какие-нибудь папки на первом шаге мастера (какие именно — не имеет значения; этот шаг нужен только для того, чтобы стал возможным переход ко второму шагу).

2. Настроить частичное транслитерирование на втором шаге (если нужно).

3. Перейти к третьему шагу и там нажать кнопку "Отмена".

(На самом деле все эти манипуляции нужны лишь для настройки частичного транслитерирования. Если вам эта функция неинтересна, то вы можете нажать "Отмену" сразу на первом шаге).

Затем, непосредственно в The Bat! выделяем письма и через меню "Специальное" вызываем команду "Mark as Junk" (для "плохих" писем) или "Mark as NOT Junk" (для "хороших" писем соответственно). Для удобства можно назначить этим командам любимые "горячие клавиши" через команду меню "Вид" — "Сочетания клавиш...".

Изюминки...

Основными отличиями от других фильтров и методов фильтрации являются следующие черты:

  1. Фильтр не требует никаких онлайн-баз и внешних обновлений. Вся работа может эффективно вестись на основании собственных писем пользовтеля.
  2. Обучение фильтра не подразумевает и не требует чтения спама пользователем.
  3. Возможно полностью автоматическое обучение [Внимание! Работает только в версии 0.3а и начиная с 0.4fm].
  4. Распознаются русскоязычные "фокусы" с подменой некоторых букв латинскими.
  5. Распознаются мусорные HTML-заголовки, которые спамеры используют для разбиения слов на части, так чтобы визуально это было незаметно (например, ка<!--32345-->рова). Более того, сами эти мусорные заголовки воспринимаются как отдельные токены, и, поскольку встречаются они, как правило, только в спаме, их наличие в письме сразу увеличивает его "спамность". По сути, для спамеров срабатывает обратный эффект — вместо маскировки получается лишнее доказательство в пользу их нечистых намерений :)
  6. Разспознаются закодированные HTML-строки, где некоторые символы подменяются "процентными" кодами.
  7. Различаются токены, встретившиеся в заголовках писем от тех, что встречаются в "теле" письма.
  8. Фильтр безразличен к смешению регистра внутри слов.

Единственным недостатком фильтра является необходимость в достаточно большом количестве спама для его тренировки (лично у меня к моменту написания фильтра скопилось около 400 писем, которые позволили обеспечить практически безошибочную работу фильтра, однако есть свидетельства о том, как фильтр правильно срабатывал на базе менее, чем из 10 писем). Этот недостаток достаточно быстро исправляется при большом потоке спама.

Также вы можете воспользоваться уже готовым частотным словарём спама (создан 20 сентября 2003г, содержит токены от 3036 писем) (Скачать — 859кб [ВНИМАНИЕ! Подходит только к версиям начиная с 0.4fm.]). Несколько слов об установке словаря: его необходимо распаковать в рабочую папку программы, перезаписав в рабочей папке файлы spamdict.bye, spamdict.idx и spamdict.lst. Я постарался включить в этот словарь то, что (по моему мнению) бесспорно является спамом — исключив всевозможные спорные письма. Однако даже в этом случае имейте в виду, что поскольку спам — понятие относительное, данный словарь на ваших письмах может давать ошибки. В частности — обратите внимание — если вы будете писать какие-то письма мне лично и я на них отвечу — то мои ответы в случае использования этого словаря, скорее всего, попадут у вас в "спам". Причина исключительно проста: поскольку словарь я создавал на своих собственных письмах, в нём фигурируют некоторые специфические данные (мой e-mail, ник и пр.), в то время как в вашей "хорошей" половине этих данных, скорее всего, нет. Лучший словарь спама — это словарь, созданный самостоятельно.

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

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

Фильтр добавляет к The Bat! три макроса (о том, что такое макросы, можно прочитать в справке The Bat!):

%Bayesbase — вставляет текущее количество "активных" слов в статистической базе ("активными" считаются лишь те слова, которые встретились в совокупности не менее 5 раз).

%Spaminess("слово") — для заданного слова выдаёт его "желательность" по шкале от 0 до 1 (0 означает, что слово не найдено в активной базе; 0.1 — самая низкая оценка, означает совершенно "желательное" слово, 0.99 — самая высокая оценка, её получают "спамерские" слова).

%Bayesitversion — (начиная с 0.4fm) — вставляет название и версию фильтра, например, "BayesIt! 0.4fm".

С использованием этих макросов можно, например, создать такой "быстрый" шаблон:

---- Base report ------
%BAYESBASE
------ Report by mail delivering time -----------
less then 30 min: %SPAMINESS("t hhour")
30 min to hour: %SPAMINESS("t hour")
hour to 6 hours: %SPAMINESS("t 6hour")
6 hours to 1 day: %SPAMINESS("t day")
more than 1 day: %SPAMINESS("t days")
not defined: %SPAMINESS("t wrong")

----- Report by images -----------
%SPAMINESS("F image<2k")
%SPAMINESS("F image2to10k")
%SPAMINESS("F image>10k")

(выдаст небольшой отчёт по базе в качестве примера).

В самом The Bat!, в настройках, помимо пункта "Anti-Spam" есть ещё пункт "Plug-Ins", который позволит получить общую информацю о фильтре:

 

Версии и ссылки (текущая: 0.4gm)

Последняя версия программы — 04gm (beta). Скачать её можно здесь (184кб) или здесь (135кб). (Второй вариант — это zip-архив; после распаковки запустите install.bat)

По сравнению с предыдущей версией (04fm) были внесены следующие изменения:

Исправлена косметическая ошибка при отображении количества писем, обработанных командами "Mark as...".

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

— Добавлено "Выборочное скачивание". Несколько слов об этой функции:

Как было упомянуто в разделе об ограничениях интерфейса плагинов для The Bat!, работа с выборочным скачиванием напрямую для плагинов невозможна. Однако в самом The Bat!, при настройке фильтров выборочного скачивания возможно использование внешнего текстового файла в качестве источника "сигнальных строк". Собственно, этот файл и подготавливается при помощи BayesIt! В него попадают токены из заголовков писем, которые никогда не встречались в "хорошей" почте, и в то же время достаточно много раз встречались в "мусоре". В целях совместимости эти токены экспортируются как регулярные выражения — к ним добавляется дополнительная служебная информация, позволяющая избежать ошибок при работе c The Bat!

Для настройки "выборочного скачивания" с использованием BayesIt необходимо сделать следующее:

1. Установить эту версию фильтра. Если у вас установлена предыдущая версия (0.4fm), то вам нужно скачать zip-версию дистрибутива, перезаписать существующий файл bayesit.tbp новым, а также импортировать в реестр файл add_04gm.reg.

2. Запустить The Bat! Через несколько секунд после запуска в рабочей папке фильтра будет создан файл selective.txt. Это, собственно, и есть источник сигнальных строк для фильтра "Выборочное скачивание".

3. В The Bat! зайти в "Настройку сортировщика писем", и в разделе "Выборочное скачивание" добавить новый фильтр со следующими параметрами:

— Вкладка "Правила" — "Определять по" — "Заголовкам"

— Вкладка "Дополнительно" — "Метод определения" — "Любая строка как регулярное выражение"

— Вкладка "Дополнительно" — установить флажок "Прочитать сигнальные строки из файла", а затем задать путь к файлу selective.txt

Это всё! В будущих версиях планируется реализация "белых" и "чёрных" списков, а также активизация настроек (кнопка "Options" на третьем шаге мастера).


Предыдущая версия программы — 04fm (beta). Скачать её можно здесь (168кб) или здесь (119кб). (Второй вариант — это zip-архив; после распаковки запустите install.bat).

С версии 0.4em добавились следующие возможности:

— макрос %BayesItVersion (см. выше). Одновременно у меня есть просьба к вам: если вы нашли ошибку, или просто возникли частные вопросы по настройке/работе программы, указывайте в ваших письмах номер версии. Данный макрос поможет вам в этом.

— немного подправлен инсталляционный скрипт, устанавливающий архив.

Кроме того, изменению подверглись некоторые внутренние структуры программы, что привело к следующим последствиям:

изменилась структура хранения оценочной информации. Поэтому настоятельно рекомендуется произвести полную очистку базы и её перегенерацию. Если вы настоятельно НЕ хотите этого делать, то можно произвести следующие изменения вручную (привожу с точки зрения командного файла, выполняющегося из папки BayesIt\base):

copy spam\msid.idx spamdict.idx
copy spam\msid.lst spamdict.lst
copy nspam\msid.idx nspamdict.idx
copy nspam\msid.lst nspamdict.lst
deltree spam (cо всеми подкаталогами/файлами)
deltree nspam (также, со всеми подкаталогами/файлами)
mkdir transact

С указанными изменениями программа, в принципе, может "хромать" и дальше.

Отменён лимит в 65536 писем на один "корпус". Теперь вы можете "тренировать" столько писем, сколько хотите.

— Фактически реализовано обучение по кнопкам "Mark as Junk" / "Mark as NOT Junk" (см. меню "Специальное" в The Bat!). Опять же, напомню, что обучать следует только ошибочно оцененные письма (см. подробнее ниже, в описании изменений версии 0.4dm). Поскольку процесс обновления всей базы требует ощутимых затрат времени, он сделан в виде фоновой задачи, автоматически запускаемой спустя полминуты после действия "Mark as..." (а также после получения новой почты). По завершении обновления базы она будет перезагружена, и на странице "информация" отразятся новые данные.

Начальное обучение базы также возможно при помощи кнопок "Mark as...". Просто пометьте выбранные письма, и по ним спустя некоторое время будет создана база.

Возможно "дообучение" базы. Ранее запомненные письма попросту пропускаются, и добавляются лишь отсутствующие. В частности, таким образом можно подключить словарь спама, находящийся на этой странице: установите его, как описанно в соответствующем разделе, а затем просто "дотренируйте" своими письмами (при помощи кнопки "Mark as Junk" или при помощи мастера начального обучения базы).


Предыдущая версия программы — 04em (beta). Скачать её можно здесь (164кб) или здесь (115кб). (Второй вариант — это zip-архив; после распаковки запустите install.bat).

С версии 0.4dm были внесены следующие изменения:

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

В отладочном режиме каждое письмо перед обучением будет копироваться в заданный заранее файл — и в случае возникновения ошибки ("вылет", зависание) этот файл будет содержать проблемное письмо. В такой ситуации я прошу вас:

во-первых, перед начальным обучением выполнить в The Bat! команду меню "Папка" — "Maintenance" — "Check integrity/repair" для всех задействованных папок. Затем повторите попытку настроить фильтр.

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

— Изменена информация, отображаемая при нажатии кнопки "Information" в окне настройки плагинов в The Bat!

— исправлено несколько ошибок, возникающих при обработке некоторых писем.


Предыдущая версия программы — 0.4dm (beta). Скачать её можно здесь. (110кб).

Ограничения этой версии таковы (Обратите внимание!)

— не работает кнопка "Options..." в окне настройки фильтра.

— невозможно создать базу, содержащую более 65537 писем в одной из своих половин.

— В работе фильтра устранён метод Гари Робинсона ввиду невысокой эффективности

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

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

Старые версии

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


Copyright © 2002 by Alexey N. Vinogradov (the owner of klirik.narod.ru)
Используются технологии uCoz