+----------+ | Deleatur | Version 3.2.3 (November 2004) +----------+ Deleatur© ist ein Programm zum Erkennen von Spam-Mail allein auf Grund der mitgezählten Häufigkeit von Wörtern (Bayes-Filter). Der Name kommt aus dem Lateinischen und bedeutet "es möge gelöscht werden". Deleatur ist laut Benutzerurteil das erste Spamfilter-Programm, das dem Benutzer wirklich Arbeit abnimmt: Während andere Spamfilter die Mail erst vollständig herunterladen und Spam in einen Spam-Ordner verfrachten, löscht Deleatur Spam schon auf dem POP-Server, nachdem nur ein Teil heruntergeladen wurde. Deleatur benutzt man zum Nachschauen nach Mail. Nur wenn ordentliche Mail übrig geblieben ist, startet man das eigene Mailprogramm. Deleatur läuft im Kommandofenster, im Idealfall braucht man - auch bei 50 Mails - nur ein paarmal die Eingabetaste zu betätigen. Im Automatikmodus schaut Deleatur in festgelegten Abständen nach Mail und löscht erkannte Spam-Mail automatisch. Deleatur lernt aus den gelesenen Mails, indem es sich für alle gefundenen Wörter merkt, wie oft sie in ordentlicher und wie oft in Spam-Mail vorkommen. Deleatur kann auch mit Mail-Dateien trainiert werden, wenn solche zur Verfügung stehen. Auch die mitgelieferte Wortbasis führt schon zu guten Ergebnissen, wenn man englische Spam- und englische sowie deutsche ordentliche Mail bekommt. Deleatur bietet die Möglichkeit, die Dialoge in einer beliebigen Sprache zu führen, wenn man eine Text-Datei entsprechend modifiziert. Zur Zeit werden Deutsch, Englisch, Italienisch (Dank an Roberto Sozzani!) und Portugiesisch (Dank an Carlos Caramori!) mitgeliefert. Neuerungen /**********************************************************/ Deleatur 3.2.2: Die Parameterangaben c=iso, f=0, h=1, i=1, n=1, q=1 und w=0 wurden hinzugefügt. Abschließend wird eine Statistik der gelesenen und gelöschten Mails ausgegeben. Ein Fehler wurde behoben, der bei einem bestimmten POP-Server dazu führte, dass keine Mail gelöscht wurde. Außerdem wird bei der Reduzierung der Wortbasis jetzt Quicksort benutzt. Neuen Taktiken der Spammer folgend (Verwendung vieler Wörter) wurden die impliziten Annahmen der automatischen Bewertung erhöht. Ein Fehler bei der Reduzierung der Wortbasis wurde behoben. Deleatur 3.2.3: Möglichkeit, Deleatur permanent laufen (und dabei Spam automatisch löschen) zu lassen. Für den Fall sehr vieler Mails kann man die Wertung unterbrechen und später wieder aufnehmen. Algorithmus-Änderung, um schnelleres Umlernen zu ermöglichen. Einführung von Minus- und Plusdatei ähnlich Bonus/Malus. Man kann jetzt hinter dem Servernamen eine Portnummer angeben. Zu Englisch und Deutsch sind jetzt Italienisch und Portugiesisch hinzugekommen. Die Parameterangabe g=1 hilft bei defekten POP-Servern, der y-Parameter erlaubt, weitere Kopfzeilen in die Bewertung einzubeziehen. (Bitte lesen Sie erneut die Parameter e, g, s, y und z.) Die Windowsversion enthält einen bekannten Fehler: Nach etwa 55 Mails werden aus unerfindlichen Gründen leere Bereiche des Fensters mit falscher Farbe hinterlegt. Der Algorithmus /*****************************************************/ Zum Algorithmus gibt es zwei Artikel von mir in der Hauszeitschrift des Zentrums für Informationsverarbeitung (Universitätsrechenzentrum) der Universität Münster: http://www.uni-muenster.de/ZIV/inforum/2003-1/a08.html http://www.uni-muenster.de/ZIV/inforum/2003-2/a02.html Folgende Artikel haben mich zur Programmierung von Deleatur "angestiftet": - http://www.paulgraham.com/spam.html - http://radio.weblogs.com/1010454/stories/2002/09/16/spamDetection.html Das Programm merkt sich für jedes Wort der ersten 50 Zeilen jeder Mail (plus ein paar Kopfzeilen) die Häufigkeit, wie oft das Wort in Spam und wie oft es in einer ordentlichen Mail vorgekommen ist. Mit wachsender Wortbasis entscheidet das Programm zunehmend automatisch, ob Spam vorliegt und fragt nicht weiter nach. Bei einer Größe der Wortbasis von 3 MB wird unterhalb einer Spam-Wahrscheinlichkeit von 10 % eine Mail ohne Nachfrage akzeptiert und bei einer solchen über 80 % ohne Nachfrage verworfen. Es kann sinnvoller sein, die mitgelieferte Wortbasis nicht zu verwenden, sondern lieber zwei Wochen lang eine eigene aufzubauen: Die Spam-Mail ist zwar immer ähnlich, jeder bekommt aber andere ordentliche Mail. Die für die Entscheidung herangezogenen Wörter kann man in der Protokolldatei nachlesen. Pro Tag wird eine Protokolldatei JJJJMMTT.log erzeugt, wobei mit JJJJ das Jahr, mit MM der Monat und mit TT der aktuelle Tag gemeint sind. Mit jedem Aufruf werden weitere Zeilen hinten angehängt. Standardmäßig wird das Protokoll des Vortages noch aufbewahrt, noch ältere werden gelöscht. Wenn Mail bereits vom regelbasierten Spamfilter SpamAssassin markiert wurde, kann man die Entscheidungen von Deleatur dahin gehend beeinflussen, dass nicht automatisch Mail gelöscht oder akzeptiert wird, wenn SpamAssassin gegenteiliger Auffassung ist. Man wird aber feststellen, dass man dadurch nur mehr Arbeit hat. :-) Ich bin zwar der Meinung, dass jemand, der mir eine Mail mit Wörtern schickt, die sonst nur in Spam vorkommen, sich nicht zu wundern braucht, wenn seine Mail vom Spamfilter gelöscht wird. Deleatur bietet aber auch die Möglichkeit, in einer Bonus- und einer Malus-Datei Kriterien festzulegen, die automatisches Löschen bzw. Akzeptieren von Mail verhindern. Dies ist aber nur dazu da, dass man ruhig schlafen kann. Wirklich wichtige Mitteilungen werden auf Papier verschickt! :-) Installation und Handhabung /*****************************************/ Eine eigentliche Installation gibt es nicht. Entpacken Sie die Datei deleatur.zip (wenn Sie es nicht schon getan haben) in einem Ordner Ihrer Wahl - fertig! Startet man deleatur.exe zum ersten Mal (z. B. per Doppelklick), so muss man sich zunächst für die Sprache des Dialoges entscheiden: mit 1 stellt man "deutsch" ein, eine 2 verhilft zu englischen Sätzen. Danach wird man gefragt, welchen POP3-Server man benutzt und wie Kennung und Passwort lauten. Diese Daten merkt sich das Programm bis zum nächsten Aufruf in der Parameterdatei deleatur.prm, wobei das Passwort verschlüsselt gespeichert wird. Es gibt folgende Reaktionen auf Anfragen des Programms: +: Mail soll akzeptiert werden. -: Mail soll als Spam gelten. =: Wortbasis gleich lassen, Mail nicht bewerten. ?: Mail soll angezeigt werden (erste 50 Zeilen nach den Kopfzeilen). Die leere Eingabe (also nur die Eingabetaste drücken) entspricht dem Programmvorschlag. Am Ende eines kompletten Mailbox-Durchlaufs erfolgt immer die Frage, ob wirklich gelöscht werden soll. Bis dahin wurde also noch keine Mail auf dem Server tatsächlich gelöscht (wie auch bei einem Programmabbruch durch gleichzeitiges Drücken von Strg und c). Im einzelnen gibt es folgende Reaktionen auf die Schlussanfrage: Eingabetaste: Dies ist die normale Beendigung des Programms: Wertungen werden übernommen und ggf. Spam-Mail tatsächlich gelöscht. a: Alle Wertungen in die Wortbasis übernehmen, keine Spam-Mail löschen, Programm beenden. b: Die Wortbasis unverändert lassen, keine Spam-Mail löschen, Programm beenden. Mailnummer(n): Gibt man eine oder mehrere Nummern in beliebiger Reihenfolge (durch mindestens ein Leerzeichen getrennt) an, so werden genau diese Mails noch einmal zur Beurteilung vorgelegt. In den Dateien deleatur.bon bzw. deleatur.mal kann man zeilenweise festlegen, welcher Text in welchen Kopfzeilen der Mail dazu führt, dass die angetroffene Mail einen Bonus bzw. einen Malus erhält. Ein Bonus führt dazu, dass die Mail nicht automatisch gelöscht wird und ein Malus dazu, dass sie nicht automatisch akzeptiert wird. Es würde also ggf. nachgefragt. Möchte man etwa die von einem bestimmen Professor kommende Mail auf keinen Fall wegwerfen, so gebe man in der Bonusdatei an: from:higgins Wenn also in der from-Kopfzeile einer Mail irgendwo "higgins" auftaucht, bekommt die Mail den Bonus. Ähnliches kann für alle anderen Kopfzeilen einer Mail, etwa Betreff (subject:) oder Adressat (to:) spezifiziert werden: subject:***spam*** to:my_newsgroup Leerzeichen vermeide man vor und hinter dem Doppelpunkt. Wurde ein Wort der Bonus- bzw. Malusdatei gefunden, so erscheint in der Bewertungszeile der Textbzw. . In gleicher Weise kann man in der Datei deleatur.min festlegen, welche E-Mail auf jeden Fall als Spam gewertet, und in der Datei deleatur.plu, welche Datei auf jeden Fall akzeptiert werden soll. Dokumentation der Parameterdatei /************************************/ Die Parameterdatei wird von Deleatur automatisch erstellt und zwar unter dem Namen deleatur.prm. Die Datei kann aber beliebig heißen, wenn man ihren Namen als Parameter beim Aufruf an deleatur.exe übergibt. Gibt man einen Parameter an, der mit einem Minuszeichen beginnt, so wird diese Liesmichdatei ausgegeben. (Unter AIX wird nach der Datei deleatur.liesmich gesucht.) Wer - obwohl es überflüssig sein sollte - mit einem Editor daran drehen möchte, hier ist die Dokumentation. Alle Angaben müssen in Spalte 1 beginnen (sonst werden sie als Kommentar gewertet), links und rechts vom Gleichheitszeichen darf kein Leerzeichen stehen: s= Hier steht der Name des POP3-Servers (z. B. pop.uni-muenster.de). Hinter einem Doppelpunkt kann eine Portnummer angegeben werden.. k= p= Hier stehen Nutzerkennung und Passwort, also die Angaben, mit denen man vom POP-Server authentifiziert wird, wobei das Passwort verschlüsselt ist. u= o= Hier gibt man die Unter- und die Obergrenze der Wortbasis an (in KB). Wird die Obergrenze erreicht, werden (nach Nachfrage) so viele Wörter aus der Wortbasis gelöscht, bis die Untergrenze erreicht ist. Zuerst werden Wörter gelöscht, die nur einmal vorgekommen sind, wobei wiederum die am längsten nicht vorgekommenen zuerst gelöscht werden. Implizit gilt o=5000 und u=3000. Außerdem werden bei einer Reduzierung alle Wörter gestrichen, die nur in einer einzigen Mail vorgekommen sind. l= a= Hier stehen Prozentangaben für Löschgrenze und Akzeptanzgrenze. Diese Angaben werden sonst automatisch aus der Größe der Wortbasis berechnet (s. o.), dann gelten maximal l=80 und a=10. v= Diese Angabe bezeichnet das Verzeichnis für persönliche Dateien, als da sind: - deleatur.bas (Wortbasis zum Schätzen der Wahrscheinlichkeit) - deleatur.alt (alte Wortbasis vom letzten Aufruf) - deleatur.srv (Liste der bisher nicht gelöschten Mail) - deleatur.txt (Klartextliste mit mehrsprachigem Text) - deleatur.spr (codierte Texte der gewählten Sprache) sowie die Protokolldateien JJJJMMTT.log usw. mit der Indexdatei deleatur.log. Ansonsten gilt das aktuelle Verzeichnis. x=SpamAssassin Hier kann man spezifizieren, ob vom regelbasierten Spamfilter SpamAssassin hinzugefügte Headerzeilen berücksichtigt werden sollen. Wird eine Mail von SpamAssassin als Spam eingestuft, so akzeptiert Deleatur sie nicht ohne Nachfrage; wird sie nicht als Spam eingestuft, so löscht Deleatur sie nicht ohne Nachfrage. Diese Einstellung gibt mehr Sicherheit, führt aber gewöhnlich zu zusätzlichen Nachfragen. Wurde die x-Angabe spezifiziert, so erscheinen in der Bewertungszeile zwei von SpamAssassin übermittelte Zahlen: Die erste gibt den Spam-Wert an, die zweite den bei SpamAssassin festgelegten Schwellwert. War der Spam-Wert zu niedrig, so erscheint einfach []. z= Hier kann man eine Zeilenanzahl für das Kommandofenster angeben, nach der Deleatur innehalten soll, damit man theoretisch alles kontrollieren kann. Implizit fragt das Programm nach 24 Zeilen, ob es weiter gehen soll. Mutige können z auf 1000 und a auf 0 setzen, dann kann Spam "durchrauschen" und ordentliche Mail wird garantiert nicht als Spam gewertet. "z=0" bedeutet, dass Zeilen nicht gezählt werden. Wenn man vor Drücken der Eingabetaste ein x eingibt, beendet Deleatur das Einlesen weiterer Mails und geht zur Bewertung über. Dies ist hilfreich nach einem Urlaub. d=0 Diese Angabe dient nur zum Testen und verhindert, dass Mail gelöscht wird. r=0 So kann man jede Rückfrage verhindern. Dabei wird Mail mit einer Spamwahrscheinlichkeit oberhalb der Obergrenze (l=) gelöscht, alle andere gilt als nicht bewertet und wird aufbewahrt. e=min Man gibt die Länge des Intervalls in Minuten an, das Deleatur bis zum nächsten Nachschauen nach Mail warten soll. Deleatur läuft also bis zum Abbruch (etwa durch Strg-c). b= Hier kann man die Anzahl Tage angeben, die eine Protokolldatei JJJJMMTT.log aufbewahrt werden soll. Implizit gilt 1. m=mail, m=spam, m=ok Mit diesem Parameter kann man in einen reinen Lernmodus schalten. Es werden Maildateien aus einem Ordner gelesen, nicht vom Mail-Server. Heißt der Ordner "mail", so bewertet man die eingelesenen Mail-Dateien wie üblich. Heißt er "spam", so wird alles automatisch als Spam betrachtet. Heißt er "ok", so gilt jede Mail als ordentlich. Nur eine Angabe ist erlaubt. Im Gegensatz zum Normalbetrieb werden aus jeder Datei alle Zeilen gelesen - nicht nur die ersten 50. f=0 Diese Angabe wird Sie interessieren, wenn Sie mehrere Aufrufe von Deleatur in einem Script vorsehen: Die abschließende Frage "Fenster schließen?" erfolgt dann nicht. h=1 Wenn Sie eigene Nachbehandlungen der Protokolldatei vorhaben, erhalten Sie durch diese Angabe auch sämtliche Header-Zeilen jeder Mail im Protokoll. c=iso Normalerweise wird der Text des Kommandofenster mit der Codepage 850 dargestellt (sowohl bei OS/2 als auch bei Windows). Wenn Sie stattdessen eine ISO-Codepage eingestellt haben, verhilft Ihnen diese Einstellung zu lesbarem Text (vor allem wenn Sie eine europäische Sprache sprechen). w=0 Dies ist eine weitere Spezifikation (neben f=0), die für Skripts geeignet ist. Sie unterbindet die Frage "Weiter?", wenn keine Mail auf dem POP-Server gefunden wurde. i=1 Auch diese Spezifikation (neben f und w) ist für Skripts gedacht. Sie bewirkt, dass ein Piepston ertönt, wenn Mail gefunden wurde. n=1 Diese Angabe kann in Verbindung mit "r=0" genutzt werden (wenn man die Mails oberhalb der Löschgrenze automatisch löscht). Dann werden nämlich die wertungsrelevanten Zeilen jeder nicht gelöschten Mail im Ordner "mail" abgespeichert, von wo aus eine Nachbewertung vorgenommen werden kann (in Verbindung mit "m=mail"). q=1 Diese Angabe ist für Nutzer gedacht, die gerne ihre Mail länger auf dem Server lassen. Sie verhindert das Anzeigen der nicht erneut bewerteten Mail. y= Man kann mehrere y-Zeilen verwenden. Pro Zeile kann man hinter y= ein Schlüsselwort aus dem Kopf der E-Mail angeben. Die so bezeichneten Zeilen werden in die Überprüfung auf Spamwörter eingeschlossen. g=1 Der etwas sonderbare Effekt dieses Parameters ist für Nutzer mit fehlerhaftem POP-Server: Als UID werden nur die rechten 8 Zeichen verwendet. Wer Deleatur aus einem Skript heraus aufruft, kann vielleicht mit den folgenden Ergebnis-Codes etwas anfangen: 0 - es ist keine Mail auf dem Server 1 - es wurde Mail als Spam bewertet 2 - es wurde Mail als ordentlich bewertet 4 - es wurde Mail nicht bewertet 8 - Mail ist vorhanden, wurde aber nicht angeschaut 16 - es wurde Spam gelöscht 32 - (reserviert) 64 - Sprachdatei unpassend (falsche Deleatur-Version) 128 - Deleatur läuft bereits 256 - Verbindung zum POP-Server schlug fehl 512 - Authentifizierung schlug fehl 1024 - Interner Fehler in Deleatur Nach Ausführung von Deleatur steht die Summe der vorgekommenen Bedingungen als Rückkehr-Code zur Verfügung. Dokumentation der Textdatei /*****************************************/ Immer wenn Deleatur die Datei deleatur.spr nicht findet, sucht es nach deleatur.txt. Danach fragt es den Benutzer, welche der in dieser Datei enthaltenen Sprachen benutzt werden soll. Der Aufbau der Textdatei soll im Folgenden erklärt werden. Zeilen mit Leerzeichen an erster Stelle sind Kommentar und können überall eingestreut werden. Die erste Zeile enthält die Versionsnummer von Deleatur. Am Anfang stehen so viele durchnummerierte Zeilen, wie Sprachen vorhanden sind. Diese Zeilen werden dem Nutzer zur Auswahl vorgelegt. Für jeden Textbaustein folgt dann eine Zeile mit drei Rauten, deren Text irrelevant ist, aber nicht verändert werden sollte, gefolgt von so vielen Zeilen, wie Sprachen vorhanden sind. Am Anfang steht jeweils die Sprachnummer, dahinter der Text in der jeweiligen Sprache. Die Reihenfolge der Textbausteine ist relevant und darf nicht geändert werden. Wollte man z. B. Französisch als weitere Sprache einführen, so könnte der Anfang der Datei deleatur.txt so aussehen (abgesehen davon, dass dieser Baustein nicht existiert :-): 3.2.2 1 deutsch 2 English 3 francais ### satz_ich_nicht_franz 1 Ich spreche nicht französisch! 2 I don't speak french! 3 Je ne parle pas francais! Beispiel-Szenarien /**************************************************/ Szenarium 1: eine Mailadresse /*-------------------------------------*/ Dies ist der Normalfall. Die Parameterdatei deleatur.prm wird automatisch erzeugt und braucht nicht geändert zu werden. Szenarium 2: mehrere Mailadressen /*---------------------------------*/ Hat man mehrere Mailadressen, so kann man Deleatur in einem Skript einfach mehrmals aufrufen, jeweils mit einer anderen Parameterdatei: deleatur parm1 deleatur parm2 In den Parameterdateien kann man entweder immer dieselbe Wortbasis angeben oder unterschiedliche. Wenn etwa unterschiedliche Sprachen verwendet werden, können verschiedene Wortbasen zu einer besseren Erkennungsrate führen. Im letzteren Fall leistet der "v="-Parameter gute Dienste. Szenarium 3: vom Server /*-------------------------------------------*/ Man kann die Programmdatei deleatur.exe sowie die Sprachdateien deleatur.txt und deleatur.spr auf einen Fileserver legen, so dass Benutzer immer auf die aktuelle Version von Deleatur zugreifen können, wobei sie auf dem eigenen Rechner nur Platz für die persönlichen Dateien benötigen. Die "v="-Angabe in der eigenen Parameterdatei weist dem Deleatur-Programm den Weg zur Wortbasis, die also nicht allen Nutzern des Fileservers gemeinsam ist! Szenarium 4: automatisch für die Urlaubszeit /*----------------------*/ Hat man Angst, dass während des Urlaubs das eigene Postfach wegen Überfüllung gesperrt würde, so kann man Deleatur permanent laufen und mit z. B. "e=86400" täglich nach Mail schauen lassen. Außerdem sollte in der Parameterdatei "r=0" und "z=1000000" gesetzt sein. Dann löscht Deleatur jede Mail, die eine Spam-Wahrscheinlichkeit über der Löschgrenze hat und ordnet jeder anderen Mail den Status "nicht berücksichtigt" zu - ohne dass ihre Bewertung in die Wortbasis übernommen wird. Ist man dann aus dem Urlaub zurück, so lässt man "r" und "e" weg und bewertet die übrig gebliebene Mail in üblicher Weise. Szenarium 5: AIX-Version für alle Betriebssysteme /*-----------------*/ Hat man - z. B. als Universität - einen zentralen AIX-Server, so kann man Deleatur dort laufen lassen, etwa in einer telnet- oder ssh-Sitzung. Damit kommen auch MAC- und Linux-Nutzer in den Genuss von Deleatur (so lange es noch keinen PL/I-Compiler für diese Betriebssysteme gibt :-). Szenarium 6: Lernen von Hand /*--------------------------------------*/ Hat man einen Ordner voll Mail aus Vor-Deleatur-Zeiten gesammelt, so kann man über den Parameter "m=mail" Deleatur veranlassen, die Maildateien nicht von einem Server, sondern aus dem Ordner "mail" zu lesen. Man muss dann in üblicher Weise auf Anfragen des Programms reagieren. Szenarium 7: Lernen automatisch /*-----------------------------------*/ Hat man schon in ordentliche und Spam getrennte Ordner, so kann man in zwei Durchläufen z. B. erst den Ordner "spam" und dann den Ordner "ok" hinter dem Parameter "m=" angeben. Deleatur lernt dann ohne Nachfrage. Hinweise /***********************************************************/ Dieses Programm wurde von mir privat geschrieben und im Dienst getestet. Ich danke den beteiligten Kollegen des Zentrums für Informationsverarbeitung der Universität Münster für ihre Mithilfe und meinem Chef Dr. Held dafür, dass er mich ermuntert hat, Deleatur zu veröffentlichen (natürlich, nachdem auch er es getestet hatte :-). Dieses Programm darf von jedermann kostenlos benutzt werden. Wer aus Dankbarkeit doch einen Obolus für Deleatur entrichten möchte, darf einen Betrag seiner Wahl auf mein Konto 3 200 372 966 bei der Postbank, BLZ 20 11 00 22, überweisen. (Man sagt ja immer, die Leute seien bereit, auch freiwillig etwas für gute Software zu bezahlen. Wie viel zahlen Sie für ein Mittagessen? :-) Wenn Sie ein Konto mit IBAN und BIC brauchen, hier ist eins: IBAN: DE43 2542 0800 9185 0673 18 BIC: BHWKDE21 Außer für Windows ist Deleatur auch für OS/2 (bzw. eComStation) und AIX erhältlich; der Sourcecode ist allen Betriebssystemen gemeinsam. Deleatur ist in der Programmiersprache PL/I programmiert: "Buffer-Overflows" sind also nicht zu erwarten. :-) Alle Rechte liegen beim Autor. Die Benutzung von Deleatur erfolgt auf eigene Gefahr, in jedem Fall ist jegliche Haftung meinerseits wofür auch immer ausgeschlossen! Bitte schicken Sie Anregungen und Fehlermeldungen an: deleatur@eberhard-sturm.de Auch Erweiterungen der Sprachdatei sind natürlich hoch willkommen und würden dann in die nächste Version von Deleatur einfließen. /*---------------------------------------------------------------*/ /* Eberhard Sturm Tel: +49-251-83-31679 */ /* ZIV (Universitätsrechenzentrum) Fax: +49-251-83-31555 */ /* Röntgenstr. 9-13 */ /* D-48149 Münster E-Mail: sturm@uni-muenster.de */ /* http://www.uni-muenster.de/ZIV/Mitarbeiter/EberhardSturm.html */ /*---------------------------------------------------------------*/