Servicio de correo electrónico (SMTP/POP3-IMAP4)

Zentyal usa como MTA para el envío/recepción de correos Postfix [7]. Así mismo, para el servicio de recepción de correos (POP3 e IMAP) Zentyal usa Dovecot [8]. Ambos con soporte para comunicación segura con SSL. Por otro lado, para obtener el correo de cuentas externas, Zentyal usa el programa Fetchmail [9] .

[7]Postfix: http://www.postfix.org
[8]Dovecot: http://www.dovecot.org
[9]Fetchmail: https://sourceforge.net/projects/fetchmail/

Configuración de un servidor SMTP/POP3-IMAP4 con Zentyal

Recibiendo y retransmitiendo correo

Para comprender la configuración de un sistema de correo, se debe distinguir entre recibir y retransmitir correo.

La recepción se realiza cuando el servidor acepta un mensaje de correo en el que uno de los destinatarios es una cuenta perteneciente a alguno de los dominios gestionados por el servidor. El correo puede ser recibido de cualquier cliente que pueda conectarse al servidor.

Sin embargo, la retransmisión ocurre cuando el servidor de correo recibe un mensaje de correo en el que ninguno de los destinatarios pertenecen a ninguno de sus dominios virtuales de correo gestionados, requiriendo por tanto su reenvío a otro servidor. La retransmisión de correo está restringida, de otra manera los spammers podrían usar el servidor para enviar spam en Internet.

Zentyal permite la retransmisión de correo en dos casos:

1. Usuarios autenticados.

2. Una dirección de origen que pertenezca a un objeto que tenga una política de retransmisión permitida.

Configuración general

En la sección Correo ‣ General ‣ Opciones del servidor de correo, se pueden configurar los parámetros generales del servicio de correo:

Configuración general del correo

Configuración general del correo

Smarthost al que enviar el correo:

Si se establece esta opción, Zentyal no enviará directamente sus mensajes sino que cada mensaje de correo recibido sera reenviado al smarthost sin almacenar ninguna copia. En este caso, Zentyal actuará como un intermediario entre el usuario que envía el correo y el servidor que enviará finalmente el mensaje.

En el campo se especifica la dirección IP o nombre de dominio del smarthost. También se puede establecer un puerto añadiendo el texto :[número de puerto] después de la dirección. El puerto por defecto es el puerto estándar SMTP, 25.

Autenticación del smarthost:
Determina si el smarthost requiere autenticación y si es así, provee un usuario y contraseña.
Nombre del servidor de correo:
Determina el nombre de correo del sistema. Será usado por el servicio de correo como la dirección local del sistema.
Dirección del postmaster:

La dirección del postmaster por defecto es un alias del superusuario (root), pero puede establecerse a cualquier dirección, perteneciente a los dominios virtuales de correo gestionados o no.

Esta cuenta está pensada para tener una manera estándar de contactar con el administrador de correo. Correos de notificación automáticos suelen usar postmaster como dirección de respuesta.

Tamaño máximo permitido del buzón de correo:
En esta opción se puede indicar un tamaño máximo en MiB para los buzones del usuario. Todo el correo que exceda el limite, será rechazado y el remitente recibirá una notificación. Esta opción puede sustituirse para cada usuario en la página Usuarios y Equipos -> Gestionar.
Tamaño máximo de mensaje aceptado:
Señala, si es necesario, el tamaño máximo de mensaje aceptado por el smarthost en MiB. Esta opción tendrá efecto sin importar la existencia o no de cualquier límite al tamaño del buzón de los usuarios.
Periodo de expiración para correos borrados:
Si esta opción está activada, el correo en la carpeta de papelera de los usuarios será borrado cuando su fecha sobrepase el límite de días establecido.
Periodo para correos de spam:
Esta opción se aplica de la misma manera que la opción anterior, pero con respecto a la carpeta de spam de los usuarios.

Para configurar la obtención de los mensajes, tenemos que ir a la sección Servicios de obtención de correo. Zentyal puede configurarse como servidor de POP3 y/o IMAP, además de sus versiones seguras POP3S y IMAPS. En esta sección también podemos activar los servicios para obtener correo de direcciones externas y ManageSieve, estos servicios se explicarán a partir de la sección de Fetchmail.

Configuración general de obtención de correo

Configuración general de obtención de correo

También se puede configurar Zentyal para que permita reenviar correo sin necesidad de autenticarse desde determinadas direcciones de red. Para ello, se permite una política de reenvío con objetos de red de Zentyal a través de Correo ‣ General ‣ Política de retransmisión para objetos de red basándonos en la dirección IP del cliente de correo origen. Si se permite el reenvío de correos desde dicho objeto, cualquier miembro de dicho objeto podrá enviar correos a través de Zentyal.

Política de retransmisión para objetos de red

Política de retransmisión para objetos de red

Advertencia

Hay que tener cuidado con usar una política de Open Relay, es decir, permitir reenviar correo desde cualquier lugar, ya que con alta probabilidad nuestro servidor de correo se convertirá en una fuente de spam.

Finalmente, se puede configurar el servidor de correo para que use algún filtro de contenidos para los mensajes [11]. Para ello, el servidor de filtrado debe recibir el correo en un puerto determinado y enviar el resultado a otro puerto donde el servidor de correo estará escuchando la respuesta. A través de Correo ‣ General ‣ Opciones de Filtrado de Correo, se puede seleccionar un filtro de correo personalizado o usar Zentyal como servidor de filtrado. En caso de que el módulo de filtrado de Zentyal esté instalado y activado, no necesitaremos configurar esta sección, ya que se utilizará automáticamente por el módulo de mail.

Opciones del filtrado de correo

Opciones del filtrado de correo

[11]En la sección Filtrado de correo electrónico se amplia este tema.

Creación de cuentas de correo a través de dominios virtuales

Para crear una cuenta de correo, se debe tener un usuario creado y un dominio virtual de correo. Desde Correo ‣ Dominios virtuales de correo, se pueden crear tantos dominios virtuales como queramos, asignando un nombre de dominio a las cuentas de correo de los usuarios de Zentyal. Adicionalmente, es posible crear alias de un dominio virtual de tal manera que enviar un correo al dominio virtual o a su alias sea indiferente.

Dominios virtuales de correo

Dominios virtuales de correo

Para crear cuentas de correo, lo haremos de manera análoga a la compartición de ficheros. Acudimos a Usuarios y Equipos ‣ Gestionar, seleccionaremos un usuario y añadiremos una cuenta de correo. Se pueden crear alias para asignar más de una dirección de correo a un mismo usuario. Independientemente de los alias que se usen, los mensajes se almacenarán todos en un único buzón.

Configuración del correo para un usuario

Configuración del correo para un usuario

Hay que tener en cuenta que se puede decidir si se desea que a un usuario se le cree automáticamente una cuenta de correo cuando se le da de alta. Este comportamiento puede ser configurado en Usuarios y Equipos -> Plantilla de Usuario, Cuenta de correo.

Configuración para la creación automática de cuentas de correo

Configuración para la creación automática de cuentas de correo

De la misma manera, se pueden crear alias para grupos. Los mensajes recibidos por estos alias son enviados a todos los usuarios del grupo con cuenta de correo. Los alias de grupo son creados a través de Usuarios y Equipos ‣ Gestionar, seleccionar el grupo y Crear un alias de cuenta de correo al grupo. Los alias de grupo están sólo disponibles cuando, al menos, un usuario del grupo tiene cuenta de correo.

Finalmente, es posible definir alias hacia cuentas externas, esto es, cuentas de correo en dominios no gestionados por el servidor. El correo enviado a un alias será retransmitido a la correspondiente cuenta externa. Esta clase de alias se establecen por dominio virtual de correo, no requieren la existencia de ninguna cuenta de correo y pueden establecerse en Correo ‣ Dominios Virtuales ‣ Alias a cuentas externas.

Configuración de un alias a una cuenta externa

Configuración de un alias a una cuenta externa

Recibir correos desde cuentas externas con Fetchmail

En el caso de que nuestros usuarios tengan cuentas de correo externas que quieran mantener, por ejemplo de algun trabajo anterior, en Zentyal existe una opción para usar Fetchmail [12] como cliente de correo adicional para los usuarios de dominio.

La opción para activar Fetchmail en Zentyal está disponible a través de Correo ‣ General ‣ Opciones del servidor de correo. En el apartado de Servicios de obtención de correo, en la parte inferior se puede seleccionar la opción Recuperación de correo de cuentas externas.

Una vez activada la opción, se guardan los cambios, y después se configura la cuenta externa desde Usuarios y Equipos ‣ Gestionar. Se selecciona el usuario y al final de la configuración, en Características de la cuenta de correo, se incluyen los datos de la cuenta externa:

Recibir correos desde cuentas externas

Recibir correos desde cuentas externas

[12]Fetchmail: https://sourceforge.net/projects/fetchmail/

Cliente de Webmail

Además de los accesos con el cliente nativo, puede resultar de gran utilidad contar con una plataforma basada en web desde donde poder acceder a todos nuestros correos electrónicos, calendarios y libretas de direcciones. Para este propósito, Zentyal integra SOGo, una solución de Groupware de código abierto [16].

Para utilizar este módulo tan solo necesitaremos instalarlo y habilitarlo. Una vez hayamos habilitado el módulo, podemos acceder a nuestra plataforma web usando la URL ‘https://<FQDN_del_servidor>/SOGo/‘ .

Accediendo a esta URL, podremos ver la pantalla principal de login, desde la que podemos escoger también el idioma de la interfaz para este usuario.

Pantalla de login

Pantalla de login

En primer lugar se nos mostrará la sección de correo electrónico.

Gestión del correo electrónico

Gestión del correo electrónico

Usando los iconos que tenemos en la parte superior derecha de la interfaz, podemos acceder a la interfaz de calendarios.

Calendarios compartidos, eventos y tareas

Calendarios compartidos, eventos y tareas

Así como las libretas de contactos, desde donde podemos consultar la lista global (GAL, Global Address List). Esta contiene todos los usuarios registrados en nuestro dominio, nuestras listas personales de contactos y la opción de crear listas de distribución para el correo electrónico

Contactos y listas de distribución

Contactos y listas de distribución

[16]http://sogo.nu

Soporte ActiveSync®

El protocolo ActiveSync® es ampliamente utilizado para sincronizar dispositivos móviles y también en las útimas versiones de Microsoft® Outlook.

Para activar el soporte ActiveSync® en Zentyal, es necesario tener instalado el módulo de SOGo Webmail ya que este mismo software (SOGo) es el encargado de proporcionar la implementación del protocolo por medio de su paquete sogo-activesync.

Tras haber instalado y habilitado el módulo, podremos activar la opción de ActiveSync® desde Correo ‣ ActiveSync, en la interfaz de Zentyal.

Habilitando ActiveSync®

Habilitando ActiveSync®

Los dispositivos accederán a ActiveSync® a través del servidor web de Zentyal, usando los puertos 80 y 443 (con SSL) por defecto.

Securización del servidor de correo

Debido a la importancia del servicio de correo hoy en día y a los constantes ataques a los que se ve expuesto este servicio, es ‘obligatorio’ la implementación del protocolo SPF [17] así como del mecanismo de autenticacón DKIM [18] para aumentar la seguridad del servicio de correo. En la siguiente sección vamos a detallar cómo configurar el registro SPF a nuestro módulo de DNS y también cómo implementar DKIM en el Servidor Zentyal.

[17]SPF: https://es.wikipedia.org/wiki/Sender_Policy_Framework
[18]DKIM: https://es.wikipedia.org/wiki/DomainKeys_Identified_Mail

SPF

Para configurar el protocolo SPF en el servidor Zentyal, primero deberemos generar el registro TXT que indique quién tiene permitido enviar correos electrónicos con nuestro nombre. Para ello, recomendamos usar una de las múltiples páginas webs que mediante formularios nos ayudan a generar el registro TXT.

Truco

Una página web recomendada para la generación del registro DNS es SPFwizard, aquí [19] tenemos el enlace.

Un ejemplo de un registro DNS de tipo TXT generado:

zentyal-domain.lan.  IN TXT
  "v=spf1 mx a ip4:192.168.6.1 a:zentyal.zentyal-domain.lan -all"

Una vez tenemos el registro DNS para la implementación del protocolo SPF, tenemos que añadirlo en nuestro módulo de DNS.

Registro SPF TXT

Registro SPF TXT

Por último, para validar que el registro se haya añadido correctamente al dominio, una de las formas más recomendables es hacerlo a través de la página web MXtoolbox [20]

[19]SPFwizard: https://www.spfwizard.net/
[20]MXtoolbox SPF: https://mxtoolbox.com/spf.aspx

DKIM

Para la implementación del mecanismo de autenticación, vamos a usar el software de terceros OpenDKIM. A continuación se indican los pasos a realizar para desplegar dicho mecanismo.

1. Instalamos los paquetes necesarios:

sudo apt-get install -y opendkim opendkim-tools

2. Creamos el directorio donde se almacenarán las claves:

sudo mkdir -vp /etc/opendkim/keys

3. Generamos las claves:

sudo opendkim-genkey -s mail -d zentyal-domain.lan -D /etc/opendkim/keys

4. Ajustamos los permisos:

sudo chown -R opendkim:opendkim /etc/opendkim/
sudo chmod 0640 /etc/opendkim/keys/*.private

5. Creamos el archivo de configuración /etc/opendkim/TrustedHosts, donde indicamos los hosts confiables:

127.0.0.1
localhost
192.168.6.0/24
*.zentyal-domain.lan

6. A continuación, creamos el archivo de configuración /etc/opendkim/SigningTable que contendrá el dominio y subdominios que serán firmados por OpenDKIM:

*@zentyal-domain.lan mail

7. Después tenemos que indicar el nombre del selector así como la localización de la clave privada para firmar en el archivo de configuración /etc/opendkim/KeyTable:

mail zentyal-domain.lan:mail:/etc/opendkim/keys/mail.private

8. Una vez que hayamos terminado de definir los archivos de configuración mencionados, tenemos que crear el archivo de configuración principal de OpenDKIM ubicado en /etc/opendkim.conf:

Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
UserID                  opendkim:opendkim
Socket                  inet:8891@127.0.0.1
SignatureAlgorithm      rsa-sha256
AutoRestart             Yes
AutoRestartRate         10/1h
Syslog                  yes
SyslogSuccess           yes
LogWhy                  Yes
UMask                   002
OversignHeaders         From
Canonicalization        relaxed/simple

ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
Signingtable            refile:/etc/opendkim/SigningTable

9. Lo siguiente será establecer el puerto y la dirección de escucha de OpenDKIM en el archivo de configuración /etc/default/opendkim:

SOCKET="inet:8891@127.0.0.1"

10. Por último en lo que configuración de OpenDKIM se refiere, tenemos que iniciar y habilitar su servicio:

sudo systemctl restart opendkim
sudo systemctl enable opendkim

11. A continuación, tenemos que añadir en la plantilla de configuración /usr/share/zentyal/stubs/mail/main.cf.mas del módulo de Correo los siguientes parámetros de configuración para poder usar OpenDKIM:

## DKIM Configuration
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:127.0.0.1:8891

Advertencia

Hay que leer detenidamente la documentación de Zentyal sobre los stubs [21] para hacer el cambio persistente ante actualizaciones del módulo.

12. Reiniciamos el módulo de Correo para aplicar los cambios:

sudo zs mail restart

13. Después tenemos que añadir el registro TXT en el módulo DNS con el contenido definido en e archivo de configuración ubicado en /etc/opendkim/keys/mail.txt:

mail._domainkey   IN      TXT     ( "v=DKIM1; h=sha256; k=rsa; "
     "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyn66wkANz7H
 Gd2KvNadQnPRH7g4uU2Ur54VBxG8VFJJcHNCj/D3c8gAqh6kb/B8ZVQ5o
 G7+1w7KLZJUKwYhPUaYZ3t8CUQOI1+klhSAJGOQRqpUkAGQcEBhSuQFBA
 R057j/UZrUcwBZTONp5LrhqLWw0duC2G8UaWDdxzIyugYplzZUmtzMqzx
 4jo9sjH3cRc/1kNRg7lzzvay" "Q/PxyxpEFGxsx8A6AJe0lZBbntSgXt
 d3ycnVmgIlX1nn9FHJkA8/xrFcN4tyu5GHGv/zPzC9a6ah73AKNL1P+u4
 yqGGBrLNkJ7ERLmmLuIOAdNisBKj9u93cT9ba7V1LD39xHiwwIDAQAB" )
; ----- DKIM key mail for zentyal-domain.lan

14. A continuación el comando [22] para añadir este registro concreto:

samba-tool dns add zentyal.zentyal-domain.lan zentyal-domain.lan \
mail._domainkey.zentyal-domain.lan TXT '"v=DKIM1; h=sha256; k=rsa; "
  "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyn66wkANz7HGd2KvNad
   QnPRH7g4uU2Ur54VBxG8VFJJcHNCj/D3c8gAqh6kb/B8ZVQ5oG7+1w7KLZJUKwYhP
   UaYZ3t8CUQOI1+klhSAJGOQRqpUkAGQcEBhSuQFBAR057j/UZrUcwBZTONp5LrhqL
   Ww0duC2G8UaWDdxzIyugYplzZUmtzMqzx4jo9sjH3cRc/1kNRg7lzzvay" "Q/Pxy
   xpEFGxsx8A6AJe0lZBbntSgXtd3ycnVmgIlX1nn9FHJkA8/xrFcN4tyu5GHGv/zPz
   C9a6ah73AKNL1P+u4yqGGBrLNkJ7ERLmmLuIOAdNisBKj9u93cT9ba7V1LD39xHiw
   wIDAQAB"'

Advertencia

Hay que prestar especial atención al contenido del archivo antes de añadir el registro TXT.

15. Por último, para validar que el registro se haya añadido correctamente al dominio, una de las formas más recomendables es hacerlo a través de la página web MXtoolbox [23]. Al enviar un correo, deberíamos de poder ver en la cabecera del mensaje un extracto similar al siguiente:

Cabecera del correo vista desde SOGo con la firma del correo con DKIM

Cabecera del correo vista desde SOGo con la firma del correo con DKIM

[21]Stubs: https://doc.zentyal.org/es/appendix-c.html#stubs
[22]Administración DNS: https://wiki.samba.org/index.php/DNS_Administration
[23]Mxtoolbox DKIM: https://mxtoolbox.com/dkim.aspx