SpamAssassin: sa-learn per Email füttern

blub

New Member
Hallo liebes Forum,

ich habe mich durch alle möglichen Beiträge hier im Forum gewühlt, doch leider haben die mir nur bedingt geholfen. :confused:

Ich habe versucht mit der Anleitung von HUSCHI ( huschi.net - SpamAssassin: sa-learn per Email füttern ), alle Emails die an einen Spam Account weitergeleitet werden, mit dem Script in SpamAssassin anzulernen.

Da ich aber kein Postfix mit Plesk nutzten kann, funktioniert das bei mir nicht. Folgendes habe ich bis jetzt probiert:

Meine .qmail in dem /var/qmail/mailnames/domain.tld/spam/ sieht so aus:
Code:
| true
./Maildir/
| /var/usr/bin/preline /usr/local/bin/sa-wrap.pl
Ist der Aufruf ausreichend oder muss ich da noch was mitübergeben?

Wenn ich aber den Script ausführe bekomme ich folgende Fehlermeldung:
Code:
server:/usr/local/bin# ./sa-wrap.pl
Can't call method "isa" on unblessed reference at /usr/local/share/perl/5.8.4/MIME/Parser/Reader.pm line 187.

Momentan weiß ich nicht weiter. :confused: Kann mir einer einen Tipp geben in welche Richtung ich suchen muss?

Blub ;)
 
Wie man unter Plesk/qmail: Email-Adress an ein Server-Script knüpfen lesen kann, wird die .qmail nur solange durchgearbeitet bis eine Zeile einen return-Code 0 liefert. Dies tut aber bereits die Zeile "./Maildir/". Daher wird das Script nie ausgeführt.
Vertausche die Zeilen und alles was sa-learn nicht lernt wird im Maildir abgelegt. :)

PS: Warum willst Du die Mails dann nochmal in ein Spamfach ablegen?

huschi.
 
Danke für dein Antwort!

Leider scheint es so, als würde der Script mit der Fehlermeldung nicht funktionieren. Ich habe die .qmail angepasst und die Mails kommen jetzt auch nicht mehr in dem Maildir an! Von daher gehe ich davon aus, dass Sie an den Script weitergereicht werden. In den *.log Dateien wird aber nichts eingetragen! Dann funktioniert der script auch nicht oder?

Wie kann ich den Script per Hand starten? sa-wrap.pl --spam email ?
Kann man das Script irgenwie testen? :confused:

Gruß
blub ;)

MOD: Fullquote entfernt!
 
Last edited by a moderator:
Leider scheint es so, als würde der Script mit der Fehlermeldung nicht funktionieren.
Welche Fehlermeldung?

Hier ist die Fehlermeldung:
Code:
server:/usr/local/bin# ./sa-wrap.pl
Can't call method "isa" on unblessed reference at usr/local/share/perl/5.8.4/MIME/Parser/Reader.pm line 187.

In den *.log Dateien wird aber nichts eingetragen!
Welche Logdateien?
Die Logdateien die ich extra für dieses Tool angelegt habe. /var/log/sa-learn.log und /var/log/procmail.log

Ich habe das Tool nach deiner Anleitung installiert. Habe auch alle Berechtigungen so eingestellt wie du es beschrieben hast. :confused:

Vielen Dank für deine Hilfe.
Blub ;)
 
Hallo Huschi,

ich kann die Datei leider nicht runterladen. :confused:

Forbidden
You don't have permission to access /download/sa-wrapper.pl.gz on this server.

Gruß
Blub ;)

Ps.:
Warum nicht gleich so? Damit ist doch alles andere klar.
Lies bitte nochmal meinen ersten Beitrag. Da habe ich die Fehlermeldung schon gepostet. :rolleyes:
 
Hallo Huschi,

jetzt hat der download geklappt. Ich kann Sie auch ausführen ohne Fehlermeldung. Nur wenn ich Sie ausführe scheint er Ewigkeiten was zu tun, aber ich kann nicht erkennen das er wirklich arbeitet.

Wenn ich den Debug Modus einschalte bekomme ich immer diese Fehlermeldung:
Can't locate object method "debugging" via package "mIME::Tools" (perhaps you forgot to load "mIME::Tools"?) at /usr/local/bin/sa-wrapper.pl line 57.

Mime::Tools sind installiert :confused:

Wie kann ich sehen ob das Tool überhaupt was tut?

Nochmal vielen Dank für deine Hilfe.

Gruß
Blub ;)
 
Ich kann Sie auch ausführen ohne Fehlermeldung. Nur wenn ich Sie ausführe scheint er Ewigkeiten was zu tun,
Er tut nichts, sondern wartet auf die Eingabe der Email.
Aber das reicht um festzustellen, ob er funktioniert.

Wie kann ich sehen ob das Tool überhaupt was tut?
In dem Du das Tutorial jetzt weiter verfolgst und auf die Logfiles schaust.

Code:
parser->parse(\*STDIN);
Was wird hier gemacht?
Blöde Frage, blöde Antwort: Das was da steht. :)
Aber ich hab auch eine intelligente Antwort:
Er wartet auf die Eingabe der Email.

huschi.
 
Hallo Huschi,

ich habe mir dein Tutorial noch einmal durchgelesen. Ich habe nicht wirklich einen brauchbaren Hinweis gefunden, wie ich das Tool testen kann. In den Logdateien steht bei mir immer noch nichts.

Wie kann ich dem Tool eine Email mitgeben, wenn ich es von Hand starte?

In die .qmail habe ich bis jetzt eingetragen:
| /var/qmail/bin/preline /usr/local/bin/sa-wrapper.pl spam email@domain.tld

Die Emailadresse die nach spam kommt steht da, damit er den Domain check überspringt! Kann ich hier die Mail per Parameter übergeben, von dem die Mail kommt?

Dies alles hat bis jetzt aber noch nicht dazu geführt das eine Email angelernt wurde.

Sag mir Bitte was du brauchst um mir helfen zu können, ich weiß nicht mehr weiter! :(

Gruß
Blub
 
Wie kann ich dem Tool eine Email mitgeben, wenn ich es von Hand starte?
Per Pipe. Also so:
Code:
cat email.mbox.format > /usr/local/bin/sa-wrapper.pl spam

damit er den Domain check überspringt!
Das hast Du ja richtig erkannt. Hatte ich vergessen zu erwähnen. Den (IMHO) überflüssigen Domaincheck sollte man ganz auskommentieren:
Code:
[COLOR="Red"]#[/COLOR]my ($domain) = $sender =~ /\@(.*)$/;
[COLOR="Red"]#[/COLOR]unless (grep { $_ eq $domain } @DOMAINS) {
[COLOR="Red"]#[/COLOR]	die "I don't recognize your domain !";
[COLOR="Red"]#[/COLOR]}

Und ich hab gerade noch einen Syntaxfehler gefunden:
Code:
[COLOR="Red"]M[/COLOR]IME::Tools->debugging(1);
(großes M)

Du hast sicher auch gesehen, daß der neue Wrapper nach /tmp/spam.log... schreibt, oder?

huschi.

/EDIT:
Hab jetzt ne überarbeitet Version vom neuen Wrapper unter o.g. Downloadlink bereit gestellt, die u.a. kontinuierlich in /var/log/sa-learn.log schreibt.
 
Last edited by a moderator:
Hallo Huschi,

ich habe deine Script nochmal angeschaut.

Einen kleinen Fehler habe ich noch gefunden.
nicht so:
Code:
if ($DEBUG) {
        MIME::Tools->debugging(1);
        open(STDERR, '>>/tmp/spam_err.log');
sonder so::D
Code:
if ($DEBUG) {
        MIME::Tools->debugging(1);
        open(STDERR, '>>$LOGFILE');

Viel Dank ich habe den Script jetzt zum laufen gebracht.

Gruß
Blub;)
 
Last edited by a moderator:
open(STDERR, '>>$LOGFILE');
Das hab ich mit Absicht im /tmp/ gelassen, weil dort nochmals ganz andere Info's geschrieben werden.

Aber so wie Du es geändert hast bringt es rein gar nichts.
Es muß entweder
Code:
'>>'.$LOGFILE
oder so
Code:
">>$LOGFILE"
geschrieben werden. (Eine Variable in einfachen Hochkommatas wird nicht referenziert.)

PS: Glückwunsch!

huschi.
 
Back
Top