Fast alle Internet-Benutzer stöhnen angesichts der Flut unerwünschter E-Mail Angebote: sei es nun eine Insel in der Karibik, eine Greencard für die Vereinigten Staaten oder ein vermeintlich harmloser Kettenbrief. Ein Allheilmittel ist gegen SPAM noch nicht erfunden worden, doch zumindest verspricht mailfilter dem geplagten Anwender rasche Abhilfe.
Das Konzept, welches sich hinter Mailfilter verbirgt, ist dabei pragmatisch und intuitiv zugleich. Denn ein wirksamer Schutz gegen SPAMsollte an der Stelle ansetzen, an der es die Anwender am wenigsten stört und sie mit dem Problem noch gar nicht bewusst in Berührung gekommen sind. Deshalb löscht Mailfilter die unerwünschten Nachrichten, noch bevor der eigene Mail-Client diese überhaupt zu sehen bekommt. Dazu wird eine zeitlich kurze Verbindung zum entfernten Server hergestellt und dem Ärgernis direkt vor Ort zu Leibe gerückt. Was davon unberührt bleibt, kann hinterher durch einen beliebigen Mail-Programm abgeholt werden.
In diesem Punkt unterscheidet sich das Programm von vielen traditionellen Filter-Werkzeugen, da diese meist nur auf lokalen Daten arbeiten. Ein typisches Beispiel dafür ist Procmail [3]. Damit lässt sich eingehende E-Mail flexibel sortieren, allerdings müssen die Nachrichten vorher komplett auf den heimischen Rechner übertragen werden. Das kostet die Anwender Zeit und schliesslich Geld, besonders wenn die Anbindung zum Internet an einem langsamen Modem hängt. Und wer will für den Download von Spam noch bezahlen?
Programm-Installation
Mailfilter lässt sich direkt von der CD im Heft installieren. Sie haben dabei die Wahl zwischen einem RPM-Paket für Red Hat- und Mandrake-Systeme, oder den Quelltexten, die Sie sich selbst kompilieren müssen. Kopieren Sie dazu einfach das gezippte TAR-Archiv in ein temporäres Verzeichnis auf der Festplatte und entpacken Sie es mit dem Befehl
tar -xzf mailfilter-0.2.0.tar.gz
Im entstandenen Unterverzeichnis mailfilter-0.2.0 setzen Sie ./configure, danach make und schliesslich als Super-User root noch make install ab. Normalerweise verwendet man su, um sich beim System als Super-User anzumelden. Vergewissern Sie sich anschließend noch, dass auch alles geklappt hat, indem Sie das Kommando mailfilter -V aufrufen. Haben Sie sich dagegen für das vorkompilierte RPM-Paket entschieden, so verwenden Sie einfach ein beliebiges grafisches Frontend (GnoRPM, KPackage, usw.) oder bemühen Sie die Konsole:
rpm -i mailfilter-0.2.0-1.i386.rpm
Für nicht so erfahrene Linux-User ist diese Methode mit Sicherheit die einfachere. Setzen Sie bei sich zuhause allerdings SuSE, Debian oder Slackware ein, so bleibt Ihnen das selber kompilieren nicht erspart.
Reine Einstellungssache
Damit Mailfilter weiss, was gelöscht und was zugestellt werden soll, muss man sich eigene Filter definieren und die Benutzerdaten der zu untersuchenden Mail-Server angeben. All dies geschieht in einer separaten Textdatei, die Sie sich unter dem Namen .mailfilterrc in Ihrem Home-Verzeichnis anlegen sollten. Sie können das mit einem gängigen Text-Editor (vi, emacs, gedit, usw.) erledigen, indem Sie Einträge und Optionen in die anfangs leere Datei einfügen und später entsprechend verändern. Vergessen Sie beim Speichern aber nicht den Punkt unmittelbar vor dem Namen, denn der sorgt dafür, dass .mailfilterrc vom normalen ls-Kommando nicht mit angezeigt wird. Beginnen Sie Ihre Konfiguration mit den drei wichtigsten Einstellungen, die Mailfilter zum Starten benötigt und ersetzen Sie die Beispielwerte der folgenden Anweisungen durch Ihre persönlichen Daten.
# Pfad und Name der Log-Datei: LOGFILE=$HOME/logs/mailfilterlog # Art und Umfang der Programmausgaben: VERBOSE=3 # Ihr Mail-Server: SERVER=my.mailserver.de USER=my.username PASS=my.password PROTOCOL=pop3 PORT=110
Die Einträge PORT und PROTOCOL sollten dabei so übernommen werden. Zum jetzigen Zeitpunkt unterstützt Mailfilter nur das gängige POP3Übertragungsprotokoll, allerdings wird in späteren Versionen zusätzlich IMAPimplementiert sein. Wichtig ist, dass die Reihenfolge der SERVER-, USER-, PASS-, PROTOCOL– und PORT-Anweisungen nicht verändert wird. Das Programm benötigt diese Angaben genau so als Block mit Schlüsselwörtern in Großbuchstaben. Es steht Ihnen jedoch frei, mehrere Blöcke zu definieren, um weitere Mail-Server in die Überprüfung mit einzubeziehen. Durch LOGFILE und VERBOSE teilen Sie Mailfilter mit, wohin und wie detailliert die Programmausgaben protokolliert werden sollen.
Die Filter
Das Herz der Mailfilter Konfiguration bilden sicherlich Ihre persönlichen Anti-Spam Regeln. Diese lassen sich flexibel durch beliebige Reguläre Ausdrückedefinieren. Betrachten Sie dazu einfach folgende kurze Beispiele:
REG_TYPE=extended REG_CASE=no DENY=^From:.*a_nasty@spammer\.org DENY=^Subject:.*Viagra DENY_CASE=^Subject:.*BUSINESS
DENY=^(From|Subject):.*HotSex
Das Dach oder Caret zu Anfang kodiert den Zeilenbeginn und wird fast immer benötigt, denn Mailfilter arbeitet – wie andere Programme auch – zeilenorientiert. Der geklammerte Ausdruck mit dem senkrechten Strich als Trennzeichen repräsentiert ein logisches Oder, d. h. der Filter spricht sowohl auf den Absender der Nachricht, als auch auf den Betreff an. Das etwas seltsam anmutende .*-Konstrukt ist ein Platzhalter, der eine beliebig lange Zeichenkette ersetzen soll. Genau betrachtet sind das zwei Sonderzeichen: Ein einzelner Punkt steht für irgendein Zeichen und der Stern für eine Aneinanderreihung von diesen undefinierten Lettern. Wollen Sie tatsächlich das Zeichen für den einfachen Punkt verwenden, so müssen Sie diesem den Back-Slash vorne anstellen: DM 10\.50. In unserem Beispiel würde der Filter also alle Nachrichten erfassen, die entweder von einem Account der Art HotSex@irgendeine_domain.com geschickt wurden, oder aber mindestens ein Vorkommen des Wortes HotSex im Betreff aufweisen. Nähere Informationen dazu finden Sie auch unter [2] oder durch man 7 regex.
Die ersten beiden Zeilen legen die Art der Regulären Ausdrücke fest: erweiterte Definitionsmöglichkeiten und Nichtbeachtung der Groß- und Kleinschreibung. Der erste Filter wird alle Nachrichten löschen, die von dem Account a_nasty@spammer.org gesandt wurden. Danach teilen wir Mailfilter mit, alles mit dem Betreff Viagra zu löschen, wobei es hier keine Rolle spielt, ob uns ViagrA, viagra oder VIAGRA erreicht. Im Gegensatz dazu löscht der letzte Filter nur Nachrichten, die explizit in Großbuchstaben das Wort BUSINESS enthalten. business und Business sind davon nicht betroffen.
Eigentlich kann dabei nicht viel schief gehen, denn das Programm bietet einen Test-Modus an, der das Löschen von erfassten Nachrichten nur simuliert. Fügen Sie dazu einfach die Zeile TEST=yes in Ihr .mailfilterrc ein, um sicherzustellen, dass Sie beim Experimentieren nicht versehentlich wichtige Daten verlieren. Am besten Sie deaktivieren diese Option erst dann, wenn Sie merken, dass Ihr Regelwerk genau so arbeitet, wie Sie es sich wünschen.
Freunde
Durch den gezielten Einsatz von Spam-Filtern kann man sich dem Gros der elektronischen Werbeflut bereits recht erfolgreich entziehen. Doch wie verhindern Sie, dass restriktive Regeln nicht auch bei wichtigen Nachrichten von Bekannten greifen? Stellen Sie sich vor, sie wollen alle Nachrichten löschen, die von einer bestimmten Domain aus verschickt wurden, kennen aber jemanden, der unglücklicherweise genau dort seinen E-Mail Account hat. Das Schlüsselwort ALLOW hilft Ihnen in einer solchen Situation weiter.
DENY=^From:.*@spamdomain\.com ALLOW=^From:.*friend@spamdomain\.com
Mit diesen beiden Zeilen weisen Sie Mailfilter an, alles von spamdomain.com zu löschen, bis auf die Post Ihres Bekannten. Solche Konfigurationen bieten sich insbesondere für die vielen anonymen öffentlichen Mail-Dienste an, die leider nicht selten zur Spam-Verteilung missbraucht werden.
Fine-Tuning
Unerwünschte Werbung und Kettenbriefe treten nicht immer unmittelbar als solche auf und sind daher oft nur mühsam mit Filtern zu erfassen. Welche Regel würden Sie anwenden, um auf diesen Betreff zu reagieren: B,U_Y; V.I-A.G:G,R:A N.O,W? Jeder Mensch erkennt sofort, worum es hier geht, doch das muss nicht für Ihre Filter gelten. Allerdings ist Mailfilter selbst für solche extremen Fälle gewappnet. Das Schlüsselwort NORMAL veranlasst das Programm dazu, alle nicht-alphanumerischen Zeichen aus dem Betreff einer Nachricht zu löschen und sie danach einem erneuten Test zu unterziehen. In diesem Beispiel würde dabei BUY VIAGRA NOW herauskommen und das wird sofort erkannt und gegebenenfalls entfernt.
NORMAL=yes MAXSIZE_DENY=500000
Wesentlich häufiger benötigt man allerdings eine Option, die die E-Mail aufgrund ihrer Größe löscht, denn ausserordentlich umfangreiche Werbetexte können mit der Zeit wirklich auf den Geldbeutel schlagen. Eine allgemeine Grössenbeschränkung in Bytes lässt sich deshalb mit MAXSIZE_DENY festlegen. Im vorangegangenen Beispiel würde Mailfilter alles jenseits der 500 KB Grenze löschen.
Dokumentation und Integration
Die hier vorgestellten Möglichkeiten bringen Mailfilter noch nicht ans Ende der Leistungsfähigkeit. Das Programm bietet noch wesentlich mehr Optionen an, doch all diese im Detail vorzustellen, würde den Rahmen deutlich sprengen. Deshalb weisen wir an dieser Stelle auf die ausführliche (wenn auch nur in englischer Sprache verfügbaren) Dokumentation hin, die man auf der Konsole mit man mailfilter (Allgemeines), man mailfilterrc (Programm-Optionen) und man mailfilterex (Konfigurations-Beispiele) aufrufen kann. Dort ist wirklich jedes Detail genau beschrieben und Sie erhalten nützliche Hinweise zu komplexeren Konfigurationen. Und selbst wenn der Umgang mit bestimmten Funktionen nicht sofort aus der Erklärung ersichtlich ist, dann bleibt Ihnen immer noch der Test-Modus und das Learning-by-doing.
Kennen Sie sich bereits gut mit Regulären Ausdrücken aus und haben schon häufiger Textdateien erstellt, um Ihre Software einzurichten, dann liegt für Sie eine nahezu fertige .mailfilterrc unter dem Abschnitt Example Configuration auf der Mailfilter-Homepage bereit [1]. Mit Copy und Paste ist diese schnell übernommen und individuell an die eigenen Bedürfnisse angepasst.
Zuletzt müssen Sie natürlich noch die Entscheidung darüber treffen, wann und wie Sie Mailfilter starten möchten. Dazu bieten viele Mail-Programme (KMail, Evolution, Fetchmail, usw.) eine Preconnect-Option an, die es erlaubt, beliebige Befehle vor dem Abholen neuer E-Mails auszuführen. Dort tragen Sie einfach mailfilter ein. Netscape-User haben diese Möglichkeiten zur Zeit noch nicht. Für sie kommt daher nur ein Cron-Job in Frage, der die eigene Mailbox z. B. stündlich überprüft.
Glossar
-
SPAM
-
Der Begriff SPAM umspannt die Vielzahl anonymer E-Mail Werbungen und elektronischer Kettenbriefe, die jeden Tag an nahezu alle Internet-Benutzer weltweit verschickt werden. In Wirklichkeit ist SPAM allerdings amerikanischer Dosenschinken (Spiced Ham) und hatte in den achtziger Jahren einen legendären Auftritt in einem Monty Python Sketch. Wer sich näher für die Hintergründe interessiert, kann die originalen Monty Python Dialoge im Usenet in der Gruppe alt.fan.monty-python nachlesen.
-
POP3
-
POP ist die Abkürzung für das Post Office Protocol (Version 3).
-
IMAP
-
steht für Internet Message Access Protocol. Beides sind übliche Übertragungsprotokolle heutiger Mail-Programme.
-
Reguläre Ausdrücke
-
Mit Regulären Ausdrücken steht Ihnen unter Linux ein sehr mächtiges Handwerkszeug zur Verfügung, um Zeichenketten zu erfassen und auszuwerten. Diverse Systemkommandos bedienen sich dieser Methode, um ein leistungsstarkes aber einheitliches User-Interface anzubieten (z. B.
grep). Das hohe Maß an Flexibilität wird durch Platzhalter und Steuerzeichen erreicht. Betrachten Sie in diesem Zusammenhang folgendes kleines Beispiel:




