This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.
Differences between revisions 1 and 15 (spanning 14 versions)
Revision 1 as of 2007-03-19 20:48:22
Size: 1967
Editor: TimoSirainen
Comment:
Revision 15 as of 2008-01-26 08:28:01
Size: 3464
Editor: TimoSirainen
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Courier, Courier-IMAP =
Courier by default uses "INBOX." as private IMAP namespace, so it has exactly the same problems as described with UW-IMAP above. Again, if you want the migration to be transparent for IMAP clients, see ["Namespaces"] how to set namespaces to be Courier-compatible.
= Courier IMAP/POP3 =
Line 4: Line 3:
 * Courier's {{{courierimapsubscribed}}} is compatible with Dovecot's {{{subscriptions}}} file, just rename it and remove the "INBOX." prefixes. (NOTE: with 0.99.x it's {{{.subscriptions}}}, with 1.0 it's {{{subscriptions}}} without the dot)
 * Courier's {{{courierimapuiddb}}} 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 and there is currently no easy way to migrate them.
See also the [http://bendiken.net/scripts/ courier2dovecot] script by Arto Bendiken.
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.
Line 10: Line 5:
See also the [http://www.aucontraire.net/scripts/mail/courier2dovecot.py courier2dovecot.py] script by Michael Watkins. == Courier v0.43 and later ==
Line 12: Line 7:
Settings: [http://www.dovecot.org/tools/courier-dovecot-migrate.pl courier-dovecot-migrate.pl] attempts to do as perfect migration from Courier as possible. Basically it reads Courier's uidlist files from all maildirs and generates {{{dovecot-uidlist}}} files out of them. 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:
Line 15: Line 12:
# normal home directories # 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 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).

You can also convert each user as they log in for the first time, using PostLoginScripting 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
}
Line 17: Line 46:
# for virtual users
mail_location = maildir:~/}}}
For POP3 UIDL compatibility with Courier, the Dovecot configuration depends on the Courier version used:

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 ==
Line 30: Line 71:
 Courier version 3 (younger versions):: Here everything has changed: Courier's UID data are now stored in{{{courierpop3dsizelist}}}and in a completely new format. But it's still possible to convert it to the format dovecot needs (link to perlscript and further configuration details will follow later).

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

[http://www.dovecot.org/tools/courier-dovecot-migrate.pl courier-dovecot-migrate.pl] attempts to do as perfect migration from Courier as possible. Basically it reads Courier's uidlist files from all maildirs and generates dovecot-uidlist files out of them. 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 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).

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

# 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

None: Migration/Courier (last edited 2019-12-20 14:09:53 by 38)