MIGRATION SERVEUR ZIMBRA OSE 6.0.8 VERS UN SERVEUR ZIMBRA OSE 6.0.8

Après l’installation d’un nouveau serveur Zimbra, je devais donc migrer les données (Calendriers, Contacts, Mails) qui étaient présentes sur l’ancien vers le nouveau serveur ZIMBRA. Après quelques recherche sur le wiki et sur le net voici comment j’ai procédé. L’installation d’Imapsync et de curl est nécessaire, tout s’est déroulé sur Debian 5 Lenny 32 bits.

Sources :

1 – Installation des pré-requis.

Il faut installer le package imapsync et curl.

aptitude install imapsync curl

2 – Création du Script

Créer un dossier dans lequel on va stocker le script et le fichier contenant les noms d’utilisateurs et leur mot de passe.

mkdir /home/votreutilisateur/Scripts

cd /home/votreutilisateur/Scripts

2-1 ImapSync, Seulement pour les e-mails.

Créer un fichier lenom.sh. Dans mon cas, le fichier se nomme imapsync.sh

nano imapsync.sh

Saisir le code ci-dessous et enregistrer le fichier.

#!/bin/bash

logfile= »sinklog.txt »

host1=IP DE VOTRE SERVEUR SOURCE

#host1 is Source

host2=IP DE VOTRE SERVEUR DE DESTINATION

#host2 is Dest

domain=VOTRE NOM DE DOMAINE.DOM

#domain is where email account is

#everything after @ symbol

###### Do not modify past here

#######################################

date=`date +%X_-_%x`

echo «  » >> $logfile

echo « ———————————— » >> $logfile

echo « IMAPSync started.. $date » >> $logfile

echo «  » >> $logfile

{ while IFS=’;’ read u1 p1 u2; do

user=$u1″@ »$domain

echo « Syncing User $user »

date=`date +%X_-_%x`

echo « Start Syncing User $u1 »

echo « Starting $u1 $date » >> $logfile

imapsync -host1 $host1 –user1 « $u1 » –password1 « $p1 » –host2 $host2 –user2 « $u2 » –password2 « $p1 » –noauthmd5

#imapsync –nosyncacls –syncinternaldates –host1 $host1 –user1 « $user » –password1 « $p1 »–host2 $host2 –user2 « $user » –password2 « $p1 »

date=`date +%X_-_%x`

echo « User $user done »

echo « Finished $user $date » >> $logfile

echo «  » >> $logfile

done ; } < liste_users_imapsync_final.csv

date=`date +%X_-_%x`

echo «  » >> $logfile

echo « IMAPSync Finished.. $date » >> $logfile

echo « ———————————— » >> $logfile

Control + X pour quitter nano

Il demande si l’on sauve, dire Oui
en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

Créer un fichier csv de cette forme (Dans mon cas, le mot de passe et les noms d’utilisateur sont identiques sur les deux serveurs).

Nomdutilisateurduserveur1;motdepasse;nomdutilisateurduserveur2

Nomdutilisateurduserveur1;motdepasse;nomdutilisateurduserveur2

Exécution du script :

sh imapsync.sh

Imapsync Over SSL

Pour utiliser imapsync avec le protocole IMAPS, il faut modifier le script ci-dessus

nano imasync.sh

Il faut donc rajouter l’option –ssl2, par défaut il prendra le port 993 si jamais le port est différent, rajouter –port [numéro]

imapsync –host1 $host1 –user1 « $user » –password1 « $p1″ –host2 $host2 –user2 « $u2″ –password2 « $p1″ –ssl2 –noauthmd5

Liste des options d’Imapsync

–host1 : Adresse ip de l’hôte source

–host2 : Adresse ip de l’hôte de destination

–noauthmd5 : Permet de désactiver l’authentification chiffrée MD5

–ssl1 : Active le SSL sur l’hôte source

–port1 : Permet de spécifier le port utilisé pour l’IMAPS de l’hôte source

–ssl2 : Active le SSL sur l’hôte de destination

–port2 : Permet de spécifier le port utilisé pour l’IMAPS de l’hôte de destination

–syncinternaldates : Permet d’assurer la synchronisation de la date et de l’heure

–dry : Permet de tester l’imapsync sans copier les messages

3 – Migration des e-mails, contacts et calendrier

Le script suivant va permettre de migrer d’un serveur zimbra vers un autre les e-mails, les contacts et les calendriers de chaque utilisateur. La façon de migrer les mails dans ce script est identique à celle présentée ci-dessus.

3-1 Création du script

nano migration.pl

#!/usr/bin/perl

use strict;

use warnings;

#############################################################################

# Please make changes below to suit your system and requirements

# NOTE: hard code host1 & host2 – or pass in as first two parameters to script

#host1 is Source

my $host1=IP DE VOTRE SERVEUR SOURCE;

#host2 is Dest

my $host2=IP DE VOTRE SERVEUR DE DESTINATION;

# NOTE: enable ssl for imapsync

#my $imapsync =  » -ssl1 -ssl2″;

##############################

# NOTE: Do not set these here – they come from userlist.txt

my $user;

my $pass;

my $data_file= »userlist.txt »;

open(DAT, $data_file) || die(« Could not open file! »);

while (<DAT>) {

chomp;

# NOTE: userlist.txt can have username@domain password (or comma, tab or |)

($user,$pass)=split(/[\|\s\t,]+/,$_);

##############

open (TESTOUT, « imapsync –buffersize 18192000 –nosyncacls –subscribe –syncinternaldates –noauthmd5 –host1 IPSERVEURSOURCE –user1 $user –password1 $pass –host2 IPSERVEURDESTINATION –user2 $user –password2 $pass | »);

#while (<TESTOUT>){

# print $_;

#}

#close TESTOUT;

### get contacts

open (TESTOUT, « wget –user $user –password $pass http://IPSERVEURSOURCE/zimbra/user/$user/contacts.csv –no-check-certificate| »);

while (<TESTOUT>){

print $_;

}

close TESTOUT;

### import contacts

open (TESTOUT, « curl -u $user:$pass –upload-file /Script_Imap_Sync/contacts.csv http://IPSERVEURDESTINATION/home/$user/contacts?fmt=csv –insecure| »);

while (<TESTOUT>){

print $_;

}

close TESTOUT;

### get calendar

open (TESTOUT, « wget –user $user –password $pass http://IPSERVEURSOURCE/zimbra/user/$user/calendar.ics –no-check-certificate | »);

while (<TESTOUT>){

# print $_;

}

close TESTOUT;

### import calendars

open (TESTOUT, « curl -u $user:$pass –data-binary \@calendar.ics http://IPSERVEURDESTINATION/service/home/$user/calendar?fmt=ics –insecure| »);

while (<TESTOUT>){

print $_;

}

close TESTOUT;

### remove files

unlink ‘calendar.ics’;

unlink ‘contacts.csv’;

# ###############

}

Création d’un fichier contenant les noms d’utilisateurs et le mot de passe de chaque utilisateur.

nano userlist.txt

nomdutilisateur|motdepasse|nomdutilisateur

Control + X pour quitter nano

Il demande si l’on sauve, dire Oui
en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

Exemple :

lulu.toto|ExemplE|lulu.toto

Grâce à ces deux scripts, il est maintenant possible de migrer un serveur de messagerie Zimbra vers un autre. Je tiens à préciser que les sous carnet d’adresse pour les contacts ne sont pas migrés.

Auteur : POMENTE Guillaume

4 réponses à “MIGRATION SERVEUR ZIMBRA OSE 6.0.8 VERS UN SERVEUR ZIMBRA OSE 6.0.8

  1. Bonjour,

    J’envisage une migration de ce type à court terme, je ne vais tarder à m’y mettre et simple question : dans le cas de calendriers partagés, les droits sont ils repris ? merci.

  2. je voudrai savoir si ça fonctionne de zimbra 7 a zimbra 8 ? et si oui quand je lance le scritp j ai
    Unrecognized character \xBB in column 16 at migration.pl line 33.

Les commentaires sont clos.