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, 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 The Postfix Home Page http://www.postfix.org .
[8]Dovecot Secure IMAP and POP3 Server 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 dominio 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

_images/mail-general2.png

Configuración general de obtención de 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 :[numero 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.

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.

[11]En la sección Filtrado de correo electrónico se amplia este tema.
_images/mail-03-filters.png

Opciones del filtrado de correo

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.

_images/mail-05-create-account.png

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.

Dominios virtuales de correo

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

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.

Dominios virtuales de correo

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 Recibir correo electrónico desde 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]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 4.0, la última versión de la solución de Open Source Groupware [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.

_images/sogo-login.png

Pantalla de login

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

_images/sogo-mail.png

Gestión de los correo electrónico

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

_images/sogo-calendar.png

Calendarios compartidos, eventos y tareas

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

_images/sogo-addressbook.png

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.

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.

_images/sogo-activesync.png

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]SFP 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áginas web recomendada para la generación del registro DNS es spfwizard [19]

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.

_images/spf_es_txt.png

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

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

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

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

    mail._domainkey   IN      TXT     ( "v=DKIM1; h=sha256; k=rsa; "
        "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyn66wkANz7HGd2KvNadQnPRH7g4uU2Ur54VBxG8VFJJcHNCj/D3c8gAqh6kb/B8ZVQ5oG7+1w7KLZJUKwYhPUaYZ3t8CUQOI1+klhSAJGOQRqpUkAGQcEBhSuQFBAR057j/UZrUcwBZTONp5LrhqLWw0duC2G8UaWDdxzIyugYplzZUmtzMqzx4jo9sjH3cRc/1kNRg7lzzvay"
        "Q/PxyxpEFGxsx8A6AJe0lZBbntSgXtd3ycnVmgIlX1nn9FHJkA8/xrFcN4tyu5GHGv/zPzC9a6ah73AKNL1P+u4yqGGBrLNkJ7ERLmmLuIOAdNisBKj9u93cT9ba7V1LD39xHiwwIDAQAB" )  ; ----- DKIM key mail for zentyal-domain.lan
    

Y 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=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyn66wkANz7HGd2KvNadQnPRH7g4uU2Ur54VBxG8VFJJcHNCj/D3c8gAqh6kb/B8ZVQ5oG7+1w7KLZJUKwYhPUaYZ3t8CUQOI1+klhSAJGOQRqpUkAGQcEBhSuQFBAR057j/UZrUcwBZTONp5LrhqLWw0duC2G8UaWDdxzIyugYplzZUmtzMqzx4jo9sjH3cRc/1kNRg7lzzvay" "Q/PxyxpEFGxsx8A6AJe0lZBbntSgXtd3ycnVmgIlX1nn9FHJkA8/xrFcN4tyu5GHGv/zPzC9a6ah73AKNL1P+u4yqGGBrLNkJ7ERLmmLuIOAdNisBKj9u93cT9ba7V1LD39xHiwwIDAQAB"'

Advertencia

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

  1. 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:
_images/dkim_firma.png

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]Samba-tool https://wiki.samba.org/index.php/DNS_Administration#Administering_DNS_on_Linux.2FUnix_with_samba-tool
[23]Mxtoolbox DKIM https://mxtoolbox.com/dkim.aspx