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. 
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. 





Viel zuviel Aufwand Timo.
Trainiere einfach den Server, welcher die Emails für OTRS empfängt und weitergibt. Schon hast du Ruhe.
mh?
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?
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
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
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 ..
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