• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

lernt Spamassassin?

pft

Advanced Hacker
Auch wenn wir das schon oft hatten muss ich das Thema Sapmassassin nochmal aufgreifen.

Ich habe das Gefühl, dass meiner nicht lernt bzw. um genau zu sein, das Gelernte nicht anwendet.

Zur Konfiguration:
Basissystem Suse 10.2 aktueller SW-Stand
Fetchmail holt mails ab, postfix nimmt an, amavisd-new filtert (virus und spam), postfix (2.) liefert aus, procmail sortiert

Ich habe die Spamaassassin-konfig in amavisd.conf ein klein wenig angepaßt (tagging, tag-levels). Die eigentliche Spamassassin-konfig in "/etc/mail/spamassassin" blieb unberührt.

unerkannte Spams werden vom User in einen speziellen Ordner verschoben und täglich gelernt. Falsch erkannte ebenso. Hier das Skript:
Code:
sa-learn --dbpath /var/spool/amavis/.spamassassin -u vscan --showdots --spam --mbox "/home/user1/Mail/Spam nicht erkannt"
sa-learn --dbpath /var/spool/amavis/.spamassassin -u vscan --showdots --ham --mbox "/home/user1/Mail/Spam falsch erkannt"
sa-learn --dbpath /var/spool/amavis/.spamassassin -u vscan --showdots --spam --mbox "/home/user2/Mail/Spam nicht erkannt"
sa-learn --dump magic --dbpath /var/spool/amavis/.spamassassin -u vscan

Die Ausgabe der letzten Zeile sieht aktuell so aus:
Learned tokens from 0 message(s) (18 message(s) examined)
Code:
0.000          0          3          0  non-token data: bayes db version
0.000          0        319          0  non-token data: nspam
0.000          0       3683          0  non-token data: nham
0.000          0     153713          0  non-token data: ntokens
0.000          0 1186066559          0  non-token data: oldest atime
0.000          0 1208296800          0  non-token data: newest atime
0.000          0          0          0  non-token data: last journal sync atime
0.000          0 1208318455          0  non-token data: last expiry atime
0.000          0   22118400          0  non-token data: last expire atime delta
0.000          0       1517          0  non-token data: last expire reduction count

Soweit so gut.

Leider ist der Effekt vernachlässigbar, d.h. die Erkennungsrate liegt bei ca. 1%.

Die Headereinträge bei richtig "gutem" Spam sehen so aus
Code:
X-Virus-Scanned: by amavisd-new at mydomain.de
X-Spam-Score: 3.409
X-Spam-Level: ***
X-Spam-Status: No, score=3.409 tagged_above=0 required=6.31
	tests=[HTML_20_30=0.911, HTML_MESSAGE=0.001, HTML_MIME_NO_HTML_TAG=0,
	MIME_HTML_ONLY=0.414, PLING_PLING=1.034, SUBJ_ALL_CAPS=1.049]

Ich dachte eigentlich die Bayesfilter wären besser :(

Hat irgendjemand 'ne Idee woran es liegt bzw. wie ich das verbessern kann?

Kann man irgendwie überprüfen ob das lernen einen Effekt auf das Filtern hat?
 
OP
P

pft

Advanced Hacker
Hat denn keiner eine Idee wie ich meinen Spammassassin dazu bringe effektiv zu filtern?
 

stka

Guru
Also bei mir läuft täglich ein script:
Code:
root@com2:/root# cat spam-learn
#! /bin/bash
SA=/usr/bin/sa-learn

$SA --no-sync --dbpath /var/lib/amavis/.spamassassin/ --spam /var/spool/cyrus/mail/user/stefan/SPAM/
$SA --no-sync --dbpath /var/lib/amavis/.spamassassin/ --spam /var/spool/cyrus/mail/user/sabine/SPAM/
#$SA --no-sync --dbpath /var/lib/amavis/.spamassassin/ --spam /var/spool/cyrus/mail/user/jessica/SPAM/
$SA --no-sync --dbpath /var/lib/amavis/.spamassassin/ --spam /var/lib/amavis/virusmails/s*
Als Ergebnis bekomme ich das hier:
root@com2:/root# ./spam-learn
Learned tokens from 1 message(s) (61 message(s) examined)
Learned tokens from 0 message(s) (7 message(s) examined)
........
........
Hier siehst du nur das aus einer Nachricht gelernt wird, weil das Skript jede zweite Nacht läuft und lernt.
Die Spammails werden einmal in der Woche gelöscht.
und so kannst du das testen
stefan@com2:~$ sudo sa-learn --dbpath /var/lib/amavis/.spamassassin --dump all
0.000 0 3 0 non-token data: bayes db version
0.000 0 1518 0 non-token data: nspam
0.000 0 899 0 non-token data: nham
0.000 0 146814 0 non-token data: ntokens
0.000 0 1201096806 0 non-token data: oldest atime
0.000 0 1209213902 0 non-token data: newest atime
0.000 0 1209214710 0 non-token data: last journal sync atime
0.000 0 1208751988 0 non-token data: last expiry atime
0.000 0 5529600 0 non-token data: last expire atime delta
0.000 0 2959 0 non-token data: last expire reduction count
0.645 43 14 1208947682 c0614089c0
0.001 0 26 1209040201 c8db16439a
0.001 0 16 1208783702 bea8b35798
.........
.........
.........
.........
In der Liste werden dann alle Infos der Datenbank angezeigt.
 

komaii

Member
also in meiner crontab steht zB:

## SPAM bayes leaaning every day at mitday
5 12 * * * sa-learn --spam -L /var/spool/imap/user/SPAM/*
5 14 * * * sa-learn --spam -L /var/spool/amavis/virusmails/spam*

## SPAM delete
8 12 * * * su cyrus -c "/usr/lib/cyrus/bin/ipurge -f -d 1 user.SPAM"

## HAM bayes learning
5 15 * * * sa-learn --ham /var/spool/imap/user/HAM/*

## HAM delete
8 12 * * * su cyrus -c "/usr/lib/cyrus/bin/ipurge -f -d 1 user.HAM"

lg,
-komaii
 
OP
P

pft

Advanced Hacker
Hallo,

erstmal danke für die Info. Ich war gerade mal ein paar Tage auf Reisen, daher hat es ein wenig gedauert..
Ich hab das mal mit meinem System verglichen und finde kaum Unterschiede. Kein Wunder ich habe ja die älteren Post von stka und anderen konsultiert.

Die verbleibenden Unterschiede sind:
1. "-u vscan" beim Aufruf von sa-learn. Ich habe das angefügt weil bei mir amavis und spamassassin unter diesem User laufen. Ich meine aber das auch schon mal weggelassen zu haben ohne Auswirkung. Ich kann das aber nochmal probieren
2. die db liegt bei mir unter /var/spool statt /var/lib. Da lag sie schon vor dem ersten Aufruf von sa-learn, also nahm ich an dass spamassassin diese nutzt. Die Tatsache, dass die Filterergebnisse so lausig sind lassen aber daran zweifeln. Kann man denn irgendwie prüfen welche db spamassassin nutzt bzw. die beeinflussen beim Aufruf über amavis?

@komaii:
was mich wundert ist dass Du keine Angabe der db brauchst wie alle anderen; wie hast Du das angestellt?

@all
wie kann man "manuell" einzelne Mails nochmal durch spamassassin prüfen lassen, d.h. ohne den Umweg über amavis?
 
OP
P

pft

Advanced Hacker
Hallo,

jetzt bin ich ein kleines Stück weiter, aber noch nicht am Ziel.
Ich habe eine Mail hergenommen, die bereits über amavis mit folgenden Ergebnissen gescannt wurde:
Code:
X-Spam-Score: 3.31
X-Spam-Level: ***
X-Spam-Status: No, score=3.31 tagged_above=0 required=6.31
	tests=[FUZZY_CREDIT=1.983, HTML_10_20=0.911, HTML_MESSAGE=0.001,
	MIME_HTML_ONLY=0.414, UNPARSEABLE_RELAY=0.001]
Dann habe ich in die Konfig ergänzt:
/etc/mail/spam*/local.cf
Code:
bayes_path      /var/spool/amavis/.spamassassin/bayes
und dann spamassassin direkt aufgerufen:
Code:
spamassassin -t --mbox Mail/testfolder
mit folgendem durchschlagendem Erfolg:
Code:
Subject: ****SPAM(19.7)**** Hauptpreis: einen neuen AUDI A3
Date: Fri, 02 May 2008 00:17:17 +1000
Message-Id: <613CF298.29B50344@ocn.ne.jp>
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.1.8 (2007-02-13) on
        xxx.test
X-Spam-Level: *******************
X-Spam-Status: Yes, score=19.7 required=5.0 tests=DNS_FROM_RFC_POST,
        FUZZY_CREDIT,HTML_10_20,HTML_MESSAGE,MIME_HTML_ONLY,RCVD_IN_DSBL,
        UNPARSEABLE_RELAY,URIBL_AB_SURBL,URIBL_JP_SURBL,URIBL_OB_SURBL,URIBL_SBL,
        URIBL_SC_SURBL autolearn=disabled version=3.1.8
Statt 3.31 habe ich jetzt einen Spamlevel von 19.7.
Das heißt aber, dass meine ganze Lernerei bisher ins Leere läuft.
Soweit ich weiß wird bei Aufruf über amavis der spamassassin komplett über die amavis-config gesteuert und die original spamassassin config bleibt aussen vor, richtig?

Wie kann ich denn den Ort der bayes_db festlegen bzw. wo muss sie richtigerweise liegen?
 
Oben