Andreas M. Kirchwitz
2017-Dec-25 04:26 UTC
Dovecot 2.3.0 generates all index files at once
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