Virtual OS/2 International Consumer Education
VOICE-Homepage: http://de.os2voice.org
September 2004

Inhaltsverzeichnis
< Vorherige Seite | Nächste Seite >
Artikelverzeichnis

editor@os2voice.org


(PMM)Bogofilter - Anpaßbare SPAM-Filter

Von Walter Metcalf © September 2004, Übersetzung: Christian Hennecke

Was ist (PMM)BogoFilter?

Bei BogoFilter handelt es sich um ein auf statistischer Analyse basierendes SPAM-Filtersystem. Ein Verfahren zur Bestimmung der relativen Wahrscheinlichkeit des Vorkommens von Wörtern durch Verarbeitung von Wortlisten wurde erstmals in einer Veröffentlichung von Thomas Bayes, einem englisch-presbyterianischen Minister und Mathematiker, im 18. Jahrhundert diskutiert. Er entwickelte ein Theorem, mit dessen Hilfe die Wahrscheinlichkeit bestimmt werden konnte, mit der ein bestimmtes Wort in einer Menge Ziffern oder Buchstaben auftritt. Zur Berechnung der Verteilung sind zuerst Beobachtungen anhand einer Untermenge erforderlich. (Dies entspricht dem Training, welches bei sämtlichen Bayes'schen Filtersystemen erforderlich ist.) Das vollständige Theorem und eine Diskussion desselben ist bei Wikipedia zu finden. Bedenken Sie bitte, daß ich nicht Statistik studiert habe, so daß der obige Versuch, Bayes' sehr komplexes Theorem wiederzugeben nicht ganz korrekt sein könnte.

Die Entwicklung moderner Anti-SPAM-Dienstprogramme nach dem Bayes'schen Theorem basiert hauptsächlich auf den Werken Paul Grahams. Graham hat zum Thema SPAM mehrere Abhandlungen veröffentlicht und Vorträge auf Kongressen gehalten. Wer an den Methoden des SPAM und der SPAM-Abwehr interessiert ist, sollte seine Artikel A Plan for Spam und Better Bayesian Filtering lesen. Diese Artikel sind keine schwere Lektüre und ich fand sie faszinierend.

Eric S. Raymond, Mitgründer und Präsident der Open Source Initiative, hat basierend auf Paul Grahams Arbeit ein Unix-Programm namens BogoFilter geschrieben und SourceForge.net zur Verfügung gestellt. (Die vollständige URL des Projekts lautet bogofilter.sourceforge.net.)

Zu unserem Glück wurde BogoFilter von Yuri Dario nach OS/2 portiert und Doug Bissett entwickelte einen Algorithmus, der BogoFilter automatisch für die Zusammenarbeit mit PMMail/2 installiert und anpaßt. Das Ergebnis namens PMMBogoFilter ist ein ausgefuchstes Anti-SPAM-Werkzeug nach Bayes und läuft automatisch, während man PMMail/2 zum Lesen der E-Mail benutzt.

Inwiefern ist BogoFilter anders?

Es gibt zwei grundsätzliche Arten von Anti-SPAM-Filtersystemen: Bayes'sche und regelbasierte. Bei PMMBogoFilter handelt es sich um einen Vertreter der Bayes'schen Systeme, bei JunkSpy um einen der regelbasierten.

PMMBogoFilter unterscheidet sich auf vielfältige Weise von regelbasierten Systemen:

  1. PMMBogoFilter ist gratis.

  2. Bei PMMBogoFilter (wie bei allen Bayes'schen Systemen) wird für die Entscheidung, ob es sich bei einer Nachricht um SPAM handelt oder nicht, jedes Wort der Nachricht herangezogen. Bei regelbasierte Systemen andererseits ist die Analyse einer Nachricht auf die Suche nach in ihrer Datenbank abgelegten Schlüsselwörtern oder -ausdrücken beschränkt.

  3. PMMBogoFilter verwendet zum Feststellen, welche Nachrichten als SPAM einzuordnen sind, statistische Verfahren. Kurz gesagt geschieht dies über die Pflege zweier Listen¹: einer mit Wörtern, die gewöhnlich in SPAM auftauchen, und einer mit solchen, die in HAM auftauchen (d.h. bei denen es sich nicht um SPAM handelt). Beim Empfang von E-Mails wird jedes Wort sowohl mit der SPAM-Wortliste als auch der HAM-Wortliste verglichen. BogoFilter verwendet für jedes Wort relative Anzahlen, um einen Schalter (namens BOGOSITY) zu setzen und einen Zähler (namens SPAMICITY) anzupassen. Ist die Verarbeitung einer Nachricht abgeschlossen, wird über die beiden Werte von BOGOSITY und SPAMICITY entschieden, ob die Nachricht SPAM ist oder nicht.

  4. PMMBogoFilter erfordert - wie andere Bayes'sche Filter - Training.

    1. Hierauf gehe ich etwas später genauer ein. Zum jetzigen Zeitpunkt reicht es festzustellen, daß man PMMBogoFilter nach der Installation darauf trainieren muß, was man als normale Mail (HAM) und was als SPAM ansieht.

    2. Dies zieht zwei wichtige Konsequenzen nach sich:

      1. Für das Training des PMMBogofilter muß nach der Installation ein Dienstprogramm auf eine große Anzahl von Beispiel-Mail angewendet und ein weiteres Dienstprogramm in regelmäßigen Abständen ausgeführt werden. Dank PMMails fortgeschrittener Funktionen und Doug Bissets cleverem Design des Installationsprogramms läßt sich die regelmäßige Wartung mit Hilfe von Freeware wie Cron oder kommerziellen Programmen wie Relish von Sundial Systems weitgehend automatisieren.

        • Auch wenn die Pflege automatisiert wurde, sind immer noch gewisse manuelle Wartungs- und Überwachungsarbeiten erforderlich, um das bestmögliche Ergebnis zu erzielen. Deshalb ist PMMBogoFilter für Neulinge und Personen, die nur wenig E-Mail und sehr wenig SPAM erhalten, eventuell nicht die erste Wahl.

      2. PMMBogoFilter läßt sich so anpassen, daß seine Datenbank der Art E-Mail, die man erhält, und den eigenen Bedürfnissen und Vorlieben weitgehend entspricht.

        • Im Gegensatz dazu werden regelbasierte Systeme gewöhnlich von Software-Häusern verkauft, die - mitunter gegen Gebühren - regelmäßige Aktualisierungen der Datenbank anbieten. (Dies ist erforderlich, da regelbasierte Systeme keine eingebauten Lernmöglichkeiten besitzen.) Der größte Schwachpunkt dieses Ansatzes ist, daß die Datenbank und jegliche Aktualisierungen für sämtliche Kunden des Herstellers gleichermaßen geeignet sein müssen.² Infolgedessen ist es sehr unwahrscheinlich, daß die Datenbank und Aktualisierungen einem beliebigen Einzelkunden, wie Ihnen, wie angegossen sitzen.

        • PMMBogoFilter andererseits ist mit einem ausgeklügelten, eingebauten Lern- oder Selbst-Training-Verfahren ausgerüstet. Zusammen mit dem oben angesprochenen regelmäßigen Training ist PMMBogoFilter allein in der Lage, genauere Ergebnisse zu liefern als die meisten regelbasierten Systeme, und das, ohne von allgemeinen Aktualisierungen von außerhalb abhängig zu sein.

Installation von PMMBogoFilter

Die definitive Informationsquelle für Installationsanweisungen befindet sich in der Hauptdatei der Dokumentation, PMMBogoFilter.html, welche dem Proramm beiliegt. (Dieses Dokument steht auch im Internet zur Verfügung.) Der Installationsvorgang erzeugt ein anklickbares Objekt für das Dokument auf der Arbeitsoberfläche. Aus diesem Grund gebe ich nur eine Übersicht der wichtigsten Installationsteile zur Verdeutlichung der Konfiguration. Wer PMMBogoFilter installieren will, muß PMMBogoFilter.html mindestens einmal komplett gelesen haben, bevor er/sie sich an die Nutzung des Programms wagt.

  1. Erfordernisse

    1. OS/2 oder eCS.

    2. Für den Betrieb der OS/2- oder eCS-Version ausreichende Hardware.

    3. Ein Internetzugang und ein POP-E-Mail-Konto (d.h. kein web-basiertes).

    4. Classic REXX installiert.

    5. PMMail für OS/2 1.96a oder v2.x installiert.

    6. WarpIN Version 1.0.1 oder höher installiert. Erhältlich auf der Web-Site XWorkplace.org unter http://xworkplace.org/proj_warpin_download.html.

    7. Das ZIP-Archiv einer der angegebenen BogoFilter-Versionen (derzeit 0.15.3.2 oder 0.92.4) muß sich im selben Verzeichnis befinden wie die zu installierende PMMBogoFilter-Datei.

    8. Um die neueste Version von BogoFilter (0.92.4) nutzen zu können, muß ein 32-Bit TCP/IP-Stack installiert sein.³ Yuri Dario ist bemüht, diese Einschränkung zu entfernen.

  2. Ablauf

    1. Sobald alles wie oben beschrieben vorbereitet ist, kann der Installationsvorgang durch Doppelklick auf das WarpIN-Archiv des gewünschten PMMBogoFilter eingeleitet werden.

    2. Wurde PMMail von seinem Installationsprogramm ordnungsgemäß installiert, sollte alles wie geplant ablaufen und PMMBogoFilter ordnungsgemäß auf der Festplatte und in PMMail installiert werden. Es gibt jedoch mehrere Situationen, in denen das Installationsprogramm einen Schritt überspringt. Dies geschieht gewöhnlich, um potentielle Datenverluste zu vermeiden. Es bedeutet jedoch, daß man überprüfen muß, ob sich alles am richtigen Platz befindet. Es folgt eine Zusammenfassung der Änderungen an PMMail, damit sich diese leichter überprüfen lassen.

    3. Das Installationsprogramm installiert drei Objekttypen, und zwar:

      1. Die Programm- und Datendateien im PMMail-Verzeichnis und auf der Arbeitsoberfläche. Um diese muß man sich im allgemeinen nicht kümmern.

      2. Der Eintrag auf der Seite REXX des Einstellungsnotizbuch des Kontos.

      3. Ein Satz von vier Filtern auf der Seite Filters des Einstellungsnotizbuch des Kontos.

        Beachten Sie, daß diese Einträge für jedes vorhandene Konto einmal installiert werden (es sei denn, das Installationsprogramm bemerkte wie oben erwähnt Unregelmäßigkeiten in der Konfiguration).

    4. Die folgenden Tabellen wurden der Dokumentationsdatei http://www3.telus.net/public/bissett1/PMMBogoFilter.html der Annehmlichkeit halber und mit Erlaubnis des Entwicklers entnommen. Sie enthalten die Informationen, die im Einstellungsnotizbuch eines jeden PMMail-Kontos vorhanden sein sollten.

      1. Durch diesen REXX-Eintrag wird PMMBogoFilter jedesmal aufgerufen, wenn Mail gelesen wird.

        • Wenn Sie PMMBogoFilter bei der Ausführung zusehen wollen, markieren Sie Execute Script in Foreground. Aufgrund eines Fehlers in PMMail funktioniert dies aber nicht immer.

      2. Dieser Filter überprüft, ob BogoFilter der Meinung ist, daß es sich bei der E-Mail um SPAM handelt:

        Description:
        Bogo SPAM
        Art (Simple/Complex):
        Complex
        Filter-Anweisung:
        ((header="spamicity=1")
        |(header="spamicity=0.9")
        |(header="spamicity=0.8")
        )
        Type:
        Incoming und Manual
        Actions:
        Delete Message Local copy
      3. Dieser Filter überprüft, ob BogoFilter der Meinung ist, daß es sich bei der E-Mail um SPAM handelt:

        Description:
        Bogo Filter
        Art (Simple/Complex):
        Simple
        Search:
        <Header>
        For:
        X-Bogosity: Yes
        No Connective
        Type:
        Incoming und Manual
        Actions:
        "Move message" in den Ordner BOGO SPAM
        (Oder nach Belieben in einen beliebigen anderen Order, der vorhanden sein muß, bevor er ausgewählt werden kann. Wenn das Installationsprogramm den Ordner Bogo Spam nicht in jedem Konto erzeugt hat, müssen Sie dies innerhalb PMMails nachholen.)

      4. Mit diesem Filter wird BogoFilter antrainiert, daß es sich bei einer Nachricht um SPAM handelt:

        Description:
        Train as SPAM
        Art (Simple/Complex):
        Complex
        Filter-Code:
        header.subject="a"|!(header.subject="a")
        Type:
        Manual
        Actions:
        User hook (background)
        (oder foreground, um DEBUG=1 benutzen zu können)
        Im Eingabefeld Command:
        D:\bsw-inc\user_tools\pmm_train_spam.cmd
        (an Ihre Installation anpassen)

        Optional kann diesem Filter eine zweite (oder weitere) Aktion zugeordnet werden (geschieht jetzt standardmäßig):

        Delete Message
        Local copy (verschiebt in Ordner Trash)
      5. Mit diesem Filter wird BogoFilter antrainiert, eine Nachricht nicht als SPAM zu betrachten:

        Description:
        Train as NOT SPAM
        Art (Simple/Complex):
        Complex
        Filter-Code:
        header.subject="a"|!(header.subject="a")
        Type:
        Manual
        Actions:
        User hook (background)
        Im Eingabefeld Command:
        D:\bsw-inc\user_tools\pmm_train_no_spam.cmd
        (an Ihre Installation anpassen)

        Optional läßt sich diesem Filter eine zweite (oder weitere) Aktion hinzufügen:

        Move Message
        Inbox (oder an einen beliebigen anderen Ort)

        Ausführliche Erläuterungen dazu, wie Probleme mit fehlenden oder inkorrekten Anweisungen behoben werden können, finden Sie im Dokument PMMBogoFilter.html.

Nutzung von PMMBogoFilter

Hat man die Installation überprüft und notwendige Anpassungen vorgenommen, läuft PMMBogofilter automatisch und sollte nur geringe Aufmerksamkeit erfordern.

Nun sollten Sie den Hauptordner von PMMail aufrufen und eine oder mehrere Nachrichten eines Kontos auswählen, für das Sie PMMBogofilter installiert haben. Führen Sie einen Rechtsklick auf der/den ausgewählten Nachricht(en) aus und Sie werden bemerken, daß das Kontextmenü einen neuen Eintrag besitzt: Apply Manual Filters. Klicken Sie mit der linken Maustaste auf den Pfeil; es wird dann eine Gruppe auswählbarer Einträge angezeigt. Siehe unten:

Diese neuen Optionen versetzen den Anwender in die Lage, die oben beschriebenen Filter manuell auszuführen. Der gebräuchliste Anwendungsfall dieser Optionen ist jedoch das Training von PMMBogofilter.

Abhängig von den genauen Filtereinstellungen legt PMMBogoFilter Nachrichten in einem der Ordner Bogo Spam (normalerweise automatisch vom Installationsprogramm angelegt), Trash oder Inbox ab. Es ist ebenfalls möglich, bekannte SPAM sofort löschen zu lassen, aber dies ist nicht zu empfehlen.

Bevor man PMMBogofilter automatisch auf dem System laufen läßt, muß es auf sowohl SPAM als auch HAM (normale Nachrichten), die sich bereits auf der Festplatte befinden, trainiert werden. Je mehr E-Mail für das Training PMMBogoFilters verwendet wird, desto besser (natürlich in Maßen), aber laut der BogoFilter-Dokumentation sind für ordnungsgemäßen Betrieb je 500 gute und schlechte Nachrichten zwingend erforderlich. Wählen Sie eine Reihe von Nachrichten aus, die als schlecht klassifiziert werden sollen, und wählen Sie die o.g. Option Train as SPAM. Tun Sie dann das gleiche mit einer Reihe von als gut zu klassifizierenden Nachrichten und wählen Sie Train as NOT SPAM.

Sie sollten die Ordner Bogo Spam und Trash regelmäßig auf Nachrichten überprüfen, die PMMBogoFilter nicht korrekt oder gemäß Ihren Wünschen verarbeitet hat. Wenn Sie in den Ordnern Bogo Spam oder Trash fälschlich als schlecht erkannte Nachrichten finden, wählen Sie diese aus und wie oben beschrieben die Option Train as NOT SPAM. Finden Sie in Inbox oder anderen Ordnern SPAM-Nachrichten, wählen Sie diese aus und die Option Train as SPAM. Durch regelmäßiges Ausführen dieser Vorgänge sichert man ein genaues und effizientes Funktionieren von PMMBogoFilter.

Das letzte, worum man sich kümmern muß - und dies hat sich für mich als besonders wichtig herausgestellt - ist die Wortliste (oder Datenbank). Läßt man PMMBogoFilter automatisch ohne Eingriff laufen, wird die Wortliste unendlich groß. Dadurch wird die E-Mail-Verarbeitung verlangsamt und es kann sogar zu Fehlern kommen. Große Wortlisten entstehen hauptsächlich durch redundante Informationen. Doug Bisset hat ein Dienstprogramm bereitgestellt, mit dem sich diese Schwierigkeiten verringern lassen. Das Dienstprogramm trägt den Namen pmm_bogo_maint.cmd. Um die Wortliste in optimalem Zustand zu halten, muß das Dienstprogramm regelmäßig ausgeführt werden. Die Abstände richten sich zu einem gewissen Maß nach der Situation des Anwenders, aber bei mir hat sich herausgestellt, daß es täglich ausgeführt werden muß. (Versuchen Sie es einmal monatlich oder wöchentlich und beobachten Sie sowohl die Größe der Wortliste und die Verlangsamung der E-Mail-Verarbeitung.) Die beste Möglichkeit sicherzustellen, daß es regelmäßig ausgeführt wird, ist der Einsatz eines Steuerprogramms wie cron oder Relish. Cron ist Freeware und kann bei Hobbes heruntergeladen werden; Relish ist ein hochentwickeltes Terminmanagementprogramm und von Sundial Systems zu beziehen.

Die gute Nachricht ist, daß ich, seitdem ich PMMBogoFilter korrekt trainiert habe, die Pflege der Wortliste in optimalen Abstände betreiben lasse und PMMBogoFilter Zeit gegeben habe, sich an meine E-Mail zu gewöhnen, beim SPAM-Filtern wesentlich bessere Ergebnisse erziele als meinem vorher eingesetzen kommerziellen, regelbasierten Anti-SPAM-Werkzeug. Zudem tauchen beim Betrieb meiner PMMBogoFilter-Konfiguration weniger Schwierigkeiten auf als beim vorherigen Werkzeug.


¹Bei neueren PMMBogoFilter-Versionen befinden sich beide Wortlisten in einer Datei.

²Manche regelbasierten Anti-E-Mail-Systeme sind mit Dienstprogrammen ausgestattet, die dem einzelnen Anwender eine beschränkte Anpassung der Datenbank erlauben.

³OS/2 Warp und OS/2 Warp 4 wurden beide mit 16-Bit-Versionen des TCP/IP (v4.0 oder niedriger) ausgeliefert. Wenn Sie eines dieser Betriebssysteme besitzen und BogoFilter Version 0.92.4 einsetzen wollen, müssen Sie die TCP/IP-Version mit 32-Bit von IBM kaufen. Ausführlichere Informationen erhalten Sie auf Alex Taylors Web-Site unter http://eddie.cis.uoguelph.ca/~alex/os2/fixpaks/netfixes.html.

Besitzer von eComStation dürften bereits eine 32-Bit-Version haben. Wer sich nicht sicher ist, kann an einer OS/2-Befehlszeile SYSLEVEL eingeben. Ist TCP/IP 4.1 oder neuer nicht installiert, laden Sie das neueste Paket von http://www.ecomstation.com herunter und installieren es.

Daten und Quellen:

Thomas Bayes: http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Bayes.html
Bayes'sches Theorem: http://en.wikipedia.org/wiki/Bayes'_theorem#Statement_of_Bayes.27_theorem
Paul Graham: http://www.paulgraham.com/paulgraham/antispam.html
"A Plan for Spam": http://www.paulgraham.com/spam.html
"Better Bayesian Filtering": http://www.paulgraham.com/better.html
Eric S. Raymond: http://www.catb.org/~esr/
Sourceforge: http://sourceforge.net/
Bogofilter-Projekt bei Sourceforge: http://bogofilter.sourceforge.net
JunkSpy: http://www.junkspy.com
Cron: http://hobbes.nmsu.edu/pub/os2/util/schedule/cron.zip
Sundial Systems: http://www.sundialsystems.com
PMMBogofilter-Dokumentation: http://www3.telus.net/public/bissett1/PMMBogoFilter.html
XWorkplace.org: http://xworkplace.org
WarpIN-Download: http://xworkplace.org/proj_warpin_download.html
Netzwerk-Fixpaks: http://eddie.cis.uoguelph.ca/~alex/os2/fixpaks/netfixes.html
eComStation: http://www.ecomstation.com


Artikelverzeichnis
editor@os2voice.org
< Vorherige Seite | Inhaltsverzeichnis | Nächste Seite >
VOICE-Homepage: http://de.os2voice.org