SpamProbe - фильтруем спам

Версия для печатиОтправить другуPDF version

Spamprobe логотип

 

В основу почтовых систем устанавливаю, в основном, Exim. С помощью системы фильтров и Greylisting удается отсечь значительную часть СПАМа, однако с каждым днем спамеры все более находчивы, и поток нежелательной корреспонденции постоянно увеличивается. Поэтому решил "прикрутить" антиспам-систему.

Перелопатив информацию, о существующих решениях, нашел такие варианты:

  • SpamAssassin
  • DSPAM
  • SpamProbe

SpamAssassin - самый известный, на мой взгляд. Однако, исходя из того, что SpamAssassin написан на Perl, при большом потоке входящей корреспонденции довольно ощутимо нагружает сервер. К тому же, если письмо с вложенным файлом еще и антивирусом проверяется (например Clamav), то на слабых машинах этот вариант не допустим.

DSPAM - скорость работы DSPAM значительно превосходит скорость работы SpamAssassin. Программа умеет использовать все популярные СУБД для хранения token'ов и работы с ними (включая даже СУБД Oracle), а также может хранить данные в файлах в собственном формате. Следует отметить, что каждому пользователю будет создаваться отдельное хранилище, т.е. обработка спама для каждого пользователя происходит по индивидуальным правилам. Это гораздо лучше с точки зрения точности определения спама, однако более ресурсоемко. Однако, с 2007 года развитие проэкта затормозилось (после приобретения проэкта компанией Sensory Networks), также была информация о вероятности полной остановки развития.

Остановимся все-таки на SpamProbe (хотя DSPAM, наверное, тоже скоро протестирую). SpamProbe написан на C++, небольшой и довольно шустрый в работе. К тому же алгоритм работы программы построен на основе математической теоремы Байеса. А ведь именно этот метод статистической фильтрации является наиболее удачным и используется практически всеми спам-фильтрами (в том числе и DSPAM).

Метод Байеса подразумевает использование статистической, оценочной базы, разделенной на две части, одна из которых содержит черный список слов, а другая – белый. При анализе письма подсчитывается количество совпадений каждого отдельного слова (токена) со списками в базе, и на основании этого вычисляется оценка. Оценка эта колеблется в диапазоне от 0 до 1, где значение 0 означает отсутствие признаков спама, 1 – полную уверенность в том, что это спам.

Начинаем установку. Установка будет выполнена из портов:

# cd /usr/ports/mail/spamprobe/ && make install clean && rehash

После установки необходимо виполнить инициализацию базы данных. Создадим каталог, где будет размещена база данных SpamProbe, дадим команду создания базы данных, сделаем владельцем каталога и файлов пользователя exim групы mail (от имени этого пользователя работает Exim):

# mkdir /var/db/spamprobe

# spamprobe -d /var/db/spamprobe create-db

# chown -R exim:mail /var/db/spamprobe/

Создадим каталог, где будут лежать конфигурационные файлы и скрипты, необходимые для работы SpamProbe:

# mkdir /usr/local/etc/spamprobe

Теперь создадим файл системного фильтра, следующего содержания:

# cat /usr/local/etc/spamprobe/exim.filter
# Exim filter
# Ни в коем случае не удаляйте верхнюю строку
# Путь к лог-файлу
logfile /var/log/spam-filter.log
# Указываем максимальный размер письма, которое будет
# подвержено анализу (512 Kбайт).
add 524288 to n0
# Проверяем письмо только один раз, даже если Exim
# с первого раза