Wichtig: Ich blogge nun auch unter www.adminbloggt.de - Lest dazu den Eintrag hier im Blog.

otrs und sa-learn

Manche kennen es sicher: Im Ticketsystem OTRS kommt natürlich genausoviel Spam an wie bei einem normalen Mailclient – es ist nur doppelt nervig weil man den Spam dann im Ticketsystem hat. Bisher haben wir den Spam einfach in die Queue Spam verschoben und der GenericAgent hat einmal am Tag die Tickets aus der Queue Spam gelöscht.

Ab sofort gehen wir noch einen Schritt weiter! Wir lassen sa-learn die Tickets lernen – alles was nicht in der Queue Spam liegt ist automatisch ham und alles was in der Queue Spam liegt ist automatisch spam. Ich hoffe wir können so das Spamaufkommen im Ticketsystem etwas runter schrauben.

Ich weiß ihr seit nun alle ganz wild auf mein Script – ich gebs aber nicht raus. Tongue out

Aber für alle die ein wenig Programmieren können ist das kein Problem:

  • Über den GenericAgent ein Script aufrufen (Übergeben werden automatisch Ticket Nummer und TicketID)
  • In der Tabelle article_plain findet ihr alle Mails im Plaintext.
  • Mit der TicketID und der TicketNummer in Beziehung zu den anderen Tabellen bekommt ihr dann die richtigen Mails im Plaintext. Die dann in eine Datei schreiben und von sa-learn lernen lassen.

Eigentlich total simple wenn man weiß wo man anfangen muss. Cool

Ähnliche Beiträge im Blog:



7 Kommentare zu “otrs und sa-learn”

  1. Kommentar von D. Nienhaus | 14.02.07 um 23:35

    Viel zuviel Aufwand Timo. :)

    Trainiere einfach den Server, welcher die Emails für OTRS empfängt und weitergibt. Schon hast du Ruhe. :)

  2. Kommentar von Timo Dreger | 15.02.07 um 07:07

    mh?

  3. Kommentar von Felix | 16.02.07 um 13:05

    OTRS hat von Haus aus aber auch gute Filter. Spamassassin makiert die Mails entsprechend und der OTRS interne Filter sortiert sie bei uns.

    Ist ja eigentlich nicht so schwer, oder? ;-)

  4. Kommentar von Timo Dreger | 16.02.07 um 13:10

    Najjjaaa.. ;-)

    Also die Mails die Spamassassin schon rausfiltert die erscheinen gar nicht mehr im OTRS.

    Mir ging es um die Mails die Spamassassin noch nicht als Spam erkannt hat. Die soll sa-learn dann lernen, damit das nicht nochmal passiert ;-)

  5. Kommentar von Christof | 06.03.09 um 05:12

    Na, Du bist ja ein toller Kerl: “Ich weiß ihr seit nun alle ganz wild auf mein Script – ich gebs aber nicht raus”. Selber ein Open-Source System benutzen und dann sowas :-(

    Tatsächlich ist exakt diese Funktion sehr sinnvoll, so kann man seinen Spamassassin von OTRS aus trainieren.

    Ärgerlich ist aber, dass diese Seite bei Google ganz oben auftaucht, wenn man nach OTRS und sa-learn sucht. Du solltest sie entweder entfernen oder Deine Verweigerungshaltung überdenken…

    Ansonsten: andere im Web sind da wesentlich großzügiger, haben entsprechendes geschrieben und veröffentlichen dies auch:

    http://docs.indymedia.org/bin/view/Sysadmin/SoSInstall#Spamassassin

  6. Kommentar von Timo Dreger | 06.03.09 um 06:48

    Das hat nichts damit zu tun, dass ich das nicht veröffentlichen möchte… Allerdings ist mein Programmierstil nicht gerade für die öffentlichkeitsfähig. Daher habe ich nur die paar Tipps gegeben, damit es sich jeder selber basteln kann. Sorry ..

  7. Kommentar von Christof | 07.03.09 um 13:32

    Ach so. Na das ist verständlich ;-)

    Ich habe das Skript, auf das ich verwies, aktualisiert. Es ist ein schneller Hack, aber es läuft so bei uns:

    #!/usr/bin/perl -w

    # dieser Perl-Skript liegt in /opt/otrs-eigene-skripe und
    # wird in /opt/otrs/scripts/fuettere_sa_learn.pl gesymlinkt
    # und von GenericAgent aufgerufen

    # Er legt die Mails aus einer Queue, in die nicht erkannter Spam
    # verschoben wurde als einzelne Dateien in ein Verzeichnis ab, hier
    # /var/local/otrs/spam/

    # geht von einer Installation von otrs in /opt/otrs aus

    # Achtung, folgende Dinge sind hart codiert, es ist ein hack ;-)
    # Die Queue-ID, in die Spam verschoben wird:
    # hier $SpamQueueID (6)
    # Das Verzeichnis, in das der Spam abgelegt wird:
    # hier /var/local/otrs/spam/

    # Die in dem Verzeichnis abgelegten Dateien können weiter verarbeitet
    # werden, indem sie an sa-learn übergeben werden.

    # Ich benutze dazu sa-wrapper:
    # http://www.el-mediaagentur.com/index.php/archives/spamassassin-per-e-mail-sensiblisieren

    my $ID=$ARGV[1];
    my $Ticket=$ARGV[0];

    # use ../ as lib location
    use File::Basename;
    use FindBin qw($RealBin);
    #use lib dirname($RealBin);
    use lib dirname($RealBin).”/otrs”;
    use lib dirname($RealBin).”/otrs/Kernel/cpan-lib”;

    use strict;

    # to get it readable for the webserver user and writable for otrs
    # group (just in case)
    # –

    umask 002;

    use Time::Local;
    use Date::Parse;
    use Kernel::Config;
    use Kernel::System::Time;
    use Kernel::System::Log;
    use Kernel::System::DB;
    use Kernel::System::Main;
    use Kernel::System::Ticket;
    use Kernel::System::Ticket::Article;

    my $Self = shift;
    my $ARG = $ARGV[0];

    my $SpamQueueID = 6; # ID of the queue where spam are stored

    # Init stuffs

    my $ConfigObject = Kernel::Config->new();

    my $LogObject = Kernel::System::Log->new(
    ConfigObject => $ConfigObject,
    );

    my $TimeObject= Kernel::System::Time->new(
    ConfigObject => $ConfigObject,
    LogObject => $LogObject,
    );

    my $MainObject = Kernel::System::Main->new(
    LogObject => $LogObject,
    ConfigObject => $ConfigObject,
    );

    my $DBObject = Kernel::System::DB->new(
    ConfigObject => $ConfigObject,
    LogObject => $LogObject,
    MainObject => $MainObject,
    );

    my $TicketObject = Kernel::System::Ticket->new (
    ConfigObject => $ConfigObject,
    LogObject => $LogObject,
    DBObject => $DBObject,
    TimeObject => $TimeObject,
    MainObject => $MainObject,
    );

    # get ArticleID

    my @ArticleIDs = $TicketObject->ArticleIndex(
    TicketID => $ID,
    );

    my $AID = $ArticleIDs[0];

    # Get Article Infos

    my %Article = $TicketObject->ArticleGet(
    ArticleID => $AID,
    );

    my $PlainMessage = $TicketObject->ArticlePlain(
    ArticleID => $AID,
    );

    # Put it in the dir

    my $QID = $TicketObject->TicketQueueID(
    TicketID => $ID,
    );

    open(F, “>>/var/local/otrs/spam/$AID”);
    print F $PlainMessage;
    close(F);

    $LogObject->Log(
    Priority => ‘notice’,
    Message => “sa-learn aufgerufen fuer Ticket $ID gespeichert in $AID”,
    );

    Alles Gute,

    Christof

Kommentar schreiben »