Tabla de Contenidos
211.1 Using e-mail servers
Pertenece a Topic 211: E-Mail Services
- Weight: 4
- Description: Candidates should be able to manage an e-mail server, including the configuration of e-mail aliases, e-mail quotas and virtual e-mail domains. This objective includes configuring internal e-mail relays and monitoring e-mail servers.
- Key Knowledge Areas:
- Configuration files for postfix
- Basic TLS configuration for postfix
- Basic knowledge of the SMTP protocol
- Awareness of sendmail and exim
- Terms and Utilities:
- Configuration files and commands for postfix
/etc/postfix//var/spool/postfix/- sendmail emulation layer commands
/etc/aliases- mail-related logs in
/var/log/
Un servidor de correo electrónico es de las cosas más complejas de poner a funcionar en Linux. Este tipo de servicios tienen un montón de servicios funcionando a la vez, comunicándose entre ellos. Además de configurar sistemas de seguridad (antispam), métodos de autenticación… Todo ello hace que la configuración del correo electrónico funcionando al 100 % sea algo complejo. En la certificación LPIC2 se ve una configuración general, sin profundizar demasiado.
MTA
Los MTA (Mail Transfer Agent) son los servidores que se encargan del envío y la recepción de correo electrónico en un determinado dominio.
Cada servidor de correo público es un MTA y todos los MTA se comunican entre ellos mediante el protocolo SMTP (el que permite enviar correos).
Por defecto, toda máquina Linux lleva un MTA instalado, generalmente en Debian suele ser exim. El MTA interno sirve para notificaciones internas del sistema.
Protocolo SMTP
El protocolo SMTP (Simple Mail Transfer Protocol) se utiliza para transmitir correos electrónicos a servidores de correo.
Utiliza el puerto 25/TCP.
SMTP puede utilizarse desde un cliente de correo (Outlook, Thunderbird, etc.) para enviar un correo electrónico a su servidor de correo, pero también entre los servidores de correo del emisor y los del destinatario.
La lectura del correo puede realizarse directamente en el servidor o a través de un MDA (Mail Delivery Agent) con un protocolo de recepción de correo (POP o IMAP).
Tipos de MTAs
- Sendmail: es el más antiguo y puede que el más famoso MTA utilizado en Internet de la historia. Es uno de los MTA más potentes y rápidos, pero difícil de configurar. Su fichero de configuración era
/etc/mail/sendmail.conf. - Exim: es un MTA relativamente reciente (1995) que tiene como objetivos la robustez y la flexibilidad. Es el MTA ofrecido por defecto en las distribuciones Debian.
- Postfix: es el MTA opensource más popular y el más fácil de configurar. El que veremos para la certificación.
Postfix
Antes de hablar de la configuración de un servidor Postfix, debemos instalarlo. Dicho proceso podemos realizarlo utilizando la paquetería existente, dependiendo de la distribución:
Debian:
apt-get install postfix
Durante la instalación, se lanzará un asistente para configurar el servidor Postfix. Dentro de los tipos de configuración, smarthost es para usar otro servidor por si nuestro ISP o nuestra propia máquina tiene bloqueado el puerto 25. Elegimos la opción Sin configuración.
Red Hat:
yum install postfix
Al instalar postfix, se eliminará del sistema todo lo relacionado con exim ya que no pueden estar conviviendo dos MTAs en la misma máquina.
Gestión de cuentas
Un MTA tiene que gestionar las cuentas de correo de su dominio, lo que implica que el servidor tiene que gestionar la lista de usuarios que tienen una cuenta de correo en el dominio.
Los MTA generalmente son capaces de usar bases de datos de usuarios de distinto tipo: archivos locales de cuentas locales, directorio ldap, bases de datos MySQL, etc.
Postfix por defecto utiliza directamente las cuentas de usuario del sistema Linux. Por ejemplo, si tenemos una cuenta llamada pepito, este tendrá un correo asociado del tipo pepito@dominio.maquina.
Gestión de alias
La base de datos de cuentas de usuario utilizada por un MTA determina qué direcciones de correo son susceptibles de recibir correos electrónicos. Sin embargo, puede que un usuario tenga varias cuentas de correo.
Para este tipo de uso, un MTA utiliza una relación de correspondencias entre cuentas llamadas alias.
Postfix utiliza el archivo de declaración de alias /etc/aliases y lo utiliza en una base de datos generada a partir del archivo de alias mediante el comando postalias o newaliases.
postalias /etc/aliases
Ejemplo de /etc/aliases:
mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: pepito
En el ejemplo anterior, vemos que casi todas las cuentas reenvían a root. Finalmente, root reenvía al usuario pepito. Esto es útil por si normalmente utilizas una cuenta de usuario y no estás siempre en el sistema como root, pero quieres recibir también los correos que vayan dirigidos a él.
Configuración Postfix
La configuración del servicio Postfix se encuentra /etc/postfix:
master.cf: se establecen los parámetros de configuración de los procesos del daemon postfix.main.cf: contiene los parámetros de configuración del servicio
En debian hay un main.cf de base en el directorio /usr/share/postfix/main.cf.debian. También existe /usr/share/postfix/main.cf.dist contiene todos los parámetros posibles.
Ejemplo de main.cf:
myorigin = <dominio_origen> mydestination = <dominio_destino> mynetwork = <red/máscara_de_bits> relayhost = <relays_MTA>
| Parámetros | Descripción |
|---|---|
dominio_origen | El que el servidor pone a continuación de la arroba (@) en el correo saliente. Puede ser distinto del dominio local inicialmente configurado. Es el dominio visto desde el exterior. |
dominio_destino | El servidor gestiona correos con destino a este dominio. Puede ser idéntico al dominio de origen. |
red/máscara_de_bits | El servidor permite reenviar los correos provenientes directamente de esta red. En principio la red local. |
relays_MTA | (Opcional) Si se usa el parámetro relayhost, los correos se envían al exterior exclusivamente a través del MTA relays_MTA. Si hemos configurado el MTA como “smarthost”. |
No es obligatorio usar el parámetro relayhost y, según el espíritu del protocolo SMTP, no
debería ser necesario. Sin embargo, algunos proveedores de servicio de Internet bloquean cualquier tipo de tráfico SMTP saliente de sus redes si este no se ha emitido por sus propios MTA. Por tanto, el parámetro relayhost hace posible que se dependa de un MTA externo para cualquier transmisión de correo.
Ejemplo de fichero main.cf:
myhostname = debian10 myorigin = /etc/mailname mydestination = example.org, debian10, localhost.localdomain, localhost relayhost = # No hay nada si lo configuramos como servidor público mailbox_size_limit = 0
En Debian, podemos ejecutar dpkg-reconfigure postfix para que se lance de nuevo el asistente de configuración de Postfix y realizar la configuración básica de forma más sencilla.
Se puede obtener la configuración activa en el fichero main.cf con el comando:
postconf -n
Los mensajes que llegan al servidor se almacenan en el directorio /var/spool/mail o /var/mail con el nombre del usuario destinatario. Los mensajes que recibe pepito estarán en /var/spool/mail/pepito.
Los mensajes de errores se encuentran en /var/log/maillog (RedHat) o /var/log/mail.log (Debian)
Gestión de dominios y usuarios virtuales
En una configuración sencilla, un servidor postfix gestiona un solo dominio de correo:
el que está asociado a la empresa o a la organización que lo alberga. Si se desea administrar otros dominios habrá que declararlos en el fichero main.cf usando la directiva virtual_alias_domain:
virtual_alias_domain <dominio2>, <dominio3>
A continuación hay que especificar qué cuenta de usuario se asigna a qué cuenta de correo y para qué dominio. Esta
asociación debe hacerse en un archivo cuyo nombre y ubicación estén especificados por la directiva virtual_alias_maps en el fichero de configuración main.cf:
virtual_alias_maps = hash:/etc/postfix/virtual
Ejemplo de archivo alias /etc/postfix/virtual:
#direccion_correo #cuenta_linux admin@pruebas.com admin pepito@example.org pepito
Cada vez que modificamos el fichero de alias debemos generar un archivo en formato Berkeley DB a partir del archivo de alias en texto plano:
postmap /etc/postfix/virtual
Gestión de cuotas
Se puede limitar el espacio de disco consumido por las cuentas de correo. Esta limitación se establece fácilmente mediante el parámetro mailbox_size_limit:
mailbox_size_limit = <tamaño_maximo_cuenta(bytes)>
Del mismo modo, se puede limitar el tamaño de un mensaje con el parámetro message_size_limit:
message_size_limit = <tamaño_maximo_correo(bytes)>
postfix
Comando de control y diagnóstico del servicio.
postfix <acción>
| Acción | Descripción |
|---|---|
status | Muestra el estado funcional del servicio |
stop | Detiene el servicio de manera controlada. Los procesos en ejecuición están autorizados para finalizar su ejecución. |
start | Realiza comprobaciones e inicia el servicio |
check | Comprueba la validez del entorno de funcionamiento del servicio |
reload | Recarga la configuración. Preferible a un stop / start |
abort | Detiene el servicio inmediatamente. Los procesos en ejecución se detienen bruscamente |
flush | Intenta mandar todos los correos pendientes: los que ya han dado error y los que están a la espera de un nuevo intento |
