Начиная с версии 3.20 (марта 2005 г)
Eserv включает в комплект оценочную серверную версию байесового классификатора почты
AGAVA SpamProtexx.
http://www.spamprotexx.ru/
Использование SpamProtexx antispam для фильтрации почты на сервере Eserv/3
В
Eserv включена не та версия
SpamProtexx, что доступна для скачивания на сайте spamprotexx.ru (перехватывающая почту через TDI), а серверная версия, разработанная специально для
Eserv: в ней нет сетевого уровня, т.к. сетевое взаимодействие осуществляет
Eserv, и модифицирован классификатор — с учетом многопользовательского использования. Соответственно эти версии
SpamProtexx имеют разные API, и
Eserv не будет работать с однопользовательской версией
SpamProtexx. Нужно использовать ту, что включена в комплект.
Принцип работы acSMTP со SpamProtexx при получении почты по SMTP (MX)
Классификация почты с помощью
SpamProtexx производится на стадии, когда все предварительные проверки (антирелей, RBL, черные списки, антивирус и т.д.) уже пройдены, письмо полностью принято в файл в spool, определен ящик-получатель, и осталось решить, в какую из папок пользователя положить письмо. Если
SpamProtexx plugin был подключен (опция UseSpamprotexx=1), то
Eserv acSMTP после получения письма обращается к
SpamProtexx через его API, передает ему имя полученного файла с сообщением,
SpamProtexx статистически классифицирует его в соответствии с текущим состоянием словарей, и возвращает имя категории — spam, clear или unclassified. Unclassified означает "неуверенность" фильтра, в какую категорию отнести письмо — это бывает, если числовое значение вычисленной вероятности далеко от предельных значений спам/не_спам (чаще всего это признак "недоученности" словарей, об обучении см. ниже).
Почта, классифицированная как спам, не попадает в INBOX пользователя (доступный по IMAP и POP3), а попадает в IMAP-подкаталог "spam" этого пользователя (по умолчанию доступный только по IMAP, но не по POP3), и копия в общий каталог на случай переклассификации отправителем. Отправителю спама во время почтовой сессии в ответ на команду DATA дается код ошибки 5хх и URL для "проталкивания письма" (с автоматической подстройкой словарей
SpamProtexx). Все стандартные MTA возвращают такие письма отправителям и приводят в возврате текст из сообщения об ошибке. Таким образом отправитель будет знать, что его письмо попало в spam, и будет знать как его "обелить". Это исключает негативный эффект от возможных ложных срабатываний (false positives), которые и так составляют менее 0.01% (см.
AntiSpamNews). Если отправитель посещает приведенный URL, то сообщение автоматически копируется в папку reclassify (для контроля админом), а отправителю дается возможность нажатием одной кнопки обучить
SpamProtexx впредь относиться к таким письмам терпимее (слова добавляются в словарь 'clear' классификатора). Для ручной переклассификации клиентом-получателем (например, false negatives — просочившийся спам — переклассифицировать как спам) достаточно в IMAP-клиенте переложить сообщение в папку spam или not_spam (любого каталога — можно создать эти папки, где вам удобно), и IMAP-сервер инициирует соответствующую процедуру обучения на
SpamProtexx). Последующие письма будут классифицироваться уже с учетом этих изменений, ничего для этого перезапускать не нужно.
При перекладывании сообщения в папку not_spam, это письмо заново отправляется получателю и попадает в его INBOX.
Письма, классифицированные как 'unclassified' — кандидаты на переклассификацию для дообучения спам-фильтра, поэтому кроме INBOX, они также копируются в специальную административную папку 'ambiguous' ("неоднозначная классификация"), доступную администратору по IMAP.
Переклассификация отправителем по HTTP
Это очень важная возможность спам-фильтра в
Eserv, показавшая себя за почти два года с наилучшей стороны. Отправитель, который пытался отправить письмо, классифицированное
SpamProtexx как спам, получит от своего MTA уведомление о недоставке письма. Все MTA при этом указывают текст ошибки, выданной принимающей стороной.
Eserv там пишет "ваше сообщение классифицировано как СПАМ, нажмите на этот URL" ("ваш-сайт/
MailClassify/..."). По указанному URL на вашем сервере работает
acWEB из комплекта
Eserv (если на сервере нужен другой веб-сервер на 80м порту, то
acWEB можно переключить на другой, либо запускать CGI-скрипт переклассификации из вашего веб-сервера). Когда отправитель нажимает на указанный URL в возвращенном письме, он попадает на страницу с объяснением причин такой классификации и с предложением нажать кнопку для переклассификации. Даже если он не нажмет на эту кнопку — письмо попадает в вашу папку reclassify (доступную администратору по IMAP), откуда вы сможете переклассифицировать письмо сами.
Такая организация работы спам-фильтра позволяет значительно снизить потенциальный ущерб от ложных срабатываний фильтра (в отличие от общепринятого "отмалчивания" принимающего фильтра, или сообщения "напишите администратору сервера"). В результате практически не приходится вручную просматривать папки spam.
Первичная настройка и проверка SpamProtexx
Режим работы с использованием
SpamProtexx ключается опцией
SMTP[UseSpamProtexx] в Eserv3.ini или в веб-интерфейсе
Eserv. После этого нужно перезапустить
acSMTP для загрузки plugin'а
SpamProtexx. Если он не запускается, см. диагностические сообщения в
acSMTP.log — возможно истек срок тестовой эксплуатации
SpamProtexx, или не удается активировать
SpamProtexx, и т.п.
Для проверки работы фильтра:
- отправить письмо на внешний сетевой интерфейс SMTP-сервера Eserv и смотреть результат классификации в журнале и ответы Eserv на команду DATA: если спам, то это будет видно по вставляемым в эти ответы ссылкам на переклассификацию. Пример записи в логе:
2005-09-07 15:01:01;anelko@mail.com;php@eserv.ru;38467;;82.36.175.74;spam;-;spam;0.999755 — в предпоследнем поле указана классификация, присвоенная на основе вычисленной вероятности, а в последнем поле числовое значение вероятности — от 0 до 1 — ближе к нулю не спам, ближе к 1 спам. Если базы еще не "обучены", то скорее всего значение вероятности будет около 0.5, и unclassified.
Управление заключается в:
- начальном обучении словарей SpamProtexx (импортом вашей старой классифицированной почты или загрузкой наших примеров словарей).
- дообучение по ходу работы — перемещение неверно классифицированной почты в каталоги spam или not_spam при работе в IMAP. Папку 'not_spam' можно создать в любом месте иерархии папок IMAP-клиентом. При перемещении письма из папки spam (или другой) в папку 'not_spam' на сервере запускается процедура переклассификации этого письма — изменения статистических словарей фильтра. При перемещении в словарь 'spam' слова добавляются в словарь 'spam'. На основании этих частотных словарей и работает классификация SpamProtexx (см. StatisticalSpamFiltering). И качество его работы всецело зависит от аккуратности действий того, кто выполняет эти операции переклассификации-дообучения фильтра. У самого SpamProtexx никаких заранее заданных критериев спама/не-спама нет. Если ваши собственные критерии оценки спам/не-спам остаются неизменными, и вы соответственно поправляете неверные срабатывания SpamProtexx, то в скором времени он станет не менее аккуратным в своих оценках. На практике достижима аккуратность 99.99% и выше (см. AntiSpamNews). Поскольку добросовестность классификации является критическим фактором при применении SpamProtexx — некоторые администраторы берут роль переклассификатора полностью на себя (по умолчанию это могут делать и пользователи через IMAP). Для этого администратор может настроить себе доступ в папку reclassify или ко всей иерархии папок IMAP. Спец-каталоги для административных учетных записей IMAP настраиваются здесь:
http://localhost:3140/main/CONF/lists/imap/SpecialFolders.txt. Для чтения reclassify можно завести особый IMAP-account, либо использовать заведенный по умолчанию popfile_admin.
- контроль работы фильтра по журналам Eserv или по статистическим отчетам в веб-интерфейсе.
После первичной настройки обрабатываются только ложные срабатывания и "ложные несрабатывания". Причем ложные срабатывания обрабатывает сам отправитель через веб, как описано выше. Если пользователи не используют IMAP, то переклассификацию "ложных несрабатываний" придётся делать админу, входя в корень иерархии всех IMAP-каталогов (учетная запись supervisor@ в SpecialImapFolders.txt), либо в корень спам-архива (учетная запись spam_lover@) или прося пользователей пересылать ему спам, попавший в их ящики.
Заранее создавать подкаталог spam не нужно, он будет создан автоматически при поступлении спама пользователю. Если требуется переклассификация (переобучение фильтра) нужно самому создать IMAP-папку not_spam (где угодно). При помещении в not_spam письмо после переклассификации отправляется исходному получателю.
Все письма, которые при классификации опознаны как НЕ спам, попадают напрямую в INBOX пользователя. INBOX доступен как по IMAP, так и по POP3.
Переклассификация без IMAP
Использование почтового робота для переобучения antispam фильтра сервера
Eserv/3: см.
MailClassifyRobot
AndreyCherezov /07.09.2005 15:34/ Вышла версия 2.1.6 классификатора
SpamProtexx, для обновления нужно заменить два файла
http:///www.eserv.ru/download/files/txtClass.dll
http:///www.eserv.ru/download/files/acSMTP.exe
Дополнения к описанию
Базы (словари) статистического спам-фильтра по умолчанию хранятся в каталоге DATA\spamprotexx. Там два файла: storage.esp и relearn.esp. Второй служит для автобалансировки базы при переобучении и может быть относительно большим (на нашем сервере 14Мб). Для экономии места и повышения скорости работы
SpamProtexx этот файл можно периодически удалять, будущие версии
SpamProtexx будут делать это сами (сообщено разработчиками SP сегодня — 07.09.2005).