Mini-HowTo: SpamAssassin mit Bayes Filter

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
wirtsi
Posts: 29
Joined: 2002-07-18 14:12

Mini-HowTo: SpamAssassin mit Bayes Filter

Post by wirtsi » 2003-11-21 13:51

Hallo

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
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
Dann erstellen wir /var/spool/spamassassin/ und chmodden es auf den user, der die Mails zustellt (abhänging vom MTA).

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:
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
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.

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

wirtsi
Posts: 29
Joined: 2002-07-18 14:12

Nachtrag

Post by wirtsi » 2003-11-25 12:01

Hallo

noch einige Verbesserungen zum Procmail Filter. Wie schon zu erwarten, formatiert Outlook geforwardete Mails sehr strange, teilweise sind die Header nicht in den Quotes drinnen usw.

Ist wohl nicht unbgedingt die eleganteste Lösung, aber immer noch besser als die Header des Forwarders in die Datenbank aufzunehmen.

:0w
* ^T(O|o).*whitelist@domain.de*
| grep ^> | sed s/^>// | /usr/bin/sa-learn -D --ham --no-rebuild

:0w
* ^T(O|o).*blacklist@domain.de*
| grep ^> | sed s/^>// | /usr/bin/sa-learn -D --spam --no-rebuild


Wirtsi