Configura Exchange ActiveSync en Zimbra con Z-push en 8 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 en un servidor independiente con Zimbra.

Prerrequisitos

  1. Ubuntu Server 22.04
  2. Zimbra Open Source 8.8.15 instalado y configurado

Paso 1: Instalar Apache y PHP

Primero se actualizará el sistema operativo:

apt update
apt full-upgrade

Antes de instalar PHP 8.2 se debe habilitar el repositorio para tener acceso a la última versión disponible:

apt install -y software-properties-common
add-apt-repository ppa:ondrej/php
apt update

Ahora se instala PHP y todas sus dependencias necesarias para el funcionamiento de Z-push

apt -y install apache2
apt -y install php8.2 php8.2-cli php8.2-soap php8.2-mbstring
apt -y install php8.2-imap php8.2-curl libawl-php php8.2-curl php8.2-xml 
apt -y install php8.2-intl php8.2-ldap
apt -y install libapache2-mod-php8.2

Paso 2: Instalación de Z-push

Para obtener la última versión de Z-push es necesario descargarlo desde github.

Si no se tiene instalado GIT en el servidor ejecutar este comando:

apt install git

Crear los directorios necesarios para Z-push

mkdir /var/lib/z-push /var/log/z-push
chmod 755 /var/lib/z-push /var/log/z-push

Clonar el repositorio:

git clone https://github.com/Z-Hub/Z-Push.git
cp -r Z-Push/src/* /var/lib/z-push

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 /var/lib/z-push/backend/zimbra
tar xf zpushzimbra.tar.gz --strip-components=1 -C /var/lib/z-push/backend/zimbra

Paso 4: Configuración de Z-push

Archivo de configuración de Z-push:

nano /var/lib/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);

El valor de MAX_EMBEDDED_SIZE debe ser igual o mayor al tamaño permitido en el servidor de correo electrónico.

Archivo de configuración de Zimbrabackend

nano /var/lib/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 755 -R /var/lib/z-push

Paso 5: Logs Z-push

Configurar la rotación del log de z-push para generar un archivo de log diario, comprimido y que se almacenen los logs de los últimos 30 días.

nano /etc/logrotate.d/z-push
/var/log/z-push/*.log {
 daily
 missingok
 rotate 30
 compress
 delaycompress
 notifempty
 }

Actualizar los permisos de escritura y el usuario dueño de los directorios de Z-push

chown www-data:www-data /var/lib/z-push /var/log/z-push
chmod 755 /var/lib/z-push /var/log/z-push

Paso 6: Habilitar SSL en Apache

Cambiaremos los puertos en Apache para que escuche en el puerto 443:

a2enmod ssl

Reiniciar apache:

service apache2 restart

Verificar el cambio de puertos:

ss -tlnp | grep apache2

Debería obtenerse un mensaje parecido a:

tcp6       0      0 :::80                 :::*                    LISTEN      12491/apache2
tcp6       0      0 :::443                 :::*                    LISTEN      12491/apache2

Habilitar los puertos en el firewall local

ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status

Paso 7: Configuración de Apache

Configurando el servidor virtual:

nano /etc/apache2/sites-available/z-push.conf
<VirtualHost *:443>
         ServerAdmin [email protected]
         ServerAlias exchange.guidocutipa.blog.bo
         DirectoryIndex index.php
         DocumentRoot /var/lib/z-push/
         Alias /Microsoft-Server-ActiveSync /var/lib/z-push/index.php
         SSLEngine On
         SSLCertificateFile /opt/zextras/ssl/carbonio/commercial/commercial.crt
         SSLCertificateKeyFile /opt/zextras/ssl/carbonio/commercial/commercial.key
         SSLCertificateChainFile /opt/zextras/ssl/carbonio/commercial/commercial.crt
  
         <Directory />
                Options FollowSymLinks
                AllowOverride All
                Require all granted
         </Directory>
         # Logfiles
         ErrorLog /var/log/apache2/error.log
         CustomLog /var/log/apache2/access.log combined 
 </VirtualHost>

Habilitar el nuevo host virtual y aplicar los cambios

a2ensite z-push.conf 
service apache2 restart 

Paso 8: Configuracion de Autodiscover

Configurando el archivo de configuración:

 nano /var/lib/z-push/autodiscover/config.php
// Servidor Z-push
define('ZPUSH_HOST', 'exchange.guidocutipa.blog.bo');

define('TIMEZONE', 'America/La_Paz');

define('BACKEND_PROVIDER', 'BackendZimbra'); 

Configurar el DNS

Crear un registro tipo A

Crear un Registro tipo SRV

Pruebas

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

https://exchange.guidocutipa.blog.bo/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

Entradas relacionadas

Deja un comentario