Kategorien
Linux security

Spamassassin in die Datenbank

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:

  • Vorraussetzungen
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

  • Vorraussetzungen
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

Von der_metzger

Hi, ich bin Jan Kuehnel - Fachinformatiker für Systemintegration ,Linux-Benutzer und Blogger. Seit 2019 arbeite ich als Systemadministrator bei einem beliebten deutschen Fahrradverleih und zuvor über 10 Jahren bei einem großen deutschen Provider. Ich folge seit meiner Kindheit dem Hobby, technische Rätsel zu lösen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.