On vous donne un petit secret sur notre synchronisation par imap
La migration de mails tout un sport
Quand on parle de migration nom de domaine et mail, généralement ça peut faire peur si on ne connait pas. Prenons par exemple, une société qui arrive chez DonF, généralement vous êtes chez un autre prestataire d’hébergement que chez nous. C’est pas un mal :-). D’un coté vous avez votre domaine avec votre site et d’un autre vos mails qu’il faut transférer.
DonF, s’occupe de tout, même le transfert de vos boites mails ! Mais, il peut arriver que la boite mail ne soit pas unique et/ou que vous avez un hébergement différent que votre serveur Web soit par Google par exemple. Bien entendu, le cas de figure est propre à chacun.
Nous allons vous expliquer les dessous de nos transferts mails dans ce post.

C’est compliqué ?
Je vais vous répondre ça dépendra du point de vue. Chez DonF, nous utilisons imapsync à partir des sources… On va vous expliquer de A à Z comment ça marche.
Déjà, nous partons du principe que vous êtes sur une distribution Linux. Pour notre part, tout notre parc tourne sous Ubuntu, toutefois nous avons des VM pour les autres OS, oui, il faut bien tester vos sites sur les principaux OS !
Nous allons donc vous montrer comment l’installer imapsync facilement sur Ubuntu de deux manières différentes
Installation dans votre OS
Commençons par l’installation des paquets imapsync :
sudo apt-get install libauthen-ntlm-perl libclass-load-perl libcrypt-ssleay-perl libdata-uniqid-perl libdigest-hmac-perl libdist-checkconflicts-perl libencode-imaputf7-perl libfile-copy-recursive-perl libfile-tail-perl libio-compress-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl libmail-imapclient-perl libmodule-scandeps-perl libnet-dbus-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-mockobject-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 time cpanminus
On met à jour le module Perl
sudo cpanm Mail::IMAPClient
Puis, rendez vous dans un terminal, je vous recommande de faire ceci dans un dossier, exemple ici avec GIT, mais ce n’est pas une obligation.
mkdir GIT
cd GIT
On télécharge le tarball
wget https://github.com/imapsync/imapsync/archive/refs/heads/master.zip
Qu’on décompresse bien sûr
unzip master.zip
cd imapsync-master
Ici, il n’y a pas besoin de la compiler, c’est déjà fait par le dev, c’est cool. Sinon, vous pouvez le faire facilement avec make ça pendra 2s sur une machine moderne. Vous pouvez également l’installer sur votre machine en faisant
sudo make install
Installation avec docker
Je pars du principe que docker est installé dans votre machine et prêt à l’emploi, l’installation se fera donc en exécutant ceci
docker pull gilleslamiral/imapsync
L’utilisation de docker se fera avec cette commande
docker run gilleslamiral/imapsync imapsync <usual imapsync arguments>
Comme vous pouvez le voir dans l’exécution, on nous parle d’ajouter des fonctions c’est ce que nous allons voir juste après.
Vous êtes allergique au ligne de commande ?
Je vous recommande de regarder ici : imapsync.lamiral.info si vous êtes allergique aux commandes, vous pouvez passer par le site du développeur d’imapsync lui même et oui, cocorico, le super développement de ce soft d’imap est réalisé par un Français ! Pour une utilisation du soft c’est par ici.
Utilisation d’imapsync
Installation en place par Docker ou une installation native vous êtes prêt a commencer les transferts. Mais avant de commencer ! Sachez que par exemple chez Gmail (Google Workspace), il y a des restrictions de transfert soit un quota journalier environ 2 Go (2,5 Go précisément) mais il faut laisser de la marge sinon vous serez condamné à l’utilisation du Webmail si vous utilisez par un client comme Thunderbird. Pour ma part, je me bloque entre 1,5 Go et 2 Go par jour dans ce cas.
L’importation des mails a partir de Gmail, c’est encore pire :-), ici c’est 500 Mo donc, inutile de vous dire que ça peut être très long. Toutefois chez Google, vous avec des outils d’importation.
Une fois cet avertissement compris :-) et que vous avez tout checker, vous pouvez commencer un transfert de Gmail vers une autre boite, comme un boite d’hébergeur. Il faut comprendre la notion de host1 comme le départ et host 2 comme l’arrivée. Dans cet exemple ci dessous, j’ai également ajouté des limitations pour éviter le blocage de Gmail !
imapsync --host1 imap.gmail.com -user1 6BORG@TEST.fr --password1 "MOTDEPASSE1" --gmail1 --host2 mail.TEST.fr --user2 6BORG@EXEMPLE.fr --password2 "MOTDEPASSE2" --maxsleep 0 --maxbytespersecond 50_000 --exclude "Corbeille|Spam"
N’oubliez pas de stopper la commande quand vous voyez passer environs 1,5 Go, puis recommencer la même commande le lendemain.
Second exemple pour faire de l’archivage de 5 ans de mails.
imapsync --host1 imap.gmail.com -user1 TEST@gmail.com --password1 MOTDEPASSE --gmail1 --host2 mail.6borg.dev --user2 archives@TEST.dev --password2 "MOTDEPASSE" --minage 1825 --exclude "Corbeille|Spam|Tous les chats" --delete1 --noexpungeaftereach --expunge1 --maxsleep 0 --maxbytespersecond 50_000
Oui, il y a des exclusions de dossier pour éviter un transfert inutile comme la corbeille ! Bien sûr, n’hésitez pas à explorer les commandes pour mettre des limitations etc…
Conclusion
Voila, vous savez maintenant, un petit secret de transfert de mails. Le petit plus pour automatiser la tâche est de la mettre en place dans un script bash puis dans un crontab ! Ça devient super utile pour de l’archivage de + de 5 ans dans une boite avec plus de capacité, si toutefois vous êtes limité.
Quand nous procédons à une importation en masse, nous mettons ceci dans un script loop que nous laissons tourner. Et nous pouvons synchroniser toute votre Team.
Bien entendu si vous souhaitez des renseignements vous pouvez nous contacter.





