services informatiques sur Grenoble

Messagerie

Publié le septembre 8th, 2017 | par Sébastien

0

IMAPSYNC : transfert de compte messagerie de 1&1 vers Gandi

No votes yet.
Please wait...

Avant propos et contexte

Lors du changement de son {hébergeur|fournisseur} de messagerie électronique (migration de serveur, changement de prestataire etc …), il est nécessaire pour les entreprises et certains utilisateurs de conserver ses messages et dossier de tri (dixit le cas voila).

Plusieurs solutions existent pour réaliser l’opération ET l’une d’entre elles se dégage particulièrement, c’est imapsync.

Cet outil va analyser et comparer deux comptes de messagerie distincts puis copier les données de l’un vers l’autre. Bref c’est une opération de transfert de compte IMAP, appelée également opération de migration de compte de messagerie. Ce compte peut être identique (migration) comme différent (sauvegarde), à chacun ses usages.

nota : l’intérêt principal de cette solution – outre les nombreuses fonctionnalités et sa fiabilité reconnue – est sa capacité :

  • de transfert incrémentale : pratique quand on veut reprendre un transfert arrêté, ou anticiper une migration (on transfert le plus gros, puis on “synchronise » au dernier moment avant changement redirection serveur MX)
  • de batch : on peut lancer lancer plusieurs migrations en même temps, à partir de script et liste compte utilisateurs.
  • est compatible avec toutes les plateformes (macOS, Windows, Unix),

nota : impasync ne convient pas à la synchronisation bidirectionnel permanente de comptes entre eux …

C’est très bien tout ça mais comment {ça fonctionne|c’est possible} une migration ?

Le fournisseur de service de messagerie d’origine héberge le serveur (matériel) de messagerie (appelé MX). L’adresse IP de ce serveur est déclarée dans le fichier de zone DNS du registrar du nom de domaine (NDD). Dans notre cas, c’est 1and1 qui est le registrar et hébergeur de la messagerie.

Le fichier de zone DNS permet de définir la correspondance entre les différents services liés à un NDD. Concrètement cela détermine qui gère quoi …

nota : Il peut y avoir un serveur qui gère le site internet situé à une adresse, et un serveur différent, situé à une autre adresse qui gère la messagerie.

Bref, lors d’une migration, on change de serveur de messagerie, donc le fichier de zone DNS devra être mis à jour au dernier moment pour déclarer le nouveau serveur de messagerie. Cette étape ne sera pas discutée ici. Continuons … une migration se réalise en plusieurs étapes (c’est une recommandation, chacun sa méthode) :

  • choix du nouveau prestataire,
  • création des nouveaux comptes et identifiants,
  • essai de synchronisation à vide, passage de paramètres, calcul du poids des messageries,
  • s’assurer que chaque nouveau compte dispose d’un espace de stockage suffisant pour accueillir les messages que l’on souhaite conserver,
  • synchronisation (migration des données) : cela permet de préparer le transfert (grande quantité de données) avant la migration finale,
  • vérification,
  • changement du serveur MX dans le fichier de zone DNS du NDD,
  • dernière synchronisation et migration finale, réalisée en général un WE ou pendant les congés,
  • vérification

Les paramètres et maillons de la chaine

Concrètement, il y a trois paramètres à considérer et vérifier de chaque côté …

Le serveur de messagerie du compte d’origine

ici ça sera celui de 1&1 : imap.1and1.fr

et éventuellement les ports et protocoles sécurisés associés (ça c’est si les réglages par défaut ne fonctionne pas).

Le compte de messagerie d’origine et son mot de passe

ID : user1@example.org et mot de passe : user1_pass

Le serveur de messagerie du compte d’arrivée

ici mail.gandi.fr

Le compte de messagerie d’arrivée (le nouveau compte) et mot de passe

ID : user2@example.end et mot de passe : user2_pass

Quelques précisions

1 – Notez que user1@example.org et user2@example.end peuvent être identiques, par exemple en cas de changement de prestataire (hébergeur du service de messagerie).

2 – user1 et user2 peuvent être identiques ET pas le NDD, par exemple en cas de changement de Nom de Domaine.

3 – vérifier, puis vérifier et re-vérifier encore les identifiants. La bonne méthode est le copier coller voire l’utilisation d’un fichier externe (cf options) même si cela pourrait ne pas suffire dans certains cas …

Maintenant que nous disposons des paramètres, procédons !

L’installation sur macOS

Ouvrir un fenêtre de Terminal puis lancer la commande :

/usr/bin/ruby -e « $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install) »

HomeBrew va être installé, tout est expliqué. Puis lancer la commande :

brew install imapsync

Utilisation de imapsync

Toutes les étapes ont été décrites précédemment donc nous rentrons dans le détail de la configuration et de l’utilisation d’imapsync.

Synchronisation à vide

Lancer la commande suivante :

imapsync –host1 imap.1and1.fr –user1 user1@example.org –password1 user1_pass –host2 mail.gandi.net –user2 user2@example.end –password2 user2_passjustloginshowpasswords

Résultat :

Transfer started at Fri Sep 8 22:11:07 2017
PID is 68467
Log file is LOG_imapsync/2017_09_08_22_11_07_user2@example.end.txt ( to change it, use –logfile path ; or use –nolog to turn off logging )
$RCSfile: imapsync,v $ $Revision: 1.727 $ $Date: 2016/08/19 10:30:36 $
Here is a [darwin] system (Darwin BIGAIR.lan 15.6.0 Darwin Kernel Version 15.6.0: Tue Apr 11 16:00:51 PDT 2017; root:xnu-3248.60.11.5.3~1/RELEASE_X86_64 x86_64)
with Perl 5.18.2 Mail::IMAPClient 3.38
Command line used:
/usr/local/Cellar/imapsync/1.727/libexec/bin/imapsync –host1 imap.1and1.fr –user1 user1@example.org –password1 user1_pass –host2 mail.gandi.net –user2 user2@example.end –password2 user2_pass –automap –showpasswords –justlogin
Temp directory is /var/folders/0r/h7cqkkws323fsp1bpgx9lxkm0000gn/T ( to change it use –tmpdir dirpath )
PID file is /var/folders/0r/h7cqkkws323fsp1bpgx9lxkm0000gn/T/imapsync.pid ( to change it use –pidfile filepath ; to avoid it use –pidfile «  » )
[…]
Info: turned ON syncinternaldates, will set the internal dates (arrival dates) on host2 same as host1.
Host1: will try to use LOGIN authentication on host1
Host2: will try to use LOGIN authentication on host2
Host1: imap connexion timeout is 120 seconds
Host2: imap connexion timeout is 120 seconds
Host1: IMAP server [imap.1and1.fr] port [143] user [user1@example.org]
Host2: IMAP server [mail.gandi.net] port [143] user [user2@example.end]
Host1: connecting and login on host1 [imap.1and1.fr] port [143] with user [user1@example.org]
Host1 banner: * OK [CAPABILITY IMAP4rev1 CHILDREN ENABLE ID IDLE LIST-EXTENDED LIST-STATUS LITERAL+ MOVE NAMESPACE QUOTA SASL-IR SORT SPECIAL-USE THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN STARTTLS AUTH=LOGIN AUTH=PLAIN] IMAP server ready H mieue015 3700075029 IMAP-0Lm2eC-1dHLlL0dST-00ZUFj
Host1: imap.1and1.fr says it has CAPABILITY for AUTHENTICATE LOGIN
Host1: success login on [imap.1and1.fr] with user [user1@example.org] auth [LOGIN]
Host2: connecting and login on host2 [mail.gandi.net] port [143] with user [user2@example.end]
Host2 banner: * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN] Dovecot ready.
Host2: mail.gandi.net says it has NO CAPABILITY for AUTHENTICATE LOGIN
Host2: success login on [mail.gandi.net] with user [user2@example.end] auth [LOGIN]
Host1: state Authenticated
Host2: state Authenticated
Host1 capability: IMAP4rev1 CHILDREN ENABLE ID IDLE LIST-EXTENDED LIST-STATUS LITERAL+ MOVE NAMESPACE QUOTA SASL-IR SORT SPECIAL-USE THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN STARTTLS APPENDLIMIT=140000000
Host2 capability: IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE QUOTA

Cette ligne de commande permet de vérifier si le passage de paramètre fonctionne i.e pas d’erreur de frappe, d’ID, de password, etc … bref de vérifier que tout est OK.

Au sujet de l’option –showpasswords : si je propose cela dans un premier temps c’est que ce passage de paramètre pourrait ne pas être interprété de la bonne manière … En effet un mot de passe peut contenir des caractères spéciaux et la ligne de commande pourrait être mal interprétée … par exemple la présence d’espace dans un mot de passe ou du caractère spécial $.

Bref, vérifier que le mot de passe utilisé dans la commande est bien celui passé en paramètre. Si ce n’est pas OK, il y aura des erreurs du type :

Host1 failure: Error login on [imap.1and1.fr] with user [user1@example.org] auth [LOGIN]: 2 NO authentication failed

En cas d’erreur, je vous invite à lire la FAQ sur le passage de paramètres sous Windows, à utiliser les double quote « _ » pour l’écriture du mot de passe, ainsi que les caractères d’échappement si nécessaire (celui ci dépend du système d’exploitation ou logiciel utilisé).

Exemple : Si le mot de passe user1_pass est toto$tata$titi, la commande serait :

imapsync –host1 imap.1and1.fr –user1 user1@example.org –password1 « toto\$tata\$titi » –host2 mail.gandi.net –user2 user2@example.end –password2 « user2_pass » –justlogin –showpasswords

nota : sous macOS avec le Terminal, c’est le symbole \ (anti slash) qui sert de caractère d’échappement.

Maintenant que l’authentification fonctionne, faire un essai à blanc …

imapsync –host1 imap.1and1.fr –user1 user1@example.org –password1 « user1_pass » –host2 mail.gandi.net –user2 user2@example.end –password2 « user2_pass » –dry —-justfoldersizes

Le résultat est le suivant :

Host2: found quota, presented in raw IMAP
Sending: 4 GETQUOTAROOT INBOX
Sent 22 bytes
Read: * QUOTAROOT INBOX user
* QUOTA user (STORAGE 1755300 4194304)
4 OK Getquotaroot completed (0.000 + 0.000 + 0.002 secs).

Host2: Quota current storage is 427200 bytes. Limit is 4294967296 bytes. So 0 % full
Host1: found 222 folders.
Host2: found 4 folders.

[…]

Host1 Nb folders: 222 folders
Host1 Nb messages: 10590 messages
Host1 Total size: 1907953826 bytes (1.777 GiB)
Host1 Biggest message: 59776770 bytes (57.008 MiB)
Host1 Time spent: 52.6 seconds

Bref, c’est OK. Le compte Gandi dispose de 4 Go et la taille des dossiers à transférer est de 1,7 Gio. La personne en charge des opérations devrait pertinemment le savoir mais bon … y’a la logique et la réalité 😉

nota : il est possible de filtrer les messages à transférer … par date, poids, mots clés etc …

Une fois que la synchronisation à vide est terminée, vérifier que tout est OK. Si tout est OK, il suffira de lancer la commande :

imapsync –host1 imap.1and1.fr –user1 user1@example.org –password1 « user1_pass » –host2 mail.gandi.net –user2 user2@example.end –password2 « user2_pass »

Une fois terminée (cela peut prendre pas mal de temps selon connexion internet et taille boite messagerie), vous pouvez ensuite programmer la migration définitive et résoudre les conflits éventuels. Pensez aussi qu’il est possible de reprendre une migration qui aurait été interrompue (fonction incrémentale de imapsync).

Merci qui ? Merci Gilles LAMIRAL pour imapsync !!!

Le cas particulier de 1&1

Lors de la migration d’un nom de domaine de 1and1 vers un autre prestataire comme Gandi. Le fournisseur 1&1 – n’étant plus le gestionnaire de messagerie – va supprimer tous les comptes disponibles depuis l’interface client et changer leur dénomination (les comptes sont « sauvegardés » et renommé, bien évidemment sans aucun avertissement …).

Un compte de messagerie déclaré : p.nom@societe.fr sera renommé en : p.nom_societe.fr_0@mailboxbackup.info

Ce sera donc l’identifiant du compte à utiliser dans imapsync 😉

nota : le mot de passe lui ne change pas 😉

No votes yet.
Please wait...


À propos de l'auteur

est professionnel de l'informatique et de la communication internet. Son métier lui donne souvent l'occasion de découvrir du matériel hightech, de développer et approfondir ses compétences dans des domaines complémentaires et variées (référencement, création de site, communication, marketing, formation etc …). Les articles et sujets abordés ici sont le fruit d'expériences de terrain et tentent d'apporter des solutions (ou des éclairages) à des problématiques bien réelles.



Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour vers le haut de la page ↑