Sincronización “Exchange ActiveSync” con Z-Push y Zimbra

Nuevo capítulo en nuestra travesía por Zimbra. Tras instalarconfigurar, securizar contra el spam y facilitar la administración de nuestro Zimbra, hoy vamos a ver cómo mejorar la experiencia de usuario final. Para ello vamos a realizar la instalación y configuración del sistema z-push para la correcta sincronización de nuestro móvil contra Zimbra.

 

zimbra-zpush

Qué es “Exchange ActiveSync”

Z-push es una implementación Open Source del protocolo “Exchange ActiveSync”, originalmente desarrollado por Microsoft. El protocolo, creado en 1996, permite la sincronización de dispositivos con servidores que hablen este protocolo, básicamente para los correos electrónicos, contactos, notas y calendarios.

Es un protocolo que se ha ido extendiendo y hoy día los dispositivos móviles con sistema operativo iOS, Android o WindowsPhone lo implementan de serie.

Z-Push y su implementación

Tal como hemos  comentado, Z-push implementa el protocolo Exchange ActiveSync, convirtiéndose en una capa intermedia entre el cliente (un móvil) y el servidor backend que contiene los datos, que en nuestro caso es Zimbra.

En la imagen de la web de Z-Push se explica claramente cómo actúa Z-Push, de intermediario entre el cliente y el backend.

zpush_arch

Como suele ser habitual en el mundo del Software Libre, aunque el programa inicialmente no contaba con la posibilidad de comunicarse con Zimbra, veremos que esto se sí se puede conseguir gracias a un plugin externo.

 

Descarga de z-push

Dado que z-push es un sistema PHP, es necesaria la utilización de un servidor web, el cual debe estar securizado a través de un certificado SSL. Puesto que nuestro servidor Zimbra ya hace uso del puerto 443, vamos a realizar la instalación en otro servidor, aunque podríamos utilizar otro puerto independiente, tal como hicimos con la instalación del entorno web para Mailwatch.

Pasos prévios

Para la instalación de z-push necesitamos un sistema GNU/Linux, y en nuestro caso la instalación la vamos a realizar sobre una Debian 8.5 (aka Jessie). En este post no vamos a entrar en los detalles sobre la instalación, ya que lo único que hemos hecho es una instalación base, junto con el servicio openssh y la configuración base que realizamos en nuestros servidores.

Instalar dependencias

Tal como hemos dicho, z-push es un sistema basado en PHP, por lo que necesitamos realizar la instalación de un servidor web junto con los módulos de PHP necesarios para el correcto funcionamiento de la aplicación.

 

Descargamos z-push, lo descomprimimos y lo movemos al directorio final donde lo configuraremos después en Apache:

 

Configurar Apache

Tal como hemos dicho, el servidor web debe escuchar en el  puerto 443, securizado por SSL, por lo que vamos a realizar la correcta configuración de un VirtualHost para nuestro dominio. Para ello debemos realizar la carga del módulo SSL.

Creamos el fichero /etc/apache2/sites-available/010-zpush.conf donde crearemos nuestra configuración de VirtualHost:

 

Es muy importante que nos aseguremos de que no hemos escrito ningún fallo en la configuración. Para ello, ejecutaremos la comprobación de la sintaxis de la configuración de Apache, cargaremos el VirtualHost en la configuración final y haremos un reinicio del servicio

Tras esto, ya podremos ver a través del navegador cierta información si vamos a https://zpush.irontec.com/

z-push-web

Integrando Z-push con Zimbra

Como ya hemos dicho, Z-push nos permite la sincronización mediante ActiveSync, pero para que funcione con nuestro Zimbra necesitamos que ambos se comuniquen.  Este es el motivo por el que necesitamos el módulo ZimbraBackend. Para ello sólo hay que pinchar en el enlace anterior y descargarse en la última versión que aparece, en nuestro caso la versión 64. Descomprimimos y lo movemos al directorio final.

 

Configuración z-push

Ahora ya sólo nos falta realizar la configuración del Z-push y que haga uso del módulo zimbrabackend. Para ello es necesario editar el fichero /var/www/zpush/config.php, y asegurarse de dejar la configuración del siguiente modo:

Hay que crear un par de directorios para que z-push guarde los logs y su estado:

 

Configuración ZimbraBackend

Modificamos el fichero /var/www/zpush/backend/zimbra/config.php y nos aseguramos de que quede configurado contra la URL del Zimbra:

 

Configuración Zimbra

Debido a que z-push va a estar realizando peticiones SOAP al servidor Zimbra, tenemos que hacer que nuestro Zimbra no se tome dichas peticiones como un ataque, ya que en ese caso bloquearía la IP. Para ello debes cambiar la IP 66.77.88.99 por tu IP:

 

Configurar AutoDiscover

Modificamos el fichero autodiscover/config.php

 

Confirmar que funciona

La mejor manera para confirmar que todo está funcionando de manera correcta es hacerlo a través de nuestro móvil, pero antes de eso podemos hacer la prueba en el navegador. Nos pedirá el usuario (el e-mail) y la contraseña que tenemos en el Zimbra. Si la autenticación funciona, nos aparecerá lo siguiente:

z-push-web-zimbra

Tal como dice el mensaje, nuestro navegador “no sabe hablar” el protocolo ActiveSync. De ahí el mensaje. Esto significa que la comunicación con Zimbra es correcta, ya que funciona la autenticación, por lo que sólo quedaría probarlo en nuestro móvil.

 

Extra

Configurar logrotate

Dado que vamos a generar ficheros de logs, deberíamos realizar un rotado de los mismos para que no se llenen eternamente. Para ello crearemos el fichero /etc/logrotate.d/z-push con la siguiente configuración:

 

Para nota

Este post lo teníamos en la recámara desde hace tiempo, y desde entonces Z-Push se ha actualizado permitiendo instalar la aplicación a través de repositorio. Pero no os preocupéis. Podéis estar tranquilos porque en breves realizaremos otro post donde veremos cómo instalarlo y haremos alguna modificación en la configuración del backend de Zimbra. Hasta entonces, id probando esta configuración.



¿Te gusta este post? Es solo un ejemplo de cómo podemos ayudar a tu empresa...
Sobre Rubén Gómez Olivencia

De programador a administrador de sistemas... Algunos dirán que tengo personalidad múltiple developer-bofh, pero ¿quién no tiene taras mentales? :P

1 Comentario

¿Por qué no comentas tú también?


  • Hi Rubén, nice to see another z-push article in the world. I would like to mention that 2.2.9 is really outdated. If you really want to use 2.2.x you should go to 2.2.14 which is the last release of the 2.2. branch (it’s end of life).
    Ideally you should recommend people to install 2.3 and yes, you should do it from the repositories.
    Unfortunately until now we haven’t found a way to include the zimbra backend upstream, because then we could also distribute it as package via the repos.
    Anyhow, congrats on the article!
    Cheers,
    Sebastian

    Sebastian Hace 10 meses Responde


    • Hi Sebastian,

      I know that 2.2.9 version was outdated when we made this blog post, it was written months ago but released the last week.

      We will made another post with the latest version installed by packages, using the zimbra backend against Zimbra 8.7, but not sure when (probably in less than two months).

      I hope you liked the post, and I recommend you to see all the blog, because here in Irontec we have lots of hackers doing great stuff in differents areas like VoIP, PHP coding, mobile apps, system administration and networking.

      Thanks!

      Rubén Gómez Olivencia Hace 10 meses Responde


  • Hola Ruben, Excelente articulo, tengo el zpush configurado de la misma manera.

    pero una consulta… ya han probado directamente en el zimbra??

    osea tener configurado el zpush en el propio servidor zimbra sin montar un servidor paralelo.

    Saludos.

    Gonzalo Hace 8 meses Responde


    • Hola Gonzalo,

      En principio la instalación sería igual que lo comentado en este post, lo que pasa es que tanto Zimbra como Zpush requieren del puerto 443 para funcionar sobre SSL.

      La alternativa sería hacer que Zimbra no escuchase en el puerto 443, instalar el Apache para que escuche en el 443 y que haga de “proxy-pass” al backend de Zimbra. O directamente cambiar el puerto de Zimbra para que sea otro.

      Las alternativas son varias, por lo que depende del escenario en el que te encuentres habría que decidir cual es mejor.

      Rubén Gómez Olivencia Hace 8 meses Responde


  • Al final del post comentas esto

    “Este post lo teníamos en la recámara desde hace tiempo, y desde entonces Z-Push se ha actualizado permitiendo instalar la aplicación a través de repositorio. Pero no os preocupéis. Podéis estar tranquilos porque en breves realizaremos otro post donde veremos cómo instalarlo y haremos alguna modificación en la configuración del backend de Zimbra. Hasta entonces, id probando esta configuración.”

    Sabemos algo de ese post? sería muy interesante 🙂

    Salu2 y gracias por todo!

    Miguel Hace 8 meses Responde


    • Hola Miguel,

      Estamos “cocinando” un post con las últimas versiones de todo el entorno Zimbra+Mailscanner+Zpush. Prefiero no dar fechas, pero lo tendremos pronto :p

      Rubén Gómez Olivencia Hace 8 meses Responde


      • He retomado ahora el asunto del zimbra y me he acordado de este post.

        Parece que se está cocinando a baja temperatura… esta cocina moderna… jejeje

        Espero que algun dia se publique ese post! 🙂

        Salu2 y gracias!

        Miguel Hace 3 meses Responde


Queremos tu opinión :)