Huschi
Moderator
Wer SpamAssassin auf seinem Server installiert hat, kennt das:
Hin und wieder (am Anfang recht häufig) kommen doch noch Spams durch.
Wie bekommt man jetzt diese Email aus seinem Mozilla/Thunderbird/KMail (habe ich einen wichtigen Client vergessen? Nö!) in sa-learn rein?
Diese Frage will ich heute klären:
(Die folgende Idee ist nicht von mir, sondern habe ich zufällig im Internet gefunden. Ich habe lediglich das Perl-Script etwas gekürzt ohne das Copyright zu entfernen und eine brauchbare Installationsanleitung geschrieben.)
1.)
Es werden entsprechende Emailadressen gebraucht. Ich nenne sie mal spam@domain.tld und ham@domain.tld. Der Server muß so präperiert sein, daß er diese Emails annimmt und auf ein lokales Postfach legen will.
2.)
Wir brauchen das folgende Script unter /usr/local/bin/sa-wrap.pl (und zwar ausführbar als 755)
3.)
Wir brauchen eine /etc/procmailrc (Domain-Namen ändern!) bzw. als Ergänzung dazu:
4.)
Die Logfiles und das unpack-Verzeichnis muß man evtl. mit der Hand anlegen, da dem MTA evtl. die nötigen Rechte fehlen:
Fertig!
Nun könnt Ihr alle Spams und Hams als Anhang an die jeweilige Emailadresse schicken und der SA lernt!
Den Erfolg kann man dann in /var/log/sa-learn.log mit verfolgen.
Achtung: entweder Logrotate für die 2 Dateien einschalten, oder, wenn alles funzt einfach 'verbose', 'logfile' und 'debug' in den Dateien auskommentieren.
Fehlersuche:
In /var/log/procmail.log. Wenn dort nichts steht, dann sucht erstmal im maillog nach 'procmail'-Fehlern
huschi.
Hin und wieder (am Anfang recht häufig) kommen doch noch Spams durch.
Wie bekommt man jetzt diese Email aus seinem Mozilla/Thunderbird/KMail (habe ich einen wichtigen Client vergessen? Nö!) in sa-learn rein?
Diese Frage will ich heute klären:
(Die folgende Idee ist nicht von mir, sondern habe ich zufällig im Internet gefunden. Ich habe lediglich das Perl-Script etwas gekürzt ohne das Copyright zu entfernen und eine brauchbare Installationsanleitung geschrieben.)
1.)
Es werden entsprechende Emailadressen gebraucht. Ich nenne sie mal spam@domain.tld und ham@domain.tld. Der Server muß so präperiert sein, daß er diese Emails annimmt und auf ein lokales Postfach legen will.
2.)
Wir brauchen das folgende Script unter /usr/local/bin/sa-wrap.pl (und zwar ausführbar als 755)
Code:
#!/usr/bin/perl -w
#
# sa-wrapper.pl
#
# SpamAssassin sa-learn wrapper (c) Alexandre Jousset, 2004
# modified for use with procmailrc from Sven Neukirchner <sven@konabi.de>
# This script is GPL'd
# Time-stamp: <17 January 2004, 15:56>
# v1.0
use strict;
use MIME::Parser;
my $DEBUG =1;
my $LOGFILE= '/var/log/sa-learn.log';
my $UNPACK_DIR = '/var/spool/unpack';
my $SA_LEARN = '/usr/bin/sa-learn';
my $parser = new MIME::Parser;
$parser->extract_nested_messages(0);
$parser->output_dir($UNPACK_DIR);
my $entity;
eval { $entity = $parser->parse(\*STDIN); };
if ($@) {
die $@;
} else {
if ($DEBUG) {
open(OUT, "|$SA_LEARN -D $ARGV[0] --single >$LOGFILE 2>&1")
or die "Cannot pipe $SA_LEARN: $!";
} else {
open(OUT, "|$SA_LEARN $ARGV[0] --single")
or die "Cannot pipe $SA_LEARN: $!";
}
recurs($entity);
}
$parser->filer->purge;
sub recurs {
my $ent = shift;
if ($ent->head->mime_type eq 'message/rfc822') {
$ent->bodyhandle->print(\*OUT);
return;
}
my @parts = $ent->parts;
if (@parts) {
map { recurs($_) } @parts;
}
}
3.)
Wir brauchen eine /etc/procmailrc (Domain-Namen ändern!) bzw. als Ergänzung dazu:
Code:
verbose=yes
LOGFILE=/var/log/procmail.log
:0
* ^To: spam@domain.tld
{
:0fw
| /usr/local/bin/sa-wrap.pl --spam
:0
/dev/null
}
:0
* ^To: ham@domain.tld
{
:0fw
| /usr/local/bin/sa-wrap.pl --ham
:0
/dev/null
}
4.)
Die Logfiles und das unpack-Verzeichnis muß man evtl. mit der Hand anlegen, da dem MTA evtl. die nötigen Rechte fehlen:
Code:
touch /var/log/procmail.log
chown root:mail /var/log/procmail.log
chmod 775 /var/log/procmail.log
touch /var/log/sa-learn.log
chown root:mail /var/log/sa-learn.log
chmod 775 /var/log/sa-learn.log
mkdir /var/spool/unpack
chown root:mail /var/spool/unpack
chmod 775 /var/spool/unpack
Fertig!
Nun könnt Ihr alle Spams und Hams als Anhang an die jeweilige Emailadresse schicken und der SA lernt!
Den Erfolg kann man dann in /var/log/sa-learn.log mit verfolgen.
Achtung: entweder Logrotate für die 2 Dateien einschalten, oder, wenn alles funzt einfach 'verbose', 'logfile' und 'debug' in den Dateien auskommentieren.
Fehlersuche:
In /var/log/procmail.log. Wenn dort nichts steht, dann sucht erstmal im maillog nach 'procmail'-Fehlern
huschi.
Last edited by a moderator: