Spam bekämpfen mit SpamAssassin

Mit Suse Linux und Spamassassin bauen Sie einen Schutz gegen Spam auf. Das Filterprogramm erkennt Spam und kennzeichnet ihn. Ganz nebenbei lässt sich bei dieser Gelegenheit auch noch ein Virenschutz für E-Mail implementieren.

Spammer machen jedem Admin das Leben schwer. Die Mails verstopfen den Posteingang, verschwenden Speicher und – schlecht für den Arbeitgeber – kosten Zeit. Denn im morgendlichen Spam-Wust die wirklich relevanten Mails herauszufischen und den Müll zu löschen, kostet leicht eine Viertelstunde. Das summiert sich.

Diesen Aufwand zu reduzieren, treten Spam-Filter an. Die gibt es in zwei Varianten: Einer sitzt auf einem Server und untersucht alle eingehenden Mails, der andere arbeitet auf dem Client und forscht nochmals in den Mails für den User nach Spam.

Ideal ist, wenn man beide Verfahren kombiniert: Auf dem Server sitzt der erste Filter, der schon einmal das Gröbste aus dem Weg räumt. Dann hat noch jeder Nutzer einen Client mit Junk-Mail-Erkennung. Und der erledigt den Rest. So kommen vielleicht noch drei oder vier Werbemails am Tag durch – und das lässt sich verkraften.

Ein idealer Kandidat für Spam-Filterung auf dem Server ist der Spamassassin. Das Open-Source-Programm durchsucht ankommende Mails auf typische Spam-Merkmale. Dazu gehören verschleierte Absendeadressen oder typische Spam-Begriffe aus Medizin, Handel und Pornografie. Auf Wunsch gleicht Spamassassin eingehende Nachrichten mit Listen von Domains ab, die für Spam-Versand bekannt sind. Außerdem nimmt der Assassine Kontakt zu Spam-Datenbanken wie Razor auf und erkennt Spam anhand der dort gespeicherten Signaturen.

Spamassassin selbst basiert auf einem Satz von Regeln, die als Reguläre Ausdrücke definiert sind. Trifft eine Regel zu, erhält eine Mail die einer Regel zugeordnete Punktzahl. Treffen mehrere Regeln zu, erhöht sich diese Punktzahl. Sobald ein Grenzwert überschritten ist, gilt die Mail als Spam.

Das Gute am Spamassassin: Sie dürfen auch eigene Regeln schreiben. Das hilft, flexibel auf neue Ideen der Spammer zu reagieren. Um eigene Regeln zu schreiben, braucht man allerdings grundlegende Kenntnisse der Regex-Syntax von Perl.

Was tun mit dem Spam?

Grundsätzlich gilt die Devise: Spam kennzeichnen statt löschen. Denn je mehr Mitarbeiter E-Mail über den Server empfangen, desto höher ist die Wahrscheinlichkeit von „False Positives“, zu Deutsch etwa „Irrtümlich für Spam gehaltene Mail“. Und da wäre es sehr ungünstig, wenn eine wichtige Mail im Spam-Nirvana landet.

Am besten ist es, die gekennzeichnete Mail gleich vom Server mit entsprechenden Regeln in den Spam-Ordner jedes Benutzers einzusortieren. Alternativ kann diese Arbeit auch der Mail-Client übernehmen. Der muss dann anhand eines Eintrags im Header erkennen, dass Spam vorliegt und die Mail in einen Ordner verschieben. Übrigens sagt der Header bei einer von Spamassassin erkannten Spam-Mail immer auch, welche Regeln für die Einordnung als Spam verantwortlich sind.

Spamassassin einrichten

Mit Suse-Linux ist der Spamassassin schnell eingerichtet. An diese Stelle wird vorausgesetzt, dass bereits eine Mail-Server-Konfiguration auf Suse-Basis existiert, sprich, dass Postfix eingerichtet ist und dass ein POP oder IMAP-Server die Mails entgegennimmt und für den User bereitstellt. Postfix wird automatisch mit Suse 9 installiert. Ein praktischer POP-Server findet sich auf der Installations-DVD: Den „Qpopper“ installieren Sie mit

yast -i qpopper.

Beim Einrichten des Spamassassin richten Sie gleich einen Virenscanner mit ein. Das ist praktisch: Wenn die Mail schon gescannt wird, dann kann das Programm doch auch gleich noch nach digitalen Schädlingen suchen. Die Suche nach Viren und Spam koordiniert das Programm Amavisd-new. Das wird bei Suse mitgeliefert und arbeitet gut mit Postfix zusammen. Um den Viren- und Spamschutz einzuschalten, geben Sie auf der Root-Konsole yast mail ein und aktivieren im danach erscheinenden Menü die Option Virusüberprüfung.

Holen Sie sich als nächstes den Virenscanner, zum Beispiel den von H+BEDV. Für den privaten Gebrauch gibt es den Scanner gratis. Sie dürfen das Programm also auf Ihrer Linux-Workstation zu Hause ausprobieren, bevor Sie sich für den Einsatz der kommerziellen Version in der Firma entscheiden. Die Download-Adresse:

http://www.antivir.de/dateien/antivir/release/avlxsrv.tgz

Nach dem Download entpacken Sie das Programm mit

tar xzvf avlxsrv.tgz.tar –directory /usr/src

und starten die Installation mit

/usr/src/antivir-server-2.x.x/install.sh

(An Stelle von 2.x.x verwenden Sie die entsprechende Versionsnummer, aktuell ist die 2.1.0).

Nach dem Installieren öffnen Sie die Website

http://www.antivir.de/de/support/unix_privatregistrierung/index.html

Dort registrieren Sie sich und erhalten per Mail die Datei hbedv.key, die Sie in das Verzeichnis /usr/lib/AntiVir kopieren.

Fertig. Danach werden Virenmails erkannt und gestoppt. Und jede Spam-Mail erhält eine Kennzeichnung im Header: X-Spam-Flag: YES. Alternativ können Sie die Spam-Warnung in die Subject-Zeile schreiben. Dazu kommentieren Sie in /etc/amavisd.conf den Eintrag $sa_spam_subject_tag aus, indem Sie die Raute davor entfernen.

Sind alle Einrichtungsarbeiten erledigt, geben Sie als root den Befehl

rcamavis restart

ein. Damit werden Virenschutz und Spamfilter aktiv.

Eigene Regeln festlegen

Das Spannende an Spamassassin sind die frei definierbaren Filter. Damit können Sie eigene Spam-Kriterien festlegen und auf aktuelle Entwicklungen reagieren.

Für die Regeln hat Spamassassin mehrere Verzeichnisse vorgesehen. Eines davon ist, unter Suse-Linux, /etc/mail/spamassassin. Diesen Ordner durchsucht das Programm nach Konfigurationsdateien und arbeitet diese der Reihe nach ab. Von Haus aus ist schon immer eine local.cf vorhanden. Die reicht aber nicht aus, wenn man sich intensiver mit der Materie Spam beschäftigt. Denn die Anzahl der Regeln erfordert es bald, mehrere Dateien anzulegen, um nicht den Überblick zu verlieren. Bewährt hat sich das Prinzip, die Dateien mit einer Zahl zu beginnen und danach einen Oberbegriff zu nennen, zum Beispiel 10_lists.cf, 20_porno.cf, 30_pillen.cf und so weiter. Die Dateien werden aufsteigend von der kleinsten Zahl abgearbeitet. Wird eine Regel zweimal aufgestellt, so gilt immer die zuletzt eingelesene.

In 10_lists.cf können Sie beispielsweise Blacklist- und Whitelist-Einträge speichern:

Einen Blacklist-Eintrag fügen Sie so hinzu:

blacklist_from *@foo.bar

Damit werden alle Mails blockiert, die von foo.bar kommen. Umgekehrt lassen Sie alle Mails einer Domain zu, die Sie mit

whitelist_from *@foo.bar

eintragen. In die Whitelist sollten die Domain-Adressen wichtiger Kunden und Geschäftspartner kommen.

Diese Regeln sind noch sehr einfach. Komplexere Regeln untersuchen den Mail-Header und den Text der E-Mail. Derartige Regeln sind in drei Teile aufgeteilt. Der erste Teil definiert die Regel selbst, zum Beispiel:

TESTREGEL header subject ~= /bp.?(?:o|0|()).?r.?n.?b/i

Diese Regel würde gut in 20_porno.cf passen. An erster Stelle der Regel steht der Name. Die zugehörige Zeile erkennt das Wort ‚porn’ in mehreren Spielarten: Statt eines o dürfen an dieser Stelle auch eine 0 (Null) oder zwei Klammern stehen, also p0rn oder p()rn. Außerdem fängt dieser Ausdruck alle Varianten ab, in denen zwischen den Buchstaben Leerstellen oder andere Zeichen eingefügt sind, zum Beispiel p-o-r-n oder p () r n.

Als zweite Zeile folgt die Bewertung der Regel:

score TESTREGEL 4

In diesem Beispiel erhalten alle Mails, in deren Betreff das Wort ‚porn’ vorkommt, eine Punktzahl von 4. Diese Punktzahlen werden aufsummiert zu einer Gesamtwertung. Die vergleicht Spamassassin mit einem Grenzwert, der per Default bei 5 liegt. Mit der Eingabe von

required_hits 6

setzen Sie diesen Wert höher. Je mehr Nutzer an Ihr System angeschlossen sind, desto höher sollte der Wert liegen – ansonsten häufen sich bald die Beschwerden über zu viele false positives. Den Parameter required_hits müssen Sie nur einmal in einer der cf-Dateien eingeben. Um die Gewichtung eines Kriteriums zu ändern, verwenden Sie score.

Als – optionale – dritte Zeile zu einer neuen Regel können Sie eine kurze Erläuterung eingeben:

describe TESTREGEL Faengt porn in mehreren Schreibweisen ab

Mehr zu den Regeln und weitere Parameter finden Sie, wenn Sie auf der Eingabezeile

man Mail::SpamAssassin::Conf

eingeben. Mehr zu regulären Ausdrücken finden Sie im Internet unter http://www.perldoc.com/perl5.8.0/pod/perlre.html.

Lesen Sie hier weiter: Film im Netzwerk ansehen mit dem VLC Media Player