Installation d'imapsync sur Debian ou Ubuntu
Rédigé par Marc GUILLAUME | 2 commentairesCette page est une adaptation de https://tecadmin.net/use-imapsync-on-ubuntu/
Imapsync est un outil de transfert IMAP utilisé pour copier des courriers électroniques d'un serveur IMAP à un autre serveur IMAP. Cet article vous aidera à installer imapsync sur les systèmes Ubuntu, Debian et LinuxMint et à transférer toutes vos boîtes aux lettres et vos courriels entre deux serveurs IMAP. La page d'imapsync est indiquée en fin de ce document.
Si vous désirez pouvoir installer votre propre serveur de mail sur debian, voyez le lien ci-dessous qui est une traduction du site de Chritoph Haas, workaround.org.
Étape 1 – Installation des prérequis
Commençons par l'installation des paquets nécessaires pour imapsync. Voici une longue liste de bibliothèques Perl et d'autres paquets à installer sur votre système en utilisateur root ou avec sudo :
apt-get install git rcs make makepasswd cpanminus apt-get install libauthen-ntlm-perl \ libclass-load-perl libcrypt-ssleay-perl liburi-perl \ libdata-uniqid-perl libdigest-hmac-perl libdist-checkconflicts-perl \ libfile-copy-recursive-perl libio-compress-perl libio-socket-inet6-perl \ libio-socket-ssl-perl libio-tee-perl libmail-imapclient-perl \ libmodule-scandeps-perl libnet-ssleay-perl libpar-packer-perl \ libreadonly-perl libsys-meminfo-perl libterm-readkey-perl \ libtest-fatal-perl libtest-mock-guard-perl libtest-pod-perl \ libtest-requires-perl libtest-simple-perl libunicode-string-perl
Installez également en user root ou avec sudo les modules Perl nécessaires en utilisant CPAN :
cpanm Mail::IMAPClient JSON::WebToken Test::MockObject cpanm Unicode::String Data::Uniqid cpanm Encode::IMAPUTF7 File::Tail Regexp::Common Test::Deep
ÉTAPE 2 – Installation d'imapsync
Après avoir terminé l'installation des paquets requis. Téléchargez le dernier code d'imapsync depuis le dépôt officiel de git sur votre système local :
git clone https://github.com/imapsync/imapsync.git
Rendez-vous dans le dépôt nouvellement cloné et installez-l'application sur votre système avec les commandes suivantes :
cd imapsync sudo make install
En principe l'archive contient un répertoire dist
qui est un lien symbolique vers un répertoire dist2
. Si le répertoire n'existait pas crééz-le :
mkdir -p dist
Il est possible que quelques modues perl soient manquants et que vous voyez s'afficher quelque chose comme :
Ok: Found cpanm cpanm (App::cpanminus) version 1.7043 (/usr/bin/cpanm) Makefile:99: recipe for target 'testp' failed make: *** [testp] Error 1Il faut dans ce cas remonter dans les lignes qui se sont affichées pour trouver la liste des modules manquants indiquées par des lignes de type :
Failure: Not found Perl module Type::NOMMODULEIl faudra alors ajouter tous ces modules :
cpanm Type::NOMMODULE
À ce stade, votre système est prêt à migrer toutes les données d'un compte de courrier électronique à un autre en utilisant IMAP.
Étape 3 – Transférer des mails via IMAP
Vous êtes donc prêt à migrer. Avant la migration, assurez-vous que les deux comptes sont équipés d'IMAP et qu'ils sont accessibles depuis votre système. Après cela, utilisez la syntaxe de commande suivante :
imapsync --host1 imap.source.example.com \ --user1 user@example.com \ --password1 S0urcePassw0rd \ --ssl1 \ --host2 imap.dest.example.com \ --user2 user@example.com \ --password2 Dest1nat10NPassw0rd \ --ssl2
La commande prendra d'autant plus de temps à s'exécuter que la taille de votre boîte aux lettres source sera importante. Après avoir terminé tout le processus, vous verrez une longue liste de résultats qui par défaut sont enregistrés dans un dossier de log. Vérifiez la sortie pour voir si une erreur s'est produite pendant le transfert. Vous trouverez ci-dessous un exemple de sortie de ce processus.
Transfer started at Thu May 11 11:45:37 2017 PID is 4969 ... ... ... Total bytes transferred : 78373 (76.536 KiB) Total bytes duplicate host1 : 0 (0.000 KiB) Total bytes duplicate host2 : 0 (0.000 KiB) Total bytes skipped : 0 (0.000 KiB) Total bytes error : 0 (0.000 KiB) Message rate : 0.1 messages/s Average bandwidth rate : 3.0 KiB/s Memory consumption : 217.0 MiB Biggest message : 57947 bytes (56.589 KiB) Memory/biggest message ratio : 3927.0 Start difference host2 - host1 : -2 messages, -78373 bytes (-76.536 KiB) Final difference host2 - host1 : 0 messages, 0 bytes (0.000 KiB) Detected 0 errors
L'installation d'imapsync contient beaucoup de documentation et des scripts d'exemple si vous avez par exemple de nombreuses boîtes à migrer en utilisant un fichier csv ayant cette structure :
IPserveursource;user;password;IPserveurcible;user;password;
Dans le répertoire example on trouve par exemple ce script pour les machines unix/linux qui utilise un tel fichier csv :
#!/bin/sh # # $Id: sync_loop_unix.sh,v 1.8 2018/02/12 21:53:40 gilles Exp gilles $ # Example for imapsync massive migration on Unix systems. # See also http://imapsync.lamiral.info/FAQ.d/FAQ.Massive.txt # # Data is supposed to be in file.txt in the following format: # host001_1;user001_1;password001_1;host001_2;user001_2;password001_2; # ... # Separator is character semi-colon ";" it can be changed by any character changing IFS=';' # in the while loop below. # # Each line contains 6 columns, columns are parameter values for # --host1 --user1 --password1 --host2 --user2 --password2 # and a trailing empty fake column to avoid CR LF part going # in the 6th parameter password2. Don't forget the last semicolon. # # You can add extra options after the variable "$@" # Use character backslash \ at the end of each supplementary line, except for the last one. # You can also pass extra options via the parameters of this script since # they will be in "$@" # The credentials filename "file.txt" used for the loop can be renamed # by changing "file.txt" below. echo Looping on account credentials found in file.txt echo { while IFS=';' read h1 u1 p1 h2 u2 p2 fake do { echo "$h1" | tr -d '\r' | egrep '^#|^ *$' ; } > /dev/null && continue # this skip commented lines in file.txt echo "==== Starting imapsync from host1 $h1 user1 $u1 to host2 $h2 user2 $u2 ====" imapsync --host1 "$h1" --user1 "$u1" --password1 "$p1" \ --host2 "$h2" --user2 "$u2" --password2 "$p2" \ "$@" echo "==== Ended imapsync from host1 $h1 user1 $u1 to host2 $h2 user2 $u2 ====" echo done } < file.txt
(ne pas oublier le dernier ;
comme indiqué dans la documentation).
Reference: