Spamassassin per E-Mail sensiblisieren
Voraussetzung
Voraussetzung ist eine intakte Installation von Spamassassin und procmail. Lassen Sie sich nicht abschrecken von der Länge des How-Tos, der Mehrwert zur Bekämpfung von Spam ist nicht zu vernachlässigen.Schritt 1: Procmail durch procmailrc konfigurieren
Procmail ermöglicht vor Auslieferung von E-Mails diese vorzubearbeiten, bsp. als Spam zu markieren, ins Nirvana zu schicken (/dev/null) oder Tools wie sa-learn damit zu konfrontieren. Die Datei die die nötigen Anweisungen enthält befindet sich unter /etc/procmailrc. Procmail ist sehr mächtig und ermöglicht allerhand Einsatzzwecke, es lohnt sich ein Blick auf http://www.procmail.org/ zu werfen.An folgende Beispiel-Konfiguration verdeutliche ich die Vorgehensweise von procmail (s. Kommentare)
DROPPRIVS=yes
#Logfile für debugging
LOGFILE=/var/log/procmail
#Für debugging [ON|OFF]
VERBOSE=ON
#Welche Shell soll benutzt werden
#SHELL=/bin/sh
#Mails die kleiner als 256000 Bytes sind, sollen mit spamc -f geprüft werden
:0fw
* < 256000
| /usr/bin/spamc -f
#Wenn die Mail an spam@domain.de ausgeliefert werden soll, dann soll das Script sa-wrap.pl mit der Option - -spam ausgeführt werden. Die sa-wrap.pl ermöglicht das Anlernen von Spam (schlechte E-Mails) und Ham (gute E-Mails) als Attachment, in Schritt 3 wird dieses Script behandelt.
:0
* spam@domain.de
{
:0fw
| /usr/local/bin/sa-wrap.pl - -spam
:0
/dev/null
}
#Wenn die Mail an ham@domain.de ausgeliefert werden soll, dann soll das Script sa-wrap.pl mit der Option - -ham ausgeführt werden.
:0
* ham@domain.de
{
:0fw
| /usr/local/bin/sa-wrap.pl - -ham
:0
/dev/null
}
#Alle E-Mails, die das SPAM-Level von mehr als 7 (Sterne) erreicht haben und an domain1.de etc. ausgeliefert werden sollte, wird zu /dev/null weitergeleitet, also gelöscht. Augenmerk ist auf TO.*undisclosed-recipients zu richten, hier werden auch die Mails behandelt die keinen eindeutigen Empfänger führen, manche Spam-Mails wollten hiermit gewisse Mechanismen austricksen
:0 w
* ^TO.*@domain1.com|TO.*@domain2.com|TO.*@domain3.de|
TO.*@domain4.de|TO.*@domain5.com|TO.*@domain6.de|TO.*@domain7.de|
TO.*undisclosed-recipients
* ^X-Spam-Level:.*\*\*\*\*\*\*
/dev/null
#Ab hier kommt ein Work-Around, um ein Problem mit procmail in gewissen Konstellationen zu beheben
# Work around procmail bug: any output on stderr will cause the “F”
#in “From”
# to be dropped. This will re-add it.
:0 H
* ! ^From[ ]
* ^rom[ ]
{
LOG=”*** Dropped F off From_ header! Fixing up. “
:0 fhw
| sed -e ’s/^rom /From /’
}
$ touch /var/log/procmail.log
$ chown root:mail /var/log/procmail.log
$ chmod 666 /var/log/procmail.log
$ touch /var/log/sa-learn.log
$ chown root:mail /var/log/sa-learn.log
$ chmod 666 /var/log/sa-learn.log
$ mkdir /var/spool/unpack
$ chown root:mail /var/spool/unpack
$ chmod 777 /var/spool/unpack
DOWNLOAD der Beispiel procmailrc
procmailrcSchritt 2: Einrichten der beiden E-Mail Adressen
Die im Huckepack gesandten Spam oder Ham E-Mails werden an zwei Adressen gesandt. Hier in der Beispiel procmailrc sind es spam@domain.de und ham@domain.de. Diese beiden Adressen müssen existieren. Wie diese erzeugt werden ist egal.Schritt 3: Einrichten der sa-wrap.pl
Die sa-wrap.pl ist das Script welche die weitere Verarbeitung der Anhänge übernimmt und sa-learn zuführt. Im Beispiel Script von procmail liegt das Script unter /usr/local/bin/sa-wrap.pl.DOWNLOAD sa-wrap.pl
sa-wrap.plWenn man das Script anschaut, gibt es nur ein paar Möglichkeiten Einstellungen vorzunehmen
#
# Thanks to: Chung-Kie Tung for the removal of the dir
# Adam Gent for bug report
#
# v1.2
use strict;
use MIME::Tools;
use MIME::Parser;
#Debugging aus- oder einschalten [0|1]
my $DEBUG = 0;
#Entpackverzeichnis
my $UNPACK_DIR = ‘/var/spool/unpack’;
#Pfad zu sa-learn
my $SA_LEARN = ‘/usr/bin/sa-learn’;
#kann vernachlässigt werden
my @DOMAINS = qw/gtmp.org winnink.org/;
.
.
.
HINWEIS
Es gibt eine neuere sa-wrap.pl namens sa-wrapper.pl auf die ich nicht weiter eingehe, da ich zufriedener mit der alten Version bin. Mit einer Suche in Google oder einer anderen Suchmaschine nach sa-wrapper.pl wird man fündig werden.Schritt 4: Der Test
Nach einem Neustart des Spamassassin Daemons kann man einen Test durchführen. Man nehme eine leere E-Mail und setze Spam oder Ham E-Mails als Attachement ein (wieviele Anhänge ist egal, es wird iterativ abgearbeitet) und schickt diese entwerder an spam@domain.de oder ham@domain.de, wobei natürlich hier die erstellten E-Mail Adressen genutz werden sollen und keine fiktiver Domainname. Wie überprüft man nun den Erfolg?Ganz einfach auf der Kommandozeile
$ sa-learn –dump magic
wobei magic eine Kurzübersicht bietet. Es sollte so etwas hierbei herauskommen
$ /tmp # sa-learn –dump magic
0.000 0 3 0 non-token data: bayes db version
0.000 0 13938 0 non-token data: nspam
0.000 0 12353 0 non-token data: nham
0.000 0 169414 0 non-token data: ntokens
0.000 0 1170422819 0 non-token data: oldest atime
0.000 0 1205088456 0 non-token data: newest atime
0.000 0 1205058100 0 non-token data: last journal sync atime
0.000 0 1205040158 0 non-token data: last expiry atime
0.000 0 0 0 non-token data: last expire atime delta
0.000 0 0 0 non-token data: last expire reduction count
Voila!
HINWEIS
Nicht jeder Spam wird nach dem Anlernen erkannt werden, manchmal muss man ähnlichen Spam mehrmals senden. Auch das Versorgen mit guten E-Mails (Ham) darf nicht vernachlässigt werden, da hierüber Vergleiche gemacht werden.Nachtrag: Bug in neueren Spamassassin Versionen
Vor kurzem stiess ich auf einen Bug in einer neuen Spamassassin Version. Die Logs führten folgendes auf
archive-iterator: invalid (undef) format in target list, 2
at /usr/lib/perl5/site_perl/5.8.0/Mail/SpamAssassin/
ArchiveIterator.pm line 727,
Lösung: /usr/bin/sa-learn anpassen
Index: sa-learn.raw
================================================================
— sa-learn.raw (revision 507745)
+++ sa-learn.raw (working copy)
@@ -402,7 +402,10 @@
# make sure the target list is in the normal AI format
if ($targets[$elem] !~ /^[^:]*:[a-z]+:/) {
- $targets[$elem] = target($targets[$elem]);
+ my $item = splice @targets, $elem, 1;
+ $elem–; # go back to this element again
+ target($item); # add back to the list
+ next;
}
}
- Zeile entfernen
+ Zeile einfügen
Voila!
Hinweis
Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.Weiterführende Literatur
empfehlenswert sind folgende Bücher:- SpamAssassin von Alan Schwartz
- Mit Open Source-Tools Spam und Viren bekämpfen. Für Unix- und Linux-basierte Mailsysteme von Peter Eisentraut und Alexander Wirt
- Postfix Ge-Packt von Tobias Wassermann

el-mediaagentur.com speichern bei...