hat denn keiner ne idee? Oder könnte ein Mod das vielleicht mal nach Server & Provider verschieben? Möglicherweise hab ich da mehr Erfolg!
Hab auf meinem Server unter Debian Spamassassin laufen und würde ihn jetzt gerne folgendermaßen anlernen:
Wenn ich eine Spammail bekommen, leite ich sie an eine definierte Mailadresse weiter und mein Server erkennt sie als Spam.
Bin jetzt so weit, dass ich durchblickt hab, was sa-learn ist, aber das bringt mich nicht so recht weiter... Gibts da vielleicht was fertiges?
edit: Alternativ ginge noch die Lösung, dass ich die SPAM-Mails in nen IMAP Ordner kopiere und er dann lernt...
Geändert von -Andreas- (06.05.2009 um 15:44 Uhr)
hat denn keiner ne idee? Oder könnte ein Mod das vielleicht mal nach Server & Provider verschieben? Möglicherweise hab ich da mehr Erfolg!
japHast recht, also nur eine Möglichkeit :P
Das war vielleicht etwas unglücklich formuliert... Bisher mache ich gar nichts mit dem SPAM, den Spamassassin nicht erkennt... Ich lösche ihn einfach. Würde ihn aber gerne an eine Mailadresse leiten oder in einen IMAP-Ordner kopieren, woraufhin Spamassassin dann lernen soll!
Wenn du mit Thunderbird arbeitest, dann kann man dort ja auch einstellen, dass Spam in den "Junk" Ordner verschoben werden soll.
Dieser Junk-Ordner ist letztendlich auch ein IMAP-Ordner.
z.B.
Diesen Ordner könnte man nun mit sa-learn überwachen. Und zusätzlich Mails die älter als 14 Tage sind automatisch löschen. (Löschen aber nur, wenn es sich um deine Postfächer handelt, ansonsten würde ich die Clienten vorher informieren.)Code:/home/mail/user@domain/.Junk/cur
Ich habe mir dazu einen CronJob aufgesetzt. Mit ein bisserl bash-Scripting geht alles.
Ich habe gerade keinen Beleg, aber irgendwo hab ich mal gelesen, dass sa-learn nur richtig arbeitet, wenn auch Ham angelernt wurde.
Schau mal, mit..
...kannst du sehen, wieviel Spam & Ham dein SA bereits gelernt hat.Code:sa-learn --dump magic
kannst du mir dein bash-script mal zeigen?
edit: ich versteh auch die syntax von sa-learn nich ganz... ist folgendes richtig:
sa-learn --spam /home/mail/user@domain/.Junk/cur/xxx.xxxxx...
edit2: hab mir folgendes aus den fingern gesaugt:
Funktioniert auch ansich, bringt aber dennoch ein paar Fehlermeldungen:Code:#!/usr/bin/perl -w use strict; my $openpfad; my $pfad = "/var/qmail/mailnames/domain.tld/account/Maildir/.Junk/cur"; opendir(DIR,$pfad); while(my $datei = readdir(DIR)) { if($datei ne '.' && $datei ne '..') { open(OUT,"|/usr/bin/sa-learn --spam ".$pfad."/".$datei); unlink($pfad."/".$datei); } } closedir(DIR);
ICh kenn mich leider mit Perl kaum aus ^^ War schon ne Glanzleistung für mich, bis hier her. Hoff Ihr könnt mir vielleicht noch mit der Fehlermeldung helfen!Name "main::OUT" used only once: possible typo at ./test.pl line 9.
Geändert von -Andreas- (06.05.2009 um 14:39 Uhr)
Wenn du das ganze Verzeichnis .Junk scannen willst, dann kannst du auch einfach mit dem Parameter --dir arbeiten, anstatt jedes File anzugeben.
sa-learn erkennt anhand von hashes, ob die Mail schon mal gelernt wurde.Code:/usr/bin/sa-learn --spam --dir /home/mail/user@domain/.Junk/cur
Mir wäre es zu gefährlich, wenn man die Mails gleich löscht. Denn darunter könnten auch sogn. false positives stecken, sprich es wurde eine Mail als Junk eingeordnet, die aber eigentlich kein Junk ist. Darum lasse ich den Usern nochmal ein paar Tage Zeit, um auch mal in den Junk-Ordner zu schauen.
Das würde den Rahmen hier sprengen.Zitat von -Andreas-
Mal ein einfaches Beispiel, um alle Files löschen zu lassen, die älter als 14 Tage sind:
Die Meldung, welche dein Perl-Script an der Konsole ausgibt, ist nur eine Warnung. Diese könnte man auch ignorieren oder du nimmst das "-w" raus.Code:#!/bin/sh for Junk in `find /home/mail/user@domain/.Junk/cur -type f -mtime +14` do rm $Junk done
Hab dein Script mal angepasst:
Und auch immer hübsch Ham anlernen. Hier würde sich anbieten für "false positives" einen eigenen Ordner anzulegen. Diese Mails aber nicht löschen, sondern in die INBOX verschieben.Code:#!/usr/bin/perl use strict; my $openpfad; my $pfad = "/var/qmail/mailnames/domain.tld/account/Maildir/.Junk/cur"; my $datei; opendir(DIR,"$pfad"); for $datei (grep {!/^(.|..)$/} readdir DIR) { open(OUT,"|/usr/bin/sa-learn --spam ".$pfad."/".$datei); unlink($pfad."/".$datei); } closedir(DIR);![]()
Okay, vielen DankHam anlernen kommt jetzt auch noch dazu
Viele Grüße!
edit:
So, beim Abrufen kommt aller SPAM in den Ordner Junk. Dann kann ich in die Unterordner Junk und Ham sortieren und das Script füttert sa-learn. Das Löschen hab ich erst nochma weggelassen, alle bekannten Ham-Mails werden wieder in die Inbox geschobenCode:#!/usr/bin/perl use strict; my $pfad = "/var/qmail/mailnames/andreas-krawitz.de/mail/Maildir/"; open(OUT,"|/usr/bin/sa-learn --spam --dir ".$pfad.".Junk.Junk/cur"); open(OUT,"|/usr/bin/sa-learn --spam --dir ".$pfad.".Junk.Junk/new"); open(OUT,"|/usr/bin/sa-learn --ham --dir ".$pfad.".Junk.Ham/cur"); open(OUT,"|/usr/bin/sa-learn --ham --dir ".$pfad.".Junk.Ham/new"); # open(OUT,"|rm -R ".$pfad.".Junk.Junk/cur/*.*"); # open(OUT,"|rm -R ".$pfad.".Junk.Junk/new/*.*"); open(OUT,"|mv ".$pfad.".Junk.Ham/cur/*.* ".$pfad."cur"); open(OUT,"|mv ".$pfad.".Junk.Ham/new/*.* ".$pfad."new");
edit2: okay, als sh-script hätt ich mir die sache vll einfacher gemacht...
Geändert von -Andreas- (07.05.2009 um 09:22 Uhr)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)