Logo VB-EDV-Beratung

Installation SpamAssassin

Folgende Schritte waren erforderlich:
  1. Von der Webseite www.spamassasin.org eine aktuelle Fassung (als .tar.gz oder .tar.bz2) ziehen und in einem Unterverzeichnis zu /tmp auspacken und sich in dies Verzeichnis begeben.

    Die derzeit (Jan. 2004) bei Debian (stable) angebotene Version 2.20 hat leider noch keinen eingebauten Bayes-Filter, ohne den die Trefferquote leider nur bei 40 - 70 Prozent liegt. Mit dem Bayes-Filter gelangen nur 0 - 3 Junk-Mails pro Tag in den Postordner.

  2. Gemäß Waschzettel (Datei INSTALL)
    # perl Makefile.PL
    # make
    # make install
    eingeben.

    Danach ist SpamAssassin installiert und betriebsfähig und das Verzeichnis in /tmp kann wieder gelöscht werden.

  3. Ich fand für meine Zwecke einen Einbau in den Mechanismus procmail am einfachsten. Procmail war bei mir schon installiert, so daß ich für jeden Benutzer - so noch nicht vorhanden - in seinem HOME-Verzeichnis eine Datei .forward mit dem Inhalt
    "|exec /usr/bin/procmail"
    anlegen und die Datei .procmailrc um die Zeilen
    # Es wird nur Mail, die kleiner als 250000 Bytes ist, gescannt. SPAM hat im
    # allgemeinen keine riesigen Anhänge und SpamAssassin könnte Probleme mit 
    # großen Dateien haben.
    # Das Lockfile sperrt den gleichzeitigen mehrfachen Start von SpamAssassin
    :0fw: spamassassin.lock
    * < 250000
    | spamassassin
    # Mails mit einer Bewertung von über 15 enthalten fast mit Sicherheit SPAM
    # und kommen in ein gesondertes Verzeichnis.
    :0:
    * ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
    Maildir/.-SPAM-wahrscheinlich/
    # Mail, die vermutlich SPAM ist, kommt in den Ordner '-SPAM-vielleicht'.
    :0:
    * ^X-Spam-Status: Yes
    Maildir/.-SPAM-vielleicht/
    # Ob der nachfolgende Code zur Umschiffung eines Fehlers im 
    # procmail tatsächlich nötig ist, habe ich nicht nachgeprüft. Ich habe
    # ihn einfach übernommen.
    :0
    * ^^rom[ ]
    {
      LOG="*** Dropped F off From_ header! Fixing up. "
    
      :0 fhw
      | sed -e '1s/^/F/'
    }
    # Alle übrige Mail kommt in den normalen Maildir-Eingangs-Ordner
    :0
    Maildir/
    ergänzen mußte.

    Diese Weisheit stammt übrigens direkt aus der mitgelieferten Datei procmailrc.example.

    Achtung: Ich benutze einen Courier IMAP-Server, der seine Mail in Maildir-Verzeichnissen ablegt. Deshalb beginnen bei mir alle Ordner mit einem Punkt ('.') und enden mit einem Slash ('/'). Wer einen Mailserver mit der 'normalen' Mailbox-Ablage benutzt, schreibt z.B. für die Ablage der einfachen SPAM-Mail

    :0:
    * ^X-Spam-Status: Yes
    Mail/-SPAM-vielleicht
    Der letzte Absatz
    :0
    Maildir/

    muß dann auch entfallen.

    Ich habe meinen SPAM-Verzeichnissen die Namen '-SPAM-vielleicht', '-SPAM-wahrscheinlich' und '-SPAM-verifiziert' gegeben, damit sie - wegen des Bindestrichs ('-') - nach oben in der Sortierung der Ordner rutschen. Es sind natürlich beliebige Namen möglich.

  4. Ich möchte nicht, daß mir ein übereifriger SPAM-Filter wichtige Mail, die lediglich einige SPAM-Merkmale enthält, automatisch wegschmeißt. Deshalb sehe ich die als SPAM klassifizierte Mail noch einmal kurz durch. Wenn man, wie ich, wenig ausländische Mail-Partner hat und, wie derzeit, die meiste SPAM aus englisch-sprachigen Ländern kommt, ist es meist schon am Absender, spätestens aber am Betreff, möglich, die Zuordnung zu verifizieren.

    Der Vorgand dauert für 80 SPAMs am Tag lediglich 2 Minuten und ich kann ihn, da die richtige Mail ja schon im normalen Postfach liegt, jederzeit evtl. auch nur einmal pro Woche durchführen. Mir ist bisher noch nie eine echte Mail als SPAM einsortiert worden; aber mir ist wohler dabei, wenn ich die letzte Kontrolle habe.

    Deshalb schaufele ich den verifizierten SPAM in einen Ordner '-SPAM-verifiziert' um, aus dem dann der Bayes-Filter des SpamAssassin lernen kann. Wer dem SpamAssassin hundertprozentig traut und sich die visuelle Endkontrolle sparen will, der kann entweder allen SPAM oder wenigstens den wahrscheinlichen direkt zum Training des Bayes-Filters nehmen.

    Alle echte Mail (außer dem Eingangs-Ordner und den SPAM-Ordnern) wird vom Bayes-Filter als HAM (gute Mail) erlernt.

    Echte Mail, die ich nur kurz lese und dann in den Mülleimer werfe, wird dort auch als HAM gelernt und anschließend gelöscht.

    Der Lernvorgang passiert bei mir einmal pro Tag (gegen 3:00 h morgens) mit einem CRON-Job, der das folgende Skript startet.

    # Training des Bayes-Filters von SpamAssassin für Benutzer 
    # eines Maildir-IMAP-Servers
    # Voraussetungen:
    #   - Maildir-Verzeichnis in $HOME/Maildir
    #   - aller Spam (möglicher, wahrscheinlicher und verifizierter) in den
    #     Verzeichnissen $HOME/Maildir/.-SPAM*
    #   - Geprüfter Spam (wirklich Spam) in $HOME/Maildir/.-SPAM-verifiziert
    #   - Papierkorb in $HOME/Maildir/.Trash
    MAILDIR="$HOME/Maildir"
    SA_LEARN=/usr/local/bin/sa-learn
    
    find $MAILDIR/.-SPAM-verifiziert -type f -name "[0-9]*" -size -200k -print0 |
        xargs -0 -r $SA_LEARN --spam
    find $MAILDIR/.-SPAM-verifiziert -type f -name "[0-9]*" -print0 |
        xargs -0 -r zip -jm $HOME/.spam.zip
    find $MAILDIR/.[^.]* -path "*/.-SPAM*" -prune -false \
        -o -type f -name "[0-9]*" -size -200k -print0 |
        xargs -0 -r $SA_LEARN  --ham
    find $MAILDIR/.Trash -type f -name "[0-9]*" -print0 |
        xargs -0 -r rm

    Achtung: Auch hier müssen natürlich für Rechner mit einem Mailbox-Mailserver die Verzeichnisnamen angepaßt werden.

© 2003 Volker Böhm Best viewed with any Browser Valid HTML 4.0