Mail-Server » Qmail

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

vom 2006-12-01 09:03, zuletzt 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 (5 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.
---

Kommentar von Stefan (2008-06-02 13:50:39):
Plesk 8.3
Qmail

Ich hab die Anleitung genau befolgt. Joch eine Abweichende Spam Adresse verwendet. Ist das möglich.

Auf meine Mail mit Spam im Anhang, bekomme ich folgende Nachricht zurück gesendet.

SA lern funktioniert eigentlich einwandfrei. Muss ich noch was nach installieren?
:
Can't locate MIME/Tools.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/x86_64-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.
preline: fatal: unable to copy input: broken pipe

Kommentar von Stefan (2008-06-02 21:25:51):
Sorry, blöde Frage von mir. Habs über yast nachinstalliert. Jetzt funzt es super. Vielen Dank für die tolle Anleitung.

Kommentar von stevie (2009-03-01 21:29:44):
Hallo Huschi,

Vielen Dank für die Anleitung + Skript. Klappt Wunderbar. Leider habe ich das Problem das an Spamassassin auch die spam@domain.tld überprüft bevor dann der wrapper die anhänge lernt. Wie kann ich SA beibringen das er für diese spezielle Adresse keine Überprüfung vornimmt.
Mein Setup ist qmail ,vpopmail + qmail-scanner.
Gruß
Stevie

Kommentar von huschi (2009-03-01 21:49:13):
@stevie:
Das ist kein Problem.

Und PS: Dies ist keine Diskussions-Plattform!

huschi.

Kommentar von Frank (2009-04-20 09:42:03):
Hm. Wo darf man denn diskutieren?
Da mein Perl Kenntnisse praktisch Null sind, habe ich zwei Fragen:
1. Kann ich mehrere SPAMs an eine Email hängen?
2. Wir der Text der eigentlichen Email ignoriert, oder auch verarbeitet.
Gruß
Frank