<div dir="ltr"><div class="gmail_default"><span style="font-family:verdana,sans-serif">Hi Dovecot community,</span></div><div class="gmail_default"><span style="font-family:verdana,sans-serif"><br></span></div><div class="gmail_default"><span style="font-family:verdana,sans-serif">I would like to share a problem I saw a few days ago. Any comment is highly appreciated.</span></div><div class="gmail_default"><span style="font-family:verdana,sans-serif"><br></span></div><span style="font-family:verdana,sans-serif"><b><font size="4">Steps to reproduce</font></b><br><span class="gmail_default">0. </span>Version of Dovecot I use is v2.3.11.3.<br><span class="gmail_default">1. </span>Prepare 2 Dovecot backends:<br></span><ul><li><span style="font-family:verdana,sans-serif">One backend is used as <span class="gmail_default">the </span>source of dsync command. Other backend is used as <span class="gmail_default">the </span>destination of the dsync command.</span></li><li><span style="font-family:verdana,sans-serif">Mailbox format is Maildir. Mail dir of two test accounts is empty.</span></li></ul><span style="font-family:verdana,sans-serif"><span class="gmail_default">2. </span>Prepare <span class="gmail_default">the </span>test account in <span class="gmail_default" style="font-family:verdana,sans-serif">the </span>source<span class="gmail_default" style="font-family:verdana,sans-serif"> of dsync</span>:<br></span><ul><li><span style="font-family:verdana,sans-serif">Send a test message to the test account. For example, I use swaks:</span></li></ul><div style="margin-left:40px"><span style="font-family:verdana,sans-serif"><span style="font-family:monospace"><span class="gmail_default"></span><span class="gmail_default"></span><span class="gmail_default"></span>swaks --server 127.0.0.1 --port 24 --protocol LMTP --to user1@local</span><br></span></div><ul><li><span style="font-family:verdana,sans-serif">Use doveadm expunge command to clean mail dir of the test account:</span></li></ul><div style="margin-left:40px"><span style="font-family:verdana,sans-serif"><span style="font-family:monospace">doveadm expunge -u user1@local mailbox INBOX all</span><br></span></div><span style="font-family:verdana,sans-serif"><span class="gmail_default" style="font-family:verdana,sans-serif">3. </span>Prepare <span class="gmail_default" style="font-family:verdana,sans-serif">the </span>t<span class="gmail_default" style="font-family:verdana,sans-serif"></span>est account inĀ <span class="gmail_default" style="font-family:verdana,sans-serif">the</span> destination<span class="gmail_default" style="font-family:verdana,sans-serif"> of dsync</span>:<br></span><ul><li><span style="font-family:verdana,sans-serif">Log in test account via IMAP then select INBOX first:</span></li></ul><div style="margin-left:40px"><span style="font-family:monospace">telnet 127.0.0.1 imap<br>...<br>s login user1@local 1<br>...<br>s select INBOX<br>...<br>s logout</span><br></div><div style="margin-left:40px"><span style="font-family:verdana,sans-serif"></span></div><ul><li><span style="font-family:verdana,sans-serif">Then perform dsync:</span></li></ul><div style="margin-left:40px"><span style="font-family:monospace">doveadm -o imapc_host=backend2.local -o imapc_port=143 -o imapc_user=user1@local -o imapc_password=1 backup -s '' -R -u user1@local imapc:</span><br></div><div style="margin-left:40px"><span style="font-family:verdana,sans-serif"></span></div><ul><li><span style="font-family:verdana,sans-serif">Confirm error occurs when using dsync:</span></li></ul><div style="margin-left:40px"><span style="font-family:monospace">dsync(user1@local): Info: imapc(backend2.local:143): Connected to <a href="http://192.168.100.2:143">192.168.100.2:143</a> (local <a href="http://192.168.100.27:58850">192.168.100.27:58850</a>)<br>dsync(user1@local): Error: Mailbox INBOX sync: mailbox_delete failed: INBOX can't be deleted.<br>AQAAAHm4+Jk=</span><br></div><div style="margin-left:40px"><span style="font-family:verdana,sans-serif"></span></div><span style="font-family:verdana,sans-serif"><span class="gmail_default" style="font-family:verdana,sans-serif">4. </span>Log in <span class="gmail_default" style="font-family:verdana,sans-serif">the </span>test account in dsync destination then select INBOX. Repeat many times. I can see the size of the transaction log file is increasing continuously.<br></span><div style="margin-left:40px"><span style="font-family:verdana,sans-serif"><b>Before</b>:</span><br><span style="font-family:monospace">-rw-------. 1 vmail vmail 456 Apr 22 10:54 dovecot.index.log</span><span style="font-family:monospace"></span></div><div style="margin-left:40px"><span style="font-family:monospace"><br></span></div><div style="margin-left:40px"><span style="font-family:monospace"></span><span style="font-family:verdana,sans-serif"><b>After</b>:</span><br><span style="font-family:monospace">-rw-------. 1 vmail vmail 544 Apr 22 10:59 dovecot.index.log<br><br>-rw-------. 1 vmail vmail 632 Apr 22 11:00 dovecot.index.log<br><br>-rw-------. 1 vmail vmail 720 Apr 22 11:00 dovecot.index.log</span><br></div><div style="margin-left:40px"><span style="font-family:verdana,sans-serif"></span></div><div><span style="font-family:verdana,sans-serif"><br></span></div><div><font size="4"><b><span style="font-family:verdana,sans-serif">Problem<span class="gmail_default" style="font-family:verdana,sans-serif">s</span></span></b></font></div><div><span style="font-family:verdana,sans-serif"></span></div><ul><li><span style="font-family:verdana,sans-serif">Size of the transaction log file is increas<span class="gmail_default" style="font-family:verdana,sans-serif">ing</span> continuously. <span style="color:rgb(255,0,0)">Do you think this is an issue of Dovecot?</span></span></li><li><span style="font-family:verdana,sans-serif">The <span class="gmail_default" style="font-family:verdana,sans-serif">v</span>alue of <b>mail_index_log_rotate_max_size</b> is 1M by default. However the transaction log file dovecot.index.log is not rotated when its size exceeds limit.</span></li><li><span style="font-family:verdana,sans-serif">Because the size of the transaction log file is too big and it is not rotated, <span class="gmail_default" style="font-family:verdana,sans-serif">I think </span>"out of memory" error will occur when I try to use IMAP SELECT or POP3 STAT command (if the virtual size limit is small enough).</span></li><li><span style="font-family:verdana,sans-serif"><span style="color:rgb(255,0,0)">If "size of the transaction log file is increas<span class="gmail_default" style="font-family:verdana,sans-serif">ing</span> continuously" is an issue, what should I do to avoid it or is there any workaround?</span> I understand I should fix the error <b><span style="font-family:monospace">Error: Mailbox INBOX sync: mailbox_delete failed: INBOX can't be deleted</span></b> first before doing anything next. I think removing the transaction log file is an understandable workaround.</span></li></ul><span style="font-family:verdana,sans-serif"><font size="4"><b>Investigat<span class="gmail_default" style="font-family:verdana,sans-serif">on</span></b></font><br></span><ul><li><span style="font-family:verdana,sans-serif">About the error <span style="font-family:monospace"><b>Error: Mailbox INBOX sync: mailbox_delete failed: INBOX can't be deleted</b></span>, I can understand the cause after reading this thread <a href="https://dovecot.org/pipermail/dovecot/2014-April/095588.htm">https://dovecot.org/pipermail/dovecot/2014-April/095588.htm</a><span class="gmail_default" style="font-family:verdana,sans-serif">l</span></span></li></ul><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="margin-left:40px"><span style="font-family:monospace">2) Maildir + INBOX + backup/sync/replicate<br>In the test scenarios where the INBOX on one side was to be completely removed, e.g. doveadm backup -R the dsync failed and<br>nothing was synced to the target. This is because before moving the source mails to the mailbox, dsync cleans out the old ones (<br>-R preserves nothing) and in Maildir the INBOX can not be removed. This is a feature/not easily solvable, because in Maildir<br>INBOX is different from other folders.</span><br></div></blockquote><div style="margin-left:40px"><span style="font-family:verdana,sans-serif"></span></div><ul><li><span style="font-family:verdana,sans-serif">The transaction log file is rotated whenever there's any change in index file. I can confirm by sending a test message to the test account in dsync destination. I can see that logic in <span style="font-family:monospace"><b>src/lib-index/mail-index-sync.c</b></span> and <span style="font-family:monospace"><b>src/lib-index/mail-index-write.c</b></span>. After that, the size of the new transaction log file is not <span class="gmail_default" style="font-family:verdana,sans-serif">increasing</span> anymore.</span></li></ul><ul><li><span style="font-family:verdana,sans-serif">When the error <span style="font-family:monospace"><b>Error: Mailbox INBOX sync: mailbox_delete failed: INBOX can't be deleted</b></span> occurred, I tried to dump the transaction log file and I saw these records:</span></li></ul><div style="margin-left:40px"><span style="font-family:monospace">record: offset=432, type=index-deleted (ext), size=12<br>record: offset=444, type=index-undeleted (ext), size=12</span><br></div><div style="margin-left:40px"><span style="font-family:verdana,sans-serif"></span></div><ul style="margin-left:40px"><li><span style="color:rgb(255,0,0)"><span style="font-family:verdana,sans-serif">Do <span class="gmail_default" style="font-family:verdana,sans-serif">you think </span>these records relate to the issue that the size of the transaction log file is increas<span class="gmail_default" style="font-family:verdana,sans-serif">ing</span> continuously?</span></span></li><li><span style="color:rgb(255,0,0)"><span style="font-family:verdana,sans-serif">Did the error <span style="font-family:monospace"><b>Error: Mailbox INBOX sync: mailbox_delete failed: INBOX can't be deleted</b></span> make content of transaction log file incomplete/incorrect?</span></span></li></ul><div><br></div><div><div style="font-family:verdana,sans-serif" class="gmail_default">Regards,</div><div style="font-family:verdana,sans-serif" class="gmail_default">Anh Do</div><br></div></div>