Wollte auch mal was beitragen, habe mich die letzten Tage damit rumgeärgert, wie ich für meine User eine einfache Möglichkeit bauen kann, den Bayes Filter von SpamAssassin zu nutzen.
Auf die Installation von SA will ich jetzt nicht genau eingehen, dafür findet man hier genug Anleitungen.
Entscheidend ist dabei lediglich, daß die Mails per procmail an Spamassassin und dann an die lokale Usermailbox zugestellt werden.
Bayes Filter sind dabei eine statistische Methode, bei der eine Anzahl an Spams und Hams analysiert wird und der Filter daraufhin besser zwischen beiden unterscheiden kann. Funktionieren tut das ab je 200 Mails, ab 1000 wird die Erkennung dann richtig gut.
Mein Plan war jetzt, 2 Emailadressen einzurichten (blacklist & whitelist), an die meine User dann Spams bzw. Hams weiterleiten und so den Filter trainieren können. Weiterhin sollen die whitelists sowie die Bayes datenbank systemweit gelten. Für richtig große Systeme ist da wohl nicht sinnvoll, bei mir dagegen schon.
Erstmal zu Spamassassin. In der /usr/share/spamassassin/10_misc.cf (oder von mir aus in /etc/default/spamassassin) folgende Zeilen eintragen
Dann erstellen wir /var/spool/spamassassin/ und chmodden es auf den user, der die Mails zustellt (abhänging vom MTA).bayes_auto_learn_threshold_nonspam 0.1
bayes_auto_learn_threshold_spam 12.0
bayes_auto_learn 1
bayes_path /var/spool/spamassassin/bayes
bayes_file_mode 0644
use_bayes 1
auto_whitelist_path /var/spool/spamassassin/auto-whitelist
auto_whitelist_file_mode 0666
Anschließend einen User (z.B. spam) erstellen und die Mail-Aliase whitelist und blacklist für diesen Account einrichten.
Problematisch an der Sache ist nun, daß die geforwardeten Mails ja nicht mehr die Originalmails sind, sondern ja jetzt von meinen Usern kommen, und die will ich ja eigentlich nicht in der Bayes-DB drinnen haben. Dafür habe ich eine spezielle Procmail-Regel geschrieben, die aus der Mail nur den gequoteten Teil an das Lernprogramm übergibt. Das ist wohl eher so ein Quick & Dirty Hack, besser wäre es wohl, aus der Mail mittels des Perl MimeDefang Moduls das Attachment zu extrahieren, aber bei funktioniert die Methode sehr gut.
Also, im Homeverzeichnis des Spam User folgende Procmail regel erstellen:
Ja, und das wars eigentlich schon. Unter /var/log/procmail.log kann man die Debug-Messages des Lernprogramms überprüfen, wenn alles hinhaut dann das -D entfernen.LOGFILE="/var/log/procmail.log"
:0 w
* ^TO whitelist@domain.tld
| grep ^> | sed s/^>// | /usr/bin/sa-learn -D --ham --no-rebuild
:0 w
* ^TO blacklist@domain.tld
| grep ^> | sed s/^>// | /usr/bin/sa-learn -D --spam --no-rebuild
Das Ganze ist mit Spamassassin 2.6 unter Debian (mir Cyrus als MTA) zu Stande gekommen ...
Ã?ber Kommentare würde ich mich freuen
Ewige Blumenkraft
Wirtsi