Skip to main content

/var/log/mail.err: dovecot: Fatal: Time just moved backwards

I had this error appear almost on every reboot in my /var/log/mail.err file. Rather frustrating considering reboots are so infrequent that I would forget that dovecot failed to start and troubleshoot anew IMAP access failure. Well last time this happened I decided to fix the root cause and below is the solution.

As per dovecot wiki this error can appear on some VPS hosts. Resolving this is relatively easy but it's not obvious, the solution consists of installing NTP - Network Time Protocol daemon which keep your time correct and synchronized and then delaying the execution of dovecot service until ntpd service is loaded.

Ubunty/Debian Sollution

Install the ntp package:

# aptitude update
Get:1 squeeze/updates Release.gpg [836 B]
# aptitude install ntp

By default dovecot startup script does not require the ntp servicet before it starts, so we must modify it that it waits for the ntp before it starts itself. Edit the /etc/init.d/dovecot startup script and add 'ntp' to the end of '# Required-Start' line like so:

# nano /etc/init.d/dovecot
# Required-Start: $local_fs $remote_fs $network $syslog $time ntp

Delete and re-add the start up script which will place in its proper order in the startup sequence (thanks Linode for help with this):

# insserv -r dovecot
# insserv dovecot

Reboot your system and verify that dovecot is indeed running:

root@shared-hosting-1:~# ps aux | grep dovecot
root      2208  0.0  0.1   3996   796 ?        Ss   23:51   0:00 /usr/sbin/dovecot -c /etc/dovecot/dovecot.conf
root      2213  0.0  0.4  10072  2508 ?        S    23:51   0:00 dovecot-auth
root      2221  0.0  0.5  10264  2668 ?        S    23:51   0:00 dovecot-auth -w
dovecot   2234  0.0  0.4   5604  2200 ?        S    23:51   0:00 imap-login
dovecot   2235  0.0  0.3   5464  1940 ?        S    23:51   0:00 imap-login
dovecot   2236  0.0  0.3   5464  1940 ?        S    23:51   0:00 imap-login
dovecot   2246  0.0  0.3   5464  1936 ?        S    23:53   0:00 imap-login
root      2307  0.0  0.1   3356   740 pts/0    R+   23:54   0:00 grep dovecot

Do +1 or share this if it has helped you.


Popular posts from this blog

How to child proof a fireplace

DIY - Do it yourself fireplace child guard Our wonderful 8.5 month old Sofia has become a crawling race car with an untamed thirst for exploration. And so with the cold nights approaching we needed to child proof the fireplace. This however proved to be more difficult than would reasonably expect, I've checked the local Toys "R" Us, Walmart, and even a Canadian Tire with no success for a ready to use product. Internet search was more fruitful and returned a few online stores one could order from, however in all honestly they didn't look too sturdy to me. So I build my own relatively quickly and inexpensively. Materials needed is a privacy plastic lattice - the smallest hole pattern - a few screws and anchors; tools needed are a drill, and a handsaw if you don't have the lattice cut at the store - that’s it. The construction consits of screwing the lattice into the wall and the final product is easiest explained through following pictures. Feel free to +1 this po…

Duplicate value found: duplicates value on record with id: <unknown>.

System.DmlException: Insert failed. First exception on row 0; first error: DUPLICATE_VALUE, duplicate value found: <unknown> duplicates value on record with id: <unknown>.The above error is triggered in the database layer and caused by a trigger or workflow outside of your main code of block that is bubbling this exception. This is rather difficult to track down especially if you are unfamiliar with the code, I am sharing my procedure in the hopes this saves you time - if you find this helpful drop me a line or follow me on twitter @danielsokolows. This error is caused by unique field constraint on the object, so the first step is to examine the object and locate the API names of all unique fieds. You can do this through SF direclty 'Setup < Customize &lt <object being inserted> &lt Fields' or by downloading the `src/objects` metadata information and searching for <unique>; I preffer the latter and actually download ALL matadata information f…

Storing passwords in PuTTY

How to save SSH username/password for auto login in PuTTy The answer is you can't do least in plain PuTTy. However there is an awesome fork with that let's you store the username and password and other additional features called KiTTy.

So grab yourself a copy and +1 this if you do, thanks.