While migrating from mbox to maildir using dsync, I kept running into a brick wall. Some folders would not sync. The message in stderr was: Error message GUID: Mailbox GUIDs are not permanent without index files.
This is what solved things for me. I hope this might help someone. Let me know if I'm completely off sides.
When working with dsync to migrate from mbox to maildir format mailboxes, I kept running into the error: dsync(someuser): Error: Couldn't get mailbox Drafts GUID: Mailbox GUIDs are not permanent without index files dsync(someuser): Error: Couldn't get mailbox Junk E-mail1 GUID: Mailbox GUIDs are not permanent without index files dsync(soemuser): Error: Couldn't get mailbox TO DO LATER - US GUID: Mailbox GUIDs are not permanent without index files dsync(someuser): Error: Couldn't get mailbox Notes GUID: Mailbox GUIDs are not permanent without index files dsync(someuser): Error: Couldn't get mailbox Orders Pending GUID: Mailbox GUIDs are not permanent without index files dsync(someuser): Error: Couldn't get mailbox Junk E-mail GUID: Mailbox GUIDs are not permanent without index files dsync(someuser): Error: Couldn't get mailbox Server Mgmt+Config GUID: Mailbox GUIDs are not permanent without index files
The error messages were helpful, but it would be nice to know what prevented the creation of the indexes in the errors (permissions, settings, disk space, etc.).
I finally figured it out semi-randomly when I dumped my doveconf file using doveconf -n, and saw:
mbox_min_index_size = 100 k
I felt very um... happy? And not too bright.
The following made my problems go away, and the sync worked flawlessly. mbox_min_index_size = 0
I guess it's best to set this using dsync -o'mbox_min_index_size=0'
Mail now converts quickly and completely even for 0 length mailboxes (i.e. empty folders are created).
Also, I would like to note that mb2md.pl should not be used to convert mbox to maildir. The regex used to split mboxes will fragment messages. mb2md.pl uses: if ( /^From / And in the very least, the following would be less harmful: if ( /^From\s+(\S+.*@\S+.*|MAILER.DAEMON)\s+.*$/
I love dovecot. I knew it must be something bone-headed I just wasn't seeing.
And now I can go get some rest.
--James W. Rogers