Цель это статьи пошагово описать процесс настройки SpamAssassin на работу с базой MySQL и установить плагин для Roundcube.
Преамбула такова, уже имеется настроенная связка Exim4 + SpamAssassin + MySQL + Roundcube, всё это великолепно работает. Хочется чтобы SpamAssassin научился работать с MySQL.
Приступим.
SpamAssassin установлен из репозитория, поэтому не мудрствуя лукаво переходим в /usr/share/doc/spamassassin/sql и смотрим, что тут у нас есть. А оказывается тут есть и инструкция в README и заготовки для создания таблиц.
Создадим в MySQL БД и пользователя:
mysql> create database spamassassin;
mysql> grant usage on *.* to 'spamassassin'@'localhost' identified by 'passw0rd';
mysql> grant all privileges on spamassassin.* to 'spamassassin'@'localhost';
mysql> flush privileges;
Теперь заливаем дампы таблиц из /usr/share/doc/spamassassin/sql:
mysql -uspamassassin -ppassw0rd spamassassin < /usr/share/doc/spamassassin/sql/userpref_mysql.sql
mysql -uspamassassin -ppassw0rd spamassassin < /usr/share/doc/spamassassin/sql/bayes_mysql.sql
mysql -uspamassassin -ppassw0rd spamassassin < /usr/share/doc/spamassassin/sql/awl_mysql.sql
БД и таблицы в ней созданы, теперь научи SpamAssassin как достучаться к MySQL. Создадим конфигурационный файл, скажем, /etc/spamassassin/sql.cf:
user_scores_dsn DBI:mysql:spamassassin:localhost:3306
user_scores_sql_username spamassassin
user_scores_sql_password passw0rd
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn DBI:mysql:spamassassin:localhost:3306
user_awl_sql_username spamassassin
user_awl_sql_password passw0rd
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:spamassassin:localhost:3306
bayes_sql_username spamassassin
bayes_sql_password passw0rd
В файле /etc/default/spamassassin отыскиваем опцию OPTIONS и добавляем ключи --sql-config и -u debian-spamd. Рестартуем сервис:
$ sudo service spamassassin restart
Теперь переходим в директорию Roundcube, далее в ${roundcube_dir}/plugins/sauserprefs на основании имеющегося шаблона создаём config.inc.php где указываем адреса, явки, пароли:
$rcmail_config['sauserprefs_db_dsnw'] = 'mysql://spamassassin:passw0rd@localhost/spamassassin';
Включаем плагин sauserprefs в ${roundcube_dir}/config/main.inc.php
Заходим в Roundcube, переходим в "Настройки", видим "Спам фильтр", радуемся!
Посмотреть пользовательскую конфигурацию в SQL БД можно, например, так:
mysql> select username,preference,value from userpref WHERE (username='$GLOBAL' OR username LIKE '%@mydomain.com' OR username='user@mydomain2.com') ORDER by username ASC;
Глобальные настройки можно перенести и/или переопределить в таблице userperf, для username значение "$GLOBAL":
+------------------+-------------------------+------------------------+
| username | preference | value |
+------------------+-------------------------+------------------------+
| $GLOBAL | required_hits | 5.00 |
| $GLOBAL | subject_tag | [SPAM-_HITS_]- |
| $GLOBAL | score USER_IN_WHITELIST | -10 |
| $GLOBAL | whitelist_from | *@whitedomain.com |
| $GLOBAL | score USER_IN_BLACKLIST | 10 |
| $GLOBAL | report_safe | 0 |
| $GLOBAL | use_razor2 | 1 |
| $GLOBAL | use_pyzor | 1 |
| $GLOBAL | use_dcc | 1 |
| $GLOBAL | skip_rbl_checks | 1 |
| $GLOBAL | use_bayes | 1 |
| $GLOBAL | ok_locales | en |
| $GLOBAL | ok_languages | en |
| $GLOBAL | whitelist_from | *@nai.com |
| $GLOBAL | use_auto_whitelist | 1 |
| $GLOBAL | rewrite_header Subject | [SPAM-_HITS_]- |
+------------------+-------------------------+------------------------+