Admin- / ISP-Software » Plesk

ID #1205 Plesk/Qmail: sa-learn per Email füttern

Vorwort:

Dieses HowTo basiert auf meine HowTo's SpamAssassin: sa-learn per Email füttern und Plesk/qmail: Email-Adresse an ein Script knüpfen, den passenden Thread im Server-Support-Forum und ist die Zusammenfassung von flyingoffice.

SpamAssassin filtert zu wenig Spams

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 angepaßt ohne das Copyright zu entfernen.)

Erklärung:

Wir wollen aus unserem Email-Client eine nicht erkannte Spam-Mail per Forward/Weiterleiten an spam@server.tld schicken. (Und zwar als Anhang! Ganz wichtig!)
Der Email-Server (Qmail) nimmt diese Mail entgegen und reicht sie an sa-wrapper.pl weiter, der dann den Anhang an sa-learn füttert.
Man beachte: Der Anhang wird verfüttert, nicht die ganze Email!

Los gehts:

1.)
In Plesk die benötigten Emailkonten spam@domain.tld und ham@domain.tld anlegen.

2.)
Die benötigten Dateien und Verzeichnisse anlegen sowie die erforderlichen Benutzer und Rechte anlegen.

touch /var/log/sa-learn.log
chown root:popuser /var/log/sa-learn.log
chmod 644 /var/log/sa-learn.log
mkdir /var/spool/unpack
chown root:popuser /var/spool/unpack
chmod 774 /var/spool/unpack
mkdir /var/spool/spamassassin
chown root:popuser /var/spool/spamassassin
chmod 774 /var/spool/spamassassin

3.)
Die Datei /etc/mail/spamassassin/local.cf editieren und folgende Einträge vornehmen.

# Enable the Bayes system
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
bayes_path /var/spool/spamassassin/bayes
bayes_file_mode 777

4.)
Download und entpacken von sa-wrapper.pl (als gzip).

cd /usr/local/bin/
wget http://www.huschi.net/download/sa-wrapper.pl.gz
gzip -d sa-wrapper.pl.gz
chmod 755 /usr/local/bin/sa-wrapper.pl

5.)
Die Datei /var/qmail/mailnames/domain.tld/spam/.qmail editieren und folgende Einträge vornehmen:

|/var/qmail/bin/preline /usr/local/bin/sa-wrapper.pl --spam
#./Maildir/

6.)
Die Datei /var/qmail/mailnames/domain.tld/ham/.qmail editieren und folgende Einträge vornehmen:

|/var/qmail/bin/preline /usr/local/bin/sa-wrapper.pl --ham
#./Maildir/

7.)
Falls Änderungen der spamassassin/local.cf nötig waren, muß SpamAssassin neu gestartet werden:

/etc/init.d/spamd restart

Ein Neustart von Qmail schaded zwar nicht, ist aber unnötig.

Was tun, wenn es nicht läuft?

- Alle Verzeichnis- und Dateirechte überprüfen.
- $DEBUG = 1 im Wrapper setzen.
- Damit wird ein weiteres Logfile geschrieben: /tmp/spam_err.log
- Alle Logfiles überprüfen.

 

sozial Bookmarking
Bookmarken bei YIGG Bookmarken bei Mister-Wong Bookmarken bei Icio Bookmarken bei del.icio.us Bookmarken bei Technorati Bookmarken bei Furl Bookmarken bei Spurl Bookmarken bei Yahoo Bookmarken bei Google

huschi, 2006-12-04 10:28     Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen

Dieser Inhalt ist unter der Creative-Commons Lizenz lizensiert.

Probleme bitte im Server-Support-Forum diskutieren.

Rubriken zu diesem Artikel
überflüssig 1 2 3 4 5 wertvoll  
Durchschnittliche Bewertung:   5 von 5 (4 Bewertungen)

Artikel kommentieren

Kommentar von Hendrik (2006-12-03 19:17:38):
Im ersten Kasten fehlt wohl ein "touch /var/spool/spamassassin"

Kommentar von Florian Krebs (2006-12-19 17:44:10):
Übernimmt der der parser auch mehrere angehängte Nachrichten ?

Oder muss jede zu lernende Nachricht einzeln angehängt und verschickt werden ?

Btw, ansonsten supernützliches tutorial.

Kommentar von huschi (2006-12-19 22:05:02):
"Übernimmt der der parser auch mehrere angehängte Nachrichten ?"
Ja.

huschi.

Kommentar von magicg (2007-06-03 11:38:20):
hallo,

ich bekomme leider folgenden fehler:

Jun 3 11:30:34 s15212549 qmail: 1180863034.837084 starting delivery 24: msg 6170566 to local 8-spam@domain.at
Jun 3 11:30:34 s15212549 qmail: 1180863034.837151 status: local 1/10 remote 0/20
Jun 3 11:30:36 s15212549 qmail: 1180863036.881447 delivery 24: deferral: preline:_fatal:_child_crashed/
Jun 3 11:30:36 s15212549 qmail: 1180863036.881645 status: local 0/10 remote 0/20

debug=1 steht im pl-script und sa-learn.log bleibt leider leer. die bayes db wird auch nicht gefüttert.

ichg denke es liegt an preline, da ich das command auch nicht in der shell ausführen kann:
/var/qmail/bin/preline /usr/local/bin/sa-wrapper.pl --spam
preline: usage: preline cmd [ arg ... ]

kennt wer diesen fehler od. hat eine idee? danke!

Kommentar von magicg (2007-06-03 11:56:11):
@myself

problem bereits gelöst :O)
falls jemand das selbe problem haben sollte.
-> problem waren die dateirechte wodurch das skript einen fehler code zurück liefert.

in meinem fall (suse 9.3)
-rwxrwxr-x 1 root popuser 62541 Jun 3 11:53 sa-learn.log
-> sa-learn dem popuser gegeben mit schreib rechten

-rw-rw---- 1 qmaild popuser 24576 Jun 3 11:53 bayes_seen
-rw-rw---- 1 qmaild popuser 647168 Jun 3 11:53 bayes_toks
-> bayes DB files dem user popuser mit schreibrechten.

dann funktioniert es auch!

Kommentar von nh2 (2007-06-18 16:54:21):
Hatte nach der Anleitung:

outputting body to disk file: /var/spool/unpack/msg-1182177998-7793-0/msg-7793-1.msg
sh: /var/log/sa-learn.log: Permission denied

Gelöst, indem ich

Kommentar von nh2 (2007-06-18 16:56:53):
chmod 666 /var/log/sa-learn.log gemacht habe.

(Entschuldigung für den Doppelpost - die Seite scheint den Post nach doppelten Anführungszeichen abzuschneiden.

Kommentar von chris (2007-08-09 22:46:30):
Habs installiert nach Anleitung.
Wie kann ich erkennen, ob Spam eingelernt wird oder nicht?
Muß die Prozedur für Jede Domain erstelllt werden?
Für was ist die ham@domain.tld?

;)
Chris

Kommentar von Peter (2007-12-20 11:22:01):
Zitat: "Die Datei /var/qmail/mailnames/domain.tld/spam/.qmail editieren und folgende Einträge vornehmen:"
Auf meinem Server mit Plesk 8.1.1 und Suse10 kein spam oder ham Verzeichnis unter dem angegebenen Pfad. Im Verzeichnis /var/qmail/mailnames/domain.tld/ stehen Verzeichnisse mit meine eingerichteten Emailadressen. Dort gibt es zwar eine .qmail aber keine spam oder ham Verzeichnisse. Was ist zu tun? Gruss Peter

Kommentar von jvp (2008-01-02 19:13:33):
> Auf meinem Server mit Plesk 8.1.1 und
> Suse10 kein spam oder ham Verzeichnis
> unter dem angegebenen Pfad. Im
> Verzeichnis
> /var/qmail/mailnames/domain.tld/
> stehen Verzeichnisse mit meine
> eingerichteten Emailadressen. Dort
> gibt es zwar eine .qmail aber keine
> spam oder ham Verzeichnisse. Was ist
> zu tun?
Den Anweisungen zu Punkt 1.) unter "Los geht's folgen...

Kommentar von Karsten (2008-01-05 18:03:33):
Bekomme folgende Fehlermeldung:

Can't locate MIME/Tools.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/i586-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl .) at /usr/local/bin/sa-wrapper.pl line 16.
BEGIN failed--compilation aborted at /usr/local/bin/sa-wrapper.pl line 16.

Kommentar von huschi (2008-01-06 18:40:02):
@Karsten:
Dieses Howto setzt voraus, daß sa-learn bereits funktionsfähig ist. Dies trifft bei Dir nicht zu, da Dir noch (einige?) Perl-Bibliotheken fehlen. (Zumindest die MIME::Tools.)

huschi.

Kommentar von jvp (2008-01-08 01:04:39):
wozu brauche ich eigentlich preline? Bei mir erhalte ich immer
preline: usage: preline cmd [ arg ... ]
wenn ich es weglasse und mein sa-wrapper.sh für Honeypot-Adressen benutze geht es auch ohne:
#spam/.qmail:
|/usr/local/bin/sa-wrapper.sh --spam
./Maildir/

#/usr/local/bin/sa-wrapper.sh:
#!/bin/sh

DEBUG=0
LOGFILE="/var/log/sa-learn.log"
SA_LEARN="/usr/bin/sa-learn"

spamham=$1

if [ $DEBUG -eq 1 ]; then
cat - |$SA_LEARN -D $spamham --single >>$LOGFILE 2>&1
else
cat - |$SA_LEARN $spamham --single
fi
exit 0

Kommentar von huschi (2008-01-20 20:53:22):
@jvp:
Siehe "man preline":
---
preline feeds each incoming mail message through command.
At the top of each message it inserts a UUCP-style From_
line, a Return-Path line, and a Delivered-To line.
---