von Andreas Bauer
Das Konzept, welches sich hinter Mailfilter verbirgt, ist dabei pragmatisch und intuitiv zugleich. Denn ein wirksamer Schutz gegen Spam sollte 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-Client 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 RedHat- 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.gzIm 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 anschliessend 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.rpmFü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. |
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 IMAP implementiert 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 Grossbuchstaben. 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.
Das Herz der Mailfilter Konfiguration bilden sicherlich Ihre persönlichen Anti-Spam Regeln. Diese lassen sich flexibel durch beliebige Reguläre Ausdrücke definieren. 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):.*HotSexDas 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 Gross- 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 Grossbuchstaben 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.
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.
Unerwünschte Werbung und Kettenbriefe treten nicht immer umittelbar 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 ggf. entfernt.
NORMAL=yes MAXSIZE_DENY=500000
Wesentlich häufiger benötigt man allerdings eine Option, die die E-Mail aufgrund ihrer Grösse 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.
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.
| Infos |
|
[1] http://mailfilter.sourceforge.net/
[2] http://www.linuxdoc.org/HOWTO/Adv-Bash-Scr-HOWTO/regexp.html [3] http://www.procmail.org/ |
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 Mail-Box z. B. stündlich überprüft.
| Der Autor |
| Andreas Bauer studiert tagsüber Informatik und Psychologie an der Technischen Universität München. Nachts programmiert er am liebsten Unix-Software und vertreibt sich die Zeit mit Musik. Er freut sich über jede nicht-Spam Nachricht an baueran@in.tum.de. |