On Fri, 2010-01-22 at 11:24 -0500, David Halik wrote:
Unfortunately, he is of the opinion that there should rarely be any and there is a design flaw in how Dovecot is designed to work with multiple services with an NFS backend.
Well, he is pretty much correct. I thought I could add enough NFS cache flushes to code to make it work well, but that's highly dependent on what OS or even kernel version the NFS clients are running on. Looking at the problems with people using NFS it's pretty clear that this solution just isn't going to work properly.
But then again, Dovecot is the only (free) IMAP server that even attempts to support this kind of behavior. Or sure, Courier does too, but disabling index files on Dovecot should get the same stability.
I see only two proper solutions:
- Change your architecture so that all mail accesses to a specific user go through a single server. Install Dovecot proxy so all IMAP/POP3 connections go through it to the correct server.
Later once v2.0 is stable install LMTP and make all mail deliveries go through it too (possibly also LMTP proxy if your MTA can't figure out the correct destination server). In the mean time use deliver with a configuration that doesn't update index files.
This guarantees that only a single server ever accesses the user's mails simultaneously. This is the only guaranteed way to make it work in near future. With this setup you should see zero corruption.
- Long term solution will be for Dovecot to not use NFS server for inter-process communication, but instead connect to other Dovecot servers directly via network. Again in this setup there would be only a single server reading/writing user's index files.