2006/10/16

Spamassassin + MySQL

Система фильтрации нежелательной корреспонденции Spamassassin умеет хранить пользовательские настройки, а также динамические базы, применяемые в работе (auto-whitelist, bayes filter) в SQL-базе данных. Ниже приведена настройка Spamassassin 3.0.3 для работы в связке с MTA Exim 4.50 (Debian Sarge) на примере СУБД MySQL.

1. Подготовить MySQL-базу

mysql -u root -p
Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE DATABASE `spamassassin_db`;
Query OK, 1 row affected (0.09 sec)

mysql> GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'pasword';
Query OK, 0 rows affected (0.07 sec)

mysql> GRANT ALL PRIVILEGES ON `spamassassin_db`.* TO 'username'@'localhost';
Query OK, 0 rows affected (0.07 sec)

2. Подготовить необходимые таблицы (схемы таблиц находятся в /usr/share/doc/spamassassin/sql)

cd /usr/share/doc/spamassassin/sql
# mysql -u username -p spamassassin_db < userpref_mysql.sql
# mysql -u username -p spamassassin_db < bayes_mysql.sql
# mysql -u username -p spamassassin_db < awl_mysql.sql

3. Осуществить импорт накопленных bayes-токенов

su -m -c "sa-learn -D --backup > /tmp/backup.txt" Debian-exim
su -m -c "sa-learn --restore /tmp/backup.txt" Debian-exim

4. Осуществить импорт awl-базы (понадобится скрипт convert_awl_dbm_to_sql из набора spamassassin tools)

cd /usr/local/bin
wget http://spamassassin.apache.org/full/3.0.x/dist/tools/convert_awl_dbm_to_sql
chmod +x convert_awl_dbm_to_sql
su -m -c "/usr/local/bin/convert_awl_dbm_to_sql --username Debian-exim --dsn DBI:mysql:spamassassin_db:localhost --dbautowhitelist /var/spool/exim4/.spamassassin/auto-whitelist --sqlusername username --sqlpassword password --ok" Debian-exim

5. Добавить конфигурационный файл, описывающий необходимость использования mysql-базы для хранения пользовательских настроек (userpref), данных автоматического whitelist'а (awl) байесовского фильтра.

cat > /etc/mail/spamassassin/sql.cf

user_scores_dsn DBI:mysql:spamassassin_db:localhost:3306
user_scores_sql_username username
user_scores_sql_password password
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn DBI:mysql:spamassassin_db:localhost:3306
user_awl_sql_username username
user_awl_sql_password password
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:spamassassin_db:localhost:3306
bayes_sql_username username
bayes_sql_password password

6. Добавить в запускной скрипт опцию -q, при наличии которой spamassassin будет пытаться использовать sql-базы, описанные в конфигурационных файлах (на время тестирования можно добавить опцию -D (debug)).

7. Перезапустить Spamassassin

/etc/init.d/spamassassin restart


Ссылки:

1. Migrating our Debian Anti-Spam Anti-Virus Gateway Email Server's Bayes database to MySQL
2. Loading SpamAssassin User Preferences From An SQL Database
3. Spamassassin Wiki - UsingSQL

2 comments:

Anonymous said...

А при создании бд под bayes имеет смысл указывать character set koi8r
если при сборке mysql эта опрция была пропущена?

Roman Sozinov said...

to anonymous:
Не смогу дать вразумительного ответа, так как не знаю как реализован байесовкий фильтр с mysql-backend'ом изнутри.
Могу только посоветовать потестировать и так и так. А уж на основании результатов теста можно сделать вывод.