Imapsync permet de synchroniser les mails d’un compte imap à l’autre. Il fonctionne de manière incrémentale et ne crée pas de doublons. On peut donc le lancer plusieurs fois. On peut soit :

  • l’installer via git :
git clone https://github.com/imapsync/imapsync.git
apt-get install libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl libio-socket-ssl-perl libfile-spec-perl libdigest-hmac-perl
make
make install
tar xvzf imapsync_1.518+awh-1_amd64.deb.tar.gz
dpkg -i imapsync_1.518+awh-1_amd64.deb
apt-get -f install

Le fonctionnement est le suivant :

imapsync --host1 IP_IMAP_SOURCE --user1 "USER_SOURCE" --password1 "PASSWORD_SOURCE" --host2 IP_IMAP_DESTINATION --user2 "USER_DESTINATION" --password2 "PASSWORD_DESTINATION"

Si on veut automatiser, pour migrer plusieurs utilisateurs d’un coup, il faut d’abord créer un fichier, par exemple imapsync_users.txt :

user_01_1;password_01_1;user_01_2;password_01_2
user_02_1;password_02_1;user_02_2;password_02_2
[...]

Puis utiliser le script ci-dessous, en modifiant l’IP source et destination :

#!/bin/bash
{ while IFS=';' read  u1 p1 u2 p2
    do 
         { echo "$u1" | egrep "^#" ; } > /dev/null && continue
         NOW=`date +%Y_%m_%d_%H_%M_%S` 
         echo syncing to user "$u2"
         imapsync --host1 IP_IMAP_SOURCE --user1 "$u1" --password1 "$p1" \
                  --host2 IP_IMAP_DESTINATION --user2 "$u2" --password2 "$p2" \
                  > /tmp/imapsync_log_${u2}_$NOW.txt 2>&1
    done 
} < imapsync_users.txt