Servidor de correo – Webmail Rainloop en Apache2 (parte 12)

Esta es una entrada dentro de la serie para la instalación de un servidor de correo completo. Índice completo de contenidos pincha aquí.


Como Webmail se ha escogido Rainloop, un desarrollo realizado en PHP muy estable, configurable, con multitud de plugins, permite configurar cuentas de distintos servidores de correo vía IMAP, acceso a listado de contactos con sincronización vía CardDav en un servidor externo, soporte para IMAP_QUOTA y SIEVE, con soporte para la gestión de contraseñas en multitud de Backends (MySQL, LDAP, Radius, …) y codificación de credenciales (MD5, SHA, …). A día de hoy una de las mejores opciones OpenSource, aunque tiene una licencia de pago en donde ofrecen más personalización y soporte.


Instalación

Creamos la base de datos y el usuario de acceso a esta, y además le damos permisos para cambiar contraseñas para los usuarios desde el Webmail:

MariaDB [(none)]> create database rainloopdb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON rainloopdb.* TO 'usuariopararainloop'@'127.0.0.1' IDENTIFIED BY 'rainloopsupersecretpasswd';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON mailserver.virtual_users TO 'usuariopararainloop'@'127.0.0.1' IDENTIFIED BY 'rainloopsupersecretpasswd';
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Instalamos los paquetes necesarios:

apt-get install curl php7.0 php7.0-mysql php7.0-curl php7.0-json php7.0-cgi libapache2-mod-php7.0 php7.0-xmlrpc php7.0-gd php7.0-mbstring php7.0-common php7.0-xmlrpc php7.0-soap php7.0-xml php7.0-intl php7.0-cli php7.0-ldap php7.0-zip php7.0-readline php7.0-imap php7.0-tidy php7.0-recode php7.0-sqlite3

Creamos el directorio para el Webmail, aunque ya lo tenemos de cuando generamos el certificado SSL con Let’s Ecrypt, ver enlace pinchando aquí:

mkdir /var/www/html/email.tiraquelibras.com

Vamos al directorio y descargamos la última versión de Rainloop con el comando:

root@xxx:/# cd /var/www/html/email.tiraquelibras.com

root@xxx:/var/www/html/email.tiraquelibras.com# sudo curl -s http://repository.rainloop.net/installer.php | sudo php
#!/usr/bin/env php


       [RainLoop Webmail Installer]


 * Connecting to repository ...
 * Downloading package ...
 * Complete downloading!
 * Installing package ...
 * Complete installing!

 * [Success] Installation is finished!

Cambiamos los permisos del directorio web:

sudo chown -R www-data:www-data /var/www/html/email.tiraquelibras.com

sudo chmod -R 755 /var/www/html/email.tiraquelibras.com

Ya teníamos el directorio de Apache creado, pero lo completamos /etc/apache2/sites-available/email.tiraquelibras.com-le-ssl.conf, ver enlace pinchando aquí:

...
<Directory /var/www/html/email.tiraquelibras.com/>
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
    Require all granted
</Directory>
...

Deshabilitamos el VirtualHost por defecto de Apache con:

sudo a2dissite 000-default.conf

Y el dominio destinado a nuestro Webmail:

sudo a2ensite email.tiraquelibras.com.conf

Habilitamos el módulo de Apache rewrite:

sudo a2enmod rewrite

Reiniciamos:

sudo systemctl restart apache2

Accedemos a la administración del Webmail desde la URL https://email.tiraquelibras.com/?admin

Credenciales por defecto

  • Usuario admin
  • Password 12345

Se nos muestra un mensaje de advertencia para cambiar la contraseña por defecto del usuario Admin y que debemos de bloquear el acceso al directorio data:

RAinloop datafolder RainLoop data folder is accessible. Please configure your web server to hide the data folder from external access. Read more here: https://www.rainloop.net/docs/installation

Para solucionar este mensaje de advertencia debemos de crear un archivo .htaccess dentro del directorio data con el siguiente contenido:

Deny from all

Para finalizar, nos descargamos el pluging postfixadmin-change-password para que los usuarios puedan cambiar sus credenciales de acceso desde el webmail. Ejecutamos el siguiente comando desde el directorio

wget https://github.com/RainLoop/rainloop-webmail/blob/master/plugins/postfixadmin-change-password/ChangePasswordPostfixAdminDriver.php
wget https://github.com/RainLoop/rainloop-webmail/blob/master/plugins/postfixadmin-change-password/LICENSE
wget https://github.com/RainLoop/rainloop-webmail/blob/master/plugins/postfixadmin-change-password/README
wget https://github.com/RainLoop/rainloop-webmail/blob/master/plugins/postfixadmin-change-password/VERSION
wget https://github.com/RainLoop/rainloop-webmail/blob/master/plugins/postfixadmin-change-password/index.php
wget https://github.com/RainLoop/rainloop-webmail/blob/master/plugins/postfixadmin-change-password/md5crypt.php

y le cambiamos los permisos para que pueda gestionarlo el usuario de Apache:

chown ww-data: /var/www/html/email.tiraquelibras.com/data/_data_/_default_/plugins/postfixadmin-change-password -R

chmod 755 /var/www/html/email.tiraquelibras.com/data/_data_/_default_/plugins/postfixadmin-change-password -R

 


Configuración

Vamos configurando a nuestro gusto, navegando por las opciones del menú de administración.

Dominios

Debemos de crear cada dominio que va a utilizar el Webmail, bien pertenezca a nuestro servidor de correo o a otro distinto, y habilitarlo:

Si el dominio no existiera o si estuviera pero sin estar habilitado, el acceso al Webmail para un buzón de este dominio fallaría.

Accedemos a este, pinchando sobre el nombre del dominio, para indicar los servidores de correo entrante, saliente y SIEVE.

POP/IMAP:

Pulsamos el botón Probar y nos indica si hubo algún error en la configuración o no.

SIEVE, vamos a la sección:

Y configuramos los datos del servidor SIEVE:

Volvemos a pulsar en el botón Probar para confirmar que la comunicación con el servidor SIEVE funciona correctamente o no.

Contactos

Configuramos los datos del servidor para la información de contactos. Probamos con el botón Probar:

El Webmail nos permite habilitar la sincronización de contactos desde un servidor externos vía CardDav tipo Nextcloud, Owncloud, si lo tuviéramos.

Seguridad

Nos permite cambiar la contraseña de administrador por defecto, habilitar el dobre factor de autenticación y la codificación con PGP. En esta entrada no se detallará la configuración de estas dos opciones, pero es muy sencillo e intuitivo. Se recomienda encarecidamente habilitar al menos el doble factor como medida de seguridad adicional para evitar inicios de sesión no legítimos.

No recomiendo habilitar la verificación del certificado SSL, ya que es muy inestable y puede afectar al acceso al buzón.

Paquetes

Habilitamos los siguientes paquetes:

Recomendamos habilitar y configurar reCaptcha para ofrecer seguridad en el inicio de sesión, White list y Black list para permitir o denegar acceso a dominios y/o buzones concretos, y X-Originating-IP para agregar la cabecera de la IP que se conecta al Webmail para realizar el envío.

Complementos

Configuramos y habilitamos cada paquete habilitado:

Black list

Indicamos los dominios y/o buzones a los que queramos denegar el login en el Webmail.

White list

Lo mismo que el anterior, pero en este caso lo permitidos. ES OBLIGATORIO DAR DE ALTA CADA DOMINIO QUE TENGAMOS EN NUESTRO SERVIDOR DE CORREO, de lo contrario no funcionará.

Postfixadmin-change-password

Configuramos los datos del usuario que creamos al principio de esta entrada para el acceso a la base de datos de MySQL, habilitándolo para todos los usuarios con el Wildcard *:

Recaptcha

Configura los datos del Site key y Secret key de la cuenta de Google reCaptcha que tengas:

De esta forma aparecerá el reCaptcha en el formulario de login:

Acerca

En esta sección podemos consultar la versión actual de nuestro Webmail y si hubiera alguna actualización pendiente nos aparecerá el botón para poder hacerlo, previo backup del directorio y base de datos.


Índice general pincha aquí.