Bei aktivierte Bayes Filterung werden die Dateien bayes_seen und bayes_toks i.d.R. ~6 MB groß. Je nach eMail aufkommen, kann es sinnvoll sein die größe der DB zu erhöhen und evtl. auch das altern von Bayes Einträgen zu verhinden. bayes_expiry_max_db_size (default: 150000) sind die gerade erwähnten 6 MB. Für 12 MB sähe die config dann wiefolgt aus

    /etc/spamassassin/local.cf
    bayes_auto_expire                       0
    bayes_expiry_max_db_size          150000

    Nun weiß jeder, dass Dateizugriff relativ viel Zeit kosten. Dafür lässt sich die bayes-db jedoch in eine SQL Datenbank verlagern. Ich gehe jetzt im weitern Verlauf davon aus, dass mysql bereits läuft. Dennoch muss die Schnittstelle für den DB Zugriff noch nachinstalliert werden. Das geht entwender per MCPAN oder apt-get.

    Installation

    perl -MCPAN -e shell
    install DBD::mysql
    
    apt-get install libtie-cache-perl libdbd-mysql-perl

    Datenbank anlegen

    Anschließend kann die DB angelegt werden.

    mysqladmin -p create sa_bayes -u root 

    Damit der Zugriff sauber geregeregelt ist, wird ein Benutzer namens sa_user für den Zugriff angelegt und berechtigt.

    grant all privileges on sa_bayes.* to sa_user@localhost identified by 'password';  

    Jetzt die notwendigen Tabellen anlegen:

    mysql -u spamassassin_usr sa_bayes -p < /usr/share/doc/spamassassin/sql/bayes_mysql.sql

    Konfiguration anpassen

    In der /etc/spamassassin/local.cf nun den Zugriff von Spamassassin auf die MySQL Datenbank konfigurieren.

    bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
    bayes_sql_dsn DBI:mysql:sa_bayes:localhost
    bayes_sql_username sa_user
    bayes_sql_password <password>
    bayes_sql_override_username sa_user

    Alten Bayes Daten exportieren und in MySQL DB importieren

    Bevor Spamassassin nun von einer bayes Datei auf MySQL umgestellt wird, wird die bayes Datei vorerst exportiert um diese gleich direkt in die MySQL Datenbank importieren zu können:

    sa-learn --backup > bayes.db

    Aschließend Spamassassin oder Amavisd-new neustarten, abhängig davon, wie der Spamfilter implementiert wurde.

    /etc/init.d/spamassasin restart
    
    /etc/init.d/amavis restart

    Nun das export file wieder einlesen:

    sa-learn --restore bayes.db

    … und prüfen ob alles geklappt hat. Dazu reicht es, sich den Inhalt einer der Tabellen anzuschauen. Steht unter Count eine Zahl > 0 sind die Datein importiert worden:

    mysql -u sa_user -p
    mysql> use sa_bayes;
    mysql> select COUNT(*) FROM bayes_token;
    +----------+
    | COUNT(*) |
    +----------+
    |   565495 |
    +----------+
    1 row in set (0.00 sec)

    Fehler "unable to initialize database for sa_bayes user, aborting!"

    Hier hilft häufig

    sa-learn --sync

    1 Kommentar

    1. Pingback: .: blog.cscholz.io :. » Spamassassin: Whitelisting in MySQL DB speichern «

    Leave A Reply