Migrer ses emails facilement avec imapsync
Si la migration de sites web ne pose généralement pas de problème, il est parfois plus délicat de migrer des emails, notamment lorsque deux serveurs n'utilisent pas le même software ou lorsqu'il s'agit d'une migration depuis/vers un hébergeur tiers. Heureusement pour simplifier cette étape, il existe de nombreux outils, dont imapsync qui est celui dont nous allons parler aujourd'hui.
imapsync est comme son nom l'indique un outil (développé en perl) qui permet de synchroniser des boîtes mail en utilisant le protocol imap. Cela ne fonctionnera bien sûr que si vous utilisez également l'IMAP pour récupérer vos emails, ou si vous n'effacez pas vos emails du serveur avec le protocol POP.
Nous allons voir dans ce tutoriel comment installer Imapsync (sur Ubuntu 16.04 LTS), puis comment synchroniser deux boîtes mails ainsi que les options proposées par cet outil.
Installer imapsync
Tout d'abord, il faut installer les pré-requis nécessaires à l'éxecution d'imapsync :
sudo apt-get install \
libauthen-ntlm-perl \
libclass-load-perl \
libcrypt-ssleay-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 \
libregexp-common-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 \
liburi-perl \
libtest-nowarnings-perl \
libtest-deep-perl \
libtest-warn-perl \
make \
cpanminus
Il peut être nécessaire de mettre à jour le client IMAP et JSON avec cpanm :
sudo cpanm Mail::IMAPClient
sudo cpanm JSON::WebToken
On peut ensuite télécharger imapsync :
sudo wget https://imapsync.lamiral.info/dist/imapsync -O /usr/bin/imapsync
Et il ne reste plus qu'à le rendre éxecutable :
sudo chmod +x /usr/bin/imapsync
Vous pouvez ensuite obtenir la liste des variables disponibles en utilisant la commande imapsync
Synchroniser une boîte mail
Pour lancer la synchronisation d'une boite mail avec imapsync avec uniquement les options requises ressemble à :
imapsync \
--host1 serveur1.imap.tld \
--user1 boite@email.tld \
--password1 motdepasse1 \
--host2 serveur2.imap.tld \
--user2 boite@email.tld \
--password2 motdepasse2
Les options
Les mots de passes
Pour éviter d'avoir à entrer les mots de passe des boîte email en clair, vous pouvez les stockers dans des fichiers et utiliser l'argument --passfile1
et --passfile2
pour les charger automatiquement depuis les fichiers contenant les mots de passe.
Ce qui donne :
imapsync \
--host1 serveur1.imap.tld \
--user1 boite@email.tld \
--passfile2 /home/user/pass1 \
--host2 serveur2.imap.tld \
--user2 boite@email.tld \
--passfile2 /home/user/pass2
La connexion au serveur imap
Plusieurs options sont disponibles pour connecter imapsync à votre serveur mail, notamment le type de connexion utilisée. Par défaut imapsync essaira d'utiliser SSL ou TLS sur le port 993 pour se connecter. Voici des exemples pour la connexion sur le serveur à migrer (remplacer 1 par 2 pour le deuxième serveur) :
--nossl1
pour une connexion non chiffrée via le port 143 (non recommandé)--ssl1
pour une connexion avec SSL via le port 993--tls1
pour une connexion avec TLS via le port 143
Il y a également des options pour définir le type d'authentification que l'on peut définir via les arguments --authmech1
et --authmech2
dont les valeurs possibles sont (en majusule) :
- PLAIN
- LOGIN
- CRAM-MD5
Les dossiers
La synchronisation des dossiers peut être une source de problèmes, notamment si les dossiers par défaut (Inbox, Spam, Archive, Envoyés) ne sont pas nommés de la même façon sur les deux serveurs mails.
Pour cela imapsync offre plusieurs options :
--automap
pour utiliser la reconnaissance automatique des dossiers par défaut--nomixfolders
pour éviter de fusionner des dossier ayant un nom similaire selon la sensibilité à la casse--prefix1
pour retirer un prefix des dossiers à migrer--prefix2
pour ajouter un prefix aux dossiers migrés--skipemptyfolders
pour ne pas recréer les dossiers vides sur le serveur de destination
Les options de migration
Pour accélerer la migration des emails, vous pouvez utiliser l'argument --usecache
afin de stocker temporairement les UIDs des messages et accélérer les synchronisations suivantes (n'accélère pas la première migration).
Vous pouvez également supprimer les messages du premier serveur avec l'argument --delete1
.
Enfin, avant de lancer votre migration, n'hésitez pas à utiliser l'argument --dry
pour voir ce que ferai imapsync, sans l'appliquer.