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 :
- http://www.jopa.fr/index.php/2009/08/05/push-mail-sur-serveur-imap-gmail/
- http://htc-touch-diamond.forumactif.info/tuto-f4/tuto-creer-son-serveur-pour-le-push-gmail-linux-t12571.htm
- http://www.howtoforge.com/how-to-install-z-push-on-an-ispconfig-3-server-debian-lenny
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
Partager la publication "INSTALLATION & CONFIGURATION PUSHMAIL ZIMBRA OPEN SOURCE AVEC Z-PUSH"
Article très intéressant. Merci
Bonjour,
Zpush est il compatible avec zimbra 5.0.xx ?
Merci
Bonjour, je pense que oui, a essayer !!! merci de me faire un retour
Bonjour,
J’ai à priori suivi correctement le tutoriel mais le test via un navigateur web me renvoi toujours sur une page blanche.
Bonjour,
Est ce qu’il vous propose de vous authentifier ?
Cordialement,
je n’arrive tout simplement pas jusque là 🙁
On dirait que la page ne charge pas.
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.
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.
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 ?
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.
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
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.
Bonjour, je suis désolé je ne connais pas NotifySync.
Cordialement,
Bonjour
Excellent Tuto tres clair.
Par contre j ai un probleme avec mon test. En effet qd je fais https://adresseIP/Microsoft-Server-ActiveSync, je recois une erreur : ssl_error_rx_record_too_long
Quelqu’un pourrais m aider ??
Marc
J’ai la même erreur que marc 🙁
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
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
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
Bonjour,
Avez-vous un tuto avec Centos ou RHEL ?
Merci par avance,
Tyler
Bonjour,
Je n’ai pas de tuto pour CentOS ou RHEL désolé.
Cordialement,
Guillaume P.
Bonjour,
A quoi sert exactement le paramètre :
define(‘ZIMBRA_VIRTUAL_APPOINTMENTS’,true);
si on le passe à FALSE, cela fait quoi ?
Merci
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
Bonjour,
As tu trouvé la solution ?
Cordialement,
Guillaume P.
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
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
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 ?
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
Bonjour,
Oui c’est deux étapes sont nécessaire.
Cordialement,
Bonjour, pour ma part la demande de login mot de passe echoue tout le temps, avec loginZimbra + mdpZimbra et avec loginZimbra@domaine aussi!!
Bonjour,
Pouvez bous m’envoyer vos fichiers de conf de z-push ?
Cordialement,