
Oscar Mas de Cadinor nos deja hoy una entrada maestra, se trata de la posibilidad de tener en push en nuestros móviles, nuestro Zimbra, con la versión Open Source, ahí es nada, os dejo con él.
Lo que voy a explicar, es a sincronizar nuestros dispositivos móviles con un servidor de Zimbra OpenSource. Esto se sale un poco de mi tónica habitual, ya que suelo usar siempre la versión Network, pero en ocasiones es necesario utilizar la versión OpenSource.
El sistema más utilizado para poder sincronizar nuestro dispositivos móviles con un Zimbra OpenSource, es Z-Push, de hecho no es que lo diga yo, es que sale hasta en la Wikipedia: http://en.wikipedia.org/wiki/Z-push, os dejo un fragmento de lo que pone:

NOTA IMPORTANTE: Es obligatorio montar el sistema Z-Push en otro servidor, que no sea el mismo que el de Zimbra. Lo que nos obligará a que todo el tráfico http y https vaya desde nuestro sistema de Firewall al servidor de Z-Push y este a su vez pase las consultas a nuestro servidor de Zimbra OpenSource. Os dejo un esquema de cómo sería el montaje:

Lo primero que haremos es instalar los paquetes de software necesarios en nuestra Ubuntu y posteriormente descargarnos el software de Z-Push
root@z-push:~# apt-get install subversion php5-curl apache2 libapache2-mod-php5 php5-cli php-soap php5-imap php5-cgi
root@z-push:~# mkdir /var/www/z-push
root@z-push:~# cd /usr/local/src/
root@z-push:/usr/local/src# wget http://download.z-push.org/final/2.1/z-push-2.1.2-1873.tar.gz
root@z-push:/usr/local/src# tar xzvf z-push-2.1.2-1873.tar.gz
root@z-push:/usr/local/src# mv z-push-2.1.2-1873/* /var/www/z-push/
Creamos las carpetas para el state (/var/lib/z-push) y para los logs (/var/log/z-push) y los haremos que el usuario web (www-data) pueda escribir en ellos:
root@z-push:/usr/local/src# mkdir /var/lib/z-push
root@z-push:/usr/local/src# mkdir /var/log/z-push
root@z-push:/usr/local/src# chgrp www-data /var/lib/z-push
root@z-push:/usr/local/src# chmod g+w /var/lib/z-push
root@z-push:/usr/local/src# chgrp www-data /var/log/z-push
root@z-push:/usr/local/src# chmod g+w /var/log/z-push
root@z-push:/usr/local/src# svn checkout svn://svn.code.sf.net/p/zimbrabackend/code/zimbra-backend/branches/z-push-2 /var/www/z-push/backend/zimbra
Crearemos nuestro virtualhost, para aceptar las peticiones. Además cargaremos nuestro certificado, es aconsejable usar un certificado válido, para que los dispositivos móviles no den problemas.
root@z-push:~# vim /etc/apache2/sites-available/zpush.ilba.cat
ServerAdmin [email protected]
ServerName zpush.ilba.cat
DirectoryIndex index.php
DocumentRoot /var/www/z-push/
Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
SSLEngine On
SSLCertificateFile /etc/apache2/cert/WILCARD.crt
SSLCertificateKeyFile /etc/apache2/cert/WILCARD_sin_password.key
AllowOverride All
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag magic_quotes_runtime off
php_flag short_open_tag on# Logfiles
ErrorLog /var/log/z-push/error.log
CustomLog /var/log/z-push/access.log combined

Habilitamos el virtual host y el modulo de SSL en el apache:
root@z-push:~# a2ensite zpush.ilba.cat
root@z-push:~# a2enmod ssl
root@z-push:~# service apache2 restart
Copiaremos nuestro certificado en la carpeta: /etc/apache2/cert

Verificaremos la conectividad FQDN, entre nuestro servidor de Z-Push y nuestro servidor de Zimbra:
root@z-push:~# ping zimbra.ilba.cat -c1

Durante la configuración, tendremos que saber nuestro TimeZone para poder configurar zpush. Para poderlo saber, os dejo esta URL donde podremos ver nuestro TimeZone: http://php.net/manual/en/timezones.php.
root@z-push:~# cp -a /var/www/z-push/backend/zimbra/config.php /var/www/z-push/backend/zimbra/config.php.ori
root@z-push:~# vim /var/www/z-push/backend/zimbra/config.php
define(‘ZIMBRA_URL’, ‘http://zimbra.ilba.cat’);
define(‘ZIMBRA_TIMEZONE’, ‘Europe/Madrid’);

root@z-push:~# cp -a /var/www/z-push/config.php /var/www/z-push/config.php.ori
root@z-push:~# vim /var/www/z-push/config.php
define(‘TIMEZONE’, ‘Europe/Madrid’);
define(‘PROVISIONING’, false);
define(‘BACKEND_PROVIDER’, ‘BackendZimbra’);root@z-push:~# vim /var/www/z-push/lib/default/diffbackend/diffstate.php

Redirecionaremos el puerto HTTPS hacia nuestro servidor de Z-Push:
![]()
Una vez acabada la configuración, cuando accedermos por navegador a la URL: https://zpush.ilba.cat/Microsoft-Server-ActiveSync nos ha de pedir usuario y contraseña. Si tenemos cualquier problema, podemos ver los mensajes de error en los logs:
root@zimbra:~# tail -f /opt/zimbra/log/audit.log
root@z-push:~# tail -f /var/log/z-push/z-push.log
Es importante que en nuestro servidor de Zimbra, pongamos en la “WhiteList” de Jetty DosFilter la IP de nuestro servidor de Z-Push, ya que sinó puede banearnos por intentos de accessos.
root@zimbra:~# su – zimbra
zimbra@zimbra:~$ zmprov mcf zimbraHttpThrottleSafeIPs 192.168.250.9
zimbra@zimbra:~$ zmmailboxdctl restart

Configuraremos los logs de nuestro Z-Push, ya que sinó se nos llenaría el espacio del servidor con los logs y los iremos rotando.
root@z-push:~# vim /etc/logrotate.d/z-push
/var/log/z-push/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
}

Ahora lo unico que nos queda es configurar nuestra cuenta de Zimbra con el sistema ZPush como si fuera una cuenta de Exchange.

Aquí, ya podremos ver la sincronización con nuestro servidor de Zimbra desde nuestro dispositivo móvil. La sincronización es completa; Correo, Agenda, Contactos, etc. Os dejo un par de capturas de pantalla para que lo disfrutéis:


Esperamos que esta entrada os guste y os sea de utilidad

Haber si funciona, probare con certificado generado por Zimbra haber que tal le va.
Buenos dias.
Estoy en la parte de:
Redirecionaremos el puerto HTTPS hacia nuestro servidor de Z-Push
Puedes explicar esta parte mejor?
A mi me aparece el siguiente error en el log del Zpush:
Zimbra->SoapRequest(): ERROR: curl_exec – (7) Failed to connect to ***** port 80: Connection refused
Muchas gracias.
Sólo una cosa, ¿por qué Z-Push tiene que estar en un servidor diferente a Zimbra?
Muchas Gracias por el articulo Jorge.
Tengo una inquietud. no se si te ha pasado.
Al momento de crear una carpeta o folder en el dispositivo movil, la duplica. Ejemplo si creo la carpeta DDD me crea tambien DDD(1).
Gracias
Sir,
I have completed setup with above document. when i type ip of z-push it is asking for username and password working fine. for set setup in mobile and outlook it is not working the server cannot be found.
please help me to solve the issue.
Ramesh
Habrá alguna posibilidad de hacer una versión actualizada de este tutorial?
Con Ubuntu 16.04, php7 y la versión final de z-push?
Estuve intentando por días y no pudo resolver los problemas de dependencias.
Saludos y muchas gracias por todo el material.
Saludos Facundo,
A no ser que Oscar Mas lo actualice, me temo que por ahora lo mejor y menos engorroso es contratar Zimbra Suite Plus, solamente la parte de Mobile Plus no se hace muy caro y merece la pena para no tener que preocuparnos más de montar todo este entorno.
De todas formas si alguien que nos lee quiere darnos los pasos actualizados, estaré feliz de publicarlos 🙂
Que tal Jorge, una consulta he logrado instalar en ubuntu 16 y zimbra 8.7 este ambiente en el mismo servidor, solo que el alias al parecer no me está funcionando, quizá puedas darme una mano.
Jorge,
Alguna idea sobre como monitorizar esto? Digo, mas allá de checkear que el apache esté levantado ?
Idealmente me gustaría poder armar un comando o algo que checkee contra una cuenta de prueba y que el monitoreo “sincronize” contra esa cuenta, me explico?
Saludos y muchas gracias.