переносим базу SpamAssassin bayes в MySQL

для начала проверим версию SpamAssassin

$ sudo spamassassin -V
SpamAssassin version 3.4.6
  running on Perl version 5.32.1

в нашем случае это 3.4.6

теперь качаем нужный файл со структурой mysql

$ cd ~
$ wget http://svn.apache.org/repos/asf/spamassassin/tags/spamassassin_release_3_4_6/sql/bayes_mysql.sql

подключаемся к движку базы и загружаем структуру

$ mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE sa_bayes;
MariaDB [(none)]> USE sa_bayes;
MariaDB [(none)]> SOURCE ~/bayes_mysql.sql;

создадим пользователя sa_user с паролем Pa$$W0rd (замените на свой) и правами на нашу базу

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON sa_bayes.* TO sa_user@localhost IDENTIFIED BY 'Pa$$W0rd';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [sa_bayes]> quit;

отредактируем конфиг /etc/mail/spamassassin/local.cf

use_bayes          1
bayes_auto_learn   1
bayes_auto_expire  1

# Store bayesian data in MySQL.
# Please make sure you have correct server address, port and database name.
bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn      DBI:mysql:sa_bayes:127.0.0.1:3306

# Store bayesian data in PostgreSQL.
# Please make sure you have correct server address, port and database name.
#bayes_store_module Mail::SpamAssassin::BayesStore::PgSQL
#bayes_sql_dsn      DBI:Pg:database=sa_bayes;host=127.0.0.1;port=5432

# SQL username and password.
bayes_sql_username sa_user
bayes_sql_password Pa$$W0rd

# Override the username used for storing data in the database.
# This could be used to group users together to share bayesian filter data.
# You can also use this config option to trick sa-learn to learn data as a specific user.
#bayes_sql_override_username vmail
bayes_sql_override_username amavis

рестартим службу

$ sudo service amavis restart

проверяем, скармливаем тестовое сообщение

$ sa-learn --spam --username=amavis /usr/share/doc/spamassassin/examples/sample-spam.txt
Learned tokens from 1 message(s) (1 message(s) examined)

и проверим наполняемость базы

$ mysql -uroot -p
MariaDB [(none)]> USE sa_bayes;
MariaDB [sa_bayes]> SELECT username,spam_count,ham_count FROM bayes_vars;
+----------+------------+-----------+
| username | spam_count | ham_count |
+----------+------------+-----------+
| amavis   |          1 |         1 |
+----------+------------+-----------+
1 row in set (0,000 sec)
MariaDB [sa_bayes]> quit;

и не забудьте отредактировать файл резервирования /var/vmail/backup/backup_mysql.sh, чтобы добавить и нашу базу

# Databases we should backup.
# Multiple databases MUST be seperated by SPACE.
export DATABASES='mysql vmail roundcubemail amavisd iredadmin sogo iredapd sa_bayes'

PS мне скрипт резервирования не пришлось менять, там уже быза бала прописана

Отправить
Поделиться