Karol Jurak
2013-Feb-12 10:19 UTC
[Dovecot] dsync 2.1.10 does not correctly handle renames of mailbox subtrees
Hi, It seems that dsync 2.1.10 does not correctly handle renames of mailbox subtrees. The scenario is as follows. There are two servers, A and B, both running dovecot 2.1.10 and configured to use mdbox. Automatic replication between them is disabled, ie. replication plugin is not active and replicator service has process_min_avail = 0. I perform the following actions: 1. On A: doveadm mailbox create -u test_user a a/b a/b/c d 2. On A: doveadm sync -u test_user -d The result is as expected: on both A and B there are a/b/c and d mailboxes. Now I connect to A via IMAP and rename a/b to d/b. The result is as expected: on A there are a and d/b/c mailboxes. Next I execute on A 'doveadm sync -u mailstoragetest -d' and now the result is not as expected: there are a/b/c and d/b subtrees on both A and B and a/b is just a directory, ie. it does not contain dbox-Mails (the rest are proper mailboxes). dovecot.mailbox.logs have the following records appended to them: A: #2112: rename 33259783092361d18c60ba1c7cfe973c (2013-02-12 10:42:55) - this probably is the rename of a/b to d/b (recursive, ie. including children - in this case a/b/c => d/b/c) by the IMAP client #2136: rename ee2be6da91ae879476b152d7ca041f1b (1970-01-01 01:00:00) - rename of d/b/c to a/b/c by dsync (unexpected/incorrect) B: #1104: rename 33259783092361d18c60ba1c7cfe973c (1970-01-01 01:00:00) - rename of a/b to d/b (non recursive) by dsync What seems to be missing is the record in A's dovecot.mailbox.log describing the rename of a/b/c to d/b/c (or in general case the set of records describing the renames of all the children of a/b). Would appending such records allow dsync to make correct decisions as to which mailboxes and on which servers to rename? Thanks for any help. # 2.1.10: /etc/dovecot/dovecot.conf # OS: Linux 2.6.32-5-amd64 x86_64 Debian 6.0.1 auth_master_user_separator = * auth_username_format = %Ln default_vsz_limit = 2 G dotlock_use_excl = no dsync_remote_cmd = ssh -l%{login} %{host} doveadm dsync-server -u%u -l5 log_path = /var/log/dovecot.log log_timestamp = "%Y-%m-%d %H:%M:%S " mail_access_groups = mail mail_location = mdbox:~/mdbox:ALT=/var/vmail/alt/%n mail_plugins = acl namespace inbox { inbox = yes location mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix separator = / } passdb { args = /etc/dovecot/dovecot-ldap.conf driver = ldap } plugin { acl = vfile } protocols = imap lmtp pop3 service aggregator { fifo_listener replication-notify-fifo { mode = 0666 } unix_listener replication-notify { mode = 0666 } } service auth { executable = /usr/lib/dovecot/auth unix_listener auth-client { mode = 0660 } unix_listener auth-master { mode = 0600 } unix_listener auth-userdb { mode = 0666 } user = root } service dict { unix_listener dict { mode = 0666 } } service doveadm { process_min_avail = 1 service_count = 1024 } service imap-login { chroot = login executable = /usr/lib/dovecot/imap-login inet_listener imap { address = * port = 143 } service_count = 0 user = dovecot } service imap { executable = /usr/lib/dovecot/imap } service lmtp { inet_listener lmtp { port = 24 } process_limit = 48 } service pop3-login { chroot = login executable = /usr/lib/dovecot/pop3-login inet_listener pop3 { address = * port = 110 } service_count = 0 user = dovecot } service pop3 { executable = /usr/lib/dovecot/pop3 } ssl = no userdb { args = /etc/dovecot/dovecot-ldap.conf driver = ldap } protocol imap { imap_client_workarounds = tb-extra-mailbox-sep mail_plugins = acl } protocol lmtp { mail_plugins = acl } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } protocol lda { mail_plugins = acl } -- Karol Jurak
Timo Sirainen
2013-Feb-13 10:46 UTC
[Dovecot] dsync 2.1.10 does not correctly handle renames of mailbox subtrees
On 12.2.2013, at 11.19, Karol Jurak <karol.jurak at gmail.com> wrote:> It seems that dsync 2.1.10 does not correctly handle renames of mailbox > subtrees. The scenario is as follows.I'm hoping I won't have to fix this in v2.1. v2.2 has a redesigned dsync where rename syncing should work much better.