Skip to main content
didacticiel

Migration boîtes email Microsoft vers Zimbra ou IMAP

Introduction

Migrer d’un système d’hébergement d’email à un autre est devenu de plus en plus compliqué avec notamment l’arrivée de l’authentification à double facteur et l’arrivée (heureusement standardisée) de l’OAuth 2.0.

Dans cet article, nous vous guiderons pour réaliser la migration de vos boîtes de courriels par l’intermédiaire de l’utilitaire bien connu imapsync. tout en respectant les mécanismes imposés dorénavant par Microsoft pour une authentification sûr.

Promotion

Plutôt que de vous lancer dans un processus complexe et chronophage, laissez notre équipe chevronnée prendre en charge chaque étape de votre transition.

Allez sur notre boutique et sélectionnez le nombre de boîte courriels que vous avez à migrer, puis laissez-nous revenir vers vous pour nous en occuper.

Préparation à la connexion

Il est nécessaire ici de procéder à deux étapes :

  1. s’assurer qu’il est possible d’utiliser le protocole IMAP sur vos comptes,
  2. obtenir un jeton ayant le droit de les parcourir sur les serveurs outlook.

Autoriser le protocole IMAP

Ce protocole a été désactivé (avec d’autres comme le POP) car non compatible avec le protocole de connexion OAuth2 et par là même, il a été considéré comme étant une faille potentielle pour la protection des données.

Sur ce point précis de la sécurité, il faudrait détailler un peu le raisonnement afin d’abonder ou non dans leur sens (cela dépend de votre politique de mot de passe, de la sécurisation des appareils ayant accès à votre boîte courriel et ce genre de choses). Nous nous en tiendrons ici au fait que si vous ne faites que boîte email et pas trop d’autres choses avec vos données, il n’y a pas tellement de raisons de s’inquiété. Et, il est même préférable d’utiliser une solution remplissant les missions dont vous avez besoin et pas plus, plutôt que d’essayer de sécuriser plus une plus grosse usine à gaz.

Vérifier l’activation de l’IMAP

Pour cela, allez sur votre interface d’administration :

Page d'accueil d'administration MicrosoftSur le menu à gauche, allez sur la rubrique « Utilisateurs » puis « Utilisateurs actifs » (vous pouvez répéter l’opération sur les autres types d’utilisateurs) :

Page d'administration Microsoft des utilisateurs actifs

Cliquez sur le nom de l’utilisateur pour lequel vous allez changer les droits d’accès, une fenêtre modale va s’ouvrir par le côté droit. Cliquez alors sur le titre « Courrier », ce qui vous amène dans un ensemble de réglages relatifs aux courriels. Nous avons entouré en rouge ce qui nous intéresse ici (la partie « Logiciels de courrier » :

Page Microsoft Admin, zone de réglages pour le courrier des utilisateurs

Nous constatons ici que dans la liste, il est fait mention de « IMAP bloqué » ce qui aurait posé un problème plus tard.

Activons le protocole IMAP en cliquant sur « Gérer les applications de courrier », ce qui nous ouvre par-dessus la modale actuelle une nouvelle contenant la liste d’applications, cochées ou non. Cochez ici « IMAP » :

Page Microsoft admin - Modale des applications courrielPuis, cliquez sur « Enregistrer les modifications » en bas de la modale.

Autoriser cet utilisateur à accéder aux autres comptes

Si vous ne souhaitez pas demander à chacun de vos utilisateurs de réaliser la procédure qui suivra ce chapitre, donnez à l’utilisateur que vous venez de configurer le droit d’accéder aux courriels des autres. Ce droit restera temporaire, il doit uniquement permettre le transfert et le mot de passe de la nouvelle boîte email devra alors être changé pour assurer la confidentialité de la boîte email de votre utilisateur.

Pour cela, voici la procédure qui sera à répéter pour chaque utilisateur à transférer : revenez sur la page des Utilisateurs actifs et cliquez sur le nom de l’utilisateur concerné (1) ; puis allez comme la dernière fois sur le titre « Courrier » (2), éventuellement, débloquez « Logiciel de courrier » IMAP (3) et enfin, cliquez sur « Autorisations de lecture et de gestion » (4).

Page Microsoft Admin, Utilisateurs actifs, Utilisateur, CourrierDans la sous fenêtre « Autorisations de lecture et de gestion », cliquez sur « Ajouter des autorisations » :

Page Microsoft Admin, Autorisations de lecture et de gestionLa liste des utilisateurs disponible s’affiche alors, et sélectionnez celui que vous avez précédemment configuré (1), puis cliquez sur « Add » (2) :

Page Microsoft Admin, Utilisateurs actifs, Ajouter des autorisations des boîtes aux lettres utilisateurs

Enregistrer l’application imapsync

Cet enregistrement est un mécanisme déclarant simplement la manière et le type d’autorisation qui sera utilisé pour accéder au service IMAP de Microsoft.

Nous emploierons OAuth2 avec le flux implicite qui, comme il est relativement simple et peu sécurisé, devra avoir une durée de vie faible.

Connectez-vous à l’interface « Entra » et de là aller dans la section (menu latéral gauche) « Applications >  Inscriptions des applications » (1) puis appuyez sur « Nouvelle inscription » :

Page Entra Microsoft, Inscriptions des applicationsVous arrivez alors sur une page vous demandant quelques caractéristiques de base de votre applicaiton, la première (1) est le nom (ici, nous mettons « imapsync »), puis maintenez ou sélectionnez (2) l’usage de votre application à uniquement votre organisation (mais là, c’est comme vous le souhaitez). Enfin, choisissez : « Application à page unique (SPA) » (3) et entrez l’URL de rappel utilisée par aouth2c soit http://localhost:9876/callback :

Page Microsoft Entra, inscription nouvelle applicationValidez en cliquant sur « S’inscrire », ce qui vous dirige vers la page d’information de l’inscription de l’application.

Dans le menu latéral gauche 2 (celui placé à droite du menu tout à gauche), cliquez sur « Authentification » (1), puis cochez la case « Jetons d’accès (utilisés pour les flux implicites) » (2) et enregistrez cette modification (3).

Page Microsoft Entra, Inscription d'application, AuthentificationsAllez ensuite dans le menu latéral 2 sur « Certificats & secrets » (1), cliquez sur « Nouveau secrétaire client » (2), écrivez une petite description qui vous parle pour ce secret (3), éventuellement réduisez la date d’expiration du secret et enfin, cliquez sur « Ajouter » (4) :

Page Microsoft Entra, Inscriptions d'applications, Certificats & secretsAttention, la page des certificats et secrets vous affiche alors la valeur de votre secret (colonne valeur, et non ID de secret) et ça sera la seule fois. Copiez donc cette valeur dans le presse-papier, et enregistrez le dans une variable d’environnement que nous appellerons APP_SECRET :

Page Microsoft Entra, Inscriptions des applications, Certificats & secrets, copie application secretNous mettons des simples guillemets autour de la valeur pour sûr que l’interpréteur de commande du Terminal n’interprète pas le moindre caractère, simple précaution.

Profitons de cette fenêtre de terminal pour copier aussi l’identifiant de l’application que nous appellerons APP_ID. Pour cela, retournez dans la « Vue d’ensemble » (1) de votre inscription d’application (élément en haut du menu latéral gauche 2), puis cliquez sur l’icone pour copier dans le presse-papier (2), enregistrez la valeur copiée dans une variable d’environnement (3).

Page Microsoft Entra, Inscriptions d'applications, Vue d'ensemble, copie application ID / client IDAllons activer les API auxquels aura le droit d’accéder notre application. Dans le menu latéral 2 cliquez sur « API autorisées » (1), puis cliquez sur « Ajouter une autorisation » (2), sélectionner « Microsoft Graph », puis « Autorisations déléguées » (3) :

Page Microsoft Entra, Inscriptions d'applications, API Autorisées, Ajouter une autorisationSur l’image ci-dessus, notez le point (4) et cocher la case « offline_access ». Puis rechercher imap dans le champ de recherche (1), et cochez la case « IMAP.AccessAsUser.All » (2) et enfin, cliquez sur « Ajouter des autorisations » (3) :

Page Microsoft Entra, Inscriptions d'applications, API autorisée, ajout des droitsVous pouvez retirer l’accès « User.Read » qui ne sert pas (1), mais ce n’est pas obligatoire. Cliquez par la suite sur « Accorder un consentement d’administrateur pour Liant » (2) (confirmez à la demande de l’interface) :

Page Microsoft Entra, Inscriptions d'applications, API autorisées, accord de l'administrateur

Il ne vous reste plus qu’à noter le numéro d’annuaire correspondant à votre organisation. Vous le trouverez de nouveau dans la « Vue d’ensemble » (1), copier la valeur et copiez là dans une variable d’environnement que nous appellerons TENANT_ID :

Ainsi, vous allez être en mesure d’utiliser oauth2c pour obtenir un jeton vous permettant de vous connecter au service IMAP d’outlook avec imapsync.

Obtenir le jeton

Dans votre terminal, lancez la commande :

oauth2c https://login.microsoftonline.com/$TENANT_ID/v2.0 \
  --client-id "$APP_ID" --client-secret "$APP_SECRET" \
  --scopes 'https://outlook.office365.com/.default' \
  --login-hint 'roland@liant.dev' --grant-type implicit \
  --auth-method client_secret_basic --response-mode form_post \
  --response-types token --browser-timeout 1m

Augmentez l’option brower-timeout si vous avez besoin de plus de temps pour réaliser votre authentification. En effet, votre navigateur par défaut va s’ouvrir vers la page d’authentification de Microsoft, et va vous demander d’autoriser l’application « imapsync » d’accéder à vos ressources email.

 

Lancer oauth2c

 

Se connecter chez Microsoft

 

Rester ou non connecter après

 

Ouvrir le lien de callback

 

Retourner dans le terminal

 

Copier dans un fichier le jeton obtenu

1
1

Comme vous le voyez dans le dernier écran, copier l’access_token (jeton d’accès) dans une commande echo pour l’enregistrer dans un fichier que nous avons appelé tokenfile.

echo '<access_token>' > tokenfile

Vous avez maintenant votre jeton vous permettant de vous connecter en IMAP sur le serveur outlook.

Lancer la synchronisation avec imapsync

Maintenant que vous avez un fichier contenant le jeton, vous pouvez l’utiliser avec l’option –oauthaccesstoken et comme vous avez autorisé votre utilisateur « principal » (dans notre exemple roland@liant.dev) à accéder aux boites courriels d’autres utilisateurs, vous pouvez vous connecter avec ce jeton (donc comme roland@liant.dev) et accéder avec l’option –user1 à la boîte courriel de xxx@liant.dev. Voici la commande complète de synchronisation :

imapsync --addheader --automap \
  --office1 --oauthaccesstoken1 tokenfile --user1 <utilisateur>@liant.dev \
  --host2 mail.liant.email --user2 <utilisateur>@liant.dev --password2 <p2>

Pour en savoir plus sur les raisons de ces différentes options, nous vous invitons à lire la documentation. Toutefois, un minimum est nécessaire :

Suffixes 1

Les options suffixées avec 1, désignent la source IMAP. Le oauthaccesstoken est l’élément permettant à lui seul l’authentification auprès du serveur IMAP comme l’utilisateur ayant demandé le token (dans l’exemple, il s’agit de roland@liant.dev), le user1 indique donc la boite à laquelle nous nous connectons et non l’utilisateur qui se connecte.

Suffixes 2

Les options suffixées avec 2 désignent la destination IMAP. Ici host2 est notre serveur Zimbra mail.liant.email, à remplacer par votre hébergeur le cas échéant. L’option user2, désignera la boîte courriel et le login IMAP. L’option password2 désigne le mot de passe pour le serveur Zimbra.

Erreurs fréquentes

Renouvellement du jeton

Problème

Si après avoir synchronisé une ou plusieurs boîtes IMAP et que le processus a pris plusieurs heures et que cela dépasse la durée de vie de votre jeton (qui est de quelques heures justement), votre jeton sera expiré et l’hôte 1 refusera la connexion.

Solution

Refaite la procédure d’obtention du jeton.

Utilisateur authentifié, mais pas d’accès à la boîte

Problème

Si dans les logs d’imapsync, vous trouvez l’erreur suivante :

Read: 4 BAD User is authenticated but not connected.
ERROR: 4 BAD User is authenticated but not connected. at /opt/homebrew/Cellar/imapsync/2.264/libexec/lib/perl5/Mail/IMAPClient.pm line 1388.

Solution

Il est probable que vous ayez oublié d’authoriser l’accès à ce compte à votre compte administrateur. Ainsi, le jeton fonctionne (« User is authenticated ») mais l’accès à cette boîte courriel vous est refusé. Retournez à cette étape pour l’utilisateur en question.