Ergebnis 1 bis 8 von 8

Thema: Spamassassin anlernen

  1. #1
    TP-Veteran Avatar von -Andreas-
    Registriert seit
    Mar 2002
    Ort
    Karlsruhe
    Beiträge
    1.390

    [Perl] Spamassassin anlernen

    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)

  2. #2
    TP-Veteran Avatar von -Andreas-
    Registriert seit
    Mar 2002
    Ort
    Karlsruhe
    Beiträge
    1.390
    hat denn keiner ne idee? Oder könnte ein Mod das vielleicht mal nach Server & Provider verschieben? Möglicherweise hab ich da mehr Erfolg!

  3. #3
    TP-Moderator Avatar von fuchzga
    Registriert seit
    Nov 2007
    Ort
    München
    Beiträge
    1.841
    Moin,

    Zitat Zitat von -Andreas- Beitrag anzeigen
    Wenn ich eine Spammail bekommen, leite ich sie an eine definierte Mailadresse weiter und mein Server erkennt sie als Spam.
    Soweit ist das klar...

    Zitat Zitat von -Andreas- Beitrag anzeigen
    Alternativ ginge noch die Lösung, dass ich die SPAM-Mails in nen IMAP Ordner kopiere und er dann lernt...
    Aber genau das machst du doch gerade, oder?
    Wenn du eine Spammail an eine definierte Mailadresse weiterleitest, dann liegt die Mail in einer INBOX, wo sa-learn reinschaut.
    Die INBOX ist doch ein definierter IMAP-Ordner... ?

  4. #4
    TP-Veteran Avatar von -Andreas-
    Registriert seit
    Mar 2002
    Ort
    Karlsruhe
    Beiträge
    1.390
    jap Hast 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!

  5. #5
    TP-Moderator Avatar von fuchzga
    Registriert seit
    Nov 2007
    Ort
    München
    Beiträge
    1.841
    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.
    Code:
    /home/mail/user@domain/.Junk/cur
    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.)
    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..
    Code:
    sa-learn --dump magic
    ...kannst du sehen, wieviel Spam & Ham dein SA bereits gelernt hat.

  6. #6
    TP-Veteran Avatar von -Andreas-
    Registriert seit
    Mar 2002
    Ort
    Karlsruhe
    Beiträge
    1.390
    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:

    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);
    Funktioniert auch ansich, bringt aber dennoch ein paar Fehlermeldungen:
    Name "main::OUT" used only once: possible typo at ./test.pl line 9.
    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!
    Geändert von -Andreas- (06.05.2009 um 14:39 Uhr)

  7. #7
    TP-Moderator Avatar von fuchzga
    Registriert seit
    Nov 2007
    Ort
    München
    Beiträge
    1.841
    Wenn du das ganze Verzeichnis .Junk scannen willst, dann kannst du auch einfach mit dem Parameter --dir arbeiten, anstatt jedes File anzugeben.
    Code:
    /usr/bin/sa-learn --spam --dir /home/mail/user@domain/.Junk/cur
    sa-learn erkennt anhand von hashes, ob die Mail schon mal gelernt wurde.

    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.

    Zitat Zitat von -Andreas-
    kannst du mir dein bash-script mal zeigen?
    Das würde den Rahmen hier sprengen.
    Mal ein einfaches Beispiel, um alle Files löschen zu lassen, die älter als 14 Tage sind:

    Code:
    #!/bin/sh
    
    for Junk in `find /home/mail/user@domain/.Junk/cur -type f -mtime +14`
    do
       rm $Junk
    done
    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.
    Hab dein Script mal angepasst:
    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);
    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.

  8. #8
    TP-Veteran Avatar von -Andreas-
    Registriert seit
    Mar 2002
    Ort
    Karlsruhe
    Beiträge
    1.390
    Okay, vielen Dank Ham anlernen kommt jetzt auch noch dazu

    Viele Grüße!

    edit:

    Code:
    #!/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");
    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 geschoben

    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

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51