En esta entrada se verá como configurar el filtrado bayesiano de Spamassassin usando MySQL/MariaDB para almacenar los tokens.
Crear la base de datos
Descargar el esquema SQL
Descargar el esquema SQL para Spamassassin desde el Repositorio Spamassassin. Existen diferentes versiones del esquema SQL en función de la versión de Spamassassin.
Si no quiere complicaciones, copia y pega las siguientes líneas en el terminal para descargar el esquema SQL correspondiente a la versión de Spamassassin instalada en el sistema.
1
2
SPAMASSASIN_VERSION=$(spamassassin -V | head -n1 | awk 'BEGIN {FS=" "}; {print $3}' | sed 's/\./_/g')
El siguiente paso es crear la BD, importar el esquema SQL y por último crear el usuario para Spamassassin.
1
2
3
4
5
6
7
8
PASS=mysql-root-user-password
SA_DB=sa_bayes
SA_USER=sa-user
SA_PASSWORD=sa-password
mysql -u root -p$PASS -e "CREATE DATABASE $SA_DB;"
mysql -u root -p$PASS $SA_DB < /root/spamassassin_${SPAMASSASIN_VERSION}_bayes_mysql.sql
mysql -u root -p$PASS -e "GRANT SELECT, INSERT, UPDATE, DELETE ON $SA_DB.* TO $SA_USER@localhost IDENTIFIED BY '$SA_PASSWORD';"
mysql -u root -p$PASS -e "FLUSH PRIVILEGES;"
El esquema SQL debe ser similar a:
1
2
3
4
5
6
7
8
9
10
[root@mail /]# mysql -u root -p$PASS -e "use $SA_DB; show tables;"
+--------------------+
| Tables_in_sa_bayes |
+--------------------+
| bayes_expire |
| bayes_global_vars |
| bayes_seen |
| bayes_token |
| bayes_vars |
+--------------------+
Configurar Spamassassin
Es necesario indicar a Spamassassin donde se encuentra la base de datos tanto para almacenar los tokens cuando se invoca a sa-learn como para poder ejecutar el filtrado bayesiano de los nuevos correos.
Para ello es necesario editar el archivo /etc/mail/spamassassin/local.cf y editar las siguientes líneas de configuración para indicar la localización de la base de datos y las credenciales de acceso:
1
2
3
4
5
6
7
8
9
10
# Store bayesian data in MySQL.
# Please make sure you have correct server address, port and database name.
Para iniciar el aprendizaje de tokens a partir de los correos tan solo es necesario invocar sa-learn con la ruta donde se localizan los mensajes y al menos uno de los siguientes parámetros:
--spam, para iniciar el aprendizaje de tokens a partir de mensajes de spam.
--ham, para iniciar el aprendizaje de tokens a partir de mensajes legítimos.