Can you test if https://github.com/dovecot/core/commit/5068b11e594ad7cc1f7cedf2bd9280520e0e534d.patch <https://github.com/dovecot/core/commit/5068b11e594ad7cc1f7cedf2bd9280520e0e534d.patch> fixes it for you?
> On 10 Oct 2019, at 11.34, MAREN ZUBIZARRETA via dovecot <dovecot@dovecot.org> > wrote: > > Hello: > > I have found the same problem reported above by Patrick Cernko affecting > our system and corrupting our messages. Even worse, Outlook 2016 will no > synchronize and the clients cannot see any message, even if there is only one > corrupted mail per mailbox. > > I cannot figure out a feasible workaround for our system, and I can see > that in new version 2.38 the bug is not fixed. > > Will this issue be treated soon? > > Thanks a lot > > Maren Zubizarreta > > > WARNING: using attachment_dir with plugin zlib can corrupt mails > > Patrick Cernko pcernko at mpi-klsb.mpg.de > <mailto:dovecot%40dovecot.org?Subject=Re:%20Re%3A%20WARNING%3A%20using%20attachment_dir%20with%20plugin%20zlib%20can%20corrupt%20mails&In-Reply-To=%3C1ab8edcc-bef4-3b41-d09a-c523674a5031%40mpi-klsb.mpg.de%3E> > Fri Jul 19 17:52:37 EEST 2019 > Previous message: index worker 2.3.7 undefined symbol errors > <https://dovecot.org/list/dovecot/2019-July/116617.html> > Next message: Address family not supported by protocol > <https://dovecot.org/list/dovecot/2019-July/116571.html> > Messages sorted by: [ date ] > <https://dovecot.org/list/dovecot/2019-July/date.html#116570> [ thread ] > <https://dovecot.org/list/dovecot/2019-July/thread.html#116570> [ subject ] > <https://dovecot.org/list/dovecot/2019-July/subject.html#116570> [ author ] > <https://dovecot.org/list/dovecot/2019-July/author.html#116570> > Hello list, hello Dovecot developers, > > this week, I discovered a serious bug in Dovecot, that lead to several > broken mails on our servers. The bug corrupts the first few characters > of the mail header during saving. On our setup, it was almost always > only the very first line of text, that was corrupted. > > Depending on the IMAP client (they seem to request different header > fields, ... during mail access), the bug causes the imap process to hang > up the TCP connection and log errors like this: > > > imap(USERNAME)<4767><TeQP4ASOTK5/AAAB>: Error: Corrupted record in index > > cache file > > /IMAP/mail/mailboxes/USERNAME/mdbox/mailboxes/Trash/dbox-Mails/dovecot.index.cache: > > UID 489113: Broken fields in mailbox Trash: > > read(attachments-connector(zlib(/IMAP/mail/mailboxes/USERNAME/mdbox/storage/m.813))): > > FETCH BODY[HEADER.FIELDS (RETURN-PATH SUBJECT)] got too little data: 2 vs > > 122 > > In our case that finally grabbed my attention, the client was the users > iphone that did not display any new messages but his Thunderbird did. > > The bug seems to be triggered by a bad "interaction" of attachment_dir > option and zlib plugin. If you use both, you most likely are affected, > too, except you only use zlib plugin for reading previously compressed > stored mails. That's also the workaround we use now: zlib plugin only > enabled in mail_plugins but no plugin/zlib_save set. > > The bug occurs on very specific mails. Due to privacy reasons I could > not provide sample mails here. Storing such mails seems to trigger the > bug reproducible. > > > I attached a very minimal doveconf -n config, that can be used to > trigger the bug. If one of the developers is interested, I can try to > generate an "anonymized" version of such a specific mail that still > causes the issue. I discovered the bug on our productive systems, > running latest Dovecot 2.2 release, but the latest 2.3 I used during > debugging is affected, too. > > During debugging, I also found one hint, that might help find the bug: > If you store a problematic mail with zlib_save=gz (or zlib_save=bz2) and > then disable the zlib plugin in mail_plugins, you can call > > doveadm fetch -u test hdr all | grep -v ^hdr: | gzip --decompress > > on test's mailbox with only that one broken mail. > This will display the beginning of the rfc822 mail text until gzip > terminates with "gzip: stdin: unexpected end of file", approximately > after twice the length of the mail HEADER. This might indicate, that > dovecot stores the uncompressed size of the header in it's data > structures although the mail is stored compressed. > > > I also found a very efficient way to find all affected mails in our setup: > > doveadm -f flow fetch -A 'user guid mailbox uid seq flags hdr' all | \ > grep -a "^[^ ]+ user=" | \ > grep -avF ' hdr=Return-path: ' | \ > grep -av '.* hdr=[[:print:][:space:]]*$' > (runtime for ~6M mails on our servers was 20-30min) > > This can be even more optimized if you have a powerful storage system > with GNU parallel: > > doveadm user '*' | parallel "doveadm -f flow fetch -u '{}' 'user guid > > mailbox uid seq flags hdr' all | grep -a '^user=' | grep -avF ' > > hdr=Return-path: ' | grep -av '.* hdr=[[:print:][:space:]]*$' || true" > (runtime for ~6M mails on our servers was ~4min) > > The command will give you a list of mails that possibly are affected, > check the full output of > > doveadm fetch -u USERNAME hdr guid GUID | less > > to verify that the header is really broken. > > On our systems I found 39 mails within ~12M mails. > > I was able to recover these mails "manually" by reconstructing the > Return-Path header line, importing the fixed mails and expunging the > corrupt ones. Before importing, I had to disable zlib_save option obviously. > > Best regards, > -- > Patrick Cernko <pcernko at mpi-klsb.mpg.de > <https://dovecot.org/mailman/listinfo/dovecot>> +49 681 9325 5815 > Joint Administration: Information Services and Technology > Max-Planck-Institute fuer Informatik & Softwaresysteme > -------------- next part -------------- > # 2.3.6.1 (d124cc84b): /etc/dovecot/dovecot.conf > # OS: Linux 4.14.127.1.amd64-smp x86_64 Debian 9.9 > # Hostname: adove.mpi-klsb.mpg.de <http://adove.mpi-klsb.mpg.de/> > listen = * > mail_attachment_dir = /var/vmail/attachments > mail_attachment_fs = posix > mail_gid = nogroup > mail_home = /var/vmail/%u > mail_location = mdbox:~/mdbox > mail_plugins = " zlib" > mail_uid = nobody > passdb { > args = /etc/dovecot/userdb > driver = passwd-file > } > plugin { > zlib_save = gz > } > protocols = imap > userdb { > args = /etc/dovecot/userdb > driver = passwd-file > } > -------------- next part -------------- > A non-text attachment was scrubbed... > Name: smime.p7s > Type: application/pkcs7-signature > Size: 5324 bytes > Desc: S/MIME Cryptographic Signature > URL: > <https://dovecot.org/pipermail/dovecot/attachments/20190719/3da620ad/attachment-0001.p7s > > <https://dovecot.org/pipermail/dovecot/attachments/20190719/3da620ad/attachment-0001.p7s>>