Linux: Dovecot Server beendet sich von selbst automatisch (“dovecot: Fatal: Time just moved backwards by x seconds.”)

20.03.2012 at 20:29

In den Mail-Logs finden Sie folgende Meldung:

dovecot: Fatal: Time just moved backwards by x seconds. This might cause a lot of problems, so I'll just kill myself now.

Dann beendet sich Ihr Dovecot-Mailserver und Sie können sich nicht mehr mit Ihrem Postfach verbinden.

Grund ist eine Zeitkorrektur auf Ihrem Server (Rechner), welche “in die Vergangenheit” geht. D.h. die Zeit wird zurückgestellt – ob um wenige Sekunden oder mehr ist irrelavant: Der Dovecot Server bemerkt diese Umstellung und beendet sich selbst automatisch.

Lösung / Behebung des Problems

Sie können den Dovecot Server regelmäßig prüfen lassen. Sollte dabei bemerkt werden, dass der DoveCot Mailserver nicht mehr läuft, wird er automatisch wieder gestartet:

nano /usr/local/sbin/dovecot_check_restart.sh
#!/bin/sh
 
HOST='localhost'
#PORT=110
PORT=143
#HP=@$HOST:$PORT
HP=:$PORT
 
echo 'Checking to see if Dovecot is up...'
if ( /usr/sbin/lsof -Pni $HP | grep "$PORT (LISTEN)" 2>&1 >/dev/null ); then
  echo 'Dovecot is up';
else
  echo 'Dovecot is down, restarting...';
  /etc/init.d/dovecot restart
  logger -p mail.info dovecot_check_restart.sh restarting Dovecot
fi

Hinweis zu aktuelleren Linux-Versionen
Es sollte der Pfad zur “lsof” überprüft werden, denn dieser kann unterschiedlich sein. Dann sollte die Zeile 9 oben entsprechend angepasst werden:

if ( /usr/sbin/lsof -Pni $HP | grep "$PORT (LISTEN)" 2>&1 >/dev/null ); then

Hinweis bei SSL Verbindungen zum Mailserver
Setzen Sie den richtigen Port in Zeile 5:

PORT=993

Dann den Aufruf des o.a. Scriptes erlauben (“chmod +x”) und das Script als CronJob einrichten:

chmod +x /usr/local/sbin/dovecot_check_restart.sh
crontab -e

Und dort folgende Zeile anfügen:

* * * * * /usr/local/sbin/dovecot_check_restart.sh 2>&1 > /dev/null

Fertig.

Mehr Informationen finden Sie auch unter http://wiki.dovecot.org/TimeMovedBackwards