PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Spamassassin] global bayes-db



prophet`
08.12.06, 10:26
Hallo zusammen,
ich habe nochmal eine kleine Frage bezüglich der Bayes-DB vom Spamassassin (Version 3.0.3). Zur Zeit habe ich folgende Konfiguration:


# How many hits before a message is considered spam.
required_score 5.0

# Change the subject of suspected spam
rewrite_header subject *****SPAM*****

# Encapsulate spam in an attachment (0=no, 1=yes, 2=safe)
report_safe 1

# Enable the Bayes system
use_bayes 1

# Enable Bayes auto-learning
bayes_auto_learn 1

bayes_path /etc/spamassassin/bayes_db/bayes
bayes_file_mode 0666

auto_whitelist_path /etc/spamassassin/bayes_db/auto
auto_whitelist_file_mode 0666

# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1

# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
# - english german
# ok_languages en de

# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
# ok_locales en de


Die Bayes-DB wird auch korrekt in dem Verzeichnis erstellt. Abends durchsucht ein Skript ein bestimmten Ordner im E-Mail-Verzeichnis einzelner User. Alle E-Mails die sich dort befinden werden von den Usern als Spam-Klassifiziert und mit sa-learn dem System beigebracht. Obwohl sich die DB vergrößert habe ich nicht das Gefühl das mehr E-Mails vom System als Spam klassifiziert werden. Gibt es eine Möglichkeit das System zu testen? Habe schon versucht mit
spamassassin -test-mode < spam-email einiges zu testen - hatte eigentlich immer positiv geklappt!
Das ganze läuft auf einem Debian-Sarge-System (Kernel 2.6)!

Gruß proph

Blade
10.12.06, 14:57
Hast Du Dir mal den spamassassin-Headereintrag einer gefilterten und dem User zugestellten E-Mail angeschaut?
Findest Du dort einen Eintrag bzgl. ... tests=BAYES ....?

prophet`
11.12.06, 09:48
Hier eine E-Mail die vom User als Spam klassifiziert ist, aber nicht vom System erkannt wurde:


X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00,
DATE_IN_FUTURE_24_48 autolearn=no version=3.0.3


Und eine vom System erkannte E-Mail:


X-Spam-Status: No, score=-0.2 required=5.0 tests=BAYES_00,
DATE_IN_FUTURE_12_24,MSGID_DOLLARS autolearn=no version=3.0.3

Blade
11.12.06, 19:34
Prima, der Eintrag "tests=BAYES_00" bedeutet, dass der BAYES-Test diese Mail nicht als Spam eingestuft hat. Möglicherweise ist Diese Mail aber noch nicht bekannt.

Frag doch mal spamassassin wieviele HAMs und SPAMs es bereit kennt?
Gib mal an der Konsole
sa-learn --dump all
ein, oder schreib die Konsolausgabe in eine Datei
sa-learn --dump all > /tmp/spamdb.log

Bin mal auf die Ausgabe gespannt!

Das mit der vom System erkannten E-Mail kan nich nicht ganz glauben:

X-Spam-Status: No, score=-0.2 required=5.0 tests=BAYES_00,
DATE_IN_FUTURE_12_24,MSGID_DOLLARS autolearn=no version=3.0.3

Der score steht doch bei -0.2 und Du hast eingestellt: required_score 5.0. Außerdem steht es ja da: X-Spam-Status: No

prophet`
12.12.06, 09:41
Okay die Datei ist ein Tick größer geworden, ich denke aber du möchtest nur die ersten Zeilen sehen - ansonsten lad ich nochmal die komplette Datei hoch:


0.000 0 3 0 non-token data: bayes db version
0.000 0 11254 0 non-token data: nspam
0.000 0 6359 0 non-token data: nham
0.000 0 125728 0 non-token data: ntokens
0.000 0 1136524315 0 non-token data: oldest atime
0.000 0 1165914171 0 non-token data: newest atime
0.000 0 1165911487 0 non-token data: last journal sync atime
0.000 0 1165901154 0 non-token data: last expiry atime
0.000 0 1676461 0 non-token data: last expire atime delta
0.000 0 0 0 non-token data: last expire reduction count


Hoffe das reicht :)

So hab mir noch mal eine andere vom System erkannte Spam-E-Mail angeschaut und die sieht im Header nun besser aus als die vorige:


X-Spam-Status: Yes, score=97.4 required=5.0 tests=ALL_TRUSTED,NO_REAL_NAME,
USER_IN_BLACKLIST autolearn=ham version=3.0.3

Blade
12.12.06, 20:32
Schau mal nach, ob Du eine gefilterte E-Mail mit dem Header-Eintrag: BAYES_99 findest. Dieser Eintrag würde belegen, dass der Bayes-Filter korrekt arbeitet.

Dem Posting von Dir kann ich entnehmen, dass spamassassin genügend HAMs und SPAMs gelesen hat (jeweils mindestens 200 Stück) und nun korrekt arbeiten sollte.

Frage an Dich, kannst Du abschätzen, wie hoch die Trefferquote der korrekten SPAM-Erkennung ist? -> (korrekt erkannte SPAMs) / (gesamte SPAMs) pro Tag.

Die Gefahr bei autolearn ist - so ist meine Erfahrung, dass mit der Standard-Einstellung für als gut erkannte Mails: nospams 0.1 - in den Anfängen des Lernprozesses von spamassassin zu viele SPAMs durchschlüpfen und fälschlicher Weise als HAMs automatisch gelernt werden. Ich habe diesen Wert deshalb rigoros auf -3.1 runter gesetzt.

Möglicherweise sind bei Deiner Bayes-Datenbank einige SPAMs als HAMs registriert. Diese falschen HAMs kannst Du dann der Datenbank zum wieder Vergessen als HAM zur Verfügung stellen.

Blade
13.12.06, 08:39
X-Spam-Status: Yes, score=97.4 required=5.0 ... USER_IN_BLACKLIST autolearn=ham ... Also irgend etwas ist da bei Dir doch faul. Bei einem score von +97.4 sollte das ein spam sein und nicht autolearn=ham :eek: Überprüfe mal Deine Konfig-Einträge für autolearn.

prophet`
13.12.06, 09:58
Frage an Dich, kannst Du abschätzen, wie hoch die Trefferquote der korrekten SPAM-Erkennung ist? -> (korrekt erkannte SPAMs) / (gesamte SPAMs) pro Tag.

Kann ich nur grob abschätzen, es sind aber bestimmt 4 erkannte E-Mails von insgesamt 40 (!!!) - was ziemlich wenig ist. Deshalb meine Vermutung das die DB nicht richtig greift :(

Ich hab echt das gefühl das irgendwas faul ist. Habe ein paar alte Spam-E-Mails mal genauer angeschaut und alle haben ähnliche Header einträge wie dieser:


X-Spam-Status: No, score=-0.7 required=5.0 tests=ALL_TRUSTED,BAYES_00,
HTML_MESSAGE,INVALID_DATE,INVALID_TZ_EST,MIME_BASE 64_TEXT,
MIME_HTML_MOSTLY,MPART_ALT_DIFF autolearn=no version=3.0.3


In der E-Mail steht dann der komplette Test


Pkte Regelname Beschreibung
---- ---------------------- --------------------------------------------------
4.1 MIME_BOUND_DD_DIGITS Bestimmtes Muster von Spam-Software in MIME-Begrenzung
0.2 INVALID_DATE Datumskopfzeile nicht standardkonform zu RFC 2822
3.6 INVALID_TZ_EST Ungültiges Datum in Kopfzeile (falsche EST Zeitzone)
4.2 X_MESSAGE_INFO Kopfzeile "X-Message-Info"
0.0 HTML_MESSAGE BODY: Nachricht enthält HTML
0.1 MPART_ALT_DIFF BODY: Nachrichtentext im Text- und HTML-Format unterscheiden sich
0.2 MIME_HTML_ONLY BODY: MIME-Nachricht besteht nur aus HTML
-2.6 BAYES_00 BODY: Spamwahrscheinlichkeit nach Bayes-Test: 0-1%
[score: 0.0000]
0.3 MIME_BASE64_TEXT RAW: Text getarnt durch base64-Kodierung
2.4 MIME_HTML_ONLY_MULTI Mehrteilige MIME-Nachricht besteht nur aus HTML


Habe bisher nur die local.cf bearbeitet und dort "bayes_auto_learn" auf "1". Bin leider nicht so sehr vertraut mit dem Spamassassin :( aber ich würde gerne verstehen warum das nicht funktioniert - gibt es also noch explizite Einstellungen für das autolearn? Werde aber gleich nochmal google befragen.

Gruß proph`

Blade
13.12.06, 17:29
Sag mir mal kurz, welche Distri Du einsetzt, SuSE oder ? Ich setzte privat SuSE 9.3 ein und da ist spamassassin der Vers. 3.1.3 dabei. Deine Version sollte aber eignetlich nicht das Problem sein. Im Büro habe ich eine SuSE 9.0 auf dem Server am Laufen mit spamassassin Vers. 2.6.4 und rennt auch supergut.

Alle Grundeinstellungen findest Du eigentlich unter /usr/share/spamassassin/... da gibt es viele cf-Dateien, die Du ändern kannst. Interessant ist die score-cf und die 10_misc.cf worig die Grenzwerte für das autolearning vom Grund her vorgegeben sind. Jeder User und auch root kann diesen Wert mit entsprechendem Eintrag in seiner local.cf überschreiben. Nach einer Änderung der cf-Dateien sollte spamassassin neu gestartet werden.


4 erkannte E-Mails von insgesamt 40 (!!!) ... das ist definitiv zu wenig. Wir bekommen im Büro pro Tag so an die 150 bis 200 gute Mails (HAMs), und in etwa 60 bis 70 als SPAM korrekt aussortiert Mails. Durchschlüpfende unerkannte SPAM-Mails pro Tag sind es so ca. 5 bis max. 8 Stück. Das ist für mich absolut okay!

Läuft denn bei Dir spamassassin wirklich als root, oder als User-bezogener Daemon? Schau mal im home-Verzeichnis der User nach, ob Du da auch eine bayes-db und eine local.cf mit aktuellen Einträgen finden kannst.

prophet`
19.12.06, 10:58
Die Dienste laufen unter einem Debian 3.1 - Kernel 2.6. und Spamassassin unter der 3.0.3 Version.

Im Top wird "spamd" vom User root und "spampd" vom User spampd ausgeführt. Dort eventuell der haken?! Anfänglich hatte jeder User in seinem Verzeichnis ein .spamassassin. Nach der Umstellung auf die Globale-DB sollten die Dateien nicht mehr verwendet werden, wie man auch am Änderungsdatum erkennen kann.

Blade
19.12.06, 15:29
Bei mir gibt es nur einen spamd-Prozess und keinen spampd.
Spamassassin läuft bei mir auch unter root mit einer globalen Datenbank.

Dein Problem liegt teilweise wohl darin:

X-Spam-Status: Yes, score=97.4 required=5.0 ... USER_IN_BLACKLIST autolearn=ham ...
Hatte schon mal diesen Hinweis gegeben:

Also irgend etwas ist da bei Dir doch faul. Bei einem score von +97.4 sollte das ein spam sein und nicht autolearn=ham Überprüfe mal Deine Konfig-Einträge für autolearn.

Du könntest eine sauber funktionierende Datenbank testweise mal in das Verzeichnis reinkopieren und dann mal prüfen, ob die Filterung der SPAMs besser klappt. Ich denke, dass Du durch die autolearn-Funktion zu viele Falscheinträge in der Datenbank hast.

Bei mir werden derzeit rund 99,9 Prozent der SPAMs rausgefiltert. :D

prophet`
20.12.06, 10:03
Okay vielen dank schon mal :D für deine mühe.

Werde mich ein wenig mit den Einstellungen befassen und dann mal schauen ob ich eine Verbesserung erzielen kann. Habe Temporär das Spampd rausgenommen und gehe direkt über den Spamassassin.



smtp inet n - - - - smtpd -o content_filter=spamassassin
spamassassin unix - n n - - pipe user=root argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Blade
20.12.06, 20:28
Besorg Dir mal ne saubere bayes-db und kopiere sie in Dein Verzeichnis. Setze dann die autolearn-Parameter sehr konservativ an ... lieber zu scharf als zu locker ...;)

prophet`
03.01.07, 12:45
Feedback:

Alles läuft wie gewünscht :) - Danke noch mal

Blade
03.01.07, 18:14
Hey, das freut mich jetzt richtig für Dich.
Kannst Du für die Nachwelt mal kurz noch die Lösung für dieses Problem umreißen, wäre schon toll? ;)

prophet`
09.01.07, 09:29
Hehe klar kein Thema:

habe zwei Konfigurationen geändert (mehr dazu gleich) und den Dienst spampd komplett aus der Scan routine entfernt. Die alte Bayes-DB habe ich entfernt und eine saubere angelegt. Nachteil ist natürlich das bereits erkannter Spam verloren gehen. Aber da jeder User selbst E-Mails als Spam klassifiziert kann werden die Information wieder sehr schnell gesammelt.

Zum schluß noch meine Konfiguration:

/etc/default/spamassassin:


ENABLED=1
SAHOME="/etc/spamassassin/"
OPTIONS="--nouser-config --max-children 5 --helper-home-dir ${SAHOME} -s /var/log/spamd.log"
PIDFILE="/var/run/spamd.pid"


/etc/spamassassin/local.cf


required_score 3.0
rewrite_header subject *****SPAM*****
report_safe 1
use_bayes 1
bayes_auto_learn 1
bayes_path /etc/spamassassin/bayes_db/bayes
bayes_file_mode 0666
auto_whitelist_path /etc/spamassassin/bayes_db/auto
auto_whitelist_file_mode 0666
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1


/etc/postfix/master.cf


...
smtp inet n - n - 2 smtpd -o content_filter=smtp:[127.0.0.1]:10024
localhost:10025 inet n - y - - smtpd -o content_filter=spamassassin
...
spamassassin unix - n n - - pipe flags= user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
....


Gruß proph`