POPfile — 'байесов' автоклассификатор почты
POPfile — открытый проект, разработка которого началась в сентябре 2002 г на SourceForge. Страница программы — http://popfile.sourceforge.net/. Есть русская версия для Windows и plugin для Outlook.
Идея использовать теорему Байеса для классификации почты пришла в голову Paul Graham в августе 2002 г, она оказалась очень продуктивной, и появилось много программ, эксплуатирующих эту идею. POPfile оказалась самой популярной на SourceForge (поэтому и была мною замечена и самой удобной в использовании. В отличие от большинства других, эта программа служит не только для выяснения спам/не-спам, а для классификации почты по темам вообще.
Описание идеи байесовой фильтрации
http://www.paulgraham.com/spam.htmlhttp://radio.weblogs.com/0101454/stories/2002/09/16/spamDetection.html
http://www.compulenta.ru/2002/9/19/34034/
StatisticalSpamFiltering — наша статья
Авторы PopFile дали также хорошее описание теории:
здесь (вместе с портретом математика и здесь
Принцип работы POPfile
Основной режим работы PopFile — в качестве "личного" POP3-proxy: он устанавливается на компьютер пользователя и включается в цепочку обработки почты между почтовым клиентом и POP3-сервером. Почтовый клиент настраивается на получение почты с PopFile, а PopFile при подключении клиента идет на заданный в логине внешний POP3-сервер, получает сообщения, классифицирует их, записывает названия "классов" в заголовки сообщений и отдает клиенту. Почтовый клиент, соответственно, может по заголовкам автоматически сортировать почту по локальным папкам, включая папку spam.Классификация основана на вычисление (по теореме Байеса) вероятности нахождения сообщения в том или ином классе (в PopFile классы называются buckets, в русской версии — "корзины") по вероятностям слов, которые в свою очередь вычисляются PopFile по частотным словарям корзин. Словари заполняются во время "обучения" PopFile, и именно от правильности процесса обучения зависит правильность работы PopFile. Обучать PopFile легко: при установке ему просто "скармливаются" коллекции писем разных классов (предполагается, что у всякий пользователь при чтении почты создает у себя папки с почтой на разные темы, вот эти папки и может принять PopFile). Т.е. он фактически "обучается на примерах". При дальнейшей работе PopFile (уже когда почта принимается через него) вся проходящая через PopFile почта копируется им в свой каталог, доступный через web-интерфейс, аналогичный WebMail. Если сообщение классифицируется неверно, его можно там же переклассифицировать (т.е. указать новую "корзину", куда помещать подобные сообщения впредь), PopFile соответственно модифицирует словари. Таким образом, чем больше почты PopFile читает, тем "умнее" становится. Если, конечно, пользователь не забывает исправлять его ошибки — переклассифицировать неверно классифицированные сообщения. Достаточно быстро точность работы PopFile достигает 98-99%, и тогда папку spam можно контролировать (на предмет ложных срабатываний) лишь эпизодически. В этой экономии времени и состоит "экономический эффект" PopFile, смысл его использования.
PopFile для фильтрации спама на SMTP-сервере
Идея использования PopFile на SMTP-сервере для классификации почты "на лету" очень заманчива по нескольким причинам:- не нужно ставить PopFile на каждый компьютер, обслуживать, обновлять
- использование уже обученного PopFile на общем сервере — избавляет всех пользователей всех доменов этого сервера от необходимости самостоятельной начальной "тренировки" PopFile
- можно спам оставить на сервере в отдельной папке, а не засорять базы почтовых клиентов у пользователей
- можно отправителю спама прямо во время SMTP-сессии в ответ на команду DATA сказать, что его сообщение классифицировано на этом сервере как спам, и получателю доставлено не будет, и тут же привести URL с инструкцией, что делать в случае, если это было ложное срабатывание. MTA отправителя вернет отправителю письмо и описание ошибки , и таким образом отправитель сразу будет знать, что сообщение не достигло адресата, и что по этому поводу предпринять. Это сводит к нулю возможный ущерб от ложных срабатываний (false positives), и фактически возлагает функцию "доучивания" PopFile на отправителей: те меньше 1% отправителей, чьи письма ошибочно классифицированы как спам, должны будут нажать на URL, и на этом их затруднение решается, и PopFile становится умнее.
Скачать POPfile + XMLRPC
Серверные версии PopFile:28.01.2005 EservPopfileRC7
10.02.2004 EservPopfileRC6
04.02.2004 EservPopfileRC5
02.02.2004 EservPopfileRC4
30.01.2004 EservPopfileRC3 — новая сборка PopFile + XMLRPC + SQLite с инсталятором. Без словарей spam+clear (можно использовать от прошлой версии или натренировать Popfile самостоятельно).
12.09.2003 POPfile download — новая самодельная полная сборка PopFile — в отличие от авторской включает XMLRPC, вчерашнее обновление BerkeleyDB (см. ниже) и словари spam+clear (уже в формате BerkeleyDB). Не требует внешнего Perl, 3 Мб. Размер сокращен за счет удаления тестов и лишних языков интерфейса.
11.09.2003 http://popfile.sourceforge.net/popfile-0.20.0-special.zip Обновление PopFile, но не релиз! Что нового:
- Реализована оценка "неуверенности" фильтра (см. ChiSquaredDistribution)
- Используется BerkeleyDB для хранения словарей (старые словари автоматически конвертируются). Переклассификация стала работать на порядок быстрее! Внимание! В ActivePerl и старых версиях PopFile (включая 6Мб билд ниже) BerkeleyDB не установлен по умолчанию, об этом надо отдельно позаботиться. См. BerkeleyDB. Если используется наша сборка PopFile от 12.09.2003 (выше), то качать отдельно BerkeleyDB не нужно — уже есть в комплекте.
- fork в PopFile Pop3proxy теперь опционален (в Windows по умолчанию отключен).
- Включено в нашу версию PopFile от 12.09.2003, качать отдельно не нужно. 14.08.2003 Eserv POPfile plugin — 5 Кб, подключается к acSMTP — если используете Eserv3-SM, то обновите версию, т.к. в PopFile менялся XMLRPC API, пришлось переделать и plugin.14.08.2003 (Старая версия, оставлена на всякий случай) POPfile — около 6Мб, включает все что нужно для XMLRPC, не требует внешнего Perl
Работа в качестве POP3-proxy
А в качестве POP3-proxy (штатный режим PopFile) POPfile можно использовать совместно с любым POP3-сервером, включая любую версию Eserv. См. например эту тему форума, где описывается, как Pop3Recv из Eserv/2 может принимать почту через PopFile.http://notes.rusc.ru/notes/27 — хорошая русская статья по настройке и использованию PopFile (в штатном режиме pop3 прокси).
Outclass — MS Outlook plugin для PopFile
http://www.vargonsoft.com/Outclass/См. также:
StatisticalSpamFiltering, AntiSpamNews, AntiSpam, EservAntiSpam, ForthWiki:PopFile, ForthWiki:AntiSpam