Ich bin durch ein Posting von Felix von Leitner auf die Software aufmerksam geworden und beschloss, diese etwas genauer unter die Lupe zu nehmen. In der Tat stellte ich nach kurzer Nutzung fest, dass das Programm eine hohe Erkennungsrate hat. Einzig die Installation bzw. Konfiguration ist manchmal etwas hakelig. Daher will ich im folgenden eine kurze Anleitung für Debian hierzu geben.
CRM114 ist primär nicht nur als Spamerkennungssoftware geschaffen worden. CRM114 kann sich jegliche Datenströme anschauen und diese Daten dann sortieren, filtern oder ändern. In unserem Falle soll es bestmöglich Spam aus E-Mails erkennen.
Falls ihr Spamassassin, Bogofilter oder anderes installiert habt, keine Sorge, CRM114 ist dazu kompatibel. Es kann vor oder nach den einzelnen Spamerkennern ausgeführt werden. Die Software läuft unter Linux, BSD, MacOS-X und angeblich auch unter Cygwin in Windows.
Die Installation unter Debian ist relativ simpel. Als Nutzer
root
gebt ihr einfach
apt-get install crm114
ein. Das wars schon.
Zunächst solltet ihr in eurem $HOME-Verzeichnis ein
Unterverzeichnis anlegen. Ich empfehle hier, das Verzeichnis
.crm114 zu nennen:
jens@qbiathome:~/ > mkdir .crm114
Nun müssen die css-Dateien angelegt werden. Diese Dateien sind das "Gedächtnis" der Software. Hier werden die Wörter und Phrasen statistisch beschrieben.
Es gibt verschiedene Möglichkeiten, diese Dateien anzulegen. Der beste Weg sollte sein, einfach leere css-Dateien anzulegen und diese dann sukzessive anzulernen. Diesen werde ich auch im weiteren beschreiben. Weiterhin könnt ihr vorgefertigte Dateien auf der CRM114-Homepage herunterladen.
Zum Anlegen der Dateien wird im CRM114-Paket das Programm
cssutil mitgeliefert. Um loslegen zu können, müssen nun leere
css-Dateien angelegt werden:
jens@qbiathome:~/ > cd .crm114/
jens@qbiathome:~/ > cssutil -b -r spam.css
Sparse spectra file spam.css statistics:
Total available buckets : 1048576
Total buckets in use : 506987
Total hashed datums in file : 1605968
Average datums per bucket : 3.17
Maximum length of overflow chain : 39
Average length of overflow chain : 1.84
Average packing density : 0.48
jens@qbiathome:~/ > cssutil -b -r nonspam.css
jens@qbiathome:~/ > ls -l *.css
-rw-r--r-- 1 jens users 12582924 2004-09-21 22:05 .crm114/nonspam.css -rw-r--r-- 1 jens users 12582924 2004-09-21 22:05 .crm114/spam.css
Wundert euch nicht, dass die obigen beiden Dateien ca. 12 MB groß sind. Am Anfang sind diese mit lauter Nullen gefüllt. Nun geht es ans Lernen.
Viele von euch wollen nun vielleicht gleich den gesamten alten Spamordner nehmen und diesen zum Lernen hinzuziehen. Ich kann euch nur raten, diesem Wunsch vorerst zu widerstehen. CRM114 funktioniert nach der Methode TOE (Train On Errors), d.h. es sollte nur trainiert werden, wenn wirklich ein Fehler aufgetreten ist.
Nun müssen einige Konfigurationsdateien in das neu angelegte Verzeichnis kopiert werden. Diese sind:
/usr/share/doc/crm114/examples/blacklist.mfp /usr/share/doc/crm114/examples/priolist.mfp /usr/share/doc/crm114/examples/rewrites.mfp /usr/share/doc/crm114/examples/test_rewrites.mfp /usr/share/doc/crm114/examples/whitelist.mfp /usr/share/doc/crm114/examples/whitelist.mfp.example /usr/share/crm114/mailfilter.cf
Diese werden in das Verzeichnis .crm114/ kopiert. Für den weiteren Betrieb können die Dateien blacklist.mfp, whitelist.mfp, rewrites.mfp sowie mailfilter.cf wichtig werden. Die letztgenannte Datei, mailfilter.crm, muss nun noch konfiguriert werden. Unten findet ihr einige wichtige Einstellungen:
** ACCEPT: CRM114 PASS Markovian Matcher ** CLASSIFY succeeds; success probability: 1.0000 pR: 92.0269 Best match to file #0 (nonspam.css) prob: 1.0000 pR: 92.0269 Total features in input file: 14496 #0 (nonspam.css): features: 197728, hits: 5130048, prob: 1.00e+00, pR: 92.03 #1 (spam.css): features: 239952, hits: 4700137, prob: 9.40e-93, pR: -92.03
Alle weiteren Einstellungen kann man unverändert lassen.
Nun sollte alles soweit korrekt eingestellt sein und man kann einen ersten Test machen. Hierzu reicht es auf der Kommandozeile folgendes einzugeben:
jens@qbiathome:~/ > /usr/share/crm114/mailfilter.crm -u .crm114
Nun kann beliebiger Text eingegeben werden. Die Eingabe müsst ihr mit Strg+D abschliessen. Dies ist das Dateiendezeichen in Linux.
Ein Test von CRM114.
Ausgegeben wird, vorausgesetzt es ist alles korrekt eingestellt, etwas in der Art:
From foo@bar Wed Sep 22 16:21:03 2004 X-CRM114-Version: 20040816.BlameClockworkOrange-auto.3 (regex: TRE 0.6.8) MF-A10FFB4C X-CRM114-Status: SPAM ( pR: -0.0821 ) Subject: (none) Ein Test von CRM114.
Sollte dies der Fall sein, dann funktioniert CRM114 bei euch und ihr könnt euch den Einstellungen für Procmail widmen.
Jetzt muss noch eine entsprechende Regel für Procmail eingerichtet werden und dann seid ihr schon (fast) fertig:
:0fw: crm114.lock | /usr/bin/crm -u /home/jens/.crm114 /usr/share/crm114/mailfilter.crm :0: * ^X-CRM114-Status: SPAM.* Spam
Was bewirkt die obige Regel? Zunächst wird eine Lockdatei namens crm114.lock angelegt und wird die E-Mail an CRM114 weiter gegeben. Die Option -u bewirkt, dass die Konfigurationen in diesem Verzeichnis genutzt werden. Danach wird dann alle Mail, die den entsprechenden Header trägt in einem Ordner Spam abgelegt.
Nachdem nun alles gut eingestellt ist, versucht mal neue E-Mails abzurufen. Ihr werdet sehen, dass einige in der Inbox und einige im Spamordner liegen. Nun müsst ihr alle E-Mails, falsch sortiert wurden, an CRM114 zum Lernen übergeben. Die folgenden Befehle kann man direkt in mutt eingeben (per Pipe weiterleiten):
grep -a -v ^X-CRM114 | /usr/share/crm114/mailfilter.crm -u .crm114 --learnspam > /dev/null
für E-Mails, die fälschlicherweise nicht als Spam erkannt wurden und mit
grep -a -v ^X-CRM114 | /usr/share/crm114/mailfilter.crm -u .crm114 --learnnonspam > /dev/null
für E-Mails, die fälschlicherweise als Spam erkannt wurden.
Wichtig ist zum einen, dass nur falsch sortierte E-Mails zum Lernen weitergegeben werden und zum anderen sollte man versuchen, ungefähr dieselbe Zahl an Spam- und Nichtspammails zum Training zu geben. Wenn ihr diese Ratschläge berücksichtigt, werdet ihr wahrscheinlich große Freude mit dem Programm haben.