Convert standalone mbox to standalone Maildir with Dsync - hierarchy separator error

Aki Tuomi aki.tuomi at open-xchange.com
Wed May 13 11:03:37 EEST 2020


> On 13/05/2020 10:11 Sam Kuper <sampablokuper at posteo.net> wrote:
> 
>  
> Dear Dovecot users/devs,
> 
> I have the following mbox file:
> 
>     /tmp/dsync_test/mbox/2002-September
> 
> I would like to convert it to a Maildir:
> 
>     /tmp/dsync_test/maildir
> 
> (Currently, the latter is just an empty directory.)
> 
> I am attempting this on an old PC running Debian 9 ("Stretch").  I
> installed the dovecot-core package in order to make the `dsync` tool
> available on that PC.  I have not otherwise done anything with Dovecot
> on that PC; for instance, I have not created or edited any Dovecot
> config files.  `man dsync` gives the Dovecot version as 2.2.
> 
> Inspired by the man page and the Dovecot wiki, here was my first attempt
> to perform the conversion.  (I have added newlines between each line of
> the output, for readability.)
> 
> 
>     $ dsync -Dv -o 'mail_location=maildir:/tmp/dsync_test/maildir' \
>         backup \
>         mbox:/tmp/dsync_test/mbox/:INBOX=/tmp/dsync_test/mbox/2002-September
> 
>     Debug: Loading modules from directory:
>     /usr/lib/dovecot/modules/doveadm
> 
>     Debug: Skipping module doveadm_acl_plugin, because dlopen() failed:
>     /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so:
>     undefined symbol: acl_lookup_dict_iterate_visible_next (this is
>     usually intentional, so just ignore this message)
>    
>     Debug: Skipping module doveadm_expire_plugin, because dlopen()
>     failed:
>     /usr/lib/dovecot/modules/doveadm/lib10_doveadm_expire_plugin.so:
>     undefined symbol: expire_set_deinit (this is usually intentional, so
>     just ignore this message)
> 
>     Debug: Skipping module doveadm_quota_plugin, because dlopen()
>     failed:
>     /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so:
>     undefined symbol: quota_user_module (this is usually intentional, so
>     just ignore this message)
> 
>     Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen()
>     failed:
>     /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so:
>     undefined symbol: lucene_index_iter_deinit (this is usually
>     intentional, so just ignore this message)
> 
>     Debug: Skipping module doveadm_fts_plugin, because dlopen() failed:
>     /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so:
>     undefined symbol: fts_user_get_language_list (this is usually
>     intentional, so just ignore this message)
> 
>     Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen()
>     failed:
>     /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so:
>     undefined symbol: mail_crypt_box_get_pvt_digests (this is usually
>     intentional, so just ignore this message)
> 
>     doveadm(sampablokuper): Debug: Effective uid=1000, gid=1000,
>     home=/home/sampablokuper
>    
>     doveadm(sampablokuper): Debug: Namespace inbox: type=private,
>     prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes
>     location=maildir:/tmp/dsync_test/maildir
> 
>     doveadm(sampablokuper): Debug: maildir++:
>     root=/tmp/dsync_test/maildir, index=, indexpvt=, control=,
>     inbox=/tmp/dsync_test/maildir, alt=
>    
>     doveadm(sampablokuper): Debug: Namespace : Using permissions from
>     /tmp/dsync_test/maildir: mode=0755 gid=default dsync(sampablokuper):
>     Debug: Effective uid=1000, gid=1000, home=/home/sampablokuper
> 
>     dsync(sampablokuper): Debug: Namespace inbox: type=private, prefix=,
>     sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes
>     location=mbox:/tmp/dsync_test/mbox/:INBOX=/tmp/dsync_test/mbox/2002-September
> 
>     dsync(sampablokuper): Debug: fs: root=/tmp/dsync_test/mbox, index=,
>     indexpvt=, control=, inbox=/tmp/dsync_test/mbox/2002-September, alt=
> 
>     dsync(sampablokuper): Error: Mail locations must use the same
>     virtual mailbox hierarchy separator (specify separator for the
>     default namespace)
> 
> 
> As you can see, it ends with "Error: Mail locations must use the same
> virtual mailbox hierarchy separator (specify separator for the default
> namespace)".
> 
> So, I tried specifying a hierarchy separator, but this failed too:
> 
> 
> $ dsync -Dv \
>     -o 'separator=.' \
>     -o 'mail_location=maildir:/tmp/dsync_test/maildir' \
>     backup \
>     mbox:/tmp/dsync_test/mbox/:INBOX=/tmp/dsync_test/mbox/2002-September
> 
>     Debug: Loading modules from directory:
>     /usr/lib/dovecot/modules/doveadm
>     
>     Debug: Skipping module doveadm_acl_plugin, because dlopen() failed:
>     /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so:
>     undefined symbol: acl_lookup_dict_iterate_visible_next (this is
>     usually intentional, so just ignore this message)
>     
>     Debug: Skipping module doveadm_expire_plugin, because dlopen()
>     failed:
>     /usr/lib/dovecot/modules/doveadm/lib10_doveadm_expire_plugin.so:
>     undefined symbol: expire_set_deinit (this is usually intentional, so
>     just ignore this message)
>     
>     Debug: Skipping module doveadm_quota_plugin, because dlopen()
>     failed:
>     /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so:
>     undefined symbol: quota_user_module (this is usually intentional, so
>     just ignore this message)
>     
>     Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen()
>     failed:
>     /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so:
>     undefined symbol: lucene_index_iter_deinit (this is usually
>     intentional, so just ignore this message)
>     
>     Debug: Skipping module doveadm_fts_plugin, because dlopen() failed:
>     /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so:
>     undefined symbol: fts_user_get_language_list (this is usually
>     intentional, so just ignore this message)
>     
>     Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen()
>     failed:
>     /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so:
>     undefined symbol: mail_crypt_box_get_pvt_digests (this is usually
>     intentional, so just ignore this message)
>     
>     doveadm(sampablokuper): Debug: Effective uid=1000, gid=1000,
>     home=/home/sampablokuper
>     
>     doveadm(sampablokuper): Debug: Namespace inbox: type=private,
>     prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes
>     location=maildir:/tmp/dsync_test/maildir
>     
>     doveadm(sampablokuper): Debug: maildir++:
>     root=/tmp/dsync_test/maildir, index=, indexpvt=, control=,
>     inbox=/tmp/dsync_test/maildir, alt=
>     
>     doveadm(sampablokuper): Debug: Namespace : Using permissions from
>     /tmp/dsync_test/maildir: mode=0755 gid=default
>     
>     dsync(sampablokuper): Debug: Effective uid=1000, gid=1000,
>     home=/home/sampablokuper
>     
>     dsync(sampablokuper): Debug: Namespace inbox: type=private, prefix=,
>     sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes
>     location=mbox:/tmp/dsync_test/mbox/:INBOX=/tmp/dsync_test/mbox/2002-September
>     
>     dsync(sampablokuper): Debug: fs: root=/tmp/dsync_test/mbox, index=,
>     indexpvt=, control=, inbox=/tmp/dsync_test/mbox/2002-September, alt=
>     
>     dsync(sampablokuper): Error: Mail locations must use the same
>     virtual mailbox hierarchy separator (specify separator for the
>     default namespace)
> 
> 
> I got the same error again when I tried the command above with "/"
> instead of "." as the hierarchy separator.
> 
> Forgive me for my ignorance, but how should I correct the invocation I
> used above?  In other words: using dsync, how can I extract/copy the
> emails from the mbox to the new Maildir?
> 
> Thank you!
> 
> -- 
> A: When it messes up the order in which people normally read text.
> Q: When is top-posting a bad thing?
> 
> ()  ASCII ribbon campaign. Please avoid HTML emails & proprietary
> /\  file formats. (Why? See e.g. https://v.gd/jrmGbS ). Thank you.

Edit your dovecot.conf and add

namespace {
  inbox = yes
  # or use '.' here.
  separator = /
}

Aki


More information about the dovecot mailing list