The end of Dovecot Director?
Brendan Braybrook
brendan at tucows.com
Mon Oct 24 18:57:06 UTC 2022
On 2022-10-21 13:25, dovecot at ptld.com wrote:
>> the problem that prevents most load balancers from handling the
>> backend imap/pop traffic is that the load balancer needs to be aware
>> of the context of each connection. which all boils down to the index
>> files
>> (only a single dovecot server can access a set of index files
>> concurrently, else the indexes will get corrupted)
>
> As someone else asked on this thread, what prevents two clients, both
> being directed to the same server, from fighting over index files?
> Wouldn't file locks over NFS prevent this problem? And if so, doesn't
> that also prevent two dovecot installations from fighting over index files?
i believe the dovecot processes have some sort of interprocess
communication when they are running on the same host that they use to
negotiate writes to the index files. i don't really know the details,
other than that the index files get corrupted very quickly if multiple
hosts are accessing them at once. the index files are fine if a users'
multiple imap sessions are on a single host.
iirc, dovecot does use file locks when moving/deleting maildir+ message
files. but that's not really the issue - it's all about the index files.
those index files just weren't designed to have parallel access from
multiple machines.
> What is a way to test your system to know if dovecot is using the
> default fcntl file locks over NFS4 and they actually work?
> Or is it better/safer to use dotlock on NFS4 without director?
nfs locks do work, as long as your nfs server supports them well.
dotlocks don't require any nfs server support, but they are slower. but,
for the most part if you are redirecting users sessions to the same
server it doesn't matter. we've used both locking types, though dotlocks
were more reliable on some nfs servers.
as long as you aren't using DBOX for mail storage, having the indexes
get corrupted isn't the end of the world - dovecot will just regenerate
them (though you might have to remove the broken files and kill the
users' sessions to force this).
there's some dovecot documentation with suggestions:
https://doc.dovecot.org/configuration_manual/nfs/
and some older docs:
https://wiki1.dovecot.org/NFS
More information about the dovecot
mailing list