Wenn der Cron Job in osTicket 1.10 Probleme macht und nicht funktioniert äußert sich das mit dem nicht Abholen der E-Mails via IMAP oder POP. Es muss immer ein Benutzer am Ticketsystem angemeldet sein und die Seiten aktualisieren. Eine nicht wirklich gute Lösung.

Nachdem sichergestellt war, dass der externe Server die cron.php überhaupt ausführt, konnte ich die Fehlersuche auf osTicket beschränken. Die E-Mail Server waren auch korrekt im osTicket eingetragen, denn die E-Mails kamen ja mit der o.g. Benutzerinteraktion an. Der Haken "E-Mails abrufen" im Admin Bereich unter "E-Mail-Adressen"->"Einstellungen"->"Eingehende E-Mails" war auch gesetzt.

Auf der hostenden Synology habe ich die cron.php mit folgendem Befehl in den Aufgaben-Planer eingetragen und lasse diesen alle fünf Minuten ausführen.

curl http://localhost/osticket/api/cron.php

Wenn man die cron.php an der Konsole der Synology mit dem gleichen Befehl aufruft bekommt man promt folgende Fehlermeldung angezeigt.

cron.php only supports local cron calls - use http -> api/tasks/cron

Damit ist klar warum der cron nicht ausgeführt wird. Er bricht sich selbst ab. Und damit ist auch die Ursache der nicht automatischen E-Mail Abholung gefunden. Die in der cron.php enthaltene Prüfung 

if (!osTicket::is_cli())

schlägt fehl und wird mit o.g. Fehlermeldung abgebrochen.

Durch das Umstellen der Prüfung auf die IP-Adresse des hostenden Servers 

if ($_SERVER['REMOTE_ADDR'] != 'www.xxx.yyy.zzz')

wurde die cron.php jetzt vollständig ausgeführt und die E-Mails werden auch ohne Benutzerinteraktion abgeholt. Für 'www.xxx.yyy.zzz' trägt man die IP-Adresse des externen Servers ein.

Update 08.02.2019

Mit Einführung von IPv6 muss nun auch die entsprechende IPv6 Adresse geprüft werden. Für eine lokale Installation kann man die Zeile wie folgt ändern.

if ($_SERVER['REMOTE_ADDR'] != 'www.xxx.yyy.zzz' and $_SERVER['REMOTE_ADDR'] != '::1')

::1 ist die tatsächliche IP. Es ist eine IPv6-Loopback-Adresse dh. localhost. Bei IPv4 wäre das 127.0.0.1.

Kommentare powered by CComment