Page 1 of 1

Plesk & Spamassassin trainieren aus Maildir

Posted: 2007-10-10 13:30
by qco
In der KB von SWSOFT gibt es einen Tipp, wie man Spamassassin aus einem Mailverzeichnis heraus trainieren kann.
Ich habe also jetzt ein bisschen Spam von Hand aussortiert und über IMAP in einen eigenen Ordner gepackt.
Auf dem Server liegen diese Mails jetzt als einzelne Files mit Namen wie
1192014882.M200363P14091V0000000000000036I0EEBDE58_6.lvps87-230-21-247.dedicated.hosteurope.de,S=1699:2,S
in einem Unterordner des Maildirs.

Wenn ich jetzt allerdings wie von SWSOFT vorgeschlagen

Code: Select all

/usr/local/psa/admin/sbin/spammng --bayes --mailname=mailname@domain.com --spam=1192014882.M200363P14091V0000000000000036I0EEBDE58_6.lvps87-230-21-247.dedicated.hosteurope.de,S=1699:2,S
aufrufe, bekomme ich nur

Code: Select all

Learned from 0 message(s) (0 message(s) examined).
was soviel heißt wie er hat die Datei nicht gefunden. In der Schleife funktioniert das dann natürlich auch nicht.
Jetzt habe ich testweise eine dieser Maildaten kopiert und einfach in test umbennant und siehe da, es geht:

Code: Select all

Learned from 1 message(s) (1 message(s) examined).
Also liegt das Problem irgendwie in dem Dateinamen. Allerdings kann ich schlecht die Dateinamen der ganzen Mails ändern. Kann/ muss man den Namen irgendwie maskieren? Gibt's noch andere Ideen?

Re: Plesk & Spamassassin trainieren aus Maildir

Posted: 2007-10-11 12:24
by ekle
wahrscheinlich daran, dass er die mail schon kannte.
spamassassin hat einen schutz drin, damit er nicht zweimal von der gleichen mail lern, was die Ergebnisse verfälschen würde

Re: Plesk & Spamassassin trainieren aus Maildir

Posted: 2007-10-11 12:47
by oxygen
Du solltest den Dateinamen in Anführungszeichen setzten. Sonst wird = , etc von bash interpretiert.

Re: Plesk & Spamassassin trainieren aus Maildir

Posted: 2007-10-11 16:06
by qco
ekle wrote:wahrscheinlich daran, dass er die mail schon kannte.
Negativ, sonst würde er
Learned from 0 message(s) (1 message(s) examined).
melden.
oxygen wrote:Du solltest den Dateinamen in Anführungszeichen setzten. Sonst wird = , etc von bash interpretiert.

Code: Select all

/usr/local/psa/admin/sbin/spammng --bayes --mailname=mailname@domain.com --spam="1192014882.M200363P14091V0000000000000036I0EEBDE58_6.lvps87-230-21-247.dedicated.hosteurope.de,S=1699:2,S"
bringt leider keine Änderung. Einfache Anführungsstriche auch nicht. :?

Re: Plesk & Spamassassin trainieren aus Maildir

Posted: 2007-10-11 16:18
by qco
Nein, auch kein Erfolg, weder mit dem vollen Pfad noch mit "slashen"... Auch in Kombination mit Anführungszeichen oder ohne.

Re: Plesk & Spamassassin trainieren aus Maildir

Posted: 2007-10-11 19:05
by qco
Nein, die Mail war noch unbekannt. Die Ursache des Problems konnte ich nicht direkt finden, allerdings eigentlich einfachen Weg es zu umgehen.
Statt dieses Plesk-Skripts rufe ich direkt sa-learn auf; allerdings muss man dann händisch den Pfad zu den Spamassassin-Einstellungen des Users raussuchen.

Code: Select all

sa-learn --spam --dbpath /var/qmail/mailnames/domain.com/mailname/.spamassassin 1192014882.M200363P14091V0000000000000036I0EEBDE58_6.lvps87-230-21-247.dedicated.hosteurope.de,S=1699:2,S
funktioniert wie erhofft und kann man auch direkt das Verzeichnis angeben und er liest alle Files darin.

Re: Plesk & Spamassassin trainieren aus Maildir

Posted: 2007-11-04 13:36
by Anonymous
OK, ich hab das etwas anders gelöst.
Ich benenne die Datei um und lerne sie dann.
Das ganze in einem Skript, das stündlich ausgeführt wird.
Ist nicht perfekt, funktioniert aber.

Code: Select all

#/bin/bash
#
# Skript zum automatischen Lernen von Spam und Ham aus INBOX/Spam und INBOX/Ham

cd /var/qmail/mailnames
for maildomain in *; do
    cd $maildomain
    for mailname in *; do
        if [ -x $mailname/Maildir ]; then
        cd $mailname/Maildir/
        pwd
            if [ -x .Spam ]; then
                for dir2learn in .Spam/cur .Spam/new .Spam/tmp; do
                    cd $dir2learn
                    for message in *; do
                        mv $message spam2learn
                        echo training $message for $mailname@$maildomain
                        /usr/local/psa/admin/sbin/spammng --bayes --mailname=$mailname@$maildomain --spam=spam2learn
                        rm spam2learn
                    done
                    cd /var/qmail/mailnames/$maildomain/$mailname/Maildir
                done
            fi
            if [ -x .Ham ]; then
                for dir2learn in .Ham/cur .Ham/new .Ham/tmp; do
                    cd $dir2learn
                    for message in *; do
                        mv $message ham2learn
                        /usr/local/psa/admin/sbin/spammng --bayes --mailname=$mailname@$maildomain --ham=ham2learn
                        rm ham2learn
                    done
                    cd ../..
                done
            fi
        cd ../..
        fi
    done
    cd ..
done
Setzt voraus, das (in diesem Fall) die Ordner Spam und Ham direkt in der Wurzel des Mailverzeichnisses liegen.

Die Variante mit sa-learn ist gut nutzbar, um die Spam-Lern-Funktion von Horde (Webmail) zu nutzen.

Dirk