Bayes-Statistiken in Spamassassin

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hi,

in der SpamAssassin-Dokumentation steht, dass der Bayes-Filter erst einschreitet, wenn genug Spam und Ham trainiert wurde, wobei genug für 200 Mails steht. Jetzt scheint es nicht wirklich ein Tool zu geben, dass einem anzeigt, wie viel man schon hat, daher habe ich mir selbst was geschrieben. SpamAssassin 3.1 nutzt eine BSDDB Hash-Datenbank, die man in Python mit Bordmitteln leicht auslesen kann:

Code: Alles auswählen

#!/usr/bin/env python
import bsddb, os.path, sys

bayes_seen_path = os.path.expanduser('~/.spamassassin/bayes_seen')
try:
    bayes_seen = bsddb.hashopen(bayes_seen_path, 'r')
except bsddb.db.DBNoSuchFileError:
    print >> sys.stderr, 'Bayes DB does not exist, check %s' % bayes_seen_path
    sys.exit(1)
else:
    stats = {'h' : 0, 's' : 0}
    for value in bayes_seen.values():
        stats[value] = stats.get(value, 0) + 1
    bayes_seen.close()
    print 'Ham mails seen: %d\tSpam mails seen: %d' % (stats['h'], stats['s'])
Ausgabe sieht dann so aus:

Code: Alles auswählen

$ ./sa-bayes-stats 
Ham mails seen: 13692	Spam mails seen: 232
Na, ab jetzt sollte der Filter greifen :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten