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

Sam Kuper sampablokuper at posteo.net
Wed May 13 10:11:25 EEST 2020


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.


More information about the dovecot mailing list