Il a longtemps de cela j’avais installé un z-push pour attaquer mon serveur Zimbra. A l’époque javais pas mal galéré avec l’intégration de z-push. 3 ans plus tard (ah ouai quand même 🙂 ) j’ai de nouveau tenté l’expérience avec la nouvelle version de z-push avec le backend pour zimbra.

Je refait un petit tuto pour le monter sur un nginx. Pour ça on commence par télécharger l’archive, la décompacter et la renommer :


cd /var/www/
wget http://zarafa-deutschland.de/z-push-download/final/2.0/z-push-2.0.6-1616.tar.gz
tar xzvf z-push-2.0.6-1616.tar.gz
mv z-push-2.0.6-1616 z-push

Puis le backend pour Zimbra:

wget http://downloads.sourceforge.net/project/zimbrabackend/Release55/zimbra55-zpush2--zimbra54-zpush1-as12.1.tgz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fzimbrabackend%2F
tar xzvf zimbra55-zpush2--zimbra54-zpush1-as12.1.tgz
mkdir z-push/backend/zimbra
cp zimbra55/z-push-2/* z-push/backend/zimbra/

une fois le système mis en place on modifie le config.php situé dans le dossier de z-push


define('BACKEND_PROVIDER', "BackendZimbra");
define('ZIMBRA_URL', 'http://zimbra.domain.tld');
define('ZIMBRA_USER_DIR', 'zimbra');
define('ZIMBRA_SYNC_CONTACT_PICTURES', true);
define('ZIMBRA_VIRTUAL_CONTACTS',true);
define('ZIMBRA_VIRTUAL_APPOINTMENTS',true);
define('ZIMBRA_VIRTUAL_TASKS',true);
define('ZIMBRA_IGNORE_EMAILED_CONTACTS',true);
define('ZIMBRA_HTML',true);
define('ZIMBRA_ENFORCE_VALID_EMAIL',true);
define('ZIMBRA_SMART_FOLDERS',false);
define('ZIMBRA_RETRIES_ON_HOST_CONNECT_ERROR',5);
define('ZIMBRA_DEBUG',false);
define('ZIMBRA_LOCAL_CACHE', false);

Puis on modifie la timezone dans le fichier z-push/lib/core/zpush.php

date_default_timezone_set('Europe/Amsterdam');
vers date_default_timezone_set('Europe/Paris');

Enfin on créé les fichiers/dossiers nécessaires au bon fonctionnement de z-push :
mkdir /var/log/z-push/ && touch /var/log/z-push/z-push.log /var/log/z-push/z-push-error.log && chown nginx: /var/log/z-push/z-push.log /var/log/z-push/z-push-error.log

et cela fonctionne directement ! Plus besoin de modifier le code pour qu’il fonctionne avec nginx 🙂

Référence : ZimbraBackend

A chaque version de Zimbra, de nouvelles fonctionnalités apparaissent sans que l’annonce soit faite.
Dans la version 7 de Zimbra, deux scripts ont fait leurs apparitions : vmware-appmonitor et vmware-heartbeat.
Le premier est l’exécutable développé par VMware permettant le dialogue avec l’hôte physique grâce aux vmware tools, le second est, quant à lui, un script de vérification applicatif. Dans notre cas celui-ci vérifie que les composants de Zimbra fonctionne correctement.
Si ceux-ci sont « OK » alors, le script renvoi à vSphere le statut « OK » via l’applicatif vmware-appmonitor.
Si un des services critique est « KO » alors le script renvoi l’erreur au vSphere qui au bout de 3 fois (paramétrage par défaut), redémarre la machine.

Attention, ne pas mettre en production ceci est à des fins de tests !

Mise en place

Dans un premier temps, vérifiez que votre cluster vSphere comprend bien l’option de surveillance d’application.

Puis connectez-vous a votre serveur Zimbra et exécutez les commandes suivantes :

1. sed -i -e '146 s/^/#/' -e '145 s/^#//' /opt/zimbra/libexec/vmware-heartbeat

2. echo "export LD_LIBRARY_PATH=/opt/zimbra/lib" >> /opt/zimbra/.bashrc

Explication

1. Par défaut le script de check retourne en permanence OK au vSphere, on modifie donc celui-ci pour qu’il exécute zmcontrol et retourne la bonne valeur.

2. Lorsque l’on exécute le scipt en tant qu’utilisateur Zimbra, celui-ci n’a pas le chemin vers les dépendances. On ajoute donc le chemin dans le PATH.

On peut maintenant lancer le script.

su - zimbra

/opt/zimbra/libexec/vmware-heartbeat start

Si l’on veut suivre l’exécution du script, on peut regarder dans /opt/zimbra/log/vmware-heartbeat.log. Si tout ce passe bien, alors vous aurez quelque chose comme ça :

Fri Jul  6 20:10:16 2012: Checking ZCS status
Fri Jul  6 20:10:25 2012: Sending heartbeat to VM

Nous allons provoquer un arret de service de Zimbra :
su - zimbra
ldap stop

Dans le fichier de log vous verrez que le service ne retourne rien, c’est au bout de trois fois que le script renvoi au vSphere de redémarrer la machine.

Unable to determine enabled services from ldap.
Enabled services read from cache. Service list may be inaccurate.
Mon Jul  9 01:37:47 2012: Checking ZCS status
Unable to determine enabled services from ldap.
Enabled services read from cache. Service list may be inaccurate.
Mon Jul  9 01:38:12 2012: Checking ZCS status
Unable to determine enabled services from ldap.
Enabled services read from cache. Service list may be inaccurate.

Au niveau du vSphere vous aurez l’erreur suivante :

Et le serveur sera redémarré dans la foulée !

Cette fonctionnalité est intéressante, mais n’est pas encore mure. En effet, elle vérifie l’intégralité  des services via la commande zmcontrol, celle-ci est relativement longue et c’est pour cela qu’elle est commenté dans le script d’origine.

Ce script nous montre un bout de ce que sera la prochaine version de Zimbra.

Une des fonctionnalités intéressantes dans postfix est la possibilité d’utiliser des adresses « plused », de type user+foo@domain.com. Cela vous permet entre autre d’utiliser des adresses mails sans avoir a recréer des alias a tout bout de champ, ou bien encore savoir qui a vendu votre adresse mail lors de votre inscription sur un site.
Cette fonctionnalité existe aussi dans Zimbra, pour cela il suffi de faire les manipulations suivantes :

su - zimbra
zmprov mcf zimbraMtaRecipientDelimiter +
zmmtactl restart