doveadm backup|sync works for every folder but INBOX

Ralf Becker rb at egroupware.org
Thu Nov 3 07:46:26 UTC 2022


I'm trying to migrate an old Cyrus 2.5 server to Dovecot 2.3.19 using 
doveadm backup -R, which works for all folders but the INBOX itself, 
which always stays empty.

The Cyrus side uses altnamespace:no and unixhierarchysep:no, it's used 
as imapc: remote in doveadm backup -R with imapc_list_prefix=INBOX

Dovecot uses the following namespace to migrate into:

namespace inboxes {
   inbox = yes
   location =
   mailbox Sent {
     auto = subscribe
     special_use = \Sent
   }
   ### some more folders omitted ###
   prefix = INBOX/
   separator = /
   subscriptions = no
}

I use the following command line for the migration:

doveadm -o imapc_features='rfc822.size fetch-headers' -o 
mail_prefetch_count=20 -o namespace/subs/location=mbox:/var/dovecot/subs 
-o imapc_user='someuser' -o imapc_password='secret' -o 
imapc_host=<cyrus-ip> -o imapc_list_prefix=INBOX -D backup -f -n INBOX/ 
-R -u someuser at somedomain imapc:

The debug output contains the following lines:

Nov 02 10:16:01 dsync(someuser at somedomain): Debug: brain S: Namespace 
INBOX/ has location imapc:
Nov 02 10:16:01 dsync(someuser at somedomain): Debug: brain M: Local 
mailbox tree: INBOX guid=d8d5a3122bce5f63ef9101001ebfc848 
uid_validity=1667223083 uid_next=1 subs=no last_change=0 last_subs=0
Nov 02 10:16:01 dsync(someuser at somedomain): Debug: brain S: Local 
mailbox tree: INBOX guid=c92f64f79f0d1ed01e6d5b314f04886c 
uid_validity=1577952633 uid_next=32691 subs=no last_change=0 last_subs=0

Nov 02 10:16:28 dsync(someuser at somedomain): Warning: Mailbox changes 
caused a desync. You may want to run dsync again: Remote lost mailbox 
GUID c92f64f79f0d1ed01e6d5b314f04886c (maybe it was just deleted?)

The Cyrus server is solely used for the migration, no access from 
anywhere else!

doveadm mailbox status -u someuser at somedomain all INBOX reports:

INBOX messages=0 recent=0 uidnext=1 uidvalidity=1667223083 unseen=0 
highestmodseq=1 vsize=0 guid=d8d5a3122bce5f63ef9101001ebfc848 
firstsaved=never

As all other folders seem ok, I blamed the failure with the INBOX on the 
imapc_list_prefix and altnamespace:no and tried, adding the INBOX 
content with an other doveadm sync run:

doveadm -o imapc_features='rfc822.size fetch-headers' -o 
mail_prefetch_count=20 -o namespace/subs/location=mbox:/var/dovecot/subs 
-o imapc_user='someuser' -o imapc_password='secret' -o 
imapc_host=<cyrus-ip> -D sync -1 -f -m INBOX -n INBOX/ -R -u 
someuser at somedomain imapc:

That gives the following output:

Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain S: Namespace 
INBOX/ has location imapc:
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain M: Local 
mailbox tree: INBOX guid=d8d5a3122bce5f63ef9101001ebfc848 
uid_validity=1667223083 uid_next=1 subs=no last_change=0 last_subs=0
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain S: Local 
mailbox tree: INBOX guid=c92f64f79f0d1ed01e6d5b314f04886c 
uid_validity=1577952633 uid_next=32691 subs=no last_change=0 last_subs=0
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain M: Remote 
mailbox tree: INBOX guid=c92f64f79f0d1ed01e6d5b314f04886c 
uid_validity=1577952633 uid_next=32691 subs=no last_change=0 last_subs=0
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain S: Remote 
mailbox tree: INBOX guid=d8d5a3122bce5f63ef9101001ebfc848 
uid_validity=1667223083 uid_next=1 subs=no last_change=0 last_subs=0
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain M: Mailbox 
INBOX: local=d8d5a3122bce5f63ef9101001ebfc848/0/1, 
remote=c92f64f79f0d1ed01e6d5b314f04886c/0/1: GUIDs conflict - will be 
merged later
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: Mailbox INBOX: 
Mailbox opened
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain M: Changing 
mailbox INBOX GUID d8d5a3122bce5f63ef9101001ebfc848 -> 
c92f64f79f0d1ed01e6d5b314f04886c
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: dict(file): Waiting 
for dict to finish pending operations
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain S: Remote 
mailbox tree deletion: guid=c8882c0029ce5f63a9aa0000ca9feb0b 
type=mailbox timestamp=1667223081 name= local update=not found
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain S: Mailbox 
INBOX: local=c92f64f79f0d1ed01e6d5b314f04886c/0/1, 
remote=d8d5a3122bce5f63ef9101001ebfc848/0/1: GUIDs conflict - will be 
merged later
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: Mailbox INBOX: 
Mailbox opened
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain S: Ignore 
nonexistent mailbox GUID c92f64f79f0d1ed01e6d5b314f04886c with -1 sync
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain S: We don't 
have mailbox c92f64f79f0d1ed01e6d5b314f04886c
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: brain M: Ignoring 
missing remote box GUID c92f64f79f0d1ed01e6d5b314f04886c
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: dict(file): Waiting 
for dict to finish pending operations
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: dict(file): dict 
destroyed
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: dict(file): Waiting 
for dict to finish pending operations
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: dict(file): dict 
destroyed
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: 
imapc(10.44.88.3:143): Disconnected
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: User session is finished
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: dict(file): dict 
destroyed
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: dict(file): Waiting 
for dict to finish pending operations
Nov 02 10:55:45 dsync(someuser at somedomain): Debug: dict(file): dict 
destroyed
Nov 02 10:55:45 doveadm(40708): Debug: auth-master: conn 
unix:/run/dovecot/auth-userdb (pid=1,uid=0): Disconnected: Connection 
closed (fd=9)

doveadm mailbox status -u someuser at somedomain all INBOX
INBOX messages=0 recent=0 uidnext=1 uidvalidity=1667223083 unseen=0 
highestmodseq=1 vsize=0 guid=c92f64f79f0d1ed01e6d5b314f04886c 
firstsaved=never

The interesting part is that INBOX somehow seems to have two different 
GUIDs, depending on how I sync it (compare the two doveadm mailbox 
status outputs).

In a tcpdump of the IMAP trafic I can see a STATUS "INBOX" (UIDNEXT 
UIDVALIDITY) but no EXAMINE "INBOX" or something else I would expect 
from the sync.

I can provide the full output of doveadm backup/sync and a pcap of the 
IMAP trafic, but not to the public list.

Any idea what's wrong with the sync of the INBOX or other suggestions / 
imapc parameters to use?

Ralf
-- 
Ralf Becker
EGroupware GmbH [www.egroupware.org]
Handelsregister HRB Kaiserslautern 3587
Geschäftsführer Birgit und Ralf Becker
Leibnizstr. 17, 67663 Kaiserslautern, Germany
Telefon +49 631 31657-0



More information about the dovecot mailing list