Spamassassin: SA-Learn und AutoLearn

00Schneider

New Member
Hallo zusammen,

eins schon vorweg:
ja, ich bin neu hier
ja, ich habe bereits die Suchfunktion benutzt:)
ja, ich habe auch die manpages (ggf. nur nicht die richtigen) und dutzende howtos gelesen

Vorraussetzungen:
Suse 11.2
Cyrus 2.3.14
Postfix 2.6.1-2.10.1
Procmail 3.2.2
Spamassassin 3.2.5


Der IMAP-Server läuft soweit tadellos, es geht nun lediglich um die Spam-Filterung bzw. um das erlernen neuer Spam-Regeln. Ich gehe nun im Schnelldurchlauf mal meine Konfiguration durch.....



/etc/procmailrc:


Code:
SPAM="$DELIVERMAIL -f $SENDER -a $USER -m user.$USER.Junk"
[...]
# Ueberpruefung durch SpamAssassin
#
:0fw
| /usr/bin/spamc -u $USER
[...]
# Auslieferung in Spam-Ordner, wenn SPAM erkannt wurde
:0
* ^X-Spam-Status: Yes
| $SPAM
[...]

Dies funktioniert einwandfrei....alle getaggten Mails werden automatisch in die jeweiligen Junk-Ordner verschoben.


etc/mail/spamassassin/local.cf:


Code:
# use Bayes-Filter
use_bayes 1
use_bayes_rules 1
bayes_path /etc/mail/spamassassin/bayes/bayes
bayes_file_mode 0777
bayes_auto_learn_threshold_spam 5.0
bayes_auto_learn 1


Beim Starten von spamd gibts keine Fehlermeldungen, die bayes_*-Dateien werden gefunden.

Nun habe ich zwei Fragen:


1) Ich bekomme das AutoLearn nicht hin. In der Logdatei ('/var/log/mail') bzw. im Mail-Header steht zu jeder Mail "autolearn=no" oder "autolearn=failed". Kommentiere ich den bayes_path in der etc/mail/spamassassin/local.cf aus, funktioniert das autolearn kurioserweise. Dann erscheint "autolearn=spam", "autolearn=ham" oder auch einige Male "autolearn=no". Als Pfad wird dann der '.spamassassin'-Ordner aus dem jeweiligen home-Verzeichnis genommen. Was mache ich falsch? habe ich generell etwas faslch verstanden? Brauche ich den globalen bayes_path nicht zwingend, damit die Ergebnisse des sa-learn-Skripts berücksichtigt werden? Die Berechtigungen habe ich schon sehr hoch gestellt (777):

dir /etc/mail/spamassassin/bayes/ :
Code:
-rwxr-xr-x 1 root mail   90112 Oct 17 13:29 bayes_seen
-rwxr-xr-x 1 root mail 1273856 Oct 17 13:29 bayes_toks


2) Diese Frage schließt an der vorigen unmittelbar an. Hier geht es um das sa-learn-Skript. Obwohl ich das Skript seit mehreren Wochen täglich laufen lasse, habe ich nicht das Gefühl, dass es eine Wirkung hat. Wenn ich testweise gelernte Mails von einem externen Account schicke, kommen diese auch durch und werden nicht erkannt, selbst wenn Subject und Body sehr markant sind. Ich habe das Skript so eingerichtet, dass es im Netz einen öffentlichen Ordner gibt, in den alle User diejenigen Spams reinschieben, die nicht von Spamassassin getaggt wurden. Analog dazu gibt es einen Ordner für Ham.

Die Ausgabe des Skripts erscheint mir auch völlig korrekt zu sein, nämlich bspw so:

Code:
Learned tokens from 14 message(s) (75 message(s) examined)

Die Dateien bayes_seen und bayes_toks im Verzeichnis '/etc/mail/spamassassin/bayes/' werden auch jedes Mal angepackt bzw. wachsen auch stetig. Die Datei 'bayes_journal' wird hingegen nicht erzeugt, wobei ich auch nicht genau weiss, ob diese an der Stelle gebraucht wird. Wie bringe ich spamd also nun dazu, die gelernten Tokens auch anzuwenden?


Hat jemand eine Idee? Ich bin für jeden Tipp sehr dankbar. Und sorry, falls es etwas völlig dämliches sein sollte :)

Vielen Dank schonmal vorweg.


Schönen Gruß,
00Schneider
 
im Mail-Header steht zu jeder Mail "autolearn=no" oder "autolearn=failed".
Wenn "no" kommt, so wurde der Schwellenwert für Ham/Spam nicht überschritten. Einstellungsparameter: bayes_auto_learn_threshold_spam und bayes_auto_learn_threshold_nonspam.
Ein "failed" hingegen sagt, dass er nicht in die Bayes-DB schreiben kann.
Dies kann vielseitige Gründe habe. Meistens basierend auf Verzeichnisrechten.
(PS an dieser Stelle: /etc/ ist kein Verzeichnis für laufende Daten da hier eh restriktivere Schutz-Einstellungen stehen sollten. Dafür ist /var/ (./run/ ./spool/ ./lib/) vorgesehen.

Des weiteren ist hierbei die Frage, ob bei der zentralen Bayes-DB überhaupt auch Bayes-Punkte vergeben werden. Wenn nein, kann er noch nicht mal lesend auf die DB zugreifen.

Brauche ich den globalen bayes_path nicht zwingend, damit die Ergebnisse des sa-learn-Skripts berücksichtigt werden?
Entweder alles Global oder alles User-Lokal. Eine Mischung aus Beiden funktioniert nicht. Ich persönlich bin ein Fan von globaler Bayes-DB. So profitieren alle User von den Spam-Mails die nur wenige bekommen.

-rwxr-xr-x 1 root mail 90112 Oct 17 13:29 bayes_seen
-rwxr-xr-x 1 root mail 1273856 Oct 17 13:29 bayes_toks
Das ist nicht 777 sondern 755. Und was sollen DB-Dateien mit dem Execute-Flag anfangen? Korrekt: "bayes_file_mode 666" und auch ein chmod auf die Dateien.


Wenn ich testweise gelernte Mails von einem externen Account schicke, kommen diese auch durch und werden nicht erkannt
Bitte die Arbeitsweise von der Bayes-DB verstehen. Es ist eine reine Statistik über die Häufigkeit. Eine Email mit einem "markanten Wort" anzulernen, bedeutet nicht dass alle nachfolgenden Emails mit diesem Wort als Spam erkannt werden.
Hatte dazu schon mal was geschrieben: http://www.huschi.net/11_386_de-token-der-bayes-db.html

huschi.
 
Hallo Huschi,

vielen Dank für deine Antwort! Du hast natürlich recht, war bei mir alles etwas chaotisch eingerichtet, auch von den Rechten her. Habe den bayes_path jetzt auch von /etc auf /var verschoben, dann ein wenig an den Rechten rumgefummelt und schon lief das autolearn wie ich es mir gewünscht hatte.

Deinen Artikel zu den Tokens hab ich mir auch nochmal durchgelesen und meine unmittelbaren Erwartungen an das sa-learn etwas nach unten korrigiert. Augenscheinlich funktioniert nun alles perfekt.

Jedenfalls herzlichen Dank dafür, dass Du hier (und auf deiner HP) dein Wissen teilst! Auch bei der Einrichtung des IMAP-Servers bin ich schon auf deine Artikel aufmerksam geworden. Hut ab!

Hier kann geschlossen werden.
 
Back
Top