`doveconf -n' output:
# 2.2.10: /etc/dovecot/dovecot.conf # OS: Linux 3.10.0-229.20.1.el7.x86_64 x86_64 CentOS Linux release 7.2.1511 (Core) listen = * mail_location = maildir:~/Maildir/ namespace { inbox = yes location = prefix = separator = / type = private } namespace { location = maildir:/srv/mail/ prefix = Public/ separator = / subscriptions = no type = public } passdb { driver = pam } ssl_cert =
I have some public mailboxes in /srv/mail -- Public/Alpha and Public/Mike -- using configuration taken more or less verbatim from http://wiki2.dovecot.org/SharedMailboxes/Public. These are stored in Maildir format; here's a sample of how things look on disk at the moment:
/srv/mail/ ├── .Alpha │ ├── cur │ │ └── 1450775948.M24820P23708.cht,S=8186,W=8360:2,S │ ├── dovecot.index.cache │ ├── dovecot.index.log │ ├── dovecot-uidlist │ ├── maildirfolder │ ├── new │ └── tmp ├── cur ├── dovecot.index.log ├── dovecot-uidlist ├── dovecot-uidvalidity ├── dovecot-uidvalidity.5679158d ├── maildirfolder ├── .Mike │ ├── cur │ │ ├── 1450775948.M202327P23708.cht,S=8405,W=8576:2,S │ │ ├── 1450775948.M257575P23708.cht,S=5590,W=5732:2,S │ ├── dovecot.index.cache │ ├── dovecot.index.log │ ├── dovecot-uidlist │ ├── maildirfolder │ ├── new │ └── tmp ├── new └── tmp
I'm trying to convert these public mailboxes from Maildir to mdbox format. My end goal is a directory structure like the following. I obtained this example by emptying /srv/mail, changing `location = maildir:/srv/mail/' to use mdbox, and then delivering some messages into Public/Alpha and Public/Mike:
/srv/mail/ ├── dovecot-uidvalidity ├── dovecot-uidvalidity.567915fa ├── mailboxes │ ├── Alpha │ │ └── dbox-Mails │ │ ├── dovecot.index.cache │ │ └── dovecot.index.log │ ├── dbox-Mails │ │ └── dovecot.index.log │ └── Mike │ └── dbox-Mails │ ├── dovecot.index.cache │ └── dovecot.index.log └── storage ├── dovecot.map.index.log └── m.1
I know that dsync can be used to convert between mailbox formats, but is this possible in conjunction with namespaces? I can convert one of my mailboxes to an arbitrary mdbox location on disk using...
dsync -o mail_location=mdbox:/tmp/dbox/ mirror maildir:/srv/mail/.Mike/
... although this puts the messages inside an INBOX mailbox:
/tmp/dbox/ ├── mailboxes │ └── INBOX │ └── dbox-Mails │ ├── dovecot.index.cache │ └── dovecot.index.log └── storage ├── dovecot.map.index.log └── m.1
I could run this once per public mailbox, writing each to a different mdbox location, but am unaware of a method to merge them such that they would work with my Public/ namespace.
Is it possible to use dsync to convert my public Maildir mailboxes to mdbox, resulting in my desired directory structure above? I think I want to be able to tell dsync the location as a mailbox name, rather than a disk location, although this doesn't appear to be possible.
If not, is there another solution? My best idea at the moment is to make the configuration change and then re-deliver all messages by mailbox name.
Thanks in advance, and happy holidays,
-- Charlie Hothersall-Thomas | w: https://charlie.ht | e: me@charlie.ht | pgp: 4096R/C3676E3E