Moin,
On Tue, 11 Oct 2005 13:42:16 +0200
Christoph Lemmer
Ich bringe dem Spamfilter mit salearn Spam Mails bei. Aber scheinbar verwendet er die Informationen nicht.
Du hast aber schon ein paar hundert "schlechte" _und_ "gute" Mails angelernt, oder? Sonst kann der Bayes-Filter eh nicht laufen. salearn packt die Informationen in das Homeverzeichnis des Users, der es aufruft. Das sollte dann also auch der sein, der die Mails empfängt. Das wird eine Nummer komplizierter, wenn der normale Mailtransportweg nur einen Systemnutzer (z.B. "cyrus") verwendet und die Benutzerverwaltung ansonsten selbst in die Hand nimmt. Dann muss man SpamAssassin schon explizit mitteilen, wo es die Konfiguration für einen bestimmten Nutzer findet. Meine Konfig weicht etwas ab, da ich SpamAssassin direkt aus Postfix anspreche (via "pipe") und auf amavisd verzichte (Virenfiltern ist hier nicht nötig). Ich nutzer aber "virtuelle Nutzer", für die individuell Spam gelernt wird (bei mir via cron-Job in der Nacht). Relevante Teile meiner Konfiguration: ---/etc/sysconfig/spamd--- SPAMD_ARGS="-d -c -a -x -V /home/virtual -u mail" --- ---/etc/postfix/master.cf--- [...] safilter unix - n n - 10 pipe flags=Rq user=mail argv=/usr/bin/spamc -u ${user} -e /usr/lib/sendmail -i -f ${sender} -- ${recipient} smtp inet n - n - - smtpd -o content_filter=safilter:dummy [...] --- d.h. also, ich teile meinem SA explizit mit, von welchem (virtuellen) Nutzer die Konfiguration gelesen werden soll. Es läuft aus OS-Sicht bei mir unter dem User "mail". Die Daten der virtuellen Nutzer liegen alle unter /home/virtual/(Nutzername)/. Auch SA-learn muss gesagt bekommen, für welchen virtuellen Nutzer es die Daten speichern sollen. Bei mir macht das wie gesagt cron über nacht, es ruft folgendes auf: ---eigenes-Skript--- cat $(dirname $0)/../conf/users.local-spamcheck|while read USER; do echo "running sa-learn for user $USER" [ -d /var/spool/imap/user/$USER/Spam/LearnHam ] && HOME=/home/virtual/$USER sa-learn -p /home/virtual/$USER.prefs --ham "/var/spool/imap/user/$USER/Spam/LearnHam/*." [ -d /var/spool/imap/user/$USER/Spam/LearnSpam ] && HOME=/home/virtual/$USER sa-learn -p /home/virtual/$USER.prefs --spam "/var/spool/imap/user/$USER/Spam/LearnSpam/*." done --- In "users.local-spamcheck" sind bei mir die Nutzer aufgeführt, die persönliche Spam-Filterung aktiviert haben. Das Skript muss sich - je nachdem unter welchem Nutzer es läuft - hinterher evtl. noch um die Zugriffsrechte für die Bayes-Datenbanken und Konfigurationsfiles kümmern - der Nutzer, unter dem spamd läuft, braucht auf jeden Fall Leserechte. Gruß, -hwh