Использование PopFile antispam для фильтрации почты на сервере Eserv/3
PopFile XMLRPC
В состав Eserv/3 входит plugin для подключения к XMLRPC API популярного байесового фильтра PopFile. Сам PopFile нужно устанавливать отдельно (см. PopFile, EservPopfileRC7). Нужно устанавливать именно нашу сборку PopFile, т.к. в стандартный комплект PopFile, доступный на сайте разработчика, не включены необходимые для работы XMLRPC библиотеки. В стандартном режиме PopFile работает как Pop3proxy, а для проверки почты, приходящей на Eserv/3 по SMTP, а также для обучения фильтра / переклассификации почты через IMAP и HTTP, нужно использовать XMLRPC-интерфейс.Принцип работы acSMTP с PopFile при получении почты по SMTP (MX)
Классификация почты с помощью PopFile производится на стадии, когда все предварительные проверки (антирелей, RBL, черные списки, антивирус и т.д.) уже пройдены, письмо полностью принято в файл в spool, определен ящик-получатель, и осталось решить, в какую из папок пользователя положить письмо. В настройке по умолчанию предполагается, что в PopFile заведена категория 'spam', категория 'clear', и одна или более других категорий (в его веб-интерфейсе это называется 'bucket' или 'корзина'). Eserv acSMTP обращается к PopFile по XMLRPC, передает ему имя полученного файла с сообщением, PopFile статистически классифицирует его в соответствии с текущим состоянием словарей, и возвращает имя категории.Почта, классифицированная как спам, не попадает в INBOX пользователя (доступный по IMAP и POP3), а попадает в IMAP-подкаталог "spam" этого пользователя (по умолчанию доступный только по IMAP, но не по POP3), и копия в общий каталог на случай переклассификации отправителем. Отправителю спама во время почтовой сессии в ответ на команду DATA дается код ошибки 5хх и URL для "проталкивания письма" (с автоматической подстройкой словарей POPfile). Все стандартные MTA возвращают такие письма отправителям и приводят в возврате текст из сообщения об ошибке. Таким образом отправитель будет знать, что его письмо попало в spam, и будет знать как его "обелить". Это исключает негативный эффект от возможных ложных срабатываний (false positives), которые и так составляют менее 0.01% (см. AntiSpamNews). Если отправитель посещает приведенный URL, то сообщение автоматически копируется в папку reclassify (для контроля админом), а отправителю дается возможность нажатием одной кнопки обучить POPfile впредь относиться к таким письмам терпимее (слова добавляются в словарь 'clear' классификатора). Для ручной переклассификации клиентом-получателем (например, false negatives — просочившийся спам — переклассифицировать как спам) нужно заходить не на веб-интерфейс POPfile, как в стандартной версии PopFile Pop3proxy, а на IMAP. Достаточно просто в IMAP-клиенте переложить сообщение в папку spam или not_spam (любого каталога — можно создать эти папки, где вам удобно), и IMAP-сервер инициирует соответствующую процедуру на POPfile).
При перекладывании сообщения в папку not_spam, это письмо заново отправляется получателю и попадает в его INBOX.
Переклассификация отправителем по HTTP
Это очень важная возможность спам-фильтра в Eserv, показавшая себя за почти два года с наилучшей стороны. Отправитель, который пытался отправить письмо, классифицированное PopFile как спам, получит от своего MTA уведомление о недоставке письма. Все MTA при этом указывают текст ошибки, выданной принимающей стороной. Eserv там пишет "ваше сообщение классифицировано как СПАМ, нажмите на этот URL" ("ваш-сайт/MailClassify/..."). По указанному URL на вашем сервере работает acWEB из комплекта Eserv (если на сервере нужен другой веб-сервер на 80м порту, то acWEB можно переключить на другой, либо запускать CGI-скрипт переклассификации из вашего веб-сервера). Когда отправитель нажимает на указанный URL в возвращенном письме, он попадает на страницу с объяснением причин такой классификации, с "раскраской" его письма и с предложением нажать кнопку для переклассификации. Даже если он не нажмет на эту кнопку — письмо попадает в вашу IMAP-папку reclassify, откуда вы сможете переклассифицировать письмо сами.Такая организация работы спам-фильтра позволяет значительно снизить потенциальный ущерб от ложных срабатываний фильтра (в отличие от общепринятого "отмалчивания" принимающего фильтра, или сообщения "напишите администратору сервера"). В результате практически не приходится вручную просматривать папки spam.
Первичная настройка и проверка PopFile
Режим работы с использованием PopFile ключается опцией SMTP[UsePopFile] в Eserv3.ini или в веб-интерфейсе Eserv. После этого нужно перезапустить acSMTP для загрузки и компиляции plugin'а PopFile.Для проверки работы фильтра:
- проверить, запущен ли процесс wperl.exe
- включить PopFileDebug=1 и смотреть XMLRPC трассировку в acSMTP.log и ответы Eserv на команду DATA (если спам, то это будет видно по вставляемым в эти ответы ссылкам на переклассификацию)
- создании начальных словарей spam/clear/другие_классы (через веб-интерфейс PopFile на порту 8080 или загрузкой наших примеров словарей). Это описано в собственной документации PopFile.
- начальном обучении словарей PopFile (импортом вашей старой классифицированной почты из почтового клиента через веб-интерфейс PopFile на порту 8080 или загрузкой наших примеров словарей). Это описано в собственной документации PopFile.
- дообучение по ходу работы — перемещение неверно классифицированной почты в каталоги spam или not_spam при работе в IMAP. Папку 'not_spam' можно создать в любом месте иерархии папок IMAP-клиентом. При перемещении письма из папки spam (или другой) в папку 'not_spam' на сервере запускается процедура переклассификации этого письма — добавление слов в словарь-"букет" 'clear'. При перемещении в словарь 'spam' слова добавляются в словарь 'spam'. На основании этих частотных словарей и работает классификация PopFile (см. StatisticalSpamFiltering). И качество его работы всецело зависит от аккуратности действий того, кто выполняет эти операции переклассификации-дообучения фильтра. У самого PopFile никаких заранее заданных критериев спама/не-спама нет. Если ваши собственные критерии оценки спам/не-спам остаются неизменными, и вы соответственно поправляете неверные срабатывания PopFile, то в скором времени он станет не менее аккуратным в своих оценках. На практике достижима аккуратность 99.99% (см. AntiSpamNews). Поскольку добросовестность классификации является критическим фактором при применении PopFile — некоторые администраторы берут роль переклассификатора полностью на себя (по умолчанию это могут делать и пользователи через IMAP). Для этого администратор может настроить себе доступ в папку reclassify или ко всей иерархии папок IMAP. Спец-каталоги для административных учетных записей IMAP настраиваются здесь: http://localhost:3140/main/CONF/lists/imap/SpecialFolders.txt. Для чтения reclassify можно завести особый IMAP-account, либо использовать заведенный по умолчанию popfile_admin.
- Обратите внимание, что при работе с PopFile через Eserv в статистике и "истории" самого PopFile почта Eserv не учитывается. В веб-интерфейсе PopFile можно только посмотреть статистику по словам в его базе, но не по обработанным письмам. А работа Eserv (классификация, переклассификация через PopFile) отражается в журналах Eserv.
Далее обрабатываются только ложные срабатывания и "ложные несрабатывания". Причем ложные срабатывания обрабатывает сам отправитель через веб, как описано выше. Если пользователи не используют IMAP, то переклассификацию "ложных несрабатываний" придётся делать админу, входя в корень иерархии всех IMAP-каталогов (supervisor@) или прося пользователей пересылать ему спам, попавший в их ящики.
Корзина 'clear' в PopFile — это "не спам" — в эту корзину добавляются слова из писем, помещаемых в папку not_spam по IMAP. Заранее создавать подкаталог spam не нужно, он будет создан автоматически при поступлении спама пользователю. Если требуется переклассификация (переобучение фильтра) нужно самому создать IMAP-папку not_spam (где угодно). При помещении в not_spam письмо после переклассификации отправляется исходному получателю.
Все письма, которые при классификации опознаны как НЕ спам (любая другая 'корзина', например 'clear'), попадают напрямую в INBOX пользователя. INBOX доступен как по IMAP, так и по POP3.
Переклассификация без IMAP
Использование почтового робота для переобучения antispam фильтра сервера Eserv/3: см. MailClassifyRobotОтличия от pop3proxy-режима PopFile
При взаимодействии с почтовым сервером по XMLRPC PopFile не заносит классифицируемую почту в папку history и не изменяет статистику. Поэтому в собственном веб-интерфейсе PopFile переклассификация будет недоступна. Для контроля процесса классификации и переклассификации можно использовать лог PopFile (в его каталоге), а также отладочные XMLRPC записи в логе DATA\log\smtp\*popfile_debug.txt.Дополнения к описанию
http://forum.etype.net/viewtopic.php?p=16838#16838 — дискуссия о PopFile+Eserv на нашем форуме.http://forum.etype.net/viewtopic.php?t=2154 — работа PopFile сервисом, контроль PopFile