Migration to Dovecot
When migrating from one IMAP server to another, you should make sure that these are preserved:
- Mailbox subscription list
- User would be able to manually subscribe them again if you don't want to mess with it.
- Message UIDs
- If UIDs are lost, at the minimum clients' message cache gets cleaned
- Some IMAP clients store metadata by assigning it to specific UID, if UIDs are changed these will be lost.
- Message flags
- Lost flags can be really annoying, you most likely want to avoid it.
Here's the more server-specific instructions:
UW-IMAP
By default UW-IMAP allows access to whole home directory, and many people have chosen to store their mails in mail/ directory. This usually means that IMAP clients have set "IMAP namespace" to "mail/", which doesn't work well with Dovecot, as Dovecot by default uses mail/ directory directly. So if IMAP namespace is kept as "mail/", Dovecot would try to access "~/mail/mail/" directory.
So, removing the prefix from IMAP clients would be the first step. Next problem is that subscribed mailboxes are listed as "mail/box" or "~/mail/box" or "~user/mail/box" in subscriptions file. You'd have to remove the mail/ directory part from all of these. The subscriptions file name is also different, UW-IMAP uses .mailboxlist while Dovecot uses .subscriptions.
Dovecot uses UW-IMAP compatible UID and message flag headers in mboxes, so that's not a problem.
Settings:
default_mail_env = mbox:~/mail:INBOX=/var/mail/%u # make sure mbox_locks are the same with all software that accesses your mboxes mbox_locks = dotlock fcntl
If you want to make a transparent migration to Dovecot without having to change the configuration on hundreds of client systems, you will need a slightly different configuration.
- If your clients have the server prefix set to something like "~/mail", this will not work unless you enable mail_full_filesystem_access in your Dovecot configuration. Dovecot will otherwise reject mailbox names or prefixes that start with "~".
You can either rename your ".mailboxlist" file to ".subscriptions" for all you users, or change the definition of SUBSCRIPTION_FILE_NAME in src/lib-storage/subscription-file/subscription-file.c.
- It seems that UW ImapD may save mail from /var/mail to ~/mbox. This is quite annoying since if you set INBOX to /var/mail/%u, your users "lose" all their mails and if you set it to ~/mbox, they can't receive the new ones. A fix ?
UW-POP3
Dovecot generates POP3 UIDs differently than UW-IMAP. You most likely want to preserve them, so currently you'll have to [http://dovecot.org/patches/pop3-uidl-uwimap.patch patch Dovecot].
Courier
Courier by default uses "INBOX." as private IMAP namespace, so it has exactly the same problems as described with UW-IMAP above.
Courier's courierimapsubscribed is compatible with Dovecot's .subscriptions file, just rename it and remove the "INBOX." prefixes.
Courier's courierimapuiddb is compatible with Dovecot's dovecot-uidlist file, just rename it.
- Courier's message flags are compatible with Dovecot (as it's specified by Maildir specification)
- Courier's message keywords implementation isn't Dovecot compatible and there's currently no easy way to migrate them.
Settings:
default_mail_env = maildir:~/Maildir
Cyrus
See [http://madness.at/projects/ cyrus2courier], it's Dovecot-compatible. Also mirrored at [http://dovecot.org/tools/ dovecot.org].