xfce4-terminal и rm -Rf

Подумал я написать об борьбе со спамом подручными способами. У меня это организованно с помощью spamassassin’а, а значит и писать нужно о нём. Решил проверить, как оно сейчас обстоит с информацией по данной тематике, погуглил десять минут и пришёл к выводу, что писать точно надо…

Что такое SpamAssassin?

Это парадоксально, но прямого ответа на данный вопрос я так и не нашёл, пока гуглил. Ну чтож, отвечу на него сам: SpamAssassin — система комплексной оценки e-mail сообщения.

Методы оценки сообщения в SpamAssassin

Начнём с того, что есть два типа фильтров: статичные правила и обучаемый байесовый (bayes) фильтр. За прохождение первых и второго сообщению назначают некие «балы». Вес каждого фильтра задаётся в формате строки из четырёх чисел. Каждое число определяет определённое состояние spamassassin’а.

  • Первое определяет «стоимость» в случае, если spamassassin не будет проводить ни статичные тесты, ни байесовый.
  • Второе определяет «стоимость» для случая, когда не проводится байес, но проводится статичное тестирование.
  • Третье — обратное, когда есть байес, но нет статичных тестов.
  • Четвёртое же определяет стоимость для случая, когда проводится тестирование и для статичных тестов, и для байеса.

Ясен-красен, что статичным тестам надо давать больше веса на случай, если отключен байес. Кстати, цена фильтров может быть перераспределена. Например, файл /etc/spamassassin/custom-scores.cf, снятый с боевого сервера:

score SPF_FAIL 0 7.5 0 7.0
score SPF_SOFTFAIL 0 4.5 0 4.0
score SPF_NEUTRAL 0 3.0 0 2.5
score SPF_PASS 0

score SPF_HELO_FAIL 0 0.1 0 0.1
score SPF_HELO_SOFTFAIL 0 0.9 0 0.8
score SPF_HELO_NEUTRAL 0 0.1 0 0.2
score SPF_HELO_PASS 0

score RP_MATCHES_RCVD 0

score URIBL_BLACK 0 2.5 0 2.3
score URIBL_WS_SURBL 0 2.5 0 2.3
score URIBL_ABUSE_SURBL 0 2.5 0 2.3
score RCVD_IN_BRBL_LASTEXT 0 2.5 0 2.3
score RCVD_IN_SBL 0 3.5 0 2.4
score RCVD_IN_XBL 0 1.1 0 0.7
score RCVD_IN_PBL 0 4.1 0 3.7
score RCVD_IN_BL_SPAMCOP_NET 0 1.7 0 2.0

score BAYES_00 0
score BAYES_05 0 0 1.0 0.5
score BAYES_20 0 0 2.0 1.5
score BAYES_40 0 0 2.4 2.0
score BAYES_50 0 0 3.0 2.7
score BAYES_60 0 0 3.6 3.3
score BAYES_80 0 0 4.0 3.5
score BAYES_95 0 0 4.5 4.0
score BAYES_99 0 0 5.0 4.5

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

Статичные (сетевые) тесты

Сетевыми они называются в документации на spamassassin (net tests). Но как-то оно не так. Просто данные тип теста касается проверки реальных сетевых особенностей письма, например проверив SPF-подпись (посмотрите на «вес» правила SPF_FAIL) или проверив, нет ли отправителя в чёрных списках (RCVD_IN_BL_SPAMCOP_NET), мы проверяем нечто, сверяясь с информацией из сети. Но под такой же тип теста проходит и оценка содержимого по формальным признакам, например тест HTML_MESSAGE касается типа содержимого, и не более того. Так что будем именовать их статичными, так как их критерии никак не изменяются от письма к письму. Они статичны.

Я думаю, что вы уже поняли всё насчёт данного типа тестов. Тут у нас и просмотр всяких сетевых листов на предмет соответствия адреса почты отправителя, сервера или ссылок, которые встречаются в письме. Ну или проверка содержимого по поверхностным признакам, таким как тип содержимого (plain или html), чистоте заполнения html, частоте вставки изображений, размеру изображений. И ещё много чего…

Когда то, не так давно впрочем, считалось нормальным проверять содержимое по вхождению ключевых слов. Подобные тесты представляли из себя некие наборы регулярных выражений, на соответствие которым проверялось письмо. Но это глупо. Ведь спам меняется постоянно. Пусть и не кардинально, но все изменения не отследить и не внести руками. А ведь об устаревшие и кривые правила могут порезаться в спам и важные письма. Короче, нормальные люди на это забили и внедрили байесовый фильтр.

Байесовый (bayes) фильтр

Фактически, это такая же проверка по вхождениям регулярными выражениями по тексту, как и в выше описанном случае. Но вхождение в байесовом фильтре оценивается по-процентно (например BAYES_05 — 5% зашло, BAYES_80 — 80% зашло), а шаблоны мы описываем не руками. Их нам создаёт программа обучения. Если отдать ей письмо для обучения как спам, то она его разбивает на шаблоны, добавляет уникальные шаблоны в базу. Если мы отдаём письмо как не спам, то программа вычтет шаблоны, которые получит из письма, из базы.

Обучение можно привязать к действиям пользователя. Например для Dovecot IMAP есть плагин dovecot-antispam. С его помощью можно отдавать на обучение письма, которые пользователь перемещает в определённые директории. То есть пользователь переместил письмо в папку «Спам» из «Входящих», и на сервере его dovecot отдал sa-learn’у (та самая программа для обучения) как спам. Если из «Спама» во «Входящие», то отдаст сообщение как не спам. Я потом напишу об этом подробней, включая рецепты.

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

Ну а пока всё 😉

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

91 ÷ 13 =