Dovecot Panic: file mail-transaction-log.c

I got a call last week from a client that was having some issues with retrieving email from a Dovecot IMAP server. The client was connecting over TLS and was using an Apple mail client. Upon checking the mailserver log, I was greeted with a flood of rather vicious looking errors. I’m not gonna post the entire backtrace since its rather long, but you’ll get the idea.

Panic: file mail-transaction-log.c: line 271 (mail_transaction_log_rotate): assertion failed: (file->locked)

Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0 [0x27c5bf] -> /usr/lib/dovecot/libdovecot.so.0 [0x27c63d] -> /usr/lib/dovecot/libdovecot.so.0 [0x27bf6b] -> /usr/lib/dovecot/libdovecot-storage.so.0(mail_transaction_log_rotate+0x181)...

Fatal: master: service(imap): child 3813 killed with signal 6 (core dumps disabled)

Obviously you would never want to see words like “Panic” and “Fatal” in your logs, but in this case it was nothing too serious. After confirming that there was no actual damage to the client’s mailbox, I shifted focus to Dovecot’s index files. By accessing the clients account through a telnet connection and opening the different folders, I immediatly got disconnected while accessing the INBOX folder.

telnet mail.tld 143
a login user password
b select foldername
c logout

When the bad apple (pun intended) had been identified, I deleted the corrupt dovecot.index* files from the folder in question.

mail/.imap/INBOX/
total 528
site93   4096 Oct 12 05:40 .
site93   4096 Feb 12  2016 ..
site93  22288 Oct 12 05:40 dovecot.index
site93 460492 Oct 12 13:19 dovecot.index.cache
site93   4044 Oct 12 13:23 dovecot.index.log
site93  32852 Oct 12 05:40 dovecot.index.log.2

Dovecot creates these files automatically when the mailbox is opened so deleting them wont cause any issues.
After this fix, the client had no further issues.