Il y a des moments où des choix nous sont imposés, et dans mon cas il s’agit de migrer des boites mails d’un serveur Cyrus vers un serveur Microsoft Exchange… La méthode la plus simple pour migrer des centaines de boites mails est de passer par Imapsync. Mais il faut encore choisir les bonnes options…
Cela tien en 3 petites étapes détaillées dans cet article :
- Préparer le serveur Cyrus
- Préparer le serveur Exchange de destination
- Installer IMAPsync et le script de migration
Préparer le serveur Cyrus
Dans mon cas c’est un Debian vieillissant en Lenny avec Cyrus 2.2.
Il faut d’abord créer un utilisateur admin dans Cyrus, ou utiliser l’utilisateur admin de base nommé ‘cyrus’.
Ensuite on autorise cet utilisateur à lire toutes les boites mails de cette façon :
# cyradm --user cyrus localhost sam user.* cyrus lrswipcda sam user.*.* cyrus lrswipcda
Pour vérifier, il suffit d’aller lire les droits d’une mailbox au hasard :
localhost> lam user. testuser* user. testuser: testuser lrswipcda user. testuser.drafts: testuser lrswipcda cyrus lrswipcda user. testuser.sent: testuser lrswipcda cyrus lrswipcda user. testuser.trash: testuser lrswipcda cyrus lrswipcda
Autoriser les connexions IMAPS dans Cyrus si ce n’est déjà fait (dans mon cas c’était un webmail exclusivement donc pas d’IMAP actif)
Editer le fichier /etc/cyrus.conf et remplacer l’adresse IP d’écoute :
imaps cmd="imapd -s -U 30" listen="10.xxx.xxx.xxx:imaps" prefork=0 maxchild=100
Dans le fichier /etc/imapd.conf rajouter les lignes suivantes :
tls_cert_file: /var/imap/server.pem tls_key_file: /var/imap/server.pem
Il vous faut avoir généré une clé et un certificat SSL autosigné au préalable.
Préparer le serveur Exchange de destination
Sous Windows Server 2008R2, il vous faut créer un utilisateur qui est administrateur pour l’OU utilisée pour les comptes Exchange à migrer. C’est cette utilisateur qui sera utilisé par le script d’IMAPsync.
Activer IMAPs si ce n’est déjà fait.
Installer IMAPsync et le script de migration
Imapsync peut être installé sur n’importe quelle machine linux, étant donné que c’est un client qui se connecte aux 2 serveurs IMAP. Il est même préférable de ne pas le mettre sur le serveur Cyrus, mais sur un autre serveur ou pc linux afin de répartir la charge. Celle-ci est assez élevée pour le serveur Cyrus durant les transferts.
Imapsync ne se trouve pas sur les dépôts de Debian Wheezy, il faut donc l’installer manuellement. Voici la liste des dépendances et les commandes :
apt-get install libdate-manip-perl libterm-readkey-perl libterm-readkey-perl libdigest-hmac-perl libdigest-hmac-perl libdate-manip-perl libmail-imapclient-perl makepasswd rcs perl-doc git cd /tmp git clone git://github.com/imapsync/imapsync.git cd imapsync/ sh examples/install_modules_linux.sh make install
Et voici le script qui permettra de migrer les boites mails via un simple fichier texte en entrée avec les identifiants des utilisateurs :
- Les identifiants doivent être les mêmes des 2 côtés dans ce script imapsync_cyrus_exchange.sh
- Les comptes à migrer se trouvent dans le fichier compte-to-migrate.txt
- le mot de passe de l’administrateur cyrus se trouve dans un fichier cyrusadmin.pass
- le mot de passe de l’administrateur exchange se trouve dans un fichier passwd_ad.pass
#!/bin/bash # imapsyncrun.sh. Script to migrate imap Cyrus to Exchange DATE=`date +%m%d%y_%H:%M` LOGFILE="imapsync_migration.log" echo "IMAPSync starting.. $DATE" >> $LOGFILE # Begin 'for' loop, calling the list of user names already collected for ACCTNAME in `cat compte-to-migrate.txt` do /usr/bin/imapsync --buffersize 8192000 --nosyncacls --subscribed --syncinternaldates --ssl1 --host1 IP_CYRUS \ --user1 $ACCTNAME --authuser1 cyrus --passfile1 cyrusadmin.pass --host2 IP_EXCHANGE --user2 $ACCTNAME@DOMAINE --authuser2 ADMIN_WINDOWS --passfile2 passwd_ad.pass --tls2 --noauthmd5 --include 'INBOX' --regextrans2 's/drafts/Brouillons/' --regextrans2 's/sent/&AMk-l&AOk-ments envoy&AOk-s/' --regextrans2 's/trash/&AMk-l&AOk-ments supprim&AOk-s/' --regextrans2 's/INBOX/INBOX/' echo Done with $ACCTNAME on $DATE >> $LOGFILE done echo "" >> $LOGFILE echo "IMAPSync Finished.. $DATE" >> $LOGFILE echo "------------------------------------" >> $LOGFILE
Remarques
On peut voir des options du style :
--regextrans2 's/drafts/Brouillons/'
Il faut savoir que sous Cyrus, peut importe la langue de l’utilisateur, le dossier IMAP porte un nom en anglais. Alors que sous Exchange, le nom du dossier est en fonction de la langue de l’utilisateur. Si vous travaillez dans un environnement multi-langues vous aller donc créer de nouveaux dossiers dans l’Exchange lors de la synchro et les utilisateurs d’une autre langue devront déplacer leurs emails ou renommer le dossier.
Si vous voulez éviter au maximum les frustrations des utilisateurs à renommer le dossier dans leur langue natale, vous pouvez toujours faire une liste des utilisateurs par langue en vous basant sur le LDAP. Ensuite, vous modifierez le script et l’exécuterez autant de fois que vous aurez de langues différentes dans l’entreprise.
Laisser un commentaire