Cómo configurar Exchange ActiveSync para Zimbra: Guía de configuración de Z-push en 8 simples pasos

En muchas ocasiones los que tenemos instalado un servidor de correo electrónico Zimbra nos realizamos las siguientes preguntas:

¿Cómo sincronizar el calendario de Zimbra con Outlook? 
¿Cómo sincronizar los contactos de Zimbra con Outlook?
¿Cómo sincronizar el calendario y contactos de Zimbra con Android?

La respuesta a estas interrogantes es Z-push. Una forma sencilla de configurar es instalar Z-push en el mismo servidor donde esté instalado Zimbra. Sin embargo, será necesario instalar un plugin adicional para conectarlo con Zimbra.

Otro beneficio de instalar Z-push es que todo se realiza en el puerto 443, por lo tanto ya no es necesario abrir en nuestro firewall otros puertos de protocolos como POP3, SMTP e IMAP.

Z-Push es una implementación FOSS (Free and Open-Source Software) del protocolo Microsoft Exchange ActiveSync que se utiliza para sincronizar el correo electrónico, los contactos personales y otros elementos entre un servidor central y un dispositivo móvil.

https://en.wikipedia.org/wiki/Z-push

A continuación se detallan 8 simples pasos para configurar Z-push con Zimbra.

Prerrequisitos

  1. Ubuntu Server 16.04
  2. Zimbra Open Source 8.8.X instalado y configurado

Paso 1: Repositorio

Para las últimas versiones de Z-push es necesario adicionar el repositorio correspondiente:

# nano /etc/apt/sources.list

Adicionar al final del archivo lo siguiente:

deb http://repo.z-hub.io/z-push:/final/Ubuntu_16.04/ /

También será necesario descargar la llave correspondiente:

# wget -qO - http://repo.z-hub.io/z-push:/final/Ubuntu_16.04/Release.key | sudo apt-key add -

Para otras distribuciones por favor consulten el siguiente enlace: https://wiki.z-hub.io/display/ZP/Installation

Paso 2: Instalación

# apt-get update

Primero se instalará Apache:

# apt-get install apache2
# apt-get install php-curl
# apt-get install libapache2-mod-php

Después se instalarán los paquetes de z-push:

# apt-get install z-push-common
# apt-get install z-push-backend-combined z-push-ipc-memcached z-push-ipc-sharedmemory

Paso 3: Plugin Zimbrabackend

Descargar el plugin desde la web oficial https://sourceforge.net/projects/zimbrabackend/

# wget -O zpushzimbra.tar.gz https://sourceforge.net/projects/zimbrabackend/files/latest/download

Extraer el contenido del archivo descargado en la carpeta backend:

# mkdir -p /usr/share/z-push/backend/zimbra
# tar xf zpushzimbra.tar.gz --strip-components=1 -C /usr/share/z-push/backend/zimbra

Paso 4: Configuración de Z-push

Archivo de configuración de Z-push:

# nano /usr/share/z-push/config.php

Modificar los siguientes valores:

define('TIMEZONE', 'America/La_Paz');
define('USE_CUSTOM_REMOTE_IP_HEADER', 'HTTP_X_REAL_IP');
define('BACKEND_PROVIDER', 'BackendZimbra');
define('LOGLEVEL', LOGLEVEL_ERROR);
define('MAX_EMBEDDED_SIZE', 83886080);

Archivo de configuración de Zimbrabackend

# nano /usr/share/z-push/backend/zimbra/config.php

Modificar los siguientes valores:

define('ZIMBRA_URL', 'https://127.0.0.1');
define('ZIMBRA_SSL_VERIFYPEER', false);
define('ZIMBRA_SSL_VERIFYHOST', false);
define('ZIMBRA_DISABLE_URL_OVERRIDE', true);
define('ZIMBRA_USER_DIR', 'zimbra');
define('ZIMBRA_DISABLE_MULTI_CALENDARS',true);
define('ZIMBRA_IGNORE_EMAILED_CONTACTS',true);
define('ZIMBRA_LOCAL_CACHE', true);
define('ZIMBRA_DEBUG',false);

Modificar los permisos de acceso de la carpeta /var/lib/z-push

# chmod 777 -R /var/lib/z-push

Paso 5: Logs Z-push

Configurar la rotación del log de z-push

nano /etc/logrotate.d/z-push

/var/log/z-push/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
}

Paso 6: Configuracion de Apache

Configurando el servidor virtual:

# nano /etc/apache2/sites-available/z-push.conf
<VirtualHost *:9443>
        ServerAdmin [email protected]
        ServerAlias correo.guidocutipa.blog.bo
        DirectoryIndex index.php
        DocumentRoot /usr/share/z-push/
        Alias /Microsoft-Server-ActiveSync /usr/share/z-push/index.php
        SSLEngine On
        SSLCertificateFile /opt/zimbra/ssl/zimbra/commercial/commercial.crt
        SSLCertificateKeyFile /opt/zimbra/ssl/zimbra/commercial/commercial.key
        SSLCertificateChainFile /opt/zimbra/ssl/zimbra/commercial/commercial.crt
 
        <Directory />
                AllowOverride All
        </Directory>

        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/apache2/error.log
        CustomLog /var/log/apache2/access.log combined
</VirtualHost>
# a2ensite z-push.conf 
# service apache2 restart

En el caso de no contar con un certificado comenrcial instalado en Zimbra, será necesario crear un certificado autofirmado.

https://guidocutipa.blog.bo/certificado-ssl-autofirmado-apache/

Paso 7: Prevenir conflictos de puerto con el Proxy de Zimbra

Como el proxy de Zimbra ocupa los puertos 80 y 443, cambiaremos los puertos en Apache para que escuche puertos diferentes:

# a2enmod ssl
# nano /etc/apache2/ports.conf

Configuración actual:

 Listen 80
<IfModule ssl_module>
        Listen 443
</IfModule>
 
<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

Nueva Configuración:

 Listen 9080
<IfModule ssl_module>
        Listen 9443
</IfModule>
 
<IfModule mod_gnutls.c>
        Listen 9443
</IfModule>

Reiniciar apache:

# service apache2 restart

Verificar el cambio de puertos:

# netstat -tlnp

Debería obtenerse un mensaje parecido a:

tcp6       0      0 :::9080                 :::*                    LISTEN      12491/apache2
tcp6 0 0 :::9443 :::* LISTEN 12491/apache2

Paso 8: Inyectar en el proxy de Zimbra el alias /Microsoft-Server-ActiveSync

Como ActiveSync usa el Alias /Microsoft-Server-ActiveSync tenemos que modificar el proxy de Zimbra.

# nano /opt/zimbra/conf/nginx/templates/nginx.conf.web.https.default.template

Configuración actual:

# Proxy to Zimbra Upstream
proxy_pass ${web.upstream.target};
proxy_read_timeout ${web.upstream.polling.timeout};
proxy_buffering off;
# For audit
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Nueva configuración:

# Z-PUSH start
proxy_pass https://correo.guidocutipa.blog.bo:9443;
proxy_read_timeout 3600;
proxy_buffering off;
proxy_set_header X-Forwarded-For $remote_addr;
# Z-PUSH end

Aplicar la configuración:

# sudo -u zimbra /opt/zimbra/bin/zmconfigdctl restart
# sudo -u zimbra /opt/zimbra/bin/zmproxyctl restart

Pruebas

Podemos acceder a la siguiente dirección para verificar que se realice la autenticación de un usuario de zimbra:

https://(FQDN del servidor de correos zimbra)/Microsoft-Server-ActiveSync

Finalmente podremos probar la sincronización de: Correo, Agenda, Contactos, etc. en nuestro cliente Outlook o nuestros dispositivos móviles.

Para Outlook 2016:

Outlook 2016

Para Android:

Cliente de correo electrónico de Android

Referencias

https://wiki.z-hub.io/display/ZP/Installation


Discover more from Blog personal de Guido Cutipa

Subscribe to get the latest posts sent to your email.

Discover more from Blog personal de Guido Cutipa

Subscribe now to keep reading and get access to the full archive.

Continue reading