SMTP Relay
Introducción
Nagios requiere enviar e-mails para notificarnos de los errores o recuperaciones, y es posible que futuros servicios también lo requieran.
Para reducir configuraciones, se configurará Exim para hacer de relay hacia nuestro servidor de SMTP, este únicamente reenvia los e-mails, NO es un servidor de e-mail.
Muchos Linux utilizan Postfix, pero Exim requiere menos recursos, algo interesante cuando utilizas una Raspberry.
Configuración
Si el usuario que utilizamos para conectar a nuestro servidor de SMTP permite "inventar" nombres, podremos asignar nombres según el nombre del servidor o del servicio, si no, debemos indicar el nombre del usuario que conecta al SMTP.
Iniciamos instalando el servicio y configurando.
sudo apt update
sudo apt install exim4 -y
sudo dpkg-reconfigure exim4-config
Estas son las opciones que elegir:
General type of mail configuration: mail sent by smarthost; no local mail
System mail name: serverName
IP-addresses to listen on for incoming SMTP connections: 127.0.0.1 ; ::1
Other destinations for which mail is accepted: serverName
Visible domain name for local users: serverName
IP address or host name of the outgoing smarthost: smtp.domain.cat::587
Keep number of DNS-queries minimal (Dial-on-Demand): No
Split configuration into small files: No
Root and postmanster mail recipient: [email protected]
Actualizar las variables de serverName acorde al nombre del servidor (lo hace por defecto), smtp.domain.cat es el nombre hacia nuestro servidor de SMTP y [email protected] es el usuario que se utilizará como from.
El puerto 587 es el estándar para STARTTLS. Si el servidor SMTP utiliza TLS implícito, cambiar el puerto a 465 y ver la sección de configuración TLS más abajo.
A partir de aquí debemos asignar la configuración según nuestro SMTP, esta parte puede cambiar, así que es posible que requiera cierta investigación y pruebas hasta dar con la correcta.
Configuración STARTTLS (puerto 587)
Configuración recomendada para servidores como ProtonMail Bridge que utilizan STARTTLS.
sudo vi /etc/exim4/exim4.conf.localmacros
MAIN_TLS_ENABLE = 1
REMOTE_SMTP_SMARTHOST_HOSTS_REQUIRE_TLS = *
Configuración TLS implícito (puerto 465)
Si el servidor SMTP no soporta STARTTLS y requiere TLS implícito en el puerto 465, usar esta configuración alternativa.
sudo vi /etc/exim4/exim4.conf.localmacros
MAIN_TLS_ENABLE = 1
REMOTE_SMTP_SMARTHOST_HOSTS_REQUIRE_TLS = *
TLS_ON_CONNECT_PORTS = 465
Recordar que si se utiliza TLS implícito, el smarthost debe configurarse con el puerto 465 en el paso anterior: smtp.domain.cat::465.
Credenciales SMTP
Indicamos el usuario y contraseña para autenticarnos en el servidor de SMTP.
sudo vi /etc/exim4/passwd.client
smtp.domain.cat:mail@domain.com:password
Es preferible especificar el host del smarthost en lugar de * para evitar enviar credenciales a servidores no deseados.
Protección de credenciales
Exim no encripta las contraseñas almacenadas en su configuración, así que es fundamental proteger los ficheros con permisos de Linux para que únicamente root y el servicio de Exim puedan leerlos.
sudo chown root:Debian-exim /etc/exim4/passwd.client
sudo chmod 640 /etc/exim4/passwd.client
sudo chown root:Debian-exim /etc/exim4/exim4.conf.localmacros
sudo chmod 640 /etc/exim4/exim4.conf.localmacros
Ningún otro usuario del sistema debería poder leer estos ficheros. Verificar periódicamente con ls -la /etc/exim4/ que los permisos no se han alterado tras una actualización.
E-mails por usuario
Por último, añadimos qué e-mail utilizará cada usuario de sistema, si no lo indicamos, los servicios deberán siempre indicarlo, algo que no siempre hacen.
sudo vi /etc/email-addresses
pi: mail@domain.cat
root: mail@domain.cat
nagios: nagios@domain.cat
Reiniciamos para aplicar los cambios.
sudo update-exim4.conf
sudo service exim4 restart
Test
Nunca debemos confiar en que un relay funcionará a la primera, al terminar se debe hacer enviar un e-mail hacia un usuario del dominio (o fuera de este si queremos configurar que tiene permiso para ello).
echo "Texto de prueba" | mail -s Pruebas [email protected]
Si no llega el correo, revisar los logs para diagnosticar el problema.
sudo tail -f /var/log/exim4/mainlog