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

If you're using only Courier IMAP, it's possible to do a perfectly transparent
Dovecot migration. If you're using Courier POP3 and you have users who keep
mail in the server, you may have problems keeping the POP3 UIDLs unchanged.

Courier v0.43 and later
-----------------------

courier-dovecot-migrate.pl
[http://www.dovecot.org/tools/courier-dovecot-migrate.pl] attempts to do as
perfect migration from Courier as possible. If you're using only IMAP, it
should work with any Courier version. If you're using Courier POP3 also, it
reads 'courierpop3dsize' files using a Courier v0.43+ format. If you have an
older Courier POP3 version, see the following sections how to convert the
UIDLs.

Before the actual conversion, you can check how well it can be done:

---%<-------------------------------------------------------------------------
# courier-dovecot-migrate.pl --recursive
Finding maildirs under .
home/tss/Maildir/courierpop3dsizelist: 2 / 2956 needs changing
home/tss/Maildir/courierimapuiddb: 2956 / 2957 needs changing

Total: 2 POP3 changes, 2956 IMAP changes, 0 errors
---%<-------------------------------------------------------------------------

This means that 2 POP3 UIDLs need to be changed (clients will download them as
duplicates) and only one IMAP UID can be converted without changing it.
Changing IMAP UIDs isn't as bad, it will only cause a somewhat heavier load to
your mail server when the IMAP clients begin downloading the old mails again.

The actual conversion can be done either all at once by running the script with
'--convert --recursive' parameters, or you can 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 --convert ~/Maildir
# This is for imap, create a similar script for pop3 too
exec /usr/local/libexec/dovecot/imap
---%<-------------------------------------------------------------------------

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.

---%<-------------------------------------------------------------------------
protocol pop3 {
  pop3_uidl_format = UID%u-%v
}

mail_location = maildir:~/Maildir

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

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

 * Courier's 'courierimapsubscribed' file is compatible with Dovecot's
   'subscriptions' file, but you need to remove the "INBOX." prefixes from the
   mailboxes.
 * 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.

Older Courier POP3 versions
---------------------------

Courier version 0:
  ---%<-----------------------------------------------------------------------
  # Courier version 0 (using maildir filenames)
  pop3_uidl_format = %f
  ---%<-----------------------------------------------------------------------

Courier version 1:
  ---%<-----------------------------------------------------------------------
  # Courier version 1 (UID)
  pop3_uidl_format = %u
  ---%<-----------------------------------------------------------------------

Courier version 2 and early Courier version 3:
  ---%<-----------------------------------------------------------------------
  # Courier version 2 (UIDVALIDITY and UID - you most likely want this)
  pop3_uidl_format = %v-%u
  ---%<-----------------------------------------------------------------------


(This file was created from the wiki on 2007-04-13 14:32)
