Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PostmasterSamples.pdf

Renee
December 07, 2016
1.2k

 PostmasterSamples.pdf

Renee

December 07, 2016
Tweet

Transcript

  1. Renée Bäcker @reneeb_perl [email protected] * Feature-Addons → http://feature-addons.de * OPAR

    → http://opar.perl-services.de * OTRSWeekly → http://otrsweekly.info
  2. PostmasterFilter in OTRS • OTRS • Der Postmaster • Filter

    im Adminbereich • Eigene Filtermodule entwickeln
  3. OTRS • OpenSource Ticketsystem • ~ 150.000 Installationen • 35

    Sprachen • Responsive Design • Perl / JavaScript
  4. OTRS • Ticketsystem als Kern – Erweiterbarkeit über Addons –

    ITSM – FAQ – Wiki – Anbindung an Drittsysteme wie JIRA – ...
  5. Postmaster • Wesentlicher Bestandteil von OTRS ist die Mailverarbeitung –

    POP3 – IMAP – Fetchmail • Es gibt eine zentrale Stelle für die Verarbeitung von Mails
  6. Postmaster • Verarbeitet eingehende E-Mails – „Analysiert“ eingehende Mails –

    Erstellt Tickets / Artikel – Prüft ob geschlossene Tickets neue Artikel bekommen dürfen – Kann E-Mails ablehnen – Über Filter erweiterbar
  7. Postmaster • „Analyse“ der eingehenden Mail – Aufspalten in die

    Einzelteile Header, Body, Anhänge – Keine Inhaltsanalyse (Spam-/Virenerkennung) – Inhaltsanalyse über Postmaster-Filter
  8. Header Multipart/Mixed – this message is different parts, put together,

    and the order matters. Multipart/Alternative- I have two children, pick the prettier one and show it off. Text/Plain – I am a blob of plain text Multipart/Related – My children are bits and pieces of each other Text/HTML – Pretty, Pretty Text. Image/Gif – I am a picture of a cat, referenced by pretty, pretty text, I hope. Image/Jpeg – I’m an attachment (in case you couldn’t see the picture of the cat above).
  9. Filter (GUI) • Filter über Webfrontend (Adminbereich) konfigurierbar • Suche

    Text in der Mail und setze einen Wert – Suche erfolgt mit Regulären Ausdrücken • Pre-Filter Kernel/System/PostMaster/Filter/MatchDBSource.pm
  10. Filter (GUI) UseCases → • Bestimmte Absender blockieren • Dynamisches

    Feld an Hand Header-Angaben füllen • Dynamisches Feld an Hand Mailtext füllen • Ticket in bestimmte Queue stecken • Status setzen
  11. Filter (GUI) UseCases → Mails, die automatisch an [email protected] verschickt

    (mit Perl-Modul Mail::Sender) wurden und einen HTML-Link enthalten, werden als SPAM behandelt: Sie werden in die Queue Junk geschoben und erfolgreich Geschlossen.
  12. Filter (GUI) UseCases → Wird ein Demosystem für eine OTRS-Erweiterung

    angefordert, werden diese in die Queue „FeatureAddons“ geschoben und das Dynamische Feld „AddonName“ wird gefüllt.
  13. Filter (GUI) • Was tun wenn … ich die Header

    nicht kenne? der benötigte Header nicht zur Auswahl steht? ich den Regulären Ausdruck prüfen möchte?
  14. Rohform von Mails • Mail kann in unformatierter Form angezeigt

    werden. → SysConfig für „ViewZoom“ die PlainView aktivieren
  15. Rohform von Mails • Mail kann in unformatierter Form angezeigt

    werden. → dann auf „Unformatierte Ansicht“ in TicketZoom
  16. Rohform von Mails • Mail kann in unformatierter Form angezeigt

    werden. → dann auf „Unformatierte Ansicht“ in TicketZoom
  17. Rohform von Mails • Mail kann in unformatierter Form angezeigt

    werden. → Header raussuchen und in SysConfig eintragen
  18. Filter (GUI) • Vorteile – Sehr einfach zu verwalten –

    Werte schnell auswerten • Queue setzen • Dynamische Felder füllen • Mails ignorieren
  19. Filter (GUI) • Nachteile – Immer nur 1 Regex pro

    Header → Regex kann kompliziert werden → ggf. 2 Filter
  20. Filter (GUI) • Nachteile – Sieht nur den .txt-Teil Diese

    E-Mail ist HTML. Klicken Sie hier zur Ansicht: Www.newsletter.tld
  21. Filter (GUI) • Nachteile – Kann keine Aktionen direkt ausführen

    (z.B. Mails verschicken, Webseiten aufrufen, Programme ausführen, …) • Umweg über GenericAgent
  22. Filter (GUI) • Nachteile – Kann nicht in Anhänge schauen

    – Ist immer ein Pre-Filter – Beschränkung Zeichenanzahl für Regex – Nur UND-Verknüpfte Bedingungen
  23. EnhancedPostmasterFilter To: [email protected] Subject: Maintenance CustomerID 123456 From: [email protected] Date:

    Thu, 18 Dec 2014 13:13:22 +0100 There will be maintenance on Sunday for theses servers: 127.0.0.1 1.1.1.1
  24. Filter (GUI) • Achtung Spoiler! – Ab Mai 2017 Debugging

    auf OPMToolbox.de → • Beta-Tests ab März 2017 – Filter importieren, Mail hochladen und einzelne Schritte anschauen – Beispielfilter – Filtermodule schneller erstellen
  25. Filtermodul entwickeln • Zweck genau formulieren • Entscheiden, ob Pre-/Postfilter

    • „Abbruchbedingungen“ definieren • Modul schreiben • Konfiguration • Tests • Paket bauen
  26. Filtermodul entwickeln • Modul schreiben – Grundgerüst immer gleich •

    package-Name • Objektabängigkeiten • Konstruktor (new) • sub Run()
  27. Filtermodul entwickeln • Modul schreiben – Parameter – JobConfig –

    Zusatzangaben aus SysConfig – GetParam – Hashref mit Mailinhalt • $Param{GetParam}->{Subject} • $Param{GetParam}->{Body} • $Param{GetParam}->{"X-Mailer"} – TicketID – Vor allem bei Post-Filtern wichtig
  28. Filtermodul entwickeln • Use Cases – Erweiterter Junk-Filter – Winmail.dat

    „entpacken“ – HTML-Code betrachten – VCF-Datei in Addressbuch übernehmen – Ticket einem Change zuordnen – Überprüfung, ob Installationskey zum Kunden gehört • Benachrichtigung an Kunden – Demosystem erstellen
  29. Filtermodul entwickeln • Zweck genau formulieren Wenn im Betreff einer

    der konfigurierten Regexes vorkommt oder als Absender eine der konfigurierten Adressen eingetragen oder im Text einer der konfigurierten Regexes vorkommt, dann muss das Ticket in der Queue Spam erstellt werden und der Status ist „erfolgreich geschlossen“.
  30. Filtermodul entwickeln • Entscheiden, ob Pre-/PreCreate-/Postfilter Hier wird ein Pre-Filter

    genommen, weil es schon auf die Ticketerstellung einen Einfluss hat.
  31. Filtermodul entwickeln • Modul schreiben Wenn im Betreff einer der

    konfigurierten Regexes vorkommt oder als Absender eine der konfigurierten Adressen eingetragen oder im Text einer der konfigurierten Regexes vorkommt, dann muss das Ticket in der Queue Spam erstellt werden und der Status ist „erfolgreich geschlossen“. $Param{GetParam}->{Subject} $Param{GetParam}->{From} $Param{GetParam}->{Body}
  32. Filtermodul entwickeln • Modul schreiben Wenn im Betreff einer der

    konfigurierten Regexes vorkommt oder als Absender eine der konfigurierten Adressen eingetragen oder im Text einer der konfigurierten Regexes vorkommt, dann muss das Ticket in der Queue Spam erstellt werden und der Status ist „erfolgreich geschlossen“. $Param{GetParam}->{X-OTRS-State} $Param{GetParam}->{X-OTRS-Queue}
  33. Filtermodul entwickeln my %Mail = %{ $Param{GetParam} || {} };

    if ( $Mail{Subject} =~ m{$SubjectRegex} || $Mail{From} =~ m{$FromRegex} || $Mail{Body} =~ m{$BodyRegex} ) { $Param{GetParam}->{'X-OTRS-Queue'} = 'Spam'; $Param{GetParam}->{'X-OTRS-State'} = 'successful closed'; }
  34. Filtermodul entwickeln • Zweck genau formulieren Wenn im Anhang eine

    winmail.dat zu finden ist, soll der Anhang entpackt und die Dateien daraus an den Eingangsartikel gehängt werden.
  35. Filtermodul entwickeln • Use Cases – Erweiterter Junk-Filter – Winmail.dat

    „entpacken“ – HTML-Code betrachten – VCF-Datei in Addressbuch übernehmen – Ticket einem Change zuordnen – Überprüfung, ob Installationskey zum Kunden gehört • Benachrichtigung an Kunden – Demosystem erstellen
  36. Filtermodul entwickeln • Entscheiden, ob Pre-/PreCreate-/Postfilter Hier wird ein Pre-Filter

    genommen, weil es schon auf den Eingangsartikel einen Einfluss hat. Hinweis: Hieße es im Ziel „Inhalt aus winmail.dat soll in einem zweiten Artikel angehängt werden“, dann müsste ein Postfilter genommen werden.
  37. Filtermodul entwickeln • Modul schreiben Wenn im Anhang eine winmail.dat

    zu finden ist, soll der Anhang entpackt und die Dateien daraus an den Eingangsartikel gehängt werden. $Param{GetParam}->{Attachment}
  38. Filtermodul entwickeln • Modul schreiben Wenn im Anhang eine winmail.dat

    zu finden ist, soll der Anhang entpackt und die Dateien daraus an den Eingangsartikel gehängt werden. $Param{GetParam}->{Attachment}
  39. Filtermodul entwickeln my %Mail = %{ $Param{GetParam} || {} };

    my ($WinmailDat) = grep{ $_->{Filename} eq 'winmail.dat'; }@{ $Mail{Attachment} }; return 1 if !$WinmailDat; my @NewAttachments; # Do the converting for my $File ( @FilesInWinmailDat ) { push @NewAttachments, { Filename => $File->name, Content => $File->data, ContentType => 'application/octet-stream', }; } push @{ $Param{GetParam}->{Attachment} }, @NewAttachments;
  40. Filtermodul entwickeln • Use Cases – Erweiterter Junk-Filter – Winmail.dat

    „entpacken“ – HTML-Code betrachten – VCF-Datei in Addressbuch übernehmen – Ticket einem Change zuordnen – Überprüfung, ob Installationskey zum Kunden gehört • Benachrichtigung an Kunden – Demosystem erstellen
  41. Filtermodul entwickeln • Konfiguration <ConfigItem Name="PostMaster::PreFilterModule###010-Junk" Required="0" Valid="1"> <Description Translatable="1">

    Postmaster filter to move and close junk tickets. </Description> <Group>JunkFilter</Group> <SubGroup>Core::Postmaster</SubGroup> <Setting> <Hash> <Item Key="Module">Kernel::System::PostMaster::Filter::Junk</Item> </Hash> </Setting> </ConfigItem>
  42. Filtermodul entwickeln • Konfiguration <ConfigItem Name="PostMaster::PreFilterModule###010-Junk" Required="0" Valid="1"> <Description Translatable="1">

    Postmaster filter to move and close junk tickets. </Description> <Group>JunkFilter</Group> <SubGroup>Core::Postmaster</SubGroup> <Setting> <Hash> <Item Key="Module">Kernel::System::PostMaster::Filter::Junk</Item> </Hash> </Setting> </ConfigItem>
  43. Filtermodul entwickeln • Tests - Kommandozeile 1) Beispielmail erstellen /

    herunterladen 2) → perl bin/otrs.PostMaster.pl < Beispielmail.eml → perl bin/otrs.Console.pl Maint::PostMaster::Read < Beispielmail.eml
  44. Filtermodul entwickeln • Paketbau – Änderungen können leichter in andere

    Systeme übertragen werden – Änderungen sind besser ersichtlich (Stichwort Upgrade) – Pakete können bei Upgrade einfach „erneut installiert werden“
  45. Filtermodul entwickeln • Paketbau – Verzeichnisstruktur muss wie im OTRS

    vorliegen – Plus .sopm-Datei TrustedShopsRating ├── Kernel │ ├── Config │ │ └── Files │ │ └── TrustedShopsRating.xml │ └── System │ └── PostMaster │ └── Filter │ └── TrustedShopsRating.pm └── TrustedShopsRating.sopm