Z-Push est une implémentation en PHP du protocol ActiveSync de Microsoft. Il permet de synchroniser ses mails, calendriers et contacts. Pour l’instant je ne couvrirai que le mail, le calendrier viendra plus tard éventuellement.
Le guide d’installation est assez spartiate.
Comme d’hab, je fais mes install sur CentOS 7 et avec PHP-FPM.
PHP
Déjà, installez PHP 5.6. Ça ne fonctionnera pas du tout avec PHP 7, pour le moment en tout cas. J’ai testé, laissez tomber l’idée. À moins d’avoir du temps pour dev, mais si eux n’ont pas encore sorti une version "PHP 7 proof", c’est que ça n’est sans doute pas si simple.
https://webtatic.com/packages/php56/
IMAP et SMTP
Avoir un serveur IMAP et SMTP disponible et déjà configuré.
Normalement ces deux bouzins là sont assez connus pour qu’Internet soit truffé de tutos…
Paquets
Les paquets ne sont pas signés malheureusement :/
/etc/yum.repos.d/z-push.repo
[z-push]
name=Z-Push noarch Enterprise Linux 7 - $basearch
baseurl=http://repo.z-hub.io/z-push:/final/RHEL_7
failovermethod=priority
enabled=1
gpgcheck=0
yum makecache
yum install z-push-common z-push-backend-imap z-push-ipc-sharedmemory
On pourra utiliser z-push-ipc-memcached
à la place de sharedmemory
.
Nginx et PHP-FPM
/etc/nginx/conf.d/peterschmitt.fr.conf
server {
server_name peterschmitt.fr;
location /Microsoft-Server-ActiveSync {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
include fastcgi_params_z-push;
fastcgi_param SCRIPT_FILENAME /usr/share/z-push/index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/z-push/;
fastcgi_pass unix:/srv/php-fpm/socks/z-push;
}
}
La configuration automatique tente de joindre le domaine de l’adresse mail à configurer, sur la location
détaillée ici.
J’ai récupéré cette information depuis la configuration Apache de Z-Push.
/etc/php-fpm.d/z-push.conf
[z-push]
access.log = access.log
listen = /srv/php-fpm/socks/z-push
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
user = z-push
group = z-push
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = www-slow.log
chdir = /usr/share/z-push
catch_workers_output = yes
php_flag[display_errors] = on
php_admin_value[error_log] = php-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /session
Système
Les paquets sont configurés pour l’utilisateur apache
, car il existe un paquet embarquant de la conf Apache. On adapte tout ça :
useradd z-push
chgrp z-push /etc/z-push/*
chown -R z-push:z-push /var/log/z-push/
chown -R z-push:z-push /var/lib/z-push/
systemctl restart php-fpm
systemctl restart nginx
Configuration
Faire in tour dans /etc/z-push/imap.conf.php
et adapter les dossiers IMAP en fonction de ce qui est actif sur le serveur IMAP, puis passer la define IMAP_FOLDER_CONFIGURED
à true
.
Configurez-y aussi la connexion au serveur IMAP.
Pour SMTP, cherchez la variable $imap_smtp_params
. Le fichier de configuration est très bien documenté, l’idéal étant une configuration du type :
<?php
$imap_smtp_params = array(
'host' => 'ssl://smtp.peterschmitt.fr',
'port' => 465,
'auth' => true,
'localhost' => 'smtp.peterschmitt.fr',
'username' => 'imap_username',
'password' => 'imap_password');
Test
Accéder à http://localhost/Microsoft-Server-ActiveSync et tester l’authentification.
Si déjà ça a fonctionné, vous pouvez passer à la suite, à savoir configurer un client mail voulant causer ActiveSync, comme un client mail mobile par exemple.
Enfin, testez l’envoi de mail en scrutant les logs de votre serveur mail.