SpamAssassin (dt.: Spam-Attentäter) ist ein Spam-Filter. Es kann z.B. über einen MDA aufgerufen werden.
Homepage: http://spamassassin.apache.org/
Lizenz: Perl Artistic License
Tips & Tricks
Es empfiehlt sich, den spamd laufen zu lassen, da das System dann nicht so stark ausgelastet wird 1. So wird er nur einmal gestartet (als spamd) und der spamc (ein kleines C-Programm) schickt die Mail an den spamd und wartet auf Antwort. Bei nicht allzu flotten Rechnern kann das eine Zeitersparnis von 80% bedeuten.
Siehe auch SpamAssassin Speedup.
SpamAssassin Configuration Generator: für die SpamAssassin Konfiguration kann man dieses Online-Tool benutzen.
SpamAssassin-Konfiguration überprüfen: spamassassin --lint -D
Um alle Funktionen von SpamAssassin nutzen zu können, braucht man noch ein paar zusätzliche Perl-Module und Programme:
Filter Leistung verbessern
Bayes System
In der config datei erlauben "use_bayes 1" (standardmäßig aktiv)
Dann immer wenn man spam bekommt kann man sa-learn den Filter verbessern. z:B einzelne abgespeicherte Mail: sa-learn --spam --showdots --mbox spam
Hat man eine Mail Adresse wo nur spam eintrifft. Kann man diese prima für den Filter nutzen.
siehe auch: http://www.softwaredesign.co.uk/Information.SpamFilters.html
Einbindung in MDAs
SpamAssassin und Courier/maildrop
Um SpamAssassin erfolgreich in Courier einbinden zu können, müssen zunächst folgende Schritte durchgeführt werden.
Download und Installation von AuthCourier.pm (http://da.andaka.org/Doku/courier-spamassassin.html)
Neustart von SpamAssassin (/etc/init.d/spamassassin restart)
Änderung der Einstellung DEFAULTDELIVERY in der Konfigurationsdatei /etc/courier/courierd von
DEFAULTDELIVERY=./.Maildir
auf
DEFAULTDELIVERY="| /usr/bin/maildrop"
Neustart des Mailservers (/etc/init.d/courier-mta restart)
Danach kann der Spam Filter entweder global oder per Benutzer eingerichtet werden.
Global
Es muß die Datei /etc/courier/maildroprc angelegt werden. In diese Datei kommen dann die folgenden Informationen. Weiterhin müssen die Berechtigungen auf die Datei mittels chmod 644 /etc/courier/maildroprc abgeändert werden. Weiterhin muss der Eigentümer und die Gruppe wie folgt geändert werden chown daemon:users /etc/courier/maildroprc. Alle Benutzer, die nun Zugriff auf diese globale Datei haben sollen, müssen der Gruppe users hinzugefügt werden. Im Falle von virtuellen Konten wäre dies beispielsweise lediglich der Benutzer vmail.
import USER # hier den korrekten Pfad konfigurieren, z.B. $HOME/.Maildir # der korrekte Wert kann der Einstellung MAILDROPDEFAULT in der # Konfigurationsdatei /etc/courier/courierd entnommen werden DEFAULT="$HOME/.Maildir" if ($LOGNAME ne "") { xfilter "spamc -u $LOGNAME" } else { xfilter "spamc -u $USER" } if (/^X-Spam-Status: Yes/) { # hier sollte der korrekte Ordner angegeben werden, bei mir ist dies .SPAM_IDENTIFIED to $DEFAULT/.SPAM_IDENTIFIED/ }
Lokal
TBD Dieser Part sollte entsprechend obigen Vorgaben überarbeitet werden, da die folgenden Informationen nicht unbedingt zu einem funktionierenden Einbindung von SpamAssassin führen
cc "|spamassassin -e" # oder 'cc "|spamc -c -f"', wenn man spamd benutzt if ($EXITCODE != 0) to Maildir/.spam/ EXITCODE=0
als erste Regel in die .mailfilter Datei einsetzen. Dabei wird die Mail nicht verändert.
Wenn man die X-Spam-Status Header haben will, kann man so vorgehen:
xfilter "spamassassin" # bzw. "spamc -f" if (/^X-Spam-Status: Yes/) to Maildir/.spam/
Die Verarbeitung dauert dann aber etwas länger, da die mail zusätzlich von maildrop geparst werden muss.
Hier noch ein paar nützliche Links zum Thema:
SpamAssassin und procmail
~/.forward für Postfix und andere MTAs mit .forward Dateien wie exim, SendMail etc., bei QMail oder Courier besser .qmail bzw. .courier benutzen
"|/usr/bin/procmail -t"
.qmail oder .courier
|preline /usr/bin/procmail -t
~/.procmailrc
:0fw | /usr/bin/spamassassin :0: * ^X-Spam-Status: Yes $Maildir/.spam/
Man sollte sich die grundlegende Funktionsweise von procmail einmal anschauen, damit man die Mailbox richtig angibt.
Mit spamd:
:0 fw * < 50000 | /usr/local/bin/spamc -f :0: * ^X-Spam-Flag: YES $MAILDIR/.spam/
* < 50000 sagt dem procmail dass die Regel nur bei einer Mail < 50000 Bytes angewendet werden soll (Spam ist meist nicht größer), auch das schont das System, vor allem, wenn man mal größere Dateianhänge bekommt.
Beispieltreffer
Und so sieht eine von SpamAssassin gefundene und verarbeitete Mail aus:
SPAM: -------------------- Start SpamAssassin results ---------------------- SPAM: This mail is probably spam. The original message has been altered SPAM: so you can recognise or block similar unwanted mail in future. SPAM: See http://spamassassin.org/tag/ for more details. SPAM: SPAM: Content analysis details: (30.4 hits, 5 required) SPAM: Hit! (0.5 points) Subject has an exclamation mark SPAM: Hit! (0.4 points) Subject has lots of exclamation marks SPAM: Hit! (3.9 points) BODY: You'd better read all of this spam! SPAM: Hit! (0.2 points) BODY: Contains at least 3 dollar signs in a row SPAM: Hit! (0.9 points) BODY: Common pyramid scheme phrase (1) SPAM: Hit! (1.1 points) BODY: Talks about bulk email SPAM: Hit! (2.5 points) BODY: See for yourself SPAM: Hit! (0.2 points) BODY: No such thing as a free lunch (1) SPAM: Hit! (3.0 points) BODY: Contains "My wife, Jody" testimonial SPAM: Hit! (1.0 point) BODY: Free money! SPAM: Hit! (1.8 points) BODY: Not intended for residents of XYZ. SPAM: Hit! (2.3 points) BODY: Gives a lame excuse about why you were sent this SPAM SPAM: Hit! (1.3 points) BODY: I wonder how many emails they sent in error... SPAM: Hit! (4.8 points) BODY: Claims compliance with senate bill 1618 SPAM: Hit! (2.6 points) BODY: 'one time mailing' doesn't mean it isn't spam SPAM: Hit! (2.3 points) BODY: List removal information SPAM: Hit! (1.9 points) BODY: List removal information SPAM: Hit! (0.5 points) BODY: A WHOLE LINE OF YELLING DETECTED SPAM: Hit! (0.6 points) BODY: 2 WHOLE LINES OF YELLING DETECTED SPAM: Hit! (-1.5 points) BODY: 3 WHOLE LINES OF YELLING DETECTED SPAM: Hit! (-0.4 points) BODY: Contains a line >=199 characters long SPAM: Hit! (0.5 points) Forged hotmail.com 'Received:' header found SPAM: SPAM: -------------------- End of SpamAssassin results --------------------- I'll make you a promise. READ THIS E-MAIL TO THE END! ... (restlicher Schwachsinn gelöscht)
Der war gut. 30 Spampunkte, dabei hätten 5 schon gereicht.
Also ich hätte ers interessant gefunden auch die Mail zu sehen... -- FlorianFesti 2003-08-28 13:17:59
Liegt eine Mail als Datei vor und will man wissen wie diese bewertet würde, kann das Ergebnis ihrer Verarbeitung mit folgendem Befehl auf der Console ausgeben:
spamassassin < mail.txt
Das Starten von SpamAssassin dauert recht lange, weil es von vielen Modulen abhängig ist. (1)