Dovecot 2.3.0 generates all index files at once

Andreas M. Kirchwitz amk at spamfence.net
Mon Dec 25 06:26:28 EET 2017


	Merry Christmas!

The brandnew Dovecot 2.3.0 seems to generate index (cache) files
for all IMAP folders at once when a user logs in the first time.
(Those "dovecot.index" files that live in ".imap" directories.)

Previous versions generated these index files on demand when a
folder was actually accessed (so if a folder was never used,
no resources were wasted to ever generate an index file for it).

For large mailboxes with lots of mail this may take hours,
and during this time the user's mail client hangs (like Mutt)
or exits with a timeout (like Thunderbird). Access to this user's
mailbox hangs/fails with locking errors for obvious reasons.

For fresh installations with pre-existing folders (but no index
files yet) this kind of brings down the machine running Dovecot
as soon as multiple users try to access their mail.

I haven't analyzed the IMAP commands in detail. Just tried with
Mutt and Thunderbird and they both trigger the issue. However,
maybe Dovecot is just fine and the clients do something wrong
which was just tolerated by Dovecot until now.

My configuration is pretty simple:

# 2.3.0 (c8b89eb): /usr/local/Dovecot-2.3.0/etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-042stab124.2 i686 CentOS release 6.9 (Final) 
auth_mechanisms = plain login digest-md5 cram-md5
first_valid_gid = 1000
first_valid_uid = 1000
mail_location = mbox:~/Mail:INBOX=/var/spool/mail/%u
passdb {
  args = /usr/local/dovecot/etc/dovecot/dovecot.passwd
  driver = passwd-file
}
protocols = imap
ssl_cert = </usr/local/dovecot/etc/dovecot/certs/server.crt
ssl_dh =  # hidden, use -P to show it
ssl_key =  # hidden, use -P to show it
userdb {
  args = /usr/local/dovecot/etc/dovecot/dovecot.passwd
  driver = passwd-file
}
verbose_proctitle = yes
protocol imap {
  imap_client_workarounds = tb-extra-mailbox-sep tb-lsub-flags
  mail_max_userip_connections = 20
}

Good news is, Dovecot 2.3.0 compiles without errors and it also
runs fine once all index files have been created.

Maybe there's a new configuration option to toggle this behaviour
but I haven't spotted anything obvious yet. Any help is appreciated.

Thanks a lot and keep up the good work,
Andreas


More information about the dovecot mailing list