hauptseite

13. Juli 2004

Spamfilter für KMail unter SuSE 9.1

Kategorie: — Suzan @ 22:09 Uhr

Ich verwende unter SuSE 9.1 KMail als Mailclient. Bin auch sehr zufrieden damit. Doch eine automatische aussortierung des ganzen SPAMs wollte ich nun auch mit KMail. Hier bietet sich ein kleines Tool an, dass man auch auf der SuSE CD findet: Spamassasin. Alleine die vordefinierten Regeln sind sehr gut, um Spam wirksam auszusortieren. Die “Schärfe” des Spamfilter lässt sich auch noch manuell erhöhen oder erniedrigen. Hier eine Anleitung, wie man diese Tool unter SuSE 9.1 installiert und konfiguriert.

1. spamassasin installieren
Für User der SuSE Prof. Edition:
spamassasin von der CD installieren. Man findet es am einfachsten, wenn man den Suchbegriff “spamassasin” eingibt. Dann einfach per YaST installieren.

Nutzer der Personal Edition haben es wieder mal etwas schwerer und müssen sich spamassasin per FTP downloaden. Außerdem müssen noch folgende Perl-Module heruntergeladen und installiert werden: perl-spamassassin, perl-HTML-Parser, perl-HTML-Tagset, perl-Net-DNS, perl-Digest-SHA1 und perl-Digest-HMAC. Alle Pakete sind auch dem SuSE FTP Server zu finden. Am einfachsten alle RPMs in ein Verzeichnis legen, Konsole öffnen, in das Verzeichnis wechseln und dann als root mit
rpm -i *.rpm installieren.

2. Dienst starten
Spamassasin hat zwei Dienste, von denen einer in SuSE händisch gestartet werden muss. Allerdings nur einmal, dann startet der Dienst bei jedem hochfahren automatisch.
Dazu als root folgenden Befehl in die Konsole eingeben:

insserv -d /etc/init.d/spamd

Die Meldung “done” informiert, das alles OK ist. Der Dienst startet dann nach dem Hochfahren automatisch. Wer den Dienst aber jetzt gleich nutzen will, ohne den Rechner nochmal neuzustarten gibt als root in die Konsole ein:
/etc/init.d/spamd start
Dieser Befehl muss danach nichtmehr jedesmal eingegeben werden!

3. Eigene Konfiguration erstellen
Per Hand wird jetzt der Ordner
/home/benutzername/.spamassassin
angelegt. Hierein kommt nun die Konfigurationsdatei. Ein Template dafür befindet sich in
/usr/share/spamassassin.
Hier finden wir die Datei
user_prefs.template.
Diese wird in den neuen spamassasin-Ordner im Homeverzeichnis kopiert und auf den Namen
user_prefs
umbenannt. Anfänglich muss man an dieser Datei nichts ändern. Interessant sind jedoch zwei Werte, die in der Datei verändert werden können. Erstens die “Schärfe”, wie unser Werbewächter eingestellt ist. Diese Angabe befindet sich bei required_hits. 5 = normal, 1= sehr scharf. Bei Änderung des Wertes muss das Kommentarzeichen (#) vor der Zeile entfernt werden. Der zweite interessante Punkt ist die Whitelist, die unter whitelist_from zu finden ist. Hier kann man einzelne E-Mail Adressen und auch Wildcards “freischalten”. Die Adressen werden durch ein Leerzeichen getrennt. Z.B.
ich@deinedomain.com du@irgendwas.de *@tollerserver.org

4. Integration in KMail
Damit unser Spamdienst auch Wirkung zeigt, müssen in KMail zwei Filter und ein Ordner angelegt werden. Deshalb in KMail einen Ordner namens “Spam” anlegen. Danach bei KMail Einstellungen / Filter einrichten auswählen und den ersten Filter erstellen. Diesen z. B. “spam” nennen. Folgende Einstellungen müssen vorgenommen werden:
Unter “Filterbedingungen” bitte “Feld im Vorspann” auswählen. In die Mitte “passt auf regulären Ausdruck” und in das Eingabefeld am Schluss kommt ein Punkt (.). Dadurch wird jede neue Mail von dem Filter erfasst.

Bei den Filteraktion “durch Programm leiten” auswählen. Ins Eingabefeld wird der Programmname “spamc” eingetragen. Ohne ” natürlich.

Wichtig ist noch, das Häkchen bei “Bearbeitung hier abbrechen, falls Filterbedingung zutrifft” zu ENTFERNEN.

Das ganze mit “Anwenden” bestätigen.
Screenshot Filter spam

Erkennt Spamassassin eine Mail als Werbung, trägt er zusätzlich die Kopfzeile “X-Spam-Flag: YES” in die Nachricht ein. Dadurch lässt sich die Spam-Nachricht mit der zweiten Regel in einen extra Ordner verschieben.

Nun müssen wir einen zweiten Filter anlegen, den wir “sort” nennen.
Die Einstellugen hier sind nacheinander:
“X-Spam-Flag” “enthält” “YES”
Natürlich wieder alles ohne Anführungszeichen.
Screenshot Filter sort

Das war erstmal alles. Mit den Grundeinstellungen sortiert Spamassasin schon sehr ordentlich Spam-Mails aus und legt sie in den Spam-Ordner. Aber es geht noch besser:

5. Spamassasin trainieren
Unser Spamwächter ist tatsächlich lernfähig. Am besten verschiebt man auch die Mails, die nicht automatisch als Spam erkannt wurden, händisch in den Spam-Ordner in KMail.
Nun kann Spamassasin aus den Mails im Spam-Ordner lernen. Dazu in der Konsole folgendes eingeben:

sa-learn –spam –file /home/Benutzername/Mail/Spam/*

(Bei dem Befehl natürlich “Benutzername” mit eurem Namen ersetzten)

Es geht auch umgekehrt. Wenn Spamassasin fälschlicherweise eine Mail als Spam erkannt hat ist folgendes ratsam. Noch einen Ordner in KMail anlegen, der NoSpam heisst. In diesen werden die fälschlich als Spam erkannten Mails per Hand verschoben. Nun geben wir einen Befehl ein, der aus “spam” (Dosenfleisch) etwas delikateres macht, nämlich “ham” (Schinken). Folgender Befehl ist dazu nötig:

sa-learn –ham –file /home/Benutzername/Mail/NoSpam/*

Soll Spamassasin Einstellungen wieder vergessen, die er bei den einzelnen Mails gemacht hat, kann man diese Mail auch einzeln speichern und dann diesen Befehl anwenden:

sa-learn –forget –file home/Benutzername/NamegespeicherteMail

Alles was Spamassasin lernt wird im Ordner /home/benutzername/.spamassassin gespeichert. Bei Rechnerumzug oder Neuformatierung muss also nur dieser Ordner gesichert werden und anschließend wieder an den richtigen Ort zurückkopiert werden. So muss Spamassasin nicht neu konfiguriert werden.

Diese Weblog dient ja als mein persönliches Nachschlagewerk. Ich hoffe jedoch, dass auch der ein oder andere Linuxer darin eine kleine Hilfestellung findet. Besonders bei den doch oft schwierigen Anfängen im Pinguinland. Um Abschließend noch einen Dank an die Zeischrift “EasyLinux”, die mir die Vorgaben für die Einrichtung von Spamassasin gegeben hat und auch sonst schon viele nützliche Tipps.

8 Kommentare

  1. Ich habe die gleichen Infos auch aus der EasyLinux. Leider ist der Nachteil bei Spamassassin der, dass bei vielen ankommenden Mails mit Geduld zu rechnen ist. Dafür funktioniert aber die Filterung tadellos.

    Comment by robert am 18. Juli 2004 um 16:17 Uhr

  2. Thunderbird gibt’s auch für Linux: http://www.mozilla.org/product.....s/#install
    Thunderbird besitzt einen eingebauten Spamfilter, den man weitere Fähigkeiten anlernen kann, indem man Mails als Spam markiert.

    Comment by Flip am 9. August 2004 um 05:47 Uhr

  3. spamassassin ist ein wenig frickelig, also besser siehe 2. Kommentar!

    Ansonsten foldendes tun, Dateien anlegen nicht vergessen (ich kopiere das in /etc/skel, damit das bei Neuanlegung von Nutzern gleich mit dabei ist)!

    /etc/procmailrc:

    # SpamAssassin sample procmailrc
    #
    # Pipe the mail through spamassassin (replace ‘spamassassin’ with ‘spamc’
    # if you use the spamc/spamd combination)
    #
    # The condition line ensures that only messages smaller than 250 kB
    # (250 * 1024 = 256000 bytes) are processed by SpamAssassin. Most spam
    # isn’t bigger than a few k and working with big messages can bring
    # SpamAssassin to its knees.
    #
    # The lock file ensures that only 1 spamassassin invocation happens
    # at 1 time, to keep the load down.
    #

    #All Mail with Spam-Status to Mailbox Spamfilter

    :0fw: /tmp/spamassassin.lock
    * < 256000
    | /usr/bin/spamassassin

    :0:
    * ^X-Spam-Status: Yes
    mail/probably-spam

    # Work around procmail bug: any output on stderr will cause the "F" in "From"
    # to be dropped. This will re-add it.
    :0
    * ^^rom[ ]
    {
    LOG="*** Dropped F off From_ header! Fixing up. "

    :0 fhw
    | sed -e '1s/^/F/'
    }

    # Errorhandling
    :0e
    EXITCODE==$?

    /home/user/.spamassassin

    # Add your own customisations to this file. See 'man Mail::SpamAssassin::Conf'
    # for details of what can be tweaked.
    #
    # SpamAssassin config file for version 2.5x
    # generated by http://www.yrex.com/spam/spamconfig.php (version 1.01)

    # make the report in the header as opposed to in the body (default=0)
    report_header 0

    # report briefly, recommended for report_header==1 (default=0)
    use_terse_report 1

    # make conversion from mime to text/plain if set to yes (default=1)
    defang_mime 0

    # How many hits before a message is considered spam.
    required_hits 5.0

    # rewrite the Subject: line with ****SPAM**** .* if set to 1 (default=1)
    # Whether to change the subject of suspected spam
    rewrite_subject 0

    # Encapsulate spam in an attachment
    report_safe 1

    # Enable the Bayes system
    use_bayes 1

    # Enable Bayes auto-learning
    auto_learn 1

    # Enable or disable network checks
    skip_rbl_checks 1
    use_razor2 1

    # Mail using languages used in these country codes will not be marked
    # as being possibly spam in a foreign language.
    ok_languages all

    # Mail using locales used in these country codes will not be marked
    # as being possibly spam in a foreign language.
    ok_locales all

    # DNS-Lookups
    dns_available no

    Spam anlernen:

    z.B. mit Webmin die Mails mit Spam an einen bel. weiteren Nutzer schicken (bei mir spamuser).
    Anschließend folgendes Script laufen lassen:

    Script zum Spamanlernen:

    /usr/bin/learn-spam

    #!/bin/bash
    #
    # Spamassassin Cron-Script
    #
    # Ziele: Spam erlernen, in Spam-DB aufnehmen und für alle Nutzer anwenden
    #
    # Spam lernen
    #
    /usr/bin/sa-learn –spam –mbox /var/spool/mail/spamuser
    #
    # Nutzer finden
    #
    LOCUSERS=`find /home -group users -maxdepth 1`
    for LOCALUSERS in $LOCUSERS; do
    LUSERS=$LUSERS” “${LOCALUSERS:6}
    done
    #
    # Config für alle Nutzer kopieren
    #
    for namen in $LUSERS; do
    test -d “/home/$namen/.spamassassin” || { mkdir /home/$namen/.spamassassin;
    cp -R /root/.spamassassin/bayes* /home/$namen/.spamassassin
    chown -R $namen:users /home/$namen/.spamassassin
    done
    #echo ‘Starte Postfix neu:’
    /etc/init.d/postfix restart
    echo ‘User-Spamdb aktualisiert!’

    Comment by Flip am 9. August 2004 um 05:53 Uhr

  4. Spamassassin konfigurieren:

    http://www.yrex.com/spam/spamconfig.php

    Comment by Flip am 9. August 2004 um 05:54 Uhr

  5. Komisch, ich dachte jetzt, ich hätte ich dem Eintrag lang und breit beschrieben, wie man Spamassasin konfiguriert. Spamassasin ist auch lernfähig. Und ja, ich weiß natürlich, dass es Thunderbird auch für Linux gibt.
    Ist ja schön, dass du so für die Mozilla-Produkte werben willst. Aber in jedem Kommentar unter jedem Eintrag?

    Comment by Suzan am 9. August 2004 um 11:11 Uhr

  6. hallo

    also bei mir suse9.3 spamassassin version 3.0.2 hat sich die syntax
    geändert in sa-learn –spam –file ……. also stat einen minus zwei.
    danke auch für die tolle seite hat mir sehr geholfen :-)

    Comment by stefan SuSE Linux Mozilla Firefox 1.0.3 am 22. April 2005 um 12:30 Uhr

  7. jetzt schau sich das einer an da hab ich doch 2 minuse eingegeben und nur eins erscheint?????
    vieleicht so “sa-learn ––spam ––file”

    Comment by stefan SuSE Linux Mozilla Firefox 1.0.3 am 22. April 2005 um 12:35 Uhr

  8. Ich benutze nicht nur x-spam-flag sondern zusätzlich x-spam-level. Je wahrscheinlicher die eMail Spam ist, desto mehr Sterne stehen hinter x-spam-level. Konkret mache ich es so:
    Wenn x-spam-flag enthält yes : In Ordner Spam verschieben und als gelesen markieren
    Wenn x-spam-level enthält **** : In Ordner Spam verschieben aber als ungelesen belassen

    Comment by alexunil Ubuntu Linux Mozilla Firefox 1.5.0.9 am 27. Februar 2007 um 11:00 Uhr

RSS-Feed für Kommentare zu diesem Artikel.

Die Kommentarfunktion ist zur Zeit leider deaktiviert.

 
powered by WordPress