Aug

23

Mailserver: Trainingsskript für Spamassassin

Nachdem ich die Tage einen neuen Mailserver aufgesetzt habe (mehr oder weniger nach dem Howto von johker), hatte ich mich nun ein bischen mit dem Feintuning beschäftigt. U.a. habe ich das Skript fürs Trainieren von Ham- bzw. Spam-Mails für die Bayes-Datenbank von Spamassassin überarbeitet, damit weniger (Fehler-)Meldungen produziert werden und man sich das Ergebnis damit eher per E-Mail (zur Kontrolle der Arbeit) zuschicken lassen kann:

#!/bin/bash

VMAILDIR="/var/vmail"
SADIR="/var/lib/amavis/.spamassassin"
DBPATH="/var/lib/amavis/.spamassassin/bayes"

cd $VMAILDIR
for domain in $(find ./ -maxdepth 1 -not -name "." -type d | sed -e 's/\.\/*//'); do
        domaindir="$VMAILDIR/$domain"
        cd $domaindir
        for user in $(find ./ -maxdepth 1 -not -name "." -type d | sed -e 's/\.\/*//'); do
                maildir="$domaindir/$user/maildir"
                hamdir="$maildir/.Ham"
                spamdir="$maildir/.Spam"

                # train ham
                if [ -d $hamdir ]; then
                    hamcount=$(find $hamdir -regex '.*\(/.*\)?\/\(cur\|new\)/.*' -type f | wc -l)
                    if [ $hamcount -ge 1 ]; then
                        echo "Learning ham from $hamdir/cur"
                        sa-learn --ham --showdots --dbpath $DBPATH $hamdir/cur
                        find $hamdir -regex '.*\(/.*\)?\/\(cur\|new\)/.*' -type f -delete
                    fi
                fi

                # train spam
                if [ -d $spamdir ]; then
                    spamcount=$(find $spamdir -regex '.*\(/.*\)?\/\(cur\|new\)/.*' -type f | wc -l)
                    if [ $spamcount -ge 1 ]; then
                        echo "Learning junk from $spam/cur"
                        sa-learn --spam --showdots --dbpath $DBPATH $spamdir/cur
                        find $spamdir -regex '.*\(/.*\)?\/\(cur\|new\)/.*' -type f -delete
                    fi
                fi
        done
done

chown -R amavis:amavis $SADIR

Das Skript ist sicherlich nicht optimal, sollte aber, ob des mehr an Abfragen, sa-learn nur noch aufrufen, wenn auch wirklich E-Mails fürs Training vorhanden sind. Desweiteren werden die gelernten E-Mails im Anschluss gelöscht.

Kommentar hinterlassen

You must be logged in to post a comment.

Archiv

Zufällige Bilder

  • X-Moto: Screenshot
  • Gran Turismo 5 - Abbazia-San-Galgano
  • hdtune: ST9250421ASG

Kommentare (28 Tage)

Sonstiges


Bloggeramt.de