Login
Newsletter
Werbung

Do, 7. August 2014, 15:00

Spamfilterung mit bogofilter

Von dknof

Anwendung in der Konsole

Im folgenden Beispiel wird das Verfahren von bogofilter verdeutlicht. Dabei wird von einer leeren Datenbank ausgegangen, die wie angegeben trainiert wird. Die verwendeten Programme bogofilter, bogolexer und bogoutil sind übrigens Bestandteil des bogofilter-Pakets. Damit die Ausgabe übersichtlich ist, wird kein echtes E-Mail-Format verwendet, die Worte werden nur durch einen Zeilenumbruch (»\n«) getrennt. Der Befehl

$ echo "Viagra\nLinux\nBank" | bogolexer

gibt aus, welche Worte (tokens) von bogofilter identifiziert werden und somit für die Filterung verwendet werden. Aufgrund der Vereinfachung in der Eingabe werden die Worte als Kopfzeilen einer E-Mail betrachtet und erscheinen mit vorangestelltem head:. Dieses wird im Folgenden ignoriert.

Mit den folgenden beiden Befehlen registriert man das Wort »Viagra« als Spam und »Linux« als Ham (die Option -s steht für »Spam«, -n für »nicht Spam«).

$ echo "Viagra" | bogofilter -s
$ echo "Linux" | bogofilter -n

Bei Bedarf wird die Wortdatenbank unter ~/.bogofilter/wordlist.db automatisch angelegt.

Den Inhalt der Wortdatenbank gibt man mit dem Befehl

$ bogoutil -d ~/.bogofilter/wordlist.db

aus. Die Ausgabe head:Viagra 1 0 bedeutet, dass Viagra einmal in einer als Spam registrierten E-Mail vorkam und keinmal in einer als Ham registrierten.

Nachdem der Filter trainiert ist, kann eine E-Mail klassifiziert werden. Wie oben bereits erwähnt, verwendet bogofilter die drei Klassifikationen »Spam«, »Ham« und »Unbekannt«.

Aufruf in der Konsole

Dr. Diether Knof

Aufruf in der Konsole

Der Befehl

$ echo "Viagra" | bogofilter -T

zeigt mit der Ausgabe S 0.991605 an, dass für den Text »Viagra« die Klassifikation »Spam« ist, mit der angegebenen Bogosity. Analog wird »Linux« als Ham klassifiziert. Dementsprechend gibt der folgende Befehl

$ echo "Linux\nViagra" | bogofilter -T

die Klassifikation »Unbekannt« aus, da die Bogosity dicht bei 1/2 liegt. Werden ausschließlich die Spam-Worte betrachtet (»Viagra«), ist dies Spam; werden ausschließlich die Ham-Worte betrachtet (»Linux«), ist dies Ham. Durch die Kombination beider Wahrscheinlichkeiten zur Bogosity heben sich beide Klassifikationen größtenteils auf. Mit dem Befehl

$ echo "Bank" | bogofilter -s

registriert man »Bank« als Spam. Der Befehl

$ echo "Bank" | bogofilter -T -u

klassifiziert »Bank« als Spam und führt eine automatische Registrierung als Spam durch. Danach ist die Ausgabe des Befehls

$ bogoutil -d ~/.bogofilter/wordlist.db

»Bank 2 0«, weil »Bank« nun zweimal als Spam klassifiziert wurde. Eine Klassifikation von »Bank« als Spam entfernt man mit dem Befehl

$ echo "Bank" | bogofilter -S -n

und klassifiziert »Bank« gleichzeitig einmal als Ham. Daher gibt der folgende Befehl

$ bogoutil -d ~/.bogofilter/wordlist.db

die Ausgabe Bank 1 1 aus. So wie -S der Gegenpart zu -s ist, ist -N der Gegenpart zu -n. Zu guter Letzt löscht der Befehl

$ rm ~/.bogofilter/wordlist.db

die Wortdatenbank, damit der produktive Einsatz unvorbelastet gestartet werden kann.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung