Dovecot 2.3.0 generates all index files at once

Previous Topic Next Topic
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Dovecot 2.3.0 generates all index files at once

Andreas M. Kirchwitz-3
        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,