Spamassassin schreibt die Informationen zu den Spam EMails meistens in Dateien. Solche Daten können jedoch deutlich effizienter verwaltet werden wenn wir sie in eine MySQL Datenbank schreiben.
Wenn auf dem Server sowieso eine MySQL-Datenbank läuft haben diese Informationen in Dateien nichts zu suchen, besonders die Bayes Datenbank und das Whitelisting, da auf diese sehr entsprechend nach Informationen suchen.
Bayes Daten in die MySQL Datenbank
/etc/spamassassin/local.cf
bayes_auto_expire 0
bayes_expiry_max_db_size 150000
Ich gehe jetzt im weitern Verlauf davon aus, dass MySQL bereits läuft. Dennoch muss die Perl-Schnittstelle für den MySQL Datenbankzugriff zumeist noch Installiert werden. Das geht entwender per MCPAN und in Debian Systemen auch mit apt-get:
perl -MCPAN -e shell
install DBD::mysql
apt-get install libtie-cache-perl libdbd-mysql-perl
- Nun wird die notwendige DB angelegt
mysqladmin -p create spamassassin_db -u root
- Vergabe der Rechte für einen speziellen User
grant all privileges on spamassassin_db.* to spamassassin_usr@localhost identified by 'password';
- anlegen der notwendigen Tabellen
mysql -u spamassassin_usr spamassassin_db -p < /usr/share/doc/spamassassin/sql/bayes_mysql.sql
- /etc/spamassassin/local.cf um die SQL-DB Einträge erweitern
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:spamassassin_db:localhost
bayes_sql_username spamassassin_usr
bayes_sql_password password
bayes_sql_override_username spamassassin
Dabei müssen Sie darauf achten, dass der Zugriff auf die alten bayes-Dateien deaktiviert wurde.
# bayes_path /var/spool/bayes_db/bayes
# bayes_file_mode 770
Eine Änderung der Konfiguration der bayes-DB merkt Spamassassin i.d.R. sofort. Starte Sie dennoch den Dienst neu:
/etc/init.d/spamassasin restart
Um zu prüfen, ob die bayes Einträge auch korrekt abgelegt werden reicht es, sich den Inhalt einer der Tabellen anzuschauen. Steht unter Count eine Zahl > 0 sind bereits Datein gespeichert worden:
mysql -u root -p
mysql> use spamassassin_db;
mysql> select COUNT(*) FROM bayes_vars WHERE username ='spamassassin';
+----------+
| COUNT(*) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
Um die alten bayes Einträge zu übernehmen, können diese mittels sa-learn ex-/importiert werden:
sa-learn --backup > bayes.db
sa-learn --restore bayes.db
Whitelisting
perl -MCPAN -e shell
install DBD::mysql
apt-get install libtie-cache-perl libdbd-mysql-perl
- Nun wird die notwendige DB angelegt
mysqladmin -p create spamassassin_db -u root
- Vergabe der Rechte für einen speziellen User
grant all privileges on spamassassin_db.* to spamassassin_usr@localhost identified by 'password';
- anlegen der notwendigen Tabellen
mysql -u root spamassassin_db -p < /usr/share/doc/spamassassin/sql/awl_mysql.sql
- /etc/spamassassin/local.cf um die SQL-DB Einträge erweitern
use_auto_whitelist 1
user_awl_dsn DBI:mysql:spamassassin_db:localhost
user_awl_sql_username spamassassin_usr
user_awl_sql_password Passwort
user_awl_sql_table awl
Dabei müssen Sie darauf achten, dass der Zugriff auf die alte autowhiteliste deaktiviert wurde
#auto_whitelist_path /var/spool/spamassassin/auto-whitelist #auto_whitelist_file_mode 0666
eine Änderung der Konfiguration der bayes-DB merkt Spamassassin i.d.R. sofort. Starte Sie dennoch den Dienst neu:
/etc/init.d/spamassasin restart
Um zu prüfen, ob die bayes Einträge auch korrekt abgelegt werden reicht es, sich den Inhalt einer der Tabellen anzuschauen. Steht unter Count eine Zahl > 0 sind bereits Datein gespeichert worden:
mysql -u root -p
mysql> use spamassassin_db;
mysql> select count(*) from awl;
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.01 sec)
Ein Blick in die Log-Datei von Spamassassin schadet auf keinen Fall. Wo diese liegt, kann man der Datei /etc/default/spamassassin entnehmen