SpamAssassin im lokalen Mailprogramm trainieren

Vor Wochen habe ich meine E-Mails aus Gmail entfernt und auf einen eigenen Server übertragen. Die Benutzung des Mailsystems über Apple Mail, Postbox oder Thunderbird funktioniert wunderbar, lediglich das Trainieren der Spamfilter war bisher mühsam.

Daher habe ich den Prozess umgedreht und mir folgendes Setup zusammengestellt:

  1. E-Mails werden lokal im Mailprogramm entweder automatisch oder von mir als Spam markiert und in den Spam-Ordner verschoben.
  2. Am Server wird in regelmäßigen Abständen ein Skript ausgeführt, das SpamAssassin trainiert: Alles im Spamordner ist Spam, alles andere Ham (also nicht Spam).

Das entscheidende Element hier ist das Skript, das die jeweiligen Ordner zum Training heranzieht. Hier ist es:

# SpamAssassin lernt Spam aus dem Spamordner
echo "SpamAssassin lernt als gelesen markierten (/cur) Spam"
sa-learn --no-sync --spam /PFAD_ZUM_SPAM-ORDNER/cur

# SpamAssassin lernt Ham aus dem Archiv...
echo "SpamAssassin lernt Ham aus dem Archiv"
sa-learn --no-sync --ham /PFAD_ZUM_ARCHIV-ORDNER/*

# Und aus dem Posteingang (nur gelesene)...
echo "SpamAssassin lernt Ham aus dem Posteingang"
sa-learn --no-sync --ham /PFAD_ZUM_POSTEINGANG/cur

# Und jetzt aufräumen
echo "SpamAssassin räumt auf und schreibt gelernte Werte in die Datenbank"
sa-learn --sync

Um das Skript verstehen zu können, empfehle ich das Handbuch zu sa-learn, sowie den Artikel „How to train SpamAssassin„. Wer gerade keinen prall mit Spam gefüllten Spamordner zur Verfügung hat, kann sich bei Hochwald IT eine Sammlung von knapp 11500 Spam-E-Mails herunterladen und sie in den Spamordner hochladen. (Nicht vergessen: Es muss ein Ausgleich in Form von Ham verfügbar sein!)

Was die Sorge um eventuell falsch zugeordnete E-Mails angeht, so kann ich Entwarnung geben. Hier der relevante Absatz aus dem Manual zu sa-learn:

If you make a mistake and scan a mail as ham when it is spam, or vice versa, simply rerun this command with the correct classification, and the mistake will be corrected. SpamAssassin will automatically ‚forget‘ the previous indications.

Super, oder?