Bogofilter ist ein Filterprogramm, das zur Aussortierung unerwünschter E-Mails verwendet werden kann. Bogofilter wurde zuerst von Eric S. Raymond entwickelt, wird aber seit 2002 von einer größeren Entwicklergruppe weiterentwickelt und ist Freie Software.
Das Programm ist in der Programmiersprache C geschrieben und läuft sehr schnell. Es stützt sich bei der Analyse von Mails, anders als etwa SpamAssassin, nur auf statistische Algorithmen (Bayesscher Filter), unter anderem jene aus dem Artikel "A Plan For Spam" von Paul Graham.
Bogofilter kann auf unterschiedliche Weise in ein Mailsystem eingebunden werden, benötigt aber die Interaktion mit dem Benutzer, der Mails als Spam/Ham klassifizieren muss. Wurde das Programm ausreichend trainiert, sind damit, wie bei vergleichbaren Programmen, sehr gute Erkennungsquoten möglich.
Quelle: Bogofilter ? Wikipedia
Ich nutze Bogofilter seit ungefähr zwei Monaten und bin sehr zufrieden damit. Die Integration erfolgt bei mir per Procmail. Alle Benutzer nutzten die gleiche Bayes Datenbank.
1) Installation
Debian:
Code:
aptitude install bogofilter
Code:
emerge bogofilter
2) Konfiguration
In dem Verzeichniss /var/spool/bogofilter liegt die globale Bayes Datenbank die alle Benutzer lesen können.
Code:
mkdir /var/spool/bogofilter
chown -R root:root /var/spool/bogofilter
chmod -R u=rwx,g=rx,o=rx /var/spool/bogofilter/
3) Integration
procmailrc:
Code:
MAILDIR=$HOME/mail
DROPPRIVS=yes
VERBOSE=yes
LOGFILE=$HOME/log/procmail.log
:0 fw
| /usr/bin/bogofilter -e -p -l -d /var/spool/bogofilter
:0
* ^X-Bogosity: Spam
$MAILDIR/.Spam/
:0
$MAILDIR/
4) Datenbank anlernen
Ich lasse regelmäßig alle Spamordner als Spam lernen. Vorraussetzung dafür ist natürlich, dass eure Benutzer die Spammails nicht löschen sondern in den Ordner Spam verschieben. Die normale Inbox dient als Quelle für Hammails.
Code:
#!/bin/sh
# settings
list=`ls /var/mail | grep mail`
path=/var/spool/bogofilter
# learn ham + spam
for user in $list; do
/usr/bin/bogofilter $1 -s -l -B /var/mail/$user/mail/.Spam -d $path
/usr/bin/bogofilter $1 -n -l -B /var/mail/$user/mail -d $path
done
# set permissions
chmod -R u=rwx,g=rx,o=rx /var/spool/bogofilter
Dieses Script habe ich unter /etc/cron.daily abgelegt, damit es einmal am Tag ausgeführt wird. Wer das Script mit dem Parameter "-v" aufruft bekommt eine erweiterte Ausgabe wie viele Emails gelernt wurden. /etc/cron.daily/bogofilter -v
Das Script muss an euer System angepasst werden. Bei mir liegen die Maildirs unter /var/mail und beginnen alle mit "mail" daher gibt mir list=`ls /var/mail | grep mail` eine Liste alle Maildirs zurück.
Update (13.01.09 22:40): Ich habe den Hinweiß von Huschi weiter verfolgt und mir die Dokumentation von Bogofilter genauer angeschaut. Die Bogofilter Dokumentation besagt das jeder Fehler berichtigt werden sollte.
As bogofilter sometimes misclassifies a message, monitoring is necessary to correct any mistakes
Ich habe also das "-u" aus der procmailrc entfernt. Weiterhin habe ich den Cron editiert und die Funktion zum rotieren der Bayes Datenbank entfernt. An dieser Stelle nochmal ein Dankeschön an Huschi!
Last edited by a moderator: