Supongamos que contamos con un servidor OpenBSD y necesitamos enviar correo desde la red local, por ejemplo resúmenes diarios de logwatch o AIDE, a través de un relayhost (servidor de correo para el dominio de la red local) seguro (SMTPS) que requiere autenticación. Este artículo explica cómo configurar smtpd para que reenvíe todo el correo saliente hacia un servidor de correo seguro en la red local sobre TLS con autenticación. De esta forma, todo el correo saliente desde nuestro servidor OpenBSD será reenviado hacia el servidor de correo del dominio, autenticando con una cuenta de correo específica y rescribiendo la cabecera "mail-from" para todos los mensajes salientes. Lo cual corresponde con la típica configuración para un sitio de Internet o servidor simple que requiere enviar correo dentro de un dominio seguro.
Supongamos que disponemos de una cuenta de correo perteneciente al dominio local para el envío de mensajes desde nuestros servidores, digamos "soporte@linuxito.com" (con su respectiva contraseña). El primer paso consiste en guardar las credenciales en el archivo "secrets":
# nano /etc/mail/secrets
El formato de este archivo consta de un nombre de usuario simbólico, junto con la cuenta de correo y su contraseña separadas por dos puntos:
soporte soporte@linuxito.com:trustno1
Guardar el archivo y quitar permisos de lectura para el resto del mundo:
# chmod 0640 /etc/mail/secrets # chown root:wheel /etc/mail/secrets
Luego es necesario configurar el demonio de correo local (smtpd
) para que todo correo saliente sea reenviado hacia el relayhost para el dominio de la red local.
nano /etc/mail/smtpd.conf
El contenido típico del archivo de configuración del servidor es el siguiente
table aliases file:/etc/mail/aliases table secrets file:/etc/mail/secrets listen on lo0 action "local_mail" mbox alias <aliases> action "outbound" relay host "smtps://soporte@mx.linuxito.com:465" tls auth <secrets> mail-from "soporte@linuxito.com" match for local action "local_mail" match for any action "outbound"
La regla más importante es la siguiente:
action "outbound" relay host "smtps://soporte@mx.linuxito.com:465" tls auth <secrets> mail-from "soporte@linuxito.com"
Esta indica que todo el correo saliente sea reenviado hacia el relayhost "mx.linuxito.com" (servidor de correo para el dominio de la red local) a través de SMTPS (puerto 465) utilizando TLS y empleando las credenciales autenticación definidas en el archivo "secrets". Además, la última parte de la regla se encarga de reemplazar el remitente para todos los mensajes salientes por "soporte@linuxito.com".
Guardar los cambios en la configuración y verificar la sintaxis:
# smtpd -n configuration OK
Si todo está bien, reiniciar el servicio:
# rcctl restart smtpd smtpd(ok) smtpd(ok)
Es posible verificar el estado del servidor con el siguiente comando:
# smtpctl show status MDA running MTA running SMTP running
Verificar enviando un correo desde línea de comandos:
echo "test obsd" | mail -s "test..." emiliano@linuxito.com
Comprobar la salida del mensaje en el log de correo:
# tail /var/log/maillog
El subcomando show stats
de la herramienta smtpctl
permite mostrar estadísticas del servidor de correo local:
# smtpctl show stats control.session=1 mta.connector=0 mta.domain=0 mta.envelope=0 mta.host=0 mta.relay=0 mta.route=0 mta.session=0 mta.source=0 mta.task=0 mta.task.running=0 queue.evpcache.load.hit=14 queue.evpcache.size=4 scheduler.delivery.ok=7 scheduler.envelope=4 scheduler.envelope.incoming=0 scheduler.envelope.inflight=0 scheduler.ramqueue.envelope=4 scheduler.ramqueue.message=4 scheduler.ramqueue.update=0 smtp.session=0 smtp.session.local=1 uptime=5661 uptime.human=1h34m21s
Referencias
man smtpd.conf
man smtpd
man smtpctl