Courier IMAP/POP3
=================

*WARNING: Badly done migration will cause your IMAP and/or POP3 clients to
re-download all mails. Read <Migration.txt> page first carefully.*

Courier v0.43 and later to Dovecot v1.1+
----------------------------------------

courier-dovecot-migrate.pl
[https://dovecot.org/tools/courier-dovecot-migrate.pl] does a perfect migration
from Courier IMAP and POP3, preserving IMAP UIDs and POP3 UIDLs. It reads
Courier's 'courierimapuiddb' and 'courierpop3dsizelist' files and produces
'dovecot-uidlist' file from it.

Before doing the actual conversion you can run the script and see if it
complains about any errors and such, for example:

---%<-------------------------------------------------------------------------
# ./courier-dovecot-migrate.pl --to-dovecot --recursive /home
Finding maildirs under /home
/home/user/Maildir/dovecot-uidlist already exists, not overwritten
/home/user/Maildir2: No imap/pop3 uidlist files
Total: 69 mailboxes / 6 users
       0 errors
No actual conversion done, use --convert parameter
---%<-------------------------------------------------------------------------

The actual conversion can be done for all users at once by running the script
with '--convert --recursive' parameters. Make sure the conversion worked by
checking that 'dovecot-uidlist' files were created to all maildirs (including
to subfolders).

The '--recursive' option goes through only one level down in directory
hierarchies. This means that if you have some kind of a directory hashing
scheme (or even domain/username/), it won't convert all of the files.

You can also convert each user as they log in for the first time, using
<PostLoginScripting.txt> with a script something like:

---%<-------------------------------------------------------------------------
#!/bin/sh
# WARNING: Be sure to use mail_drop_priv_before_exec=yes,
# otherwise the files are created as root!

courier-dovecot-migrate.pl --quiet --to-dovecot --convert Maildir
# This is for imap, create a similar script for pop3 too
exec /usr/local/libexec/dovecot/imap
---%<-------------------------------------------------------------------------

FIXME: The script should rename also folder names that aren't valid mUTF-7.
Dovecot can't otherwise access such folders.

Dovecot configuration
---------------------

Courier by default uses "INBOX." as the IMAP namespace for private mailboxes.
If you want a transparent migration, you'll need to configure Dovecot to use a
namespace with "INBOX." prefix as well.

---%<-------------------------------------------------------------------------
mail_location = maildir:~/Maildir

namespace {
  prefix = INBOX.
  separator = .
  inbox = yes
}
---%<-------------------------------------------------------------------------

See also <Namespaces#Backwards Compatibility: Courier IMAP> [Namespaces.txt].

Manual conversion
-----------------

 * Courier's 'courierimapsubscribed' file is compatible with Dovecot's
   'subscriptions' file, but you need to remove the "INBOX." prefixes from the
   mailboxes./This is true even if you set namespace prefix to "INBOX." as
   described above./
 * Courier's 'courierimapuiddb' file is compatible with Dovecot's
   'dovecot-uidlist' file, just rename it.
 * Courier's message flags are compatible with Dovecot (as they are specified
   by the Maildir specification)
 * Courier's message keywords implementation isn't Dovecot compatible. There
   doesn't exist a simple way to convert the keywords manually.

(This file was created from the wiki on 2019-06-19 12:42)
