dsync and namespaces
Charlie Hothersall-Thomas
me at charlie.ht
Tue Dec 22 10:28:23 UTC 2015
`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 = </etc/pki/dovecot/certs/dovecot.pem
> ssl_key = </etc/pki/dovecot/private/dovecot.pem
> userdb {
> driver = passwd
> }
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 at charlie.ht
| pgp: 4096R/C3676E3E
More information about the dovecot
mailing list