Cyrus und SpamAssassin
Heute habe ich endlich mal was gegen die Spamflut auf meinem Mailserver getan. Gut, wenn der content_filter im Postfix auskommentiert ist kann as ja auch nicht klappen
…
Zusätzlich habe ich eine Möglichkeit geschaffen, dass alle User (die ich als vertrauenswürdig einstufen kann) den Bayes-Filter per sa-learn füttern können.
Als IMAP-Server setze ich Cyrus ein, der jede Mail als einzelne Text-Datei in /var/spool/cyrus/mail/b/user/benutzer/ordner/x. ablegt. Unter der Annahme, dass der Benutzer seine Mails im vordefinierten Spamordner “Junk” ablegt, kann ich mir per Skript also alle Spammails heraussuchen und in sa-learn einspeisen. Das liegt dann in /usr/local/bin/sa-learn-cyrus-users.sh:
#!/bin/sh
find /var/spool/cyrus/mail -wholename “*/user/*/Junk/*.” >/tmp/sa-learn.lst
sa-learn –spam -f /tmp/sa-learn.lst >/var/log/sa-learn.logexit 0
Kurz und schmerzlos, tut aber seinen Dienst. Wichtig ist der Punkt am Ende des find-Argumentes -wholename, da sonst auch die internen Index-Dateien des IMAP-Servers gescannt werden!
Zur Zeit suche ich noch nach einer Lösung für die folgenden Probleme:
- Keine “falschen” Spammails indizieren (mutwillig durch Benutzer oder durch “Unfall” im Junk-Ordner befindlich)
- Indizierte Spammails löschen
Eventuell werde ich für SALearn noch einen speziellen Ordner benutzen.
Für Kommentare bin ich jederzeit offen

Mai 26th, 2008 at 16:18
Ich benutze jetzt zu diesem Zweck einen speziellen IMAP-Ordner namens SALearn. So werden schon als Spam klassifizierte Mails nicht noch einmal als Spam gelernt und fälschlicherweise als Spam klassifizierter Ham wird nicht als Spam erlernt.