Tag Archive: ticket

Per Cronjob E-Mail an OTRS mit mehreren X-OTRS-Header

Die letzten Tage habe ich eine Web-GUI mit PHP gescriptet, die Cronjobs erstellt, welche E-Mails an das OTRS versendet und – ganz wichtig – einige X-OTRS-Header definiert. Diese Header können verwendet werden, um dem Ticket-System verschiedene Optionen mitzuteilen. Etwa Priorität, Typ und Besitzer des Tickets.

Das Problem

Ich wollte der Einfachheit wegen nur „mail“ benutzen. Header können hier mit dem Parameter „-a“ übergeben werden. Multiple Header werden untereinander definiert:

X-OTRS-Priority: 4
X-OTRS-Lock: unlock
X-OTRS-State: closed successful
X-OTRS-ArticleType: email-internal
From: a@b.cd

Der erste erfolglose Versuch:

* * * * * mail -a "Header1\nHeader2\nHeader3" -s "Betreff" empfaenger@otrs.tld

Die „new line“ Argumente „\n“ werden vom System schlicht ignoriert und als einfacher String interpretiert.

Der zweite Versuch war im Ansatz besser:

* * * * * mail -a "`echo -e "Header1\nHeader2\nHeader3"`" -s "Betreff" empfaenger@otrs.tld

Es wurde zwar jetzt eine E-Mail versendet, der Header fehlte jedoch gänzlich.
Der Grund ist simpel: Die Syntax ist für die von Cron verwendete Shell zu komplex. In einem Script wäre das Setzen von „SHELL“ logisch.

Lösung

Variablen können im Kopf der Crontab eingetragen werden!
Hier ein vereinfachtes Beispiel, um die Logik aufzuzeigen:

Crontab ausführen, um einen Cronjob anzulegen:

crontab -e

ODER für einen anderen Benutzer im System:

su username -c "crontab -e"

Der Inhalt einer Beispiel-Crontab:

SHELL=/bin/bash
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
* * * * * echo "Nachricht" | mail -a "`echo -e "X-OTRS-Priority: 3\nX-OTRS-Lock: unlock\nX-OTRS-State: new\nX-OTRS-ArticleType: email-internal\nFrom: Task Planer "`" -s "WARTUNG:" empfaenger@otrs.tld

„PATH“ als Beispiel dafür, dass mehrere Variablen ebenfalls möglich sind.