HowTo / FAQ / Spam-Bekämpfung mit Spamassassin

Vielen von Euch ist es sicher schon aufgefallen: der SPAM, die unerwünschten Werbe-Emails, nehmen täglich zu - zur Zeit (9/04) bekomme ich allein etwa 100 SPAM Mails pro Tag, dazu kommen noch die Virenwarnungen...

Das kann man alles per Hand lesen - muß man aber nicht! Ein sehr mächtiges Tool zum Filtern von Mail sind das Gespann procmail / spamassassin, damit läßt sich das SPAM-Aufkommen drastisch (bis nahezu Null) reduzieren. Im folgenden wird die Verwendung dieser Tools beschrieben, aus rechtlichen Gründen muß dies jedoch leider jeder User selber für sich einrichten oder mich explizit um die Einrichtung bitten (§206, Abs. 2, Nr. 2 StGB, Freiheitsstrafe bis zu 5 Jahre, und die tatsächliche Wertung durch die Gerichte ist noch völlig offen).

Spamassassin konfigurieren

Die Konfigurationsdatei

Zuallererst gilt es, eine gültige Konfigurationsdatei für den Spamassassin anzulegen. Das kann man per Hand machen (indem man in einem Editor die Datei ~/.spamassassin/user_prefs erzeugt) - muß man aber nicht. Unter anderem unter http://www.pipegrep.net/webuserprefs/demo.php und http://www.yrex.com/spam/spamconfig.php finden sich zwei Dienste, die es erlauben, über eine einfach zu bedienende Oberfläche die Datei user_prefs zu erzeugen. Wichtig sind hier vor allem:

Der Threshold:
Zuerst sollte man auf jedem Fall mit einem Threshold von 7.5 oder sogar 10 experimentieren - dann gelangt zwar die eine oder andere SPAM-Mail weiterhin in die Mailbox, aber wenigstens kann man recht sicher sein, daß keine echten Mails verloren gehen. Mit wachsender Trainingsmenge (siehe auch Bayes und auto-learning) kann man dann die Empfindlichkeit steigern.
Bayes:
Sollte auf jeden Fall angestellt sein - nur so kann Spamassassin sich ganz auf den typischen Mailverkehr des Users einstellen.
Auto Learning:
Sollte ebenfalls angestellt sein, es gilt das gleiche wie für den Bayes Filter.
Use Network Checksum Tests:
Hier wird eine Prüfsumme der empfangenen Mail mit einer Datenbasis von Mails verglichen, von denen bekannt ist, das es sich um Spam handelt - zur Zeit eine sehr zuverlässige Methode, Spam zu erkennen. Installiert ist bei uns zur Zeit nur Razor, aber für den Fall, das noch weitere hinzukommen, kann man die ruhig schon einmal einschalten - was nicht installiert ist, wird auch nicht benutzt.
Accepted Languages:
Hier sollte man wirklich nur die Sprachen ankreuzen, die man zur Not zumindest entziffern könnte - das erspart einem die eine oder andere Mail aus dem wachsenden asiatischen Sprachraum (falls man keine asiatischen Sprachen spricht :-).

Spamassassin trainieren

Sobald das Verzeichnis ~/.spamassassin/ angelegt ist und die Datei ~/.spamassassin/user_prefs dort existiert geht es daran, Spamassassin zu trainieren. Je sorgfältiger dies erfolgt, umso besser funktioniert Spamassassin, und umso weniger Mail wird versehentlich als SPAM klassifiziert. Ich gehe im folgenden davon aus, daß alle Mails in einzelnen Dateien im sogenannten mbox-Format im Verzeichnis ~/Mail/ liegen. Eventuell gesammelte SPAM-Mails (die man jetzt sehr gut zum trainieren verwenden kann) liegen gegebenenfalls in einer Datei ~/Mail/spam. Dies ist z.B. das typische Setup, wenn Standard Unix-Programme wie elm, pine oder mutt als Mailer verwendet werden. Man kann dann wie folgt trainieren:

# SpamAssassin ist ein Perl-Programm
kogs1>/home/utcke% module add perl
# wechsle ins Home-Verzeichnis
kogs1>/home/utcke% cd
# Lege das Verzeichnis an...
kogs1>/home/utcke% mkdir ~/.spamassassin
# ...und erzeuge die Datei user_prefs
kogs1>/home/utcke% cp ~utcke/.spamassassin/user_prefs ~/.spamassassin/user_prefs
# trainiere erwünschte Mails (HAM)
kogs1>/home/utcke% foreach file (`ls ~/Mail/* | grep -v spam`)
foreach? sa-learn --showdots --ham --mbox $file
foreach? end
# trainiere unerwünschte Mails (SPAM)
kogs1>/home/utcke% foreach file (~/Mail/*spam*)
foreach? sa-learn --showdots --spam --mbox $file
foreach? end

Wer Mozilla als Mailer verwendet, findet seine Mails entsprechend statt in ~/Mail in .mozilla/$USER/*/Mail/, Netscape-User finden ihre Mails in ~/nsmail. Wer nicht weiß, wo sein Mailer die Mails ablegt (oder in welchem Format) kann mir gerne mailen, wir gehen dann gemeinsam auf Entdeckungsreise...

Razor konfigurieren

Bei Razor handelt es sich um einen sogenannten Network Checksum Tests, d.h. hier wird eine (fuzzy) Prüfsumme der empfangenen Mail mit einer Datenbasis von Mails verglichen, von denen bekannt ist, das es sich um Spam handelt - zur Zeit eine sehr zuverlässige Methode, Spam zu erkennen. Um Razor verwenden zu können, muß man es jedoch erst einmal initialisieren:

# Razor ist ein Perl-Programm
kogs1>/home/utcke% module add perl
# create a default config file ~/.razor
kogs1>/home/utcke% razor-admin -create
# Razor basiert auf einem Netzt des Vertrauens
# deshalb sollte man sich dort registrieren
kogs1>/home/utcke% razor-admin -register -user=$USER@kogs.informatik.uni-hamburg.de

Die Registrierung ist notwendig, da Razor auf einem Netzwerk des Vertrauens aufbaut - um sich aber Vertrauen erwerben zu können, ist eben auch eine eindeutige Identifikation nötig.

Procmail konfigurieren

Bei procmail handelt es sich um das Programm, welches die Mail letztendlich zustellt. Per default landet die Mail in /var/mail/$USER, man kann jedoch die Zustellung durch diverse Regeln beeinflussen. Alle diese Regeln werden in der Datei ~/.procmailrc gesammelt. Ein nahezu minimales ~/.procmailrc könnte wie folgt aussehen: