Skip to content


Convertir en masse vos boites mails de type Mbox en Maildir

Introduction

Lorsqu'on installe un serveur de courriers tel que Postfix, il faut savoir que les boites seront du type MBOX. Cela implique que les courriers seront stockés dans /var/mail/$USER et aussi dans /home/$USER/mail. Un seul fichier qui contiendra l'ensemble des courriers. Ceci n'est pas très efficace si un serveur IMAP tel que dovecot est installé.

Le format "mbox" n'est pas aussi efficient que le format "Maildir". Nous allons voir comment migrer l'ensemble des boites utilisateurs stockées /var/mail/$USER en boites stockées dans le répertoire /home/$USER/Maildir. Puis configurer Dovecot, Postfix pour qu'ils utilisent "Maildir".

Comment migrer des boites ?

Il faut installer : mb2md

Dans les répertoires utilisateurs la boite de courrier à cette forme :

/home/blah/mail/
/home/blah/mail/fffff
/home/blah/mail/ggggg
/home/blah/mail/xxx/aaaa
/home/blah/mail/xxx/bbbb
/home/blah/mail/xxx/cccc
/home/blah/mail/xxx/dddd
/home/blah/mail/yyyy/huey
/home/blah/mail/yyyy/duey
/home/blah/mail/yyyy/louie

Pour les transformer en :

/home/blah/Maildir/.fffff/
/home/blah/Maildir/.ggggg/
/home/blah/Maildir/.xxx/
/home/blah/Maildir/.xxx.aaaa/
/home/blah/Maildir/.xxx.bbbb/
/home/blah/Maildir/.xxx.cccc/
/home/blah/Maildir/.xxx.aaaa/
/home/blah/Maildir/.yyyy/
/home/blah/Maildir/.yyyy.huey/
/home/blah/Maildir/.yyyy.duey/
/home/blah/Maildir/.yyyy.louie/
/home/blah/Maildir/.yyyy.louie/mail-01
/home/blah/Maildir/.yyyy.louie/mail-02

Il faut aussi tenir compte que pendant l'opération il faut bien entendu que la réception des courriers soit à l'arrêt et que les courriers en "spool" dans /var/spool/mail soient traités.

Pour cela il suffit de stopper Postfix et Dovecot :

/etc/init.d/Postfix stop
/etc/init.d/dovecot stop

Puis il faut s'identifier en chaque utilisateur et depuis le home de chacun convertir la boite...

su - blah
mb2md -m
/bin/mb2md -s mail -R -d Maildir

...

Cela est simple lors de l'existence de quelques boites, mais si vous devez migrer plus d'une centaine de boites.... Ce n'est pas efficace ! 🙁

Si on fait un ls -l /home

drwxr-xr-x  6 user1        users    4096 29 avril 00:06 user1
drwxr-xr-x  6 user2        users    4096 29 avril 00:06 user2
drwxr-xr-x 13 user3        users    4096 29 avril 00:07 user3
drwxr-xr-x  2 ftp        nogroup  4096 26 avril  2011 ftp
drwxr-xr-x  6 user4        users    4096 29 avril 13:47 user4
drwxr-xr-x  4 user5        users    4096 29 avril 00:08 user5
drwx------  2 root        root    16384 25 avril  2011 lost+found
drwxr-xr-x  4 spamd        spamd    4096 18 mai    2011 spamd

Seuls les comptes user de 1 à 5 devraient être concernés.

La migration

$ su
# /etc/init.d/postfix stop
# cd /home
# for i in *; do echo $i;su - $i -c "/usr/bin/mb2md -s mail -R -d Maildir";done

Lors de cette commande si celle-ci est effectuée dans un "home" sans boite attitrée le message suivant apparaît :

Fatal: Source is not an mbox file or a directory!

Configuration de Postfix et Dovecot pour Maildir

Il faut modifier les deux fichiers suivants :

/etc/postfix/main.cf
 
/etc/dovecot/dovecot.conf

Dans /etc/postfix/main.cf

mailbox_command = /usr/bin/procmail -t -a "$EXTENSION" DEFAULT=$HOME/Maildir/ MAILDIR=$HOME/Maildir
mailbox_size_limit = 0
home_mailbox = Maildir/

Dans /etc/dovecot/dovecot.conf la partie

##
## Mailbox locations and namespaces
##
 
# Location for users' mailboxes. This is the same as the old default_mail_env
# setting. The default is empty, which means that Dovecot tries to find the
# mailboxes automatically. This won't work if the user doesn't have any mail
# yet, so you should explicitly tell Dovecot the full location.
#
# If you're using mbox, giving a path to the INBOX file (eg. /var/mail/%u)
# isn't enough. You'll also need to tell Dovecot where the other mailboxes are
# kept. This is called the "root mail directory", and it must be the first
# path given in the mail_location setting.
#
# There are a few special variables you can use, eg.:
#
#   %u - username
#   %n - user part in user@domain, same as %u if there's no domain
#   %d - domain part in user@domain, empty if there's no domain
#   %h - home directory
#
# See </usr/share/doc/dovecot-common/wiki/Variables.txt> for full list.
# Some examples:
#
#   mail_location = maildir:~/Maildir
#   mail_location = mbox:~/mail:INBOX=/var/mail/%u
#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
#mail_location =
mail_location = maildir:~/Maildir
#mail_location = mbox:/var/mail/:INDEX=/var/indexes/%d/%1n/%n
#mail_location = mbox:~/mail:INBOX=/var/mail/%u

Mise en route

/etc/init.d/Postfix start
/etc/init.d/dovecot start

Et voilà ! Vérifiez avec votre client de courriers préféré..... !

🙂

- Fin -

Print Friendly, PDF & Email

Posted in Debian, Important, Linux, Mandriva, Technique, Toutes. Tagged with , , , , , .

0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.

Time limit is exhausted. Please reload CAPTCHA.


/* */
Creative Commons License
Cette création par Laurent Besson est mise à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l'Identique 2.0 France.