spamassassin является одним из самых популярных решений для борьбы со спамом. По умолчанию для хранения накапливаемых данных используются локальные файлы, однако для этой цели гораздо лучше использовать какой-нибудь SQL-сервер, что даёт огромное количество преимуществ.
Например если почтовый сервер обрабатывает большой поток писем то можно уменьшить нагрузку на него за счёт выноса SQL-сервера на отдельный физический сервер. Если в фирме используется несколько небольших почтовых серверов, то можно поставить общий для всех SQL-сервер. В этом случае качество фильтрации спама заметно вырастет.
Наконец многие почтовые клиенты для локальной фильтрации спама используют spamassassin и имеют кроме всего прочего кнопки «Спам» и «Не спам», позволяющие "обучать" spamassassin. Внутри компании можно подключить spamassassin на рабочих станциях пользователей к SQL-серверу корпоративного почтовика. В таком случае пользователи дополнительно будут обучать spamassassin и качество фильтрации поднимется на очень большую высоту:)
Допустим что у нас есть почтовый сервер подобный этому и мы хотим использовать для хранения данных spamassassin MySQL. В этой статье основной упор будет сделан на Debian/Ubuntu, однако инструкции для других дистрибутивов не должны сильно отличаться.
Для начала устанавливаем MySQL-севрер:
apt-get install mysql-server mysql-client libdbd-mysql-perl
Далее заходим в консоль mysql:
mysql -u root -p
И начинаем выполнять запросы. Создаём базу для хранения данных:
mysql> create database 'spamassassin';
Создаём пользователя spamassassin с паролем spmd4 и возможностью доступа с любого хоста:
mysql> grant usage on *.* to 'spamassassin'@'localhost' identified by 'spmd4'; mysql> grant usage on *.* to 'spamassassin'@'%' identified by 'spmd4';
Даём ему полные права на базу:
mysql> grant all privileges on 'spamassassin'.* to 'spamassassin'@'localhost'; mysql> grant all privileges on 'spamassassin'.* to 'spamassassin'@'%';
Далее переходим в каталог /usr/share/doc/spamassassin/sql и загружаем в базу шаблоны основных таблиц:
mysql -u spamassassin -p spamassassin < userpref_mysql.sql mysql -u spamassassin -p spamassassin < bayes_mysql.sql mysql -u spamassassin -p spamassassin < awl_mysql.sql
Затем создаём файл /etc/spamassassin/sql.cf следующего содержания:
user_scores_dsn DBI:mysql:spamassassin:localhost:3306 user_scores_sql_username spamassassin user_scores_sql_password spmd4 auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList user_awl_dsn DBI:mysql:spamassassin:localhost:3306 user_awl_sql_username spamassassin user_awl_sql_password spmd4 bayes_store_module Mail::SpamAssassin::BayesStore::SQL bayes_sql_dsn DBI:mysql:spamassassin:localhost:3306 bayes_sql_username spamassassin bayes_sql_password spmd4
Добавляем параметр -q к строке OPTIONS в файле /etc/default/spamassassin (эта опция указывает на использование sql). У автора этой статьи строка OPTIONS имеет вид:
OPTIONS="--create-prefs --max-children 5 --helper-home-dir=/var/spool/exim4 -u Debian-exim -x -q"
И, наконец, перезапускаем spamassassin:
/etc/init.d/spamassassin restart
Теперь переходим к рабочим станциям. Допустим что все они работают под Debian/Ubuntu и в качестве почтового клиента используется KMail.
На всех рабочих станциях нужно установить spamassassin и mysql-client командой:
apt-get install spamassassin mysql-client libdbd-mysql-perl
И разместить в домашних каталогах пользователей файл: ~/.spamassassin/user_prefs следующего содержания:
user_scores_dsn DBI:mysql:spamassassin:192.168.2.1:3306 user_scores_sql_username spamassassin user_scores_sql_password spmd4 auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList user_awl_dsn DBI:mysql:spamassassin:192.168.2.1:3306 user_awl_sql_username spamassassin user_awl_sql_password spmd4 bayes_store_module Mail::SpamAssassin::BayesStore::SQL bayes_sql_dsn DBI:mysql:spamassassin:192.168.2.1:3306 bayes_sql_username spamassassin bayes_sql_password spmd4
Здесь подразумевается что почтовый сервер имеет в локальной сети адрес 192.168.2.1. Если у вас он отличается - нужно соответствующим образом изменить этот файл.
Наконец запускаем KMail и выбираем в меню «Сервис» -> «Мастер антиспама» -> «SpamAssassin 3.x (perl)» и далее всё по умолчанию.
Всё! Теперь при нажатии кнопок «Фильтр Классифицировать как спам» и «Фильтр Классифицировать как не спам» утилита sa-learn будет вносить соответствующие изменения в базу spamassassin на почтовом сервере.
Эта статья не претендует на абсолютную истинность, хотя всё описанное было проделано автором лично. Приятной работы!
Anonymous 2009-10-07 22:08:10 (#)
Вы пишите:
"OPTIONS="--create-prefs --max-children 5 --helper-home-dir=/var/spool/exim4 -u Debian-exim -x -q""
и
"И разместить в домашних каталогах пользователей файл: ~/.spamassassin/user_prefs следующего содержания:"
Вопрос: зачем второе действие?
Функция флага -x:
-x, --nouser-config Disable user config files
M.W.