Spam-Mails filtern mit CRM114 und KMail

Aus LinuxUser 02/2007

Spam-Mails filtern mit CRM114 und KMail

Weg mit dem Dreck

Die Plage nimmt kein Ende: Spam-Versender überfluten die Postfächer argloser Anwender. Spam-Mails von Hand aus zu sortieren mutiert schnell zum Fulltime-Job. Mit CRM114 schaffen Sie den Daten-Müll weitgehend automatisiert beiseite.

Als ob die üblichen Spam-Mails nicht schon ärgerlich genug wären, beglücken Spam-Versender den Mail lesenden Teil der Menschheit mittlerweile auch noch mit Bild-Spams und solchen, die gar keinen sinnvollen Text mehr enthalten.

Das stellt selbst ausgefeilte, gängige Spam-Filter vor große Herausforderungen. So wuchs die Datenbank bei einem Test mit dem Filterprogramm Bogofilter auf bis zu 100 MB an. Der Mail-Empfang mit KMail geriet auf einem IBM ThinkPad T23 mit Pentium 3 1.13 GHz trotz 768 MByte RAM zu einer Geduldsprobe. Die Oberfläche von KMail ist weitgehend blockiert, da das Programm den Spam-Filter derzeit nicht im Hintergrund aufruft [1].

Eine grundlegende Abhilfe scheint zumindest vor KDE 4 unwahrscheinlich, da das voraussetzt, dass die Entwickler große Teile des Programms neu schreiben. Zudem blieben zuviele Spam-Mails ungefiltert, darunter vor allem die erwähnten Bild- und sinnlosen Spams. Ganz klar: Eine leistungsfähigere Lösung musste her.

The CRM 114 Discriminator

Für diesen Test fiel die Wahl auf CRM114, von dem einige Mitglieder der Community große Stücke halten [2]. Das Akronym – ausgeschrieben Controllable Regex Mutilator – spielt auf das Zusatzgerät für den Radioempfang, den CRM114 Discriminator aus dem Film “Dr. Strangelove” von Stanley Kubrick an, das dazu dient, nicht authentifizierte Sendungen gar nicht zu empfangen [3]. Alternativ bieten sich friedlichere Namen wie Controllable Regex Modifier an.

CRM114 arbeitet wie eine Programmiersprache zum Filtern von Daten mit Hilfe von regulären Ausdrücken [4]. Dabei spielt es keine Rolle, ob es sich bei den Daten um E-Mails, Logdateien oder andere Datenquellen handelt. CRM114 lernt die Kriterien, nach denen Sie filtern wollen.

Das Filtern von Mails erledigt ein CRM114-Programm. Dabei bietet CRM114 mehrere Vorteile: Es arbeitet mit hoher Geschwindigkeit, verbraucht relativ wenig Ressourcen, lernt sehr schnell und arbeitet nach anfänglichem Training sehr präzise. Das noble Ziel lautet: E-Mails wirksam genug zu filtern, um dem Geschäftsmodell der Spammer die Grundlage zu entziehen.

Wie viele andere Spam-Filter ermöglicht auch CRM114 den flexiblen Einsatz: So steht einer serverseitigen Installation via Procmail, Maildrop oder die Datei .forward ebenso wenig entgegen wie eine Integration in die Webmail-Oberfläche Squirrelmail oder das textbasierte Mail-Programm Mutt [5][6][7][8].

Dieser Artikel beschränkt sich auf die Grundinstallation von CRM114 und die Integration in KMail. Diese Methode funktioniert mit POP3– und IMAP-Postfächern und benötigt keine Änderungen auf dem Server. Sie eignet sich daher besonders für Anwender, die über keinen eigenen Mailserver mit Root-Zugriff verfügen. Nutzen Sie IMAP auf einem eigenen Server bietet sich die serverseitige Installation an.

CRM114 installieren

Als ersten Schritt installieren und konfigurieren Sie CRM114 und das CRM114-Mailfilterprogramm [5]. Unter Debian und Ubuntu installieren Sie dazu einfach das Paket crm114. Im Test kam die Version 20060704a aus Debian Etch zum Einsatz, ebenfalls in Ubuntu Edgy enthalten, und für Sarge als Backport verfügbar [9].

Verwenden Sie Suse oder wollen Sie eine aktuellere Version von CRM114 einsetzen, greifen Sie auf die Upstream-Version zurück. Am einfachsten verwenden Sie dazu die statisch gelinkte Binärversion [10]. Entpacken Sie das Archiv mit tar -xvzf Archivdatei, wechseln Sie in das neu angelegte Verzeichnis, führen Sie den Befehl su -c "make install_binary_only" aus und geben Sie Ihr Root-Passwort ein. Mit su -c "make uninstall deinstallieren Sie CRM114 bei Bedarf wieder. Um die Software aus dem Quelltext zu installieren, braucht es einige zusätzliche Schritte (siehe Kasten “CRM114 kompilieren”).

Für einen ersten Test geben Sie mit crm -v die Versionsnummer von CRM114 aus. Mit crm '-{ output /Hello, world!\n/}' starten Sie das berühmte Hallo-Welt-Programm. CRM114 wartet standardmäßig auf den Eingabestrom, bevor es ein Programm ausführt, das daraus die Ausgabe erzeugt. Drücken Sie [Strg]+[D] um den Eingabestrom zu beenden und das Programm auszuführen.

Mailfilter einrichten

Das Mailfilterprogramm von CRM114 greift auf eine Konfigurationsdatei, mehrere Listen wie eine Blacklist und eine Whitelist sowie jeweils eine standardmäßig 12 MByte große Hash-Datei für Spam und Ham.

Erstellen Sie in Ihrem Home-Verzeichnis mit mkdir ~/.crm114 ein Verzeichnis für die CRM114-Dateien und wechseln Sie mit cd ~/.crm114 dorthin. Kopieren Sie unter Debian und Ubuntu mit cp -a /usr/share/crm114/*.crm . die kompletten Programmdateien – minimal jedoch mailreaver.crm, maillib.crm, mailtrainer.crm, rewriteutil.crm – in das neue Verzeichnis. Bei der Upstream-Version verwenden Sie die Dateien aus dem Binär- oder Quelltext-Archiv. Das aktuelle Filterprogramm für CRM114 heisst mailreaver.crm. Das ältere mailfilter.crm sollten Sie nicht mehr verwenden.

Kopieren Sie zusätzlich die Konfigurationsdatei für den Mailfilter, die Datei mailfilter.cf, in Ihr CRM114-Verzeichnis und passen Sie sie mit Hilfe eines Texteditors an. Für die Integration in KMail benötigen Sie keinen Fernzugriff auf CRM114. Lassen Sie also trotz aller Warnungen die Zeile :spw: /DEFAULT_PASSWORD/ unverändert.

Wählen Sie bei einen geeigneten Decoder für Mime-kodierte Mailanhänge, indem Sie das Kommentarzeichen vor der entsprechenden :mime_decoder:-Zeile entfernen und vor allen anderen :mime_decoder:-Zeilen gegebenenfalls setzen. Prüfen Sie mit dem Befehl which /usr/bin/mimencode welcher Mime-Encoder auf Ihrem System installiert ist. Ersetzen Sie dabei /usr/bin/mimencode durch den jeweiligen Encoder.

Der Decoder openssl aus dem OpenSSL-Paket findet sich in der Regel bei einem üblichen Desktop-System. Von mimencode gibt es zwei Varianten: Die aus dem Paket metamail benötigt zum Dekodieren die Option -u im Aufruf. Im Zweifelsfall hilft ein Blick in die Manpage und das Ausprobieren auf der Befehlszeile.

Das Mailfilterprogramm fügt als Spam, Ham oder Unsicher eingestuften Mails nach Wunsch einen Prefix in der Betreff-Zeile im Header der E-Mail hinzu. KMail benötigt diese Information nicht, da das Mailfilter-Programm sie zusätzlich an anderer Stelle in den Header schreibt. Aktivieren Sie :spam_flag_subject_string: //, :unsure_flag_subject_string: // und ggf. :good_flag_subject_string: //, wenn Sie unveränderte Betreff-Zeilen vorziehen.

Standardmäßig protokolliert das Mailfilterprogramm alle bearbeiteten Mails in der Datei allmail.txt. Funktioniert der Mailfilter bei Ihnen wie gewünscht, sparen Sie mit :log_to_allmail.txt: /no/ den dafür benötigten Speicherplatz ein.

Die Konfigurationsdatei aus dem CRM114-Paket von Debian vor der Version 20060704a-3 hat einen Fehler[11]. Der Pfad zu mailtrainer.crm stimmt nicht. Stellen Sie folgende Schreibweise sicher: :trainer_invoke_command: /.\/mailtrainer.crm/.

Mit cssutil -rb spam.css und cssutil -rb nonspam.css erstellen Sie die Hash-Dateien für die Erkennungsmerkmale für Spam- und Ham-Mails. Der Befehl erstellt die angegebene CSS-Datei, falls noch nicht vorhanden, und gibt dann eine kleine Statistik aus.

Das Mailfilterprogramm greift auf zwei Listen-Dateien zurück, um eine kombinierte Black- beziehungsweise Whitelist zu realisieren oder zum Beispiel Mail-Adressen umzuschreiben. Für den Start genügt es, mit touch rewrites.mfp priolist.mfp leere Dateien anzulegen (siehe Kasten “Rewrite-Regeln und White-/Blacklists”).

Vor der Integration in KMail testen Sie in der Shell, ob ihre Mailfilter-Installation funktioniert. Rufen Sie mit crm mailreaver.crm das CRM-Programm auf, tippen Sie irgendeinen Text und drücken Sie die Eingabetaste gefolgt von [Strg]+[D]. Das CRM-Programm sollte nun einige mit X-CRM114 beginnende Header-Zeilen anzeigen.

Antispam-Assistent

KMail bietet einen Antispam-Assistenten, der erkennt, welche Spamfilter Sie installiert haben und geeignete Filterregeln erstellt. Im Test kamen unter Debian Etch KMail aus KDE 3.5.5 und unter Suse 10.1 KMail aus KDE 3.5.1 zum Einsatz.

Der Antispam-Assistent von KMail aus KDE 3.5.5 kennt CRM114 noch nicht. Ab KDE-Version 3.5.6, die für Januar geplant ist, sollte KMail CRM114 erkennen [12]. Älteren Versionen von KMail bringen Sie CRM114 bei, indem Sie der Konfigurationsdatei kmail.antispamrc für CRM114 einen Eintrag hinzufügen (siehe Listing 2).

Sie finden diese Datei bei Debian und Ubuntu im Verzeichnis /etc/kde3 und unter Suse im Verzeichnis /opt/kde3/share/config. Alternativ kopieren Sie die Datei nach ~/.kde/share/config und bearbeiten Sie dort. Öffnen Sie diese Datei gegebenenfalls mit Root-Rechten in einem Texteditor und erhöhen Sie zunächst unter [General] bei tools= die Anzahl der Spamfilter um eins. Fügen Sie anschließend den Eintrag am Ende der Datei an und passen dabei in der ersten Zeile des Eintrags Spamtool #11 die Nummer des Eintrags an. Alternativ kopieren Sie einfach die entsprechende Datei von der LinuxUser-Webseite.

Legen Sie für Spam-Mails und für als unsicher eingestufte Mails je einen Ordner an. Klicken Sie dazu in der Ordnerliste zum Beispiel beim Ordner Mülleimer auf die rechte Mausstaste und wählen Sie Neuer Unterordner …. Ordner eines Online IMAP-Kontos bietet der Antispam-Assistent nicht zur Auswahl an, verwenden Sie in diesem Fall die ohnehin schnelleren lokalen Ordner.

Es empfiehlt sich, Spam-Mails nicht gleich in den Mülleimer zu verschieben, sondern zunächst in einen eigenen Ordner, da KMail alle Mails aus dem Mülleimer beim Beenden löscht. So haben Sie jederzeit Gelegenheit nachzuschauen, ob der Filter eine Mail fälschlicherweise als Spam eingestuft hat.

Erstellen Sie mit dem Antispam-Assistenten unter Extras | Anti-Spam Assistent … in zwei Schritten die passenden Filterregeln. Wählen Sie dazu als Spamfilter CRM114 aus (siehe Abbildung 2). Im zweiten Schritt wählen Sie die Ordner für Spam-Mails und als unsicher eingestufte Mails.

Abbildung 1: Der Antispam-Assistent von KMail hilft mit einer grafischen Oberfläche beim Einrichten des Filters.

Abbildung 1: Der Antispam-Assistent von KMail hilft mit einer grafischen Oberfläche beim Einrichten des Filters.

Abbildung 2: Im zweiten Schritt geben Sie die Ordner für Spam-Mails und als unsicher eingestufte Mails an.

Abbildung 2: Im zweiten Schritt geben Sie die Ordner für Spam-Mails und als unsicher eingestufte Mails an.

Nun ist KMail bereit, CRM114 als Spamfilter zu nutzen. Die fünf neuen Filterregeln sollten am Anfang der Liste der Filterregeln stehen, damit Sie immer zuerst zum Einsatz kommen. Wählen Sie Einstellungen | Filter einrichten... und verschieben Sie die Spamfilter-Regeln gemäß Ihrer Reihenfolge mit den Pfeilsymbolen nach oben (siehe Abbildung 3).

Abbildung 3: Die Filterregeln für den Spamfilter sollten ganz am Anfang der Liste stehen.

Abbildung 3: Die Filterregeln für den Spamfilter sollten ganz am Anfang der Liste stehen.

In der Werkzeugleiste gibt es zwei neue Symbole. Mit dem grünen Haken markieren Sie erwünschte Mails und mit dem Symbol, das an die gelben Tüten mit dem grünen Punkt erinnert, markieren Sie unerwünschte Mails. Als Ham eingestufte Mails filtert KMail nach Ihren übrigen Filterregeln oder belässt Sie im Posteingang. Als Spam und als unsicher eingestufte Mails verschiebt KMail sofort in die entsprechenden Ordner.

Trainieren Sie nicht wie wild irgendwelche Mails. CRM114 verhält sich besonders am Anfang wie ein aufmerksames kleines Kind, das sehr schnell lernt. Dabei interessiert sich CRM114 jedoch nur für falsch als Spam oder Ham eingestufte Mails und für Mails, bei denen sich das Programm unsicher ist.

Trainieren Sie CRM114 oft, am besten jede Stunde oder laden die neuen Mails immer nur häppchenweise, indem die Übertragung zwischendrin abbrechen. Je öfter Sie trainieren, desto weniger Mails müssen Sie markieren, da CRM sie bereits kennt. Und CRM arbeitet so effektiver! Bereits nach den ersten Stunden filterte CRM im Test einen Großteil der Spam-Mails aus (siehe Abbildung 4).

Achten Sie besonders in der Anfangszeit jedoch noch regelmäßig auf fälscherlicherweise als Spam eingestufte Mails und markieren Sie diese als gewünscht. Auch hier lernt CRM114 mit einer angenehmen Geschwindigkeit.

Abbildung 4: Weg mit dem Müll! Bereits nach wenigen Stunden Training filtert CRM einen Großteil der Spam-Mails aus.

Abbildung 4: Weg mit dem Müll! Bereits nach wenigen Stunden Training filtert CRM einen Großteil der Spam-Mails aus.

Möchten Sie eine als Ham markierte Mail im Ordner für als unsicher eingestufte Mails erneut filtern, damit Sie im richtigen Ordner landet, wählen Sie Filter anwenden | Alle Filter anwenden aus dem Kontextmenü oder drücken Sie einfach [Strg]+[J].

Genaueres über das Einstufen einer Mail erfahren Sie mit der Taste [V] zum Anzeigen der Mail inklusive Header-Zeilen (siehe Abbildung 5). Suchen Sie nach der Header-Zeile X-CRM114-Status. Diese Header-Zeilen ändert KMail mit den Filterregeln vom Antispam-Assistenten nicht sofort, nachdem Sie eine E-Mail als Ham oder Spam markieren. In einer als Ham markierten steht immer noch UNSURE oder SPAM drin.

Erst nach dem erneuten Filtern leitet KMail die Mail noch einmal durch den Spamfilter hindurch. Ergänzen Sie daher die Filterregel Als Nicht-SPAM klassifizieren und bei Bedarf auch Als SPAM klassifizieren bei den Filteraktionen daher noch um Durch Programm leiten mit crm -u $HOME/.crm114 mailreaver.crm (siehe Abbildung 3).

Abbildung 5: Durch und durch Spam, wie CRM114 in der Headerzeile     <code srcset=

X-CRM114-Status mitteilt.” width=”300″ height=”68″ /> Abbildung 5: Durch und durch Spam, wie CRM114 in der Headerzeile X-CRM114-Status mitteilt.

Listing 1
IhrName@ihre.adresse.de>->MeineMailAdresse
[[:space:]]Ihr Name>-> MeinName

Listing 2
[Spamtool #11]
Ident=crm114
Version=1
Priority=65
VisibleName=CRM114
Executeable=crm -v | grep "CRM114"
URL=http://crm114.sourceforge.net
PipeFilterName=CRM114 Check
PipeCmdDetect=crm -u $HOME/.crm114 mailreaver.crm
ExecCmdSpam=crm -u $HOME/.crm114 mailreaver.crm --spam
ExecCmdHam=crm -u $HOME/.crm114 mailreaver.crm --good
DetectionHeader=X-CRM114-Status
DetectionPattern=SPAM
DetectionPattern2=UNSURE
DetectionOnly=0
UseRegExp=0
SupportsBayes=1
SupportsUnsure=1

CRM114 kompilieren

Laden Sie das Quelltex-Archiv [13], entpacken Sie es und wechseln Sie in das neu erstellte Verzeichnis. Kompilieren Sie zunächst die Bibliothek TRE, die reguläre Ausdrücke handhabt. Wechseln Sie dazu in das Verzeichnis tre-x.y.z, also zum Beispiel tre-0.7.4. Konfigurieren Sie die Quellen mit ./configure bzw. ./configure --enable-static, wenn Sie CRM114 statisch linken möchten, übersetzen Sie mit make übersetzen Sie den Quelltext und installieren Sie mit su -c "make install" die Bibliothek.

Etwaige Fehlermeldungen bezüglich Tests ignorieren Sie dabei einfach. Der Befehl ls -l /usr/local/lib/libtre* sollte die neu installierten Bibliotheksdateien auflisten. Wollen Sie dynamisch linken, rufen Sie als Root ldconfig auf. Die Datei /etc/ld.so.conf sollte dafür den Pfad /usr/local/lib enthalten.

Wechseln Sie danach mit cd .. in das übergeordnete Verzeichnis. Das Makefile von CRM installiert standardmäßig nach /usr. Passen Sie die Variable prefix an, um etwa nach /usr/local zu installieren. Möchten Sie dynamisch linken, setzen Sie vor die Zeile LDFLAGS += -static -static-libgcc ein Kommentarzeichen. Führen Sie schließlich nacheinander die Befehle make clean, make und su -c "make install aus.

Rewrite-Regeln und White-/Blacklists

Mit Hilfe von rewrites.mfp weisen Sie CRM114 an, Ihren Namen, Ihre eigene Mail-Adresse und gegebenfalls IP-Adresse und Name des Mail-Gateways durch generische Namen zu ersetzen (siehe Listing 1). Sie geben dabei zuerst an, was zu ersetzen ist, gefolgt von >-> und der Ersatz-Zeichenfolge: Suchen>->Ersetzen. Mit >–> geht das Suchen auch über mehrere Zeilen. Reguläre Ausdrücke sind dabei erlaubt [4].

Dies dient dem Schutz ihrer Privatsphäre. Zudem reduzieren Sie den Lernaufwand für CRM114, da ihre eigenen Angaben für die Entscheidung zwischen Spam oder Ham unwesentlich sind. Im Test funktioniert CRM114 jedoch auch ohne Rewrites mit erstaunlicher Genauigkeit und Effizienz.

Für eine White- oder Blacklist besteht in der Regel keine Notwendigkeit, da CRM114 sehr schnell lernt. Das neue mailreaver.crm verwendet nur noch die kombinierte White- und Blacklist priolist.mfp. Ein Beispiel finden Sie bei Debian und Ubuntu unter /usr/share/doc/crm114/examples oder im Upstream-Archiv. Ersparen Sie sich die fehleranfällige manuelle Pflege einer White- und Blacklist.

Fazit

Wie Sie sehen, gestaltet sich die Installation von CRM114 und die Integration in KMail derzeit noch recht aufwendig. Doch es lohnt sich, wie Sie spätestens merken, wenn Sie sich angesichts der Spam-Flut mit einem Lächeln auf dem Gesicht zurücklehnen. In diesem Kontext: “Willkommen, mein Name ist CRM114, Content Regulator for Mail!”

Glossar

Spam

Vom Empfänger unerwünschte oft massenhaft versandte E-Mails mit werbenden Inhalt.

POP3

Mail-Protokoll, bei dem das Mailprogramm die E-Mails vom Server abholt und anschließend in der Regel von dort löscht.

IMAP

Mail-Protokoll, bei dem das Mailprogramm direkt auf die E-Mails auf dem Server zugreift. KMail unterstützt das lokale Zwischenspeichern von E-Mails, sogenanntes Disconnected IMAP (DIMAP) oder Cached IMAP.

Upstream-Version

Die Version, die direkt von den Entwicklern eines Programms stammt.

Statisch

Der Linker verbindet ein Programm mit den Funktionsbibliotheken, auf die es zurückgreift. Beim statischen Linken landen die benötigten Funktion direkt in der ausführbaren Datei. Ein dynamischer Linker verknüpft die nach dem Kompilieren nur lose erstellte Verbindung beim Start des Programms.

Ham

Englisch für Schinken. Vom Empfänger erwünschte E-Mails.

Hash

Eine eindeutige kurze Identifikation für ein beliebig langes Datenfragment. Dient zum Beschleunigen der Suche nach Daten.

Header

Hier: Kopf einer E-Mail mit Metadaten wie Absender, Empfänger oder verwendetes Mailprogramm. Der eigentliche Inhalt der E-Mail befindet sich in deren Körper (engl.: body).

Infos

[1] Patch für KMail: http://commit-digest.org/issues/2006-11-05/moreinfo/600586/

[2] CRM114-Webseite: http://crm114.sourceforge.net/

[3] CRM114 und CRM114 Mailfilter FAQ: http://crm114.sourceforge.net/FAQ.txt

[4] Reguläre Ausdrücke: Martin Möller “Strukturierte Suche”, LinuxUser 08/2005, S. 90: http://www.linux-user.de/ausgabe/2005/08/090-regex/index.html

[5] CRM 114 Mailfilter HOWTO: http://crm114.sourceforge.net/CRM114_Mailfilter_HOWTO.txt

[6] Other CRM114 Cool Things: http://crm114.sourceforge.net/

[7] Steve Pellegrin “CRM114-Training via SquirrelMail”: http://www.convoglio.com/crm114/

[8] Jens Kubieziel “Anleitung zur Installation und Betrieb von CRM114 mit Debian”: http://www.kubieziel.de/computer/crm114.html

[9] Backports.org: http://www.backports.org

[10] Aktuelle Version von BlameDalkey: http://crm114.sourceforge.net/crm114-20061103-BlameDalkey.i386.tar.gz

[11] Debian-Fehlerbericht: http://bugs.debian.org/394476

[12] KDE-Wunsch mit Patch: http://bugs.kde.org/show_bug.cgi?id=136261

[13] Aktuelle Version von BlameDalkey: http://crm114.sourceforge.net/crm114-20061103-BlameDalkey.src.tar.gz

LinuxUser 02/2007 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben