Mirgrating courier

migrating whole Courier soulutions means basicly migrating only imap and maildrop deliverer. The rest pop3 and auth daemon are trivial.

Case Study

Original virtual maildir structure /var/mail/virtual/example.com/name.surname/Maildir has additional special path /Maildir at the end. New should map to /srv/mail/virtual/example.com/name.surname/Maildir

First Solution for simple cases is simple. In simple case all your e-mails user@domain match the structure above (/path/domain/user) and maildir column in your database is funny overhead. Add to your dovecot.conf

auth default {
  ...
  userdb static {
      args = uid=1001 gid=1001 home=/srv/mail/virtual/%d/%n allow_all_users=yes
  }
  ...
}
mail_location = maildir:~/Maildir

Second Solution is to change the sql query int dovecot-sql.conf

user_query = SELECT maildir as home, uid, gid, concat('maildir:', maildir, '/Maildir') as mail FROM mailbox WHERE username = '%u'

and set up different userdb source in dovecot.conf

auth default {
  ...
  userdb sql {
    args = /etc/dovecot/dovecot-sql.conf
  }
  ...
}

forget the mail_location.

Theory Behind

Is that realy a theory? It is the code behind. Final deliverer LDA is deliver. It is given one parameter -d {recipient which is -d name.username@example.com. First it asks dovecot auth socket for additional data like uid, gid, maildir path.

Syncing Dirs

at source host:

for i in /var/mail/virtual/*/; do echo $i; rsync -a  --rsh='ssh -c blowfish' $i wd@81.0.212.153:$i; done

at new host:

./courier2dovecot.pl --to-dovecot --convert --recursive /var/mail/virtual/*
 
linux/mail/courier2dovecot.txt · Last modified: 2009/02/19 05:09 by admin