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


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