On Wed, May 13, 2020 at 11:03:37AM +0300, Aki Tuomi wrote: > Edit your dovecot.conf and add > > namespace { > inbox = yes > # or use '.' here. > separator = / > }
Thanks for the suggestion! I added those lines to the bottom of /etc/dovecot/dovecot.conf . However, when I attempted the mbox to maildir conversion afterwards, I still received an error, albeit a different one: $ 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 : 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): Error: User initialization failed: namespace configuration error: Duplicate namespace prefix: "" doveadm(sampablokuper): Error: User init failed I was able to resolve this error by commenting out this line in my /etc/dovecot/dovecot.conf: include conf.d/*.conf Even after that, though, dsync still failed to migrate the source mbox's contents to the target maildir, but this time with a "Skipping unchanged mailbox" message. See below for full output. (Dsync did however replace the source mbox's contents with a dummy message: "This text is part of the internal format of your mail folder, and is not a real message. ...".) I would be grateful for assistance to make dsync convert the mbox to a maildir. Here is dsync's output: $ 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 : 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 : 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): Debug: Namespace : Using permissions from /tmp/dsync_test/mbox: mode=0755 gid=default dsync(sampablokuper): Debug: brain M: Local mailbox tree: INBOX guid=49147222caefc55e0851000041fea997 uid_validity=1590030282 uid_next=1 subs=no last_change=0 last_subs=0 dsync(sampablokuper): Debug: brain S: Local mailbox tree: INBOX guid=aa02c63478e7c55eff3a000041fea997 uid_validity=1590028152 uid_next=1 subs=no last_change=0 last_subs=0 dsync(sampablokuper): Debug: brain M: Remote mailbox tree: INBOX guid=aa02c63478e7c55eff3a000041fea997 uid_validity=1590028152 uid_next=1 subs=no last_change=0 last_subs=0 dsync(sampablokuper): Debug: brain S: Remote mailbox tree: INBOX guid=49147222caefc55e0851000041fea997 uid_validity=1590030282 uid_next=1 subs=no last_change=0 last_subs=0 dsync(sampablokuper): Debug: brain M: Remote mailbox tree deletion: guid=ab02c63478e7c55eff3a000041fea997 type=mailbox timestamp=1590028152 name= local update=not found dsync(sampablokuper): Debug: brain M: Mailbox INBOX: local=49147222caefc55e0851000041fea997/0/1, remote=aa02c63478e7c55eff3a000041fea997/0/1: GUIDs conflict - will be merged later dsync(sampablokuper): Debug: brain S: Mailbox INBOX: local=aa02c63478e7c55eff3a000041fea997/0/1, remote=49147222caefc55e0851000041fea997/0/1: GUIDs conflict - will be merged later dsync(sampablokuper): Debug: brain S: Deleting mailbox 'INBOX' (GUID aa02c63478e7c55eff3a000041fea997): UIDVALIDITY changed (1590030282 -> 1590028152) dsync(sampablokuper): Debug: Namespace : /tmp/dsync_test/mbox/2002-September doesn't exist yet, using default permissions dsync(sampablokuper): Debug: Namespace : Using permissions from /tmp/dsync_test/mbox: mode=0755 gid=default dsync(sampablokuper): Debug: Namespace : /tmp/dsync_test/mbox/2002-September doesn't exist yet, using default permissions dsync(sampablokuper): Debug: Namespace : Using permissions from /tmp/dsync_test/mbox: mode=0755 gid=default dsync(sampablokuper): Debug: brain S: Skipping unchanged mailbox 49147222caefc55e0851000041fea997 And here is my full /etc/dovecot/dovecot.conf : ## Dovecot configuration file # If you're in a hurry, see http://wiki2.dovecot.org/QuickConfiguration # "doveconf -n" command gives a clean output of the changed settings. Use it # instead of copy&pasting files when posting to the Dovecot mailing list. # '#' character and everything after it is treated as comments. Extra spaces # and tabs are ignored. If you want to use either of these explicitly, put the # value inside quotes, eg.: key = "# char and trailing whitespace " # Most (but not all) settings can be overridden by different protocols and/or # source/destination IPs by placing the settings inside sections, for example: # protocol imap { }, local 127.0.0.1 { }, remote 10.0.0.0/8 { } # Default values are shown for each setting, it's not required to uncomment # those. These are exceptions to this though: No sections (e.g. namespace {}) # or plugin settings are added by default, they're listed only as examples. # Paths are also just examples with the real defaults being based on configure # options. The paths listed here are for configure --prefix=/usr # --sysconfdir=/etc --localstatedir=/var # Enable installed protocols !include_try /usr/share/dovecot/protocols.d/*.protocol # A comma separated list of IPs or hosts where to listen in for connections. # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces. # If you want to specify non-default ports or anything more complex, # edit conf.d/master.conf. #listen = *, :: # Base directory where to store runtime data. #base_dir = /var/run/dovecot/ # Name of this instance. In multi-instance setup doveadm and other commands # can use -i <instance_name> to select which instance is used (an alternative # to -c <config_path>). The instance name is also added to Dovecot processes # in ps output. #instance_name = dovecot # Greeting message for clients. #login_greeting = Dovecot ready. # Space separated list of trusted network ranges. Connections from these # IPs are allowed to override their IP addresses and ports (for logging and # for authentication checks). disable_plaintext_auth is also ignored for # these networks. Typically you'd specify your IMAP proxy servers here. #login_trusted_networks = # Space separated list of login access check sockets (e.g. tcpwrap) #login_access_sockets = # With proxy_maybe=yes if proxy destination matches any of these IPs, don't do # proxying. This isn't necessary normally, but may be useful if the destination # IP is e.g. a load balancer's IP. #auth_proxy_self = # Show more verbose process titles (in ps). Currently shows user name and # IP address. Useful for seeing who are actually using the IMAP processes # (eg. shared mailboxes or if same uid is used for multiple accounts). #verbose_proctitle = no # Should all processes be killed when Dovecot master process shuts down. # Setting this to "no" means that Dovecot can be upgraded without # forcing existing client connections to close (although that could also be # a problem if the upgrade is e.g. because of a security fix). #shutdown_clients = yes # If non-zero, run mail commands via this many connections to doveadm server, # instead of running them directly in the same process. #doveadm_worker_count = 0 # UNIX socket or host:port used for connecting to doveadm server #doveadm_socket_path = doveadm-server # Space separated list of environment variables that are preserved on Dovecot # startup and passed down to all of its child processes. You can also give # key=value pairs to always set specific settings. #import_environment = TZ ## ## Dictionary server settings ## # Dictionary can be used to store key=value lists. This is used by several # plugins. The dictionary can be accessed either directly or though a # dictionary server. The following dict block maps dictionary names to URIs # when the server is used. These can then be referenced using URIs in format # "proxy::<name>". dict { #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext } # Most of the actual configuration gets included below. The filenames are # first sorted by their ASCII value and parsed in that order. The 00-prefixes # in filenames are intended to make it easier to understand the ordering. #!include conf.d/*.conf # A config file can also tried to be included without giving an error if # it's not found: !include_try local.conf # Added 16/5/2020, per Aki Tuomi advice: namespace { inbox = yes # or use '.' here. separator = / } Thank you again! -- 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.