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
- Ubuntu Server 16.04
- 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 webmaster@guidocutipa.blog.bo
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:
Para Android:
Referencias
https://wiki.z-hub.io/display/ZP/Installation