Sorry for the top post, but this is a quick one. While I wasn't using compressed mailboxes, I ran into a similar bug, and I can't help but wonder if there's some commonality here. There was no resolution (can't find a bug tracker to add the issue to), but have a look:
http://thr3ads.net/dovecot/2013/10/2693193-cached-message-size-errors (note: gmane seems down, hence the oddball archive service) Charles On Dec 12, 2013, at 6:47 AM, Roland Rosenfeld wrote: > Hi! > > Usually dovecot auto detects or repairs the size of a maildir > message. So I can place a message named "foo" in the cur directory > and dovecot uses it. > > Now I tried the same with a zlib compressed message but here dovecot > doesn't recognize/repair the size of the message. > > When I access this folder via IMAP the connection is diconnected and > in dovecot logs I see the following error messages: > > Error: Cached message size smaller than expected (805 < 2666) > Error: Corrupted index cache file /somedir/dovecot.index.cache: Broken > physical size for mail UID 23 > Error: read() failed: Input/output error (FETCH for mailbox INBOX UID 23) > Disconnected: Internal error occurred. Refer to server log for more > information. [2013-12-12 10:54:18] in=321 out=1977 > > As you can see in the first line, dovecot does know the compressed > size of the file (805) as well as the uncompressed size (2666), but it > isn't able to repair its index for this. > > If I modify the setup a little with a standard file naming but with a > wrong file size in S-flag (compressed size instead of uncompressed > size), the log entries become stranger: > > Error: Cached message size smaller than expected (805 < 2666) > Error: Maildir filename has wrong S value, renamed the file from > /somedir/cur/1386772057.M152553P9709.host,S=805:2, to > /somedir/cur/1386772057.M152553P9709.host,S=805:2, > > So here dovecot detects the wrong S value, but instead of fixing it by > using the uncompressed size, it renames to the same file name as > before... > > All the above was tested with dovecot 2.1.17. > We did a short cross test with 2.2.9 which gives somewhat different > error messages, but also isn't able to detect/repair the > (uncompressed) file size: > > Error: Cached message size smaller than expected (805 < 2666) > Error: Corrupted index cache file /somedir/dovecot.index.cache: Broken > physical size for mail UID 23 > Error: read(zlib(/somedir/cur/foo)) failed: Invalid argument > > We also noticed that on both dovecot versions after trying to access > the above file, dovecot.index.cache is always deleted and not > rebuild... > > Is all this intended behavior? It sounds different to the standard > behavior of dovecot, that repairs broken folders if possible... > > Ciao > Roland