Migration Zimbra 5 vers 6 sous Debian Lenny
La mise à jour de Zimbra depuis la version 5 vers la version 6 n'est pas de tout repos, notamment si vous avez installé les zimlets Samba et Posix. Notamment dû au fait que la structure des schémas a été profondément remodelée, et demandera quelques opérations manuelles.
Le présent tutoriel a été réalisé avec un serveur Debian Lenny et une Zimbra Open Source version 5.0.18 (théoriquement la mise à jour est possible depuis les versions antérieures également, mais par précaution il est plus sûr de faire cette mise à jour intermédiaire). Notre version de Zimbra possédait également les zimlets Samba et Posix.
Voici comment procéder:
1. Se positionner dans le répertoire tmp
cd /tmp
2. Télécharger la dernière version de Zimbra (je recommande au moins la 6.0.1, quelques petits problèmes ayant été corrigés par rapport à la 6.0)
wget http://h.yimg.com/lo/downloads/6.0.1_GA/zcs-6.0.1_GA_1816.DEBIAN5.200909... (copier l'adresse du lien exact depuis le site de Zimbra)
3. Décompresser cette archive
tar zxvf zcs6.0.1.xxxx
4. Avant d'installer quoi que ce soit, nous allons avoir besoin d'un backup de la base LDAP pour faire l'installation de la version 6. Pour ce faire lancer la commande:
su - zimbra -c "/opt/zimbra/libexec/zmslapcat /opt/zimbra/data/ldap"
Un fichier ldap.bak doit avoir été créé dans le répertoire /opt/zimbra/data/ldap
Je vous recommande d'en faire une copie de sauvegarde, ça peut toujours servir (c'est du vécu). Une fois l'installation de la version 6 entamée vous ne pourrez plus le faire.
5. Arrêter zimbra
su - zimbra -c "zmcontrol stop"
6. Si vous utilisiez une Zimbra 5 sous Lenny il est fort à parier que vous aviez bloqué la version de perl à la 5.8.8
Il va falloir maintenant la mettre à jour à la 5.10
Pour cela, soit aptitude unhold, soit modifier /etc/apt/preferences selon la méthode utilisée pour bloquer le paquet.
Puis les classiques:
aptitude update
aptitude safe-upgrade
Installer deux nouveaux paquets qui seront nécessaires
aptitude install sysstat libstdc++5
7. Installer les binaires de la version 6 (attention à l'attribut s !!!). Cela nous permettra de convertir le schéma Samba à l'aide des nouveaux binaires.
./install.sh -s
Répondre Non [N] à la question "Do you want to verify message store database integrity?"
8. Installer les nouveaux schémas nis et samba.
su - zimbra
La nouvelle structure des fichiers de config n'existe en théorie pas encore, nous allons la créer
mkdir /opt/zimbra/data/ldap/config/cn=config
mkdir /opt/zimbra/data/ldap/config/cn=config/cn=schema
chown -R zimbra:zimbra /opt/zimbra/data/ldap/config/cn\=config
Puis ajoutons le nis.ldif (Posix) que zimbra a gentiment créé pour vous!
cp /opt/zimbra/openldap/etc/openldap/schema/nis.ldif /opt/zimbra/data/ldap/config/cn\=config/cn\=schema/cn\=\{10\}nis.ldif
cd /opt/zimbra/data/ldap/config/cn\=config/cn=\schema
Nous allons l'adapter un peu
chmod 777 cn\=\{10\}nis.ldif (juste pour le modifier, on remettra ensuite des droit d'accès plus sécurisés)
pico cn\=\{10\}nis.ldif
Puis modifier les lignes:
dn: cn=nis,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: nis
en
dn: cn={10}nis
objectClass: olcSchemaConfig
cn: {10}nis
On remet les droits qui vont bien
chmod 600 cn\=\{10\}nis.ldif
Installons maintenant le nouveau schéma Samba. C'est un peu plus compliqué mais ça se fait bien aussi
mkdir -p /tmp/ldap/schema
cd /tmp/ldap
cp /opt/zimbra/openldap/etc/openldap/schema/samba.schema /tmp/ldap/schema
Note: pour ceux ayant installé Zimbra il y a quelques temps, assurez-vous que le fichier samba.schema est bien celui lié à votre version actuelle de Samba. Dans le doute vous pouvez le retrouver en installant la dernière version du paquet samba-doc puis à l'emplacement /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz
Créer un fichier "test.conf" et y inclure le contenu suivant:
include /opt/zimbra/openldap/etc/openldap/schema/core.schema
include /opt/zimbra/openldap/etc/openldap/schema/cosine.schema
include /opt/zimbra/openldap/etc/openldap/schema/inetorgperson.schema
include /tmp/ldap/schema/samba.schema
Puis exécuter:
/opt/zimbra/openldap/sbin/slaptest -f /tmp/ldap/test.conf -F /tmp/ldap
cd cn\=config/cn\=schema
Renommons-le avec l'indice 11 au lieu de 3 (les indices 0 à 9 sont réservés pour Zimbra) avec un risque de voir notre schéma écrasé
mv cn\=\{3\}samba.ldif cn\=\{11\}samba.ldif
Modifier ensuite ce fichier cn=\{11\}samba.ldif au niveau de la ligne suivante:
dn: cn={3}samba objectClass: olcSchemaConfig cn: {3}samba
en
dn: cn={11}samba objectClass: olcSchemaConfig cn: {11}samba
Puis copier ce fichier parmi les nouveaux schémas Zimbra
cp /tmp/ldap/cn\=config/cn\=schema/cn\=\{11\}samba.ldif /opt/zimbra/data/ldap/config/cn\=config/cn\=schema/
9. L'opération la plus délicate étant faite, reste à ajouter des indices au fichier olcDatabase\=\{2\}hdb.ldif
cd /opt/zimbra/openldap/etc/openldap/config/cn\=config
pico olcDatabase\=\{2\}hdb.ldif
et ajouter à la section olcDbIndex les lignes suivantes
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: memberUID eq
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaDomainName eq
10. Supprimer les backups LDAP inutiles
cd /opt/zimbra/data/ldap
Supprimer tous les fichiers autres que le ldap.bak généré en début de ce tutoriel. Attention: veillez à bien avoir placé dans un endroit sûr une copie de ce fichier ldap.bak !
11. Modification des droits sur ce backup LDAP
chown zimbra:zimbra /opt/zimbra/data/ldap/ldap.bak && chmod 440 /opt/zimbra/data/ldap/ldap.bak
Dans le tutoriel officiel il est mentionné un chmod 640, mais qui faisait bloquer l'install avec un "valid backup file not found" car la procédure d'install m'écrasait mon fichier backup (d'où ma remarque sur l'importance d'en faire garder une copie en lieu sûr!!!). Avec un chmod 440 l'install se passe sans problème.
12. Quelques modifications pour finir
mv /opt/zimbra/data/ldap/hdb /opt/zimbra/data/ldap/hdb.OLD
mkdir /opt/zimbra/data/ldap/hdb
mkdir /opt/zimbra/data/ldap/hdb/db && mkdir /opt/zimbra/data/ldap/hdb/logs
chown -R zimbra:zimbra /opt/zimbra/data/ldap/hdb/
13. Enfin, éditer le fichier .install_history:
pico /opt/zimbra/.install_history
et y supprimer toutes les lignes liées à la version 6 (comme suit):
1252187141: INSTALL SESSION START
1252187141: UPGRADED zimbra-spell-6.0.0_GA_1802.DEBIAN5_i386.deb
1252187142: UPGRADED zimbra-logger-6.0.0_GA_1802.DEBIAN5_i386.deb
1252187143: UPGRADED zimbra-ldap-6.0.0_GA_1802.DEBIAN5_i386.deb
1252187144: UPGRADED zimbra-archiving-6.0.0_GA_1802.DEBIAN5_i386.deb6
1252187145: UPGRADED zimbra-core-6.0.0_GA_1802.DEBIAN5_i386.deb
1252187146: UPGRADED zimbra-snmp-6.0.0_GA_1802.DEBIAN5_i386.deb
1252187147: UPGRADED zimbra-convertd-6.0.0_GA_1802.DEBIAN5_i386.deb
1252187148: UPGRADED zimbra-mta-6.0.0_GA_1802.DEBIAN5_i386.deb
1252187149: UPGRADED zimbra-apache-6.0.0_GA_1802.DEBIAN5_i386.deb
1252187151: UPGRADED zimbra-store-6.0.0_GA_1802.DEBIAN5_i386.deb
1252187143: INSTALL SESSION COMPLETE
14. Renenir en tant que root
exit
15. Puis lancer la mise à jour
/opt/zimbra/libexec/zmsetup.pl
Théoriquement tout devrait ensuite bien se passer.
Ca paraît un peu alambiqué, mais je n'ai pas trouvé mieux (après de très nombreux essais!).
Problèmes rencontrés:
- Lors de la première connexion à l'interface admin j'ai eu les messages d'erreurs ci-dessous, et le domaine Samba était vide dans la rubrique du même nom.
Warning! Failed to create ou=machines,dc=test,dc=com for Samba group accounts!
Warning! Failed to create ou=machines,dc=test,dc=com for Samba machine accounts!
Voici la solution qui a marché pour moi.
Désinstaller l'extension d'admnistration Samba depuis l'interface d'administration.
Récupérer la nouvelle version depuis /opt/zimbra/zimlets-admin-extra/zimbra_samba.zip
Dézipper, modifier le fichier config_template.xml pour adapter dc=test,dc=com avec votre domaine, puis rezipper l'ensemble de ces fichiers.
su - zimbra -c "zmprov mcf -zimbraAccountExtraObjectClass sambaSamAccount"
Redémarrer zimbra
su - zimbra -c "zmcontrol stop"
su - zimbra -c "zmcontrol start"
Réinstaller depuis l'interface admin votre nouvelle extension d'administration Samba: zimbra_samba.zip (uploader le fichier)
su - zimbra -c "zmprov mcf +zimbraAccountExtraObjectClass sambaSamAccount"
Redémarrer une fois pour être sûr (on n'est quand même pas sous Windows, je vous rassure!)
su - zimbra -c "zmcontrol stop"
su - zimbra -c "zmcontrol start"
En vous reconnectant sur l'interface admin tout devrait maintenant être rentré dans l'ordre!
- En testant le rajout d'un nouvel utilisateur j'ai obtenu le message d'erreur suivant:
Erreur de serveur !
Mail : createAccount invalid attr value: [LDAP: error code 21 - objectClass: value #4 invalid per syntax] Code d'erreur : account.INVALID_ATTR_VALUE Method: CreateAccountRequest Détails :soap:Sender
Dans ce cas vérifiez bien avec la commande
su - zimbra -c "/opt/zimbra/bin/zmprov gacf | grep zimbraAccountExtraObjectClass"
que vous obtenez uniquement
zimbraAccountExtraObjectClass: amavisAccount
zimbraAccountExtraObjectClass: posixAccount
zimbraAccountExtraObjectClass: sambaSamAccount
en particulier il ne doit pas y avoir de sambaAccount
- Si vous n'avez que des croix rouges dans la partie "Etat du serveur" (console admin) cela est dû au fait que les logs ne marchent pas.
aptitude install rsyslog
puis copier les 3 lignes spécifiques à zimbra depuis /etc/syslog.conf vers /etc/rsyslog.conf
arrêter et redémarrer zimbra
Sources:
Ces instructions sont une compilation de différents tutos, avec quelques modifications nécessaires pour que ça marche chez moi
http://wiki.zimbra.com/index.php?title=Optimizing_50_to_60_LDAP_upgrade
http://wiki.zimbra.com/index.php?title=Installing_custom_ldap_schema_6.0