Ceci est une ancienne révision du document !
Imapsync est un outil réalisé par Gilles LAMIRAL très pratique et efficace pour synchroniser des serveurs IMAP.
Les utilisations sont nombreuses :
Cette page décrit brièvement son installation et utilisation dans le cadre d'une migration courier-imap vers Google Apps.
Pour plus de détails sur l'installation d'un serveur de mail, voir Serveur de Mail.
Imapsync est inclus dans le repository Debian et peut être installé par simple ajout du paquet “imapsync”.
Pour bénéficier des dernières nouveautés (comme le support de Google Apps), il faut réaliser une installation manuelle.
Un fichier INSTALL inclus dans l'archive d'Imapsync décrit la procédure d'installation, voici un exemple d'installation sur une Debian testing/squeeze (08/2009) :
# tar -zxvf imapsync-1.286.tgz imapsync-1.286/ imapsync-1.286/bugs/ imapsync-1.286/bugs/BUG_219_windows imapsync-1.286/bugs/BUG_IMAPClient_3.xx imapsync-1.286/README imapsync-1.286/lsm.imapsync imapsync-1.286/freshmeat imapsync-1.286/tools/ imapsync-1.286/tools/wonko_ruby_imapsync imapsync-1.286/t/ imapsync-1.286/t/01_connect ...
# perl -v This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi Copyright 1987-2007, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.
~/imapsync-1.286# perl -c imapsync imapsync syntax OK ~/imapsync-1.286#
~/imapsync-1.286# make -n install perl -c imapsync pod2man imapsync > imapsync.1 install -D imapsync /usr/bin/imapsync install -D imapsync.1 /usr/share/man/man1/imapsync.1 chmod 755 /usr/bin/imapsync ~/imapsync-1.286#
~/imapsync-1.286# make install perl -c imapsync imapsync syntax OK pod2man imapsync > imapsync.1 install -D imapsync /usr/bin/imapsync install -D imapsync.1 /usr/share/man/man1/imapsync.1 chmod 755 /usr/bin/imapsync ~/imapsync-1.286#
Une fois installé, la commande imapsync est disponible :
~# imapsync -v 1.286 ~#
Préambule : Pour éviter toute perte de données, il faut faire des essais à blanc. Il est également utile de commencer sur une petite boite aux lettres car une migration peut prendre plusieurs heures.
Imapsync réalise la synchronisation d'un compte 1 vers une compte 2. Pour chaque compte il faut définir :
Voici un exemple simple de synchronisation (les mails ne sont pas supprimés de la source) :
imapsync -host1 192.168.10.1 --user1 matthieu --passfile1 pass1 --host2 imap.gmail.com --user2 test@bouthors.fr --password2 xxxxxx --dry
L'option ”—dry” fait en sorte de ne pas réaliser réellement la synchronisation, les actions sont seulement affichées.
Les fonctionnalités d'un serveur IMAP diffèrent d'un serveur à l'autre, il faut donc adapter les paramètres d'imapsync en fonction.
Pour Google Apps / Gmail, il faut ajouter :
Exemple de commande :
imapsync -host1 192.168.10.1 --user1 matthieu --passfile1 pass1 --host2 imap.gmail.com --user2 test@bouthors.fr --password2 xxxxxx --ssl2 --noauthmd5 --useheader 'Message-Id' --skipsize --syncinternaldates --dry
Remarque : ”—noauthmd5” permet de désactiver l'authentification chiffrée md5 qui pose problème avec mon serveur courier.
Google utiliser des dossiers spécifiques pour la Corbeille, les messages envoyés et les brouillons.
Lors de la synchronisation, il est possible de réécrire les noms de répertoire pour les faire correspondre à la cible grâce à l'option ”—regextrans2”.
Voici un exemple pour les Google Apps en français :
Exemple de commande :
imapsync -host1 192.168.10.1 --user1 matthieu --passfile1 pass1 --host2 imap.gmail.com --user2 test@bouthors.fr --password2 xxxxxx --ssl2 --noauthmd5 --useheader 'Message-Id' --skipsize --syncinternaldates --regextrans2 's/Trash/\[Gmail\]\/Corbeille/' --regextrans2 's/Sent/\[Gmail\]\/Messages envoy&AOk-s/' --regextrans2 's/Drafts/\[Gmail\]\/Brouillons/' --dry --justfolders
Remarque : l'option ”—justfolders” est très utile pour la définition des règles “regextrans” car elle permet de tester le traitement des dossiers sans s'occuper de leur contenu.
Une migration consiste à réaliser une migration avec suppression.
En IMAP il faut distinguer la suppression de la purge :
Il est possible de réaliser seulement la suppression ou les deux grâce à imapsync :
Exemple de commande :
imapsync -host1 192.168.10.1 --user1 matthieu --passfile1 pass1 --host2 imap.gmail.com --user2 test@bouthors.fr --password2 xxxxxx --ssl2 --noauthmd5 --useheader 'Message-Id' --skipsize --syncinternaldates --regextrans2 's/Trash/\[Gmail\]\/Corbeille/' --regextrans2 's/Sent/\[Gmail\]\/Messages envoy&AOk-s/' --regextrans2 's/Drafts/\[Gmail\]\/Brouillons/' --delete --expunge1 --dry
Lors de ma migration j'ai observé la détection de messages dupliqués. Pour la plupart cela provenait de message effectivement en double car envoyés à deux alias mails.
Il y avait cependant quelques mail marqués dupliqués car ils possédaient un “Message-ID” vide.
La meilleure méthode de migration consiste à supprimer les mails après déplacement et vérifier les mails restants sur le serveur d'origine après migration.