Mini-HOWTO für bogofilter mit KMail
Vorwort
Bogofilter ist ein Bayes-Filter, er errechnet also die Wahrscheinlichkeit, daß eine Mail Spam enthält oder nicht. Mehr soll zu dem Thema hier nicht gesagt werden. Dazu gibt es in der c't 17/2003 einen sehr guten Artikel. Die Anleitung soll konkret zeigen, wie man bogofilter mit KMail benutzt. Ich benutze KMail mit einem POP3-Zugang. IMAP habe ich nicht getestet, soll aber auch gehen.
Vorbereitung
Zuerst werden in KMail zwei neue Verzeichnisse im Maildir-Format angelegt. Sie werden benötigt, um bogofilter zu trainieren, welche Mails Spam oder nicht Spam sind.
Benenne diese Verzeichnisse nonspam und spam.
Sortiere anschließend so viel typische Spammails und "gute Mails" wie möglich in diese Verzeichnisse. Je typischer diese Mails jeweils sind, desto besser wird später die Spamerkennungsrate sein.
Filterregeln
Nun müssen in KMail nur noch ein paar Filterregeln erstellt werden, damit KMail jede ankommende Mail zuerst durch den bogofilter laufen lässt.
Die Filterregeln in KMail werden grundsätzlich von oben nach unten abgearbeitet. Filterregeln für Mailinglisten o.ä. müssen also möglicherweise über den Regeln für bogofilter stehen.
Die Regeln sollten so aussehen:
bogofilter_ist_spam
Im Menü für bogofilter_ist_spam
Filterbedingungen: "X-Bogosity" enthält "Yes"
Filteraktion:
verschieben in Ordner: spam markieren als: ungelesen
Weitere Einstellungen:
Eingehende Nachrichten: aktiviert Versendete Nachrichten: egal zur manuellen Filterung: aktiviert Bearbeitung hier Abbrechen: aktiviert
bogofilter
bogofilter
Filterbedingungen: "Feld im Vorspann" passt auf regulären Ausdruck ".*"
Filteraktion: bogofilter -epv
Weitere Einstellungen:
Eingehende Nachrichten: aktiviert Versendete Nachrichten: egal zur manuellen Filterung: aktiviert Bearbeitung hier Abbrechen: NICHT! aktiviert
bogoheader
bogoheader
Filterbedingungen: "Feld im Vorspann" passt auf regulären Ausdruck ".*"
Filteraktion:
Vorspann entfernen: X-Bogosity Vorspann entfernen: X-Attachments
Weitere Einstellungen:
Eingehende Nachrichten: aktiviert Versendete Nachrichten: egal zur manuellen Filterung: aktiviert Bearbeitung hier Abbrechen: NICHT! aktiviert
Die Regeln sollten anschließend in folgender Reihenfolge in der Liste stehen:
- bogoheader
- bogofilter
- bogofilter_ist_spam
Nun muss nur noch die Datenbank von bogofilter mit den Beispielmails und den Spammails trainiert werden. Dies geschieht mit folgender Eingabe.
rm ~/.bogofilter/*.db find ~/Mail/spam -type f | bogofilter -vvv -s -b find ~/Mail/nonspam -type f | bogofilter -vvv -n -b
Die Erstellung der Datenbank kann sehr lange dauern! Auf einem 2 GHz-Rechner mit 10000 Mails dauert es etwa eine Stunde. Dies sollte man also gelegentlich mit einem Cronjob erledigen.
Ist dies erledigt, werden alle ankommenden Mails zuerst mit bogofilter geprüft und in den Header der Mail eine kleine Statistik geschrieben, wie bogofilter die Mail einschätzt. Spammails werden dann in den "spam"-Ordner verschoben und als ungelesen markiert. Nach meiner Erfahrung hat bogofilter dabei schon bei eher wenigen Trainingsmails (240 gute, 60 Spam) eine erstaunlich gute Trefferquote.