Réseau - Web - GNU/Linux

2020 05 juin

Installation d'imapsync sur Debian ou Ubuntu

Rédigé par Marc GUILLAUME | 2 commentaires

Cette 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 1

Il 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::NOMMODULE

Il 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:

2 commentaires

#1  - Christophe a dit :

Salut !
Merci pour cette doc...
Juste un détail : c'est du Perl !Pas du python. :-D

"les modules Python nécessaires en utilisant CPAN "

Répondre
#2  - Marc GUILLAUME a dit :

Oups, merci de la remarque, c'est corrigé, un peu tard certes, mais mieux vaut tard que jamais...

Répondre

Écrire un commentaire

Quelle est la troisième lettre du mot vihu ?

Fil RSS des commentaires de cet article

À propos

Yakati.com - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.027s  Compression GZIP activée - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.com
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml