Spamassassin
Installation: apt-get install spamassassin
Die Installation zieht noch ein paar Pakete hinterher, das ist aber notwendig.
Hernach muß die Datei /etc/default/spamassassin editiert werden:
- ENABLED=1
- OPTIONS="--create-prefs --max-children 5 --helper-home-dir --listen-ip=127.0.0.1"
Jetzt ist die Datei /etc/spamassassin/local.cf dran. Ich empfehle folgende Settings:
lock_method flock
ok_languages en de
ok_locales en
internal_networks 192.168.59/24
trusted_networks 217.28.96/20 192.168.59/24
report_safe 0
required_score 4.0
bayes_learn_during_report 0 # Das erst ab ca. 1000 Spam/Ham Mails einschalten
#
use_dcc 0
use_pyzor 0
#
bayes_expiry_max_db_size 500000
bayes_auto_expire 0
bayes_learn_to_journal 0
bayes_auto_learn_threshold_spam 6
# Rewrite scoring a bit to get more dependency on bayes
score BAYES_99 (6)
Natürlich müssen ein paar Variablen angepaßt werden:
- internal_networks muß auf die eigene LAN-IP geändert werden.
- trusted_networks kann weggelassen werden, die eingesetzte IP Range ist die meines Arbeitgebers
Jetzt kann Spamassassin gestartet werden: /etc/init.d/spamassassin start
Pro User, der den Spamfilter (erstmal nur zum Taggen von Nachrichten) benutzen möchte, legt sich eine Datei
.procmailrc in seinem Home an. Inhalt:
:0fw:
|/usr/bin/spamc
Fertig. Anhand der in der Mail hinzugefügten Header kann das Mailprogramm nun die Mails sortieren. Das kann man
-so man IMAP Zugriff hat oder mit Pine Mails bearbeitet- auch schon von procmail(1) vorfiltern lassen. An obige
.procmailrc muß folgendes angehängt werden:
:0:
* ^X-Spam-Status: Yes, .*$
mail/Spam
Damit landen die Mails dann automatisch in einem Ordner "Spam".
Allerdings ist die Erkennungsrate mit dem Standardspamassassin lächerlich gering. Daher empfehle ich, den SA
als lernfähige Variante einzusetzen. An der Konfiguration ändert sich im Großen und Ganzen nichts. Allerdings
muß man eine Datenbank mit Prüfsummen aufbauen. Das geht so:
- Mailordner mit "guten" Mails in die DB einlesen: sa-learn --showdots --mbox --ham /var/mail/poc
- Mailordner mit "schlechten" Mails in die DB einlesen: sa-learn --showdots --mbox --spam mail/Spam
Wenn bayes_min_ham_num gute und bayes_min_spam_num (default 200) schlechte Mails zusammengesammelt wurden,
setzt der Bayes-Mechanismus ein und klassifiziert diese dann weiterhin. Wieviele Mails schon klassifiziert wurden kann man mit
sa-learn --sync; sa-learn --dump magic feststellen. nham und nspam sind die Variablen, auf die es ankommt.
Wenn mal eine Menge Mails zusammengekommen ist (so an die 1000 Stück pro Kategorie), dann kann bayes_learn_during_report
auf 1 gesetzt werden. Der SA lernt dann selbständig Mails mit hohem Score als Spam und Mails mit kleinem Score als Ham an.
Diese Variablen oben herunterzusetzen, damit Bayes früher anspringt, ist möglich, man muß aber dann mehr Handarbeit
durch Fehlklassifizierungen einkalkulieren. Siehe unten.
Die Routinen zum erzeugen der Datenbank erzeugen mit ext3 (Journal) erhebliche (!) Plattenlast, was gerade bei IDE
Maschinen dafür sorgen dürfte, daß man nebenher wenig vernünftig arbeiten kann. Wenn man also einmalig z. B. sein
mehrere 100MB aus 10 Jahren umfassendes Mailarchiv einlesen möchte, so empfiehlt es sich, dies nicht auf einer
ext3-Partition zu tun:
- Ext3 vorher ausschalten (je nach dem nur mit Reboot möglich)
- sa-learn einen anderen Pfad für die Datenbank mitgeben
- Letzter Punkt kombinieren mit einer RAM-Disk
Diese manuellen Aufrufe kann man natürlich alle per cron automatisieren. Mails in Mailordnern, die schon klassifiziert wurden, werden
nicht nocheinmal in der Datenbank vermerkt. Wenn eine Mail vorher allerdings (versehentlich) als schlecht klassifiziert wurde
und wird nochmal neu mit --ham klassifiziert, so fliegt der Spameintrag aus der DB raus und es wird ein Hameintrag daraus.
Dadurch kann man die Mailordner schadlos immer wieder einlesen und falsch klassifizierte Mails einfach in der Gegend herumschieben
bis sie im richtig zu klassifizierenden Ordner gelandet sind.
Die folgenden Verbesserungen betreffen das Image in Version 1.0 und werden in der nächsten Version berücksichtigt:
- Wenn bind installiert, dann host mit installieren (ersetzt bind9-host)
- Iptables fehlt im Image
- Fileutils fehlt im Image
- mv ppp_on_boot.dsl no-ppp_on_boot.dsl
- /etc/inittab pppd-Aufruf nach /dev/null
- Kein NAT-Script
Die folgenden Verbesserungen betreffen das Image in Version 1.1 und werden in der nächsten Version berücksichtigt:
- Bildschirmschoner ist eingeschaltet per Default (/etc/console-tools/config -> BLANK_TIME)
- /mnt/bup_* kann weg (Leere Verzeichnisse)
- Für immer englische Sprache/etc/environment -> auskommentieren
- Mailaliases bereinigen (alles mit poc rauslöschen)
- /etc/defaults/useradd anlegen mit sinnvollen Defaults (User bekommen derzeit keine shell)
- /etc/skel/.bashrc -> PS1/PS2
auskommentieren, damit der Prompt global voreingestellt werden kann
- /etc/apt/apt.conf hier steht fälschlicherweise leela als Proxy drin - Datei kann komplett weg.
- /etc/apt/sources.list, diese muß nach dem Etch-Release angepaßt werden.
Die folgenden Verbesserungen betreffen das Image in Version 2.0 und werden in der nächsten Version berücksichtigt:
Als größte Neuerung ist das 2er Image jetzt nicht mehr Debian Sarge (3.1), sondern Debian-Etch (4.0) basiert.