{{tag>fr fr:linux fr:client fr:mail}} ====== Imapsync ====== Imapsync est un outil réalisé par Gilles LAMIRAL très pratique et efficace pour synchroniser des serveurs IMAP. Les utilisations sont nombreuses : * migration d'un serveur IMAP * backup IMAP * consolidation de plusieurs comptes IMAP sur un seul compte 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_mail]]. ===== Installation ===== 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) : * télécharger la dernière version sur le site officiel http://www.linux-france.org/prj/imapsync/dist/ * décompresser l'archive : # 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 ... * Installer perl si besoin, pour vérifier qu'il est bien installé : # 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. * Ajouter les paquets Debian : * libmail-imapclient-perl * libterm-readkey-perl * libdate-manip-perl * libdigest-md5-perl * Vérifier que imapsync est prêt à être installé par la commande "perl -c imapsync" ~/imapsync-1.286# perl -c imapsync imapsync syntax OK ~/imapsync-1.286# * Visualiser ce qui va être installé avec "make -n install" ~/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# * Installer imapsync avec "make install" ~/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 ~# ===== Utilisation ===== **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. ==== Utilisation simple ==== Imapsync réalise la synchronisation d'un compte 1 vers une compte 2. Pour chaque compte il faut définir : * le serveur avec l'option "---host" * le nom d'utilisateur avec l'option "---user" * le mot de passe soit sur la ligne de commande avec "---password", soit à partir d'un fichier avec "---passfile" 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. ==== Exemple Google Apps / Gmail ==== 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 : * "---ssl2" : activation du IMAPS côté google * "---useheader 'Message-Id' ---skipsize" : par défaut imapsync compare les mails par leur taille et leur header pour les identifier. Comme google modifie l'en-tête des messages, il faut ajouter ces options pour utiliser le header "Message-Id" comme identifiant * "---syncinternaldates" : pour s'assurer de la synchronisation des dates et heures 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. ==== Utiliser les dossiers Google Apps ==== 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 : * Trash => [Gmail]/Corbeille : "---regextrans2 's/Trash/\[Gmail\]\/Corbeille/'" * Sent => [Gmail]/Messages envoyés : "---regextrans2 's/Sent/\[Gmail\]\/Messages envoy&AOk-s/'" * Drafts => [Gmail]/Brouillons : "---regextrans2 's/Drafts/\[Gmail\]\/Brouillons/'" 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. ===== Migrer les mails ===== Une migration consiste à réaliser une synchronisation avec suppression.\\ En IMAP il faut distinguer la suppression de la purge : * la suppression ne fait que marquer un message comme supprimé * la purge supprime définitivement les messages Il est possible de réaliser seulement la suppression ou les deux grâce à imapsync : * la suppression sur le serveur source est réalisée avec "---delete" * la purge des messages marqués "supprimé" sur le serveur source est réalisée avec la commande "---expunge1" 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 ===== Retour d'expérience ===== 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 mails 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 (avec ---delete) et vérifier manuellement que les mails restants sur le serveur d'origine peuvent être supprimés. ===== Links ===== * http://www.linux-france.org/prj/imapsync/ * [[serveur_mail]]