INSTALLATION & CONFIGURATION PUSHMAIL ZIMBRA OPEN SOURCE AVEC Z-PUSH

Z-Push est une solution Open-Source de Zarafa qui permet de faire du push mail depuis des client mobiles (Windows Mobile, Iphone…). Cette solution s’appuie sur Apache2, PHP). Z-Push emule le protocole Microsoft ActiveSync. Z-Push va permettre de synchroniser les mails, les contacts et les calendriers de zimbra open source avec des clients mobiles (iphone, windows mobile, maemo..)

Source :

1 – Installation des pré-requis.

apt-get install apache2 php5 libapache2-mod-php5 php5-xcache php5-imap php-mail

2 – Installation et configuration Zpush sans SSL

Pour commencer nous allons télécharger les sources de Zpush en version 1.3R2.

wget http://download.berlios.de/z-push/z-push-1.3.tar.gz

Extraire le contenu de l’archive dans /var/www

tar -xvzf z-push-1.3.tar.gz -C /var/www/Définir les droits pour Apache

chmod 755 /var/www/z-push/state

chown www-data:www-data /var/www/z-push/state

2-1 Configuration de Z-Push pour un compte mail

Éditer le fichier de configuration de Z-Push ; Il se trouve dans /var/www/z-push/config.php

nano /var/www/z-push/config.php

Modifier les lignes suivantes

date_default_timezone_set(« Europe/Paris »);

$BACKEND_PROVIDER = « BackendZimbra »;

define(‘IMAP_SERVER’, ‘adresse.serveur.de.mail);

define(‘IMAP_PORT’, port.imap);

define(‘IMAP_OPTIONS’, ‘/notls/norsh/ssl/novalidate-cert’);

A la racine du dossier z-push, créer un fichier .htaccess

nano /var/www/z-push/.htaccess

Saisir les informations suivantes puis enregistrer le fichier

php_flag magic_quotes_gpc off

php_flag register_globals off

php_flag magic_quotes_runtime off

php_flag short_open_tag on

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.

2-2 Création d’un fichier de LOG

touch /var/www/z-push/debug.txt &&

chmod 777 /var/www/z-push/debug.txt

Ajout de l’alias

nano /etc/apache2/httpd.conf

Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php

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.

Redémarrer le service Apache

/etc/init.d apache2 restart

Si jamais l’erreur suivante apparait, Could not reliably determine the server’s fully qualified domain name, using 10.10.0.13 for ServerName modifier le fichier apache.conf

nano /etc/apache2/apache2.conf

A la fin ajouter la ligne suivante :

ServerName nomdevotreserveur

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.

3 – Installation et configuration Zpush Avec SSL

3-1 Installation des pré-requis.

apt-get install apache2 php5 libapache2-mod-php5 php5-xcache php5-imap php-mail

3-2 Fichiers hosts, hostname

nano /etc/hosts

127.0.0.1 localhost

ip.serveur.zpush votre.nom.domaine

# The following lines are desirable for IPv6 capable hosts

::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts

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.

nano /etc/hostname

votre.nom.domaine

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.

3-2 Installation de Z-Push

Pour commencer nous allons télécharger les sources de Zpush en version 1.3R2.

wget http://download.berlios.de/z-push/z-push-1.3.tar.gz

Extraire le contenu de l’archive dans /var/www

tar -xvzf z-push-1.3.tar.gz -C /var/www/

Définir les droits pour Apache

chmod 755 /var/www/z-push/state

chown www-data:www-data /var/www/z-push/state

3-2 Configuration de Z-Push pour un compte mail

Éditer le fichier de configuration de Z-Push ; Il se trouve dans /var/www/z-push/config.php

nano /var/www/z-push/config.php

Modifier les lignes suivantes

date_default_timezone_set(« Europe/Paris »);

$BACKEND_PROVIDER = « BackendIMAP »;

define(‘IMAP_SERVER’, ‘adresse.serveur.de.mail);

define(‘IMAP_PORT’, port.imap);

define(‘IMAP_OPTIONS’, ‘/notls/norsh/ssl/novalidate-cert’);

Éditer le fichier httpd.conf

nano /etc/apache2/httpd.conf

Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag magic_quotes_runtime off
php_flag short_open_tag on

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.

3-3 Générer le certificat SSL

mkdir ~/.authenticate

chmod 0700 ~/.authenticate

apt-get install ssl-cert
ca-certificates

cp -a /etc/ssl/certs/ ~/.authenticate/ca

chmod -R go-rwx ~/.authenticate/ca

mkdir /etc/apache2/ssl

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

a2enmod ssl

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

nano /etc/apache2/sites-available/ssl

<VirtualHost *:443>

ServerAdmin webmaster@localhost


SSLEngine On

SSLCertificateFile /etc/apache2/ssl/apache.pem

DocumentRoot /var/www/z-push/

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory « /usr/lib/cgi-bin »>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.

LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ « /usr/share/doc/ »

<Directory « /usr/share/doc/ »>

Options Indexes MultiViews FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

Allow from 127.0.0.0/255.0.0.0 ::1/128

</Directory>

</VirtualHost>

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.

nano /etc/apache2/sites-available/default

<VirtualHost *:80>

ServerAdmin webmaster@localhost

DocumentRoot /var/www/z-push/

Redirect / https://ip.de.votre.serveur/

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory « /usr/lib/cgi-bin »>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.

LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ « /usr/share/doc/ »

<Directory « /usr/share/doc/ »>

Options Indexes MultiViews FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

Allow from 127.0.0.0/255.0.0.0 ::1/128

</Directory>

</VirtualHost>

Editer le fichier ports.conf

nano /etc/apache2/ports.conf

NameVirtualHost *:80

Listen 80

Listen 443

Redémarrer le service Apache

/etc/init.d/apache2 reload

4 – Configuration de Z-Push pour Zimbra OpenSource

Installation des pré-requis

apt-get install php5-curl curl

Se placer dans le dossier backend

cd /var/www/z-push/backend/

Téléchargement du fichier

wget https://zimbrabackend.svn.sourceforge.net/svnroot/zimbrabackend/zimbra.php

Editer le fichier de configuration de z-push

nano /var/www/z-push/config.php

// *********************************

// BackendIMAP settings pour zimbra

// *********************************

define(‘ZIMBRA_URL’, ‘http://votre.serveur.messagerie);

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’,false);

// ************************

// Default BackendIMAP settings

// ************************

// Defines the server to which we want to connect

// recommended to use local servers only

// define(‘IMAP_SERVER’, ‘10.10.0.1’);

// connecting to default port (143)

// define(‘IMAP_PORT’, 993);

// best cross-platform compatibility (see http://php.net/imap_open for options)

// define(‘IMAP_OPTIONS’, ‘/notls/norsh/ssl/novalidate-cert’);

// overwrite the « from » header if it isn’t set when sending emails

// options: ‘username’ – the username will be set (usefull if your login is equal to your emailaddress)

// ‘domain’ – the value of the « domain » field is used

// ‘@mydomain.com’ – the username is used and the given string will be appended

define(‘IMAP_DEFAULTFROM’,  »);

// copy outgoing mail to this folder. If not set z-push will try the default folders

define(‘IMAP_SENTFOLDER’,  »);

Une fois le fichier de configuration modifié, vous pouvez tester de vous connecter depuis votre navigateur internet à l’adresse suivante :

https://ip_de_votre_serveur/Microsoft-Server-ActiveSync

si tout est bien configuré, le message suivant doit apparaître :

GET not supported
This is the z-push location and can only be accessed by Microsoft ActiveSync-capable devices.

Maintenant il faut configurer le téléphone, dans mon cas j’ai pu tester avec un IPHONE 3G, 3GS et un nokia N900. Pour ces trois téléphones, il faut configurer un compte mail pour exchange. Normalement tout devrait fonctionner.

Auteur : Guillaume POMENTE

30 réponses à “INSTALLATION & CONFIGURATION PUSHMAIL ZIMBRA OPEN SOURCE AVEC Z-PUSH

  1. Rectification : après avoir corrigé une erreur dans le fichier de configuration je vais maintenant jusqu’à la demande d’authentification ::

    Malheureusement après m’être authentifié j’ai de nouveau la page blanche.

  2. J’ai trouvé la solution tout seul comme un grand 🙂

    Pour être « up-to-date » j’utilise la dernière version de z-push (1.4.3) et les dernières versions on introduit le provisioning.

    Dans le fichier config.php de z-push il faut mettre define(‘PROVISIONING’, false); car par défaut le provisioning est activé et c’est lui une des causes de mes ennuis.

  3. Bonjour,

    Mes premiers test avec une version Zimbra 5.x.x sont OK.
    En revanche la synchronisation du calendrier génère une erreur dans le sens client -> serveur.
    J’ai une erreur Soap :
    … invalid request: invalid time zone « Europe/Paris »…

    Ce problème est-il connu ?

  4. Bonjour,

    Super tuto qui en le suivant c’est déroulé correctement.
    J’ai bien ma page: GET not supported
    This is the z-push location and can only be accessed by Microsoft ActiveSync-capable devices.

    Là où ça plante c’est en rentrant mon compte exchange dans mon iphone:

    Adresse: mail.mondomaine.com
    serveur: http://domaine.com/Microsoft-Server-ActiveSync

    Domaine: néant

    nom d’utilisateur: mail.mondomaine.com
    Mdp: *****

    SSL:off

    Résultat:
    Exchange impossible de vérifier les données du compte!

    Vous auriez une idée?

    Cordialement Coyoteros.

    1. Bonjour,

      Je pense que l’adresse du serveur que vous mettez dans votre iPhone n’est pas correcte.
      Vous avez pas un sous domaine du style push.domaine.com qui pointe vers votre serveur z-push ?
      Ou alors est ce que votre domaine.com pointe vers votre serveur z-push ? Si c’est le cas, enlever dans l’url Microsoft-Server-ActiveSync.

      Cordialement,

      Guillaume

  5. Bonjour ,

    Je me suis inspiré de votre tutoriel très bien construit pour réaliser mon serveur activesync pour zimbra.

    J’utilise comme plateforme du Centos 5.5.
    Z-push 1.4.3
    ZimbraBackend revision 47 avec le provisionning.
    Server Zimbra 6.0.9 car le 5.0.23 posé de réel soucis avec le fuseau horaire et même la révison 47 avec sa petite astuce me posé souci.
    SSL signé.
    Iphone OK 2,3,4 OK
    Android OK
    Nokia OK

    BlackBerry et oui BlackBerry si mauvais quand il n’y a pas de BES.
    Avec AstraSync cela fonctionne plus ou moins bien.
    J’aurai voulu utilisé NotifySync, mais la après recherche il utilise le test des serveurs Microsoft exchange et me renvoi en log que l’authentification anonymous a échoué avez vous une idée.

  6. Bonjour,
    Je ne comprend pas car je viens de tout configurer et quand j’accède à zpush via un navigateur, tout fonctionne parfaitement (user, password, et le message « GET not supported This is the z-push location and can only be accessed by Microsoft ActiveSync-capable devices. ») mais via mon téléphone, ça ne fonctionne pas. Avez vous une idée ?
    Merci

  7. Quand je regarde dans debug.txt j’ai 1 erreur :
    zimbra.php:320 include_once(z_RTF.php): failed to open stream: No such file or directory (2)
    Et par contre j’ai cette ligne
    END Setup { 51 Folders Loaded }
    Donc je suppose que ça fonctionne quand même

  8. Bonjour,

    j’ai bien suivi le tuto j’accède bien à la page :

    GET not supported
    This is the z-push location and can only be accessed by Microsoft ActiveSync-capable devices.

    mon problème est que j’ai mon serveur apache pour z-push (vu que l’on ne peut pas utiliser celui intégré à zimbra) et mon serveur zimbra qui sont sur la même machine.
    J’ai passé le serveur apache z-push sous le port d’écoute 81 et lorsque j’essaie de rentrer mon compte exhange dans l’iphone ça ne fonctionne pas.

    Après plusieurs lectures sur différents forums j’ai vu que à priori il était impossible de spécifier un port dans un client mobile pour les comptes exchange je voulais donc savoir comment on peut s’en sortir pour que z-push fonctionne avec zimbra sur la même machine et qu’il soit accessible par un client mobile

    merci d’avance

  9. Bonjour,
    A quoi sert le paramètre : define(‘ZIMBRA_VIRTUAL_APPOINTMENTS’,true); ?
    Que se passe t-il si on le met à false ?

    Je ne souhaite synchroniser que le calendrier principal de mes users et pas tout les calendriers.

    Merci
    Cordialement

  10. Je suis dans la même situation que les deux personnes au-dessus, apparemment: l’installation s’est parfaitement déroulée, mais après synchro, le calendrier de tous les comptes zimbra sont arrivés sur le client ActiveSync (un ipad dans mon cas)… Ce qui n’est pas très pratique à utiliser. As-tu une idée sur la question ?
    Merci

    Cordialement,
    Loïc

  11. Bonjour,

    moi ce n’est pas au niveau des calendriers que j’ai ce problème mais au niveau des contacts. Dans les comptes zimbra que je souhaite synchroniser avec un iphone j’ai deux contacts (un personnel et un partagé depuis un autre compte) et je souhaiterai synchroniser mon iphone seulement avec le contact personnel et pas le partagé qui contient trop de contacts. Est-ce que quelqu’un à déjà réussi à faire ça ? merci d’avance

  12. Pour ma part, je n’ai jamais réussi à faire la synchro.

    Je suis en Zimbra 7, z-push 152, backend 49

    Dans le debug.txt, je vois bien que mes répertoires sont chargés mais il détecte à tout les coup un changement de session et il boucle.

    Message :
    Session Id changed – OLD [1894] -> NEW []

    Une idée ?

  13. Bonjour,

    Merci pour votre article.
    Je me pose la question de savoir si les étapes 2.1 et 3.2 sont nécessaires si on souhaite installer z-push en backend de zimbra ?
    Merci

  14. Bonjour, pour ma part la demande de login mot de passe echoue tout le temps, avec loginZimbra + mdpZimbra et avec loginZimbra@domaine aussi!!

Les commentaires sont clos.