ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] написал bogofilter-howto
@ 2003-11-11 13:51 Mike Lykov
  2003-11-12  3:41 ` Dmitry Derjavin
  2003-11-12  5:31 ` BoBep
  0 siblings, 2 replies; 4+ messages in thread
From: Mike Lykov @ 2003-11-11 13:51 UTC (permalink / raw)
  To: community

Здравствуйте!

Вот, решил написать нечто вроде bogofilter-howto (или bogofilter-faq).
Частично использовал информацию из 
http://bogofilter.sourceforge.net/bogofilter-faq.html
Естественно, что это только первая версия, которая может содержать опечатки и 
ошибки - как грамматические, так и фактические.
Поэтому буду рад увидеть комментарии и предложения по улучшению ;)
Завтра булет вторая часть.

------------------------------
BOGOFILTER HOWTO
(c) 11 Nov 2003, Mike Lykov, ver 0.1
 
Задумавшись о проблеме фильтрации спама на почтовом сервере компании, я выбрал 
для этой цели bogofilter (сначала идущую в комплекте с Alt Linux Master 2.2 
версию 0.13.6, обновив ее потом до 0.15.7). Поскольку на мои вопросы 
относительно них ответить никто не смог, а русскоязычной информации о нем в 
интернете мало, я решил написать самостоятельно данный bogofilter-howto. 
 
1. Что такое bogofilter? 
Bogofilter  - это быстрый, написанный на С фильтр почтовых сообщений по 
принципу Байеса (статистическая фильтрация по содержанию). Используется для 
классификации писем как спам или не-спам. 
Использовать принцип Байеса для фильтрации спама  предложил Пол Грэхэм в 
статье "A plan for spam" в августе 2002 г( 
http://www.paulgraham.com/spam.html). Bogofilter использует метод  Робинсона 
с модификацией Фишера, который является развитием метода Грэхэма. 
Впоследствии Грэхэм улучшил свой метод с учетом различных предложений и описал 
его в статье "Better Bayesian filtering в январе 2003 года 
(http://www.paulgraham.com/better.html) 
Проект bogofilter изначально был начат 19 августа 2002 года Эриком Реймондом, 
и впоследствии к разработке присоединились другие люди (open source проект). 
Домашняя страница проекта - http://bogofilter.sourceforge.net 
 
2. Что делает bogofilter ? 
Bogofilter  - это разновидность bogo-метра, он измеряет для каждого 
обьекта(сообщения) меру его bogosity. 
Bogosity - это "мусорность", показатель степени bogus("ненужности", 
"некачественности") измеряемого обьекта. 
 
3. Как мне начать использовать bogofilter? 
Для этого надо либо получить исходные коды с домашней страницы проекта и 
собрать их, либо установить готовый вариант из rpm (лучше всего 
воспользоваться apt-get). 
Bogofilter начнет работать нормально для вас в том случае, если вы обучите его 
на заранее заготовленных примерах писем, в которых вы точно уверены, спам это 
или нет. 
При этом он создает т.н. wordlists (базы со словами) в формате Berkeley DB, в 
которые он помещает частоту встреченных в письмах tokens (слов или других 
элементов письма). 
В конфигурационном файле можно задать, создавать один файл (wordlist.db) или 
два (spamlist.db & goodlist.db).   
Сам конфигурационный файл может располагаться в /etc/bogofilter.cf для 
общестсиемной работы, или в ~/.bogofilter.cf для работы для конкретного 
пользователя. Сами базы так же создаются или в ~/.bogofilter/ или в 
директории, указанной в основном конфигурационном файле  
(bogofilter_dir=/var/bogofilter , например). 
 
Для обучения необходимо иметь два файла в виде mbox с коллекцией писем, 
например spam.mbx & non-spam.mbx (некоторые называют это ham ;) 
В каждом файле должно быть как можно больше писем(лучше, если в каждом около 
1000 штук), причем в базе spam, например, не должно быть хороших писем, и 
наоборот. Ошибки на данном этапе могут отразиться на дальнейшей работе - 
некорректной классификации и даже потере писем (в случае, если вы настроите 
уничтожать спам немедленно). 
 
Файлы с письмами в таком количестве можно получить, применив какие-либо другие 
техники отсева спама, не основанные на статистической фильтрации содержания, 
или, для начала, вручную разложив свою входящую почту на две категории. 
 
Если такие файлы в формате mbox для обучения у вас есть, вы можете создать 
базы с помощью 
 
bogofilter -n < non-spam.mbx 
bogofilter -s < spam.mbx 
 
Это в самом простом случае. 
Если вы использ версию 0.15.7 и создаете базы впервые, полезно указать ключи 
-Pi -Ph, для того, чтобы в базу записывались слова в нижнем регистре (нет 
различия между spam, Spam & sPAm, правда это только к английскому тексту 
относится), и для того, чтобы служебная информация помечалась специальным 
образом (с версии 0.15.4 в базу записываются специальные префиксы head: from: 
subj: и другие, что повышает точность классификации). 
 
4. Переход со старых версий. 
Если же вы используете версию до 0.15.4, то просто обновить версию на более 
новую  - это не все, что нужно сделать. Поскольку формат баз изменился 
достаточно сильно (появился разбор mime-типов вложений и игнорирование 
картинок и исполняемых файлов, и появились префиксы, показывающие тип 
элемента базы), то со старыми базами очень вероятно подрастание количества 
ошибок (false positives, т.е. хорошие письма, ошибочно принятые за спам).  
Чтобы этого избежать, надо сгенерировать базы заново с помощью старой версии и 
накопленных архивов спама (предварительно надо вычистить все false positives 
из этих архивов). 
При этом, как указано выше, тоже полезно использовать опции -Ph -Pi. 
Правда, для тех, кто не может/ не хочет пересоздавать базы с нуля, ввели опцию 
-H, используемую при классификации. Ее нужно использовать вместе с функцией 
самообучения (-u), чтобы bogofilter постепенно сам создал достаточное 
количество префиксов head: и других. 
 
У меня переход с версии 0.13.6 (где я создал базы с помошью bogofilter -s без 
префиксов) на версию 0.15.7 (с которой я пересоздал базы  - bogofilter -s -Pi 
-Ph), увеличил процент отлавливаемого спама с 15-20% (в лучшем случае около 
30%) до стабильных 30-45% от всего потока писем (к сожалению, количество 
false negatives посчитать сложно, так как это могут сделать только 
пользователи своими глазами ;) 
 
-- 
Mike
registered linux user #315334
jabber id: combr@jabber.ru


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Comm] написал bogofilter-howto
  2003-11-11 13:51 [Comm] написал bogofilter-howto Mike Lykov
@ 2003-11-12  3:41 ` Dmitry Derjavin
  2003-11-12  5:31 ` BoBep
  1 sibling, 0 replies; 4+ messages in thread
From: Dmitry Derjavin @ 2003-11-12  3:41 UTC (permalink / raw)
  To: community

Mike Lykov <combr@vesna.ru> writes:

> Вот, решил написать нечто вроде bogofilter-howto (или bogofilter-faq).

Спасибо! Очень полезная вещь.

> Естественно, что это только первая версия, которая может содержать опечатки и 
> ошибки - как грамматические, так и фактические.
> Поэтому буду рад увидеть комментарии и предложения по улучшению ;)

После беглого прочтения:

> Для обучения необходимо иметь два файла в виде mbox с коллекцией писем, 
> например spam.mbx & non-spam.mbx (некоторые называют это ham ;) 

1. На самом ведь деле -- не необходимо. Можно же использовать и
   отдельные файлы с сообщениями. Maildir, например. Возможно, стоит
   добавить что-то вроде:

$ for i in `ls -1`; do cat $i | bogofilter -n; done

> Если вы использ версию 0.15.7 и создаете базы впервые, полезно указать ключи 

2. Опечатка -- "используете".

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

4. Видимо, стоит чётко определиться с переводом терминов, чтобы не
   было путаницы.. "Хорошие письма, ошибочно принятые за спам" --
   почти что "яблони в цвету". Класс! ;) Навевает сентиментальные
   настроения. Возможно, действительно, "не-спам"?

5. Ещё раз спасибо.

-- 
~dd


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Comm] написал bogofilter-howto
  2003-11-11 13:51 [Comm] написал bogofilter-howto Mike Lykov
  2003-11-12  3:41 ` Dmitry Derjavin
@ 2003-11-12  5:31 ` BoBep
  2003-11-12  6:28   ` Mike Lykov
  1 sibling, 1 reply; 4+ messages in thread
From: BoBep @ 2003-11-12  5:31 UTC (permalink / raw)
  To: community

On Tue, 11 Nov 2003 17:51:46 +0400
Mike Lykov <combr@vesna.ru> wrote:

> Вот, решил написать нечто вроде bogofilter-howto (или bogofilter-faq).

Спасибо, весьма полезная информация.
А можно ли настроить постфикс так, чтобы письма обрабатывались последовательно несколькими фильтрами? (drweb -> bogofilter)
И если да, то как?

-- 

WBR, Glyadelov Vladimir



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Comm] написал bogofilter-howto
  2003-11-12  5:31 ` BoBep
@ 2003-11-12  6:28   ` Mike Lykov
  0 siblings, 0 replies; 4+ messages in thread
From: Mike Lykov @ 2003-11-12  6:28 UTC (permalink / raw)
  To: community

В сообщении от Среда 12 Ноябрь 2003 09:31 BoBep написал:

> Спасибо, весьма полезная информация.
> А можно ли настроить постфикс так, чтобы письма обрабатывались
> последовательно несколькими фильтрами? (drweb -> bogofilter) И если да, то
> как?

можно. это будет во второй части сериала ;)
(если успею написать, то  сегодня ;)

-- 
Mike
registered linux user #315334
jabber id: combr@jabber.ru


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2003-11-12  6:28 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-11-11 13:51 [Comm] написал bogofilter-howto Mike Lykov
2003-11-12  3:41 ` Dmitry Derjavin
2003-11-12  5:31 ` BoBep
2003-11-12  6:28   ` Mike Lykov

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git