Sie bekommen dauernd Post von Ihnen völlig unbekannten Menschen oder Computern? Angebote, die Sie wirklich nicht interessieren? Wenn die Mailbox ständig mit lästigen Werbe-Mails gefüllt wird, hilft SpamAssassin.
SpamAssassin ist ein Mail-Filter, der Werbe-Mails erkennt und markiert. Was mit den als Spam identifizierten Mails passiert, bleibt Ihnen überlassen. Die Erkennung erfolgt über bekannte Textbausteine im Bodyder Mail, wie z. B. “Try it out for FREE! (for a limited time only…)” oder “To be removed from our list please reply with `remove'”. Weitere Kriterien sind die ausschließliche Verwendung von HTML oder bestimmte Modifikationen im Headerder Mail. Für all diese Erkennungsmuster verteilt SpamAssassin Negativpunkte – ist eine (individuell konfigurierbare) Höchstgrenze überschritten, wird die Mail als Werbung markiert.
Installation und Konfiguration
Sie können SpamAssassin entweder als vorgefertigtes Paket (.rpm oder .deb) installieren oder es aus den Sourcen selbst bauen. Die entsprechenden Dateien finden Sie auf der Heft-CD im Verzeichnis LinuxUser/spamassassin/. Nach dem Mounten der CD führen Sie als Superuser root entweder rpm -Uvh spamassassin-2.20-1.i386.rpm (auf RPM-basierten Systemen) oder dpkg -i spamassassin_2.20-1_i386.deb (auf Debian-Systemen) aus. Sollte es bei dieser Vorgehensweise zu Problemen kommen (auf älteren SuSE-Systemen z. B. fehlten einige Pakete), installieren Sie die Sourcen wie folgt:
cd /usr/local/src/ tar xzvf /cdrom/LinuxUser/spamassassin/Mail-SpamAssassin-2.20.tar.gz
Ein neues Verzeichnis Mail-SpamAssassin-2.20 wird angelegt; wechseln Sie in dieses und rufen Sie das Perl-Script auf, welches das Makefile erzeugt:
cd Mail-SpamAssassin-2.20 perl Makefile.PL
Anschließend installieren Sie das Programm im Zweierschritt:
make spamassassin make install
SpamAssassin lässt sich aber auch ohne root-Rechte im eigenen Home-Verzeichnis installieren – praktisch, wenn es nicht Ihr eigener Rechner ist. In diesem Fall melden Sie sich als Benutzer am System an und laden mit dem Programm wget die Sourcen vom Server, z. B. mit
wget http://www.spamassassin.org/released/Mail-SpamAssassin-2.20.tar.gz
Am besten legen Sie – sofern noch nicht vorhanden – in Ihrem Home-Verzeichnis ein neues Verzeichnis namens bin an (mkdir ~/bin). Wechseln Sie in das Verzeichnis (cd bin) und packen Sie das komprimierte Archiv dort wie oben beschrieben aus. Nun können Sie die gleichen Schritte wie weiter oben durchführen, verzichten aber (da Ihnen die Root-Rechte fehlen) auf das abschließende make install. Alle Konfigurationsdateien und Filterregeln werden daher im eigenen Home-Verzeichnis abgelegt. Diese finden Sie im Unterverzeichnis rules bzw. bei normaler Installation in /usr/share/spamassassin/.
White Lists
Dort liegt auch eine Datei namens user_prefs.template – eine Vorlage, mit der sich SpamAssassin den eigenen Wünschen anpassen lässt. Wenn Sie SpamAssassin einmal ohne Parameter aufrufen und mit [Strg-d] direkt wieder beenden, kopiert das Programm diese Vorlage in ein neu angelegtes Unterverzeichnis .spamassassin in Ihrem Home-Verzeichnis. Die Datei ist selbsterklärend und einfach zu konfigurieren. Die Punktzahl, ab wann eine Mail als Spam markiert wird, stellen Sie beispielsweise mit required_hits 5 ein. Ebenso kann hier eine Whitelist für Mails von bestimmten Adressen angelegt werden, die oft fälschlich als Spam eingestuft werden. Hinter dem Eintrag whitelist_from folgen die Spezifikationen – entweder in einer einzigen Zeile oder in mehreren Einträgen:
whitelist_from redaktion@linux-user.de whitelist_from @L: *@linux-user.de whitelist_from @L: *.uni-koeln.de
Sie sehen hier, dass Sie neben vollständigen Adressen auch bestimmte Domains oder Subdomains freigeben können. Der Eintrag für sogenannte Blacklists funktioniert genauso, z. B. blacklist_from @L: *.microsoft.com – alle Mails dieser Domain werden nun automatisch wie Werbung behandelt.
Der Aufruf von SpamAssassin und der Einsatz verschiedener Parameter hängen davon ab, ob Sie SpamAssassin in Ihrem Home oder systemweit installiert haben. Daher werden in den beiden folgenden Abschnitten immer beide Möglichkeiten berücksichtigt.
SpamAssassin und Procmail – ein starkes Team
In LinuxUser 04/2002 [2] haben wir ausführlich beschrieben, wie Procmail eingerichtet wird. Um SpamAssassin als Filter einzusetzen, benötigen Sie zwei Einträge in der ~/.procmailrc. Ist das Programm systemweit installiert, sieht der Eintrag so aus:
:0fw | spamassassin -P :0:
- ^X-Spam-Status: Yes caughtspam
Liegt das Programm in Ihrem Home-Verzeichnis, muss zunächst der vollständige Pfad angegeben werden. Dazu kommt noch der Parameter -c konfigurationsdatei, um SpamAssassin zu verraten, wo die Regeln liegen:
:0fw | /home/user/bin/SpamAssassin/spamassassin -P -c /home/user/bin/SpamAssassin/rules :0:
- ^X-Spam-Status: Yes caughtspam
Die hier vorgestellten Filterregeln sagen Procmail zunächst mit dem f-Flag, dass es die ankommende Mail an einen Filter übergibt. Das w steht für “wait” – die erfolgreiche Beendigung des Filterprogrammes wird abgewartet. Danach kommt der Aufruf des eigentlichen Filters. Die zweite Regel sorgt dafür, dass alle Mails, die einen Header “X-Spam-Status: Yes” haben, also von SpamAssassin als Werbung identifiert wurden, im Folder caughtspam abgelegt werden. Es ist sinnvoll, diesen Eintrag vor allen anderen Regeln in Procmail einzufügen, da die Filterregeln der Reihe nach abgearbeitet werden.
Mails werden markiert, indem in das Subject @L: *@L: *@L: *@L: *@L: *SPAM@L: *@L: *@L: *@L: *@L: * eingefügt wird; in der Mail selbst stehen die Bewertungskriterien, wie Sie in Abbildung 1 sehen können.
SpamAssassin mit KMail verwenden
Sollten Sie Ihre Mails lieber lokal lesen und dazu KMail verwenden, müssen Sie nicht auf den SpamAssassin verzichten. Um den Filter in KMail zu aktivieren, wählen Sie in der Menüleiste des Programmes Einstellungen und dann Filter einrichten. Konfigurieren Sie die Filterregeln, wie in Abbildung 2 zu sehen. Sollte das Programm lokal installiert sein, müssen auch hier der komplette Pfad und die Konfigurationsdatei angegeben werden. Statt spamassassin -P steht in dem Feld dann /home/user/bin/SpamAssassin/spamassassin -P -c /home/user/bin/SpamAssassin/rules.
Noch mehr Whitelists
SpamAssassin kann so eingestellt werden, dass er die Whitelist automatisch erweitert: Es werden durchschnittliche Klassifizierungen der Mail analysiert und für die Einstufung neuer Mails mit herangezogen. Wenn also Ihr bester Freund es lustig findet, eine ganze Mail mit Wörtern wie “hot teens” oder “Viagra” zu schmücken, lässt der Filter ihn aufgrund früherer Einordnungen trotzdem passieren. Damit diese automatische Whitelist verwendet wird, muss das Programm immer mit dem zusätzlichen Parameter -a aufgerufen werden. Jetzt passiert Folgendes: Bei jeder neu eingehenden Mail, die nicht als Spam eingeordnet wird, werden alle enthaltenen E-Mail-Adressen in die Auto-Whitelist aufgenommen (~/.spamassassin/auto-whitelist.dir und ~/.spamassassin/auto-whitelist.pag). Wer in dieser Liste landet, dessen spätere Mails werden nur bei Erreichen einer höheren Spam-Quote auch als Spam eingestuft..
Adressen, die fehlerhaft als Spam-Absender einstuft wurden, lassen sich manuell zur Whitelist hinzufügen. Speichern Sie die betreffende Mail in einem eigenen Folder, z. B. nospam. Rufen Sie spamassassin -W < nospam auf. Damit werden die enthaltenen Adressen der Whitelist automatisch hinzugefügt: In Zukunft wird Mail von diesen Absendern nicht mehr als Spam behandelt. Um eine Mail von der Spam-Markierung zu befreien, verwendet man spamassassin -d < nospam > neuermailfolder – hier liegt jetzt die gesäuberte Mail.
Mehrere Tests auf dem lokalen Rechner und mit einem Server Account zeigten, dass SpamAssassin sehr zuverlässig läuft – bisher hatte der Filter eine hundertprozentige Trefferquote. Weiterhin kam es zu Wettbewerben unter SpamAssassin-Anwendern (“Mein Spam erzielt mehr Punkte als Deiner!”); ein anderer begeisterter Nutzer wollte dem Filter den “Nützlichstes Programm seit vi”-Award verleihen – und bevor es jetzt zu einem Flamewar über Emacs oder vi kommt, tragen wir das doch lieber per Mail aus – mit vielen !!! im Subject.
Glossar
-
Header
-
Eine E-Mail besteht aus drei Teilen: Envelope (= Umschlag), Header (= Nachrichtenkopf) und Body (= Nachrichtentext. Während der Umschlag nur für das Transportprogramm (MTA = Mail Transfer Agent) von Bedeutung ist, werden Body und Header vom Mail-Programm ausgewertet. Die Syntax des Nachrichtenkopfes ist im RFC 822 [1] exakt festgelegt, damit die einzelnen Felder (z. B. “Date:”, “From:”, “Subject:” oder “To:”) korrekt ausgewertet werden können. Die Angaben in diesen Feldern können vom Absender beliebig modifiziert werden und müssen nicht mit denen im Umschlag übereinstimmen. Es kann also eine E-Mail an Undisclosed.Recipients@linux-user.de adressiert sein, aber in einem Envelope stecken, der an redaktion@linux-user.de adressiert ist. Bei vielen Mail-Programmen werden nur einige oder gar keine dieser Felder angezeigt. Es ist jedoch für die meisten Mail Clients kein Problem, vollständige Header einzublenden.
-
Body
-
Nach dem Header und einer Leerzeile folgt der eigentliche Text der E-Mail. Laut RFC 822 ist nur ASCII-Text im Mail Body erlaubt. Dank der Entwicklung des MIME-Standards (“Multipurpose Internet Mail Extensions”, RFC 1521) ist es mittlerweile möglich, auch andere Datentypen zu versenden; dazu gehört nicht nur das Verschicken von Attachments, sondern auch das Benutzen anderer Zeichensätze.
Infos
[1] http://www.faqs.org/rfcs/rfc822.html
[2] Andreas Kneib: Der Meister der Rezepte – Mails bearbeiten mit procmail, LinuxUser 04/2002, S. 70






