Recientemente con uno de nuestros clientes, necesitamos realizar el envío de correos con autenticación SMTP para el sistema de monitoreo que tiene con Nagios. Nagios por defecto envía correos con el sistema de correos valga la redundancia del servidor, por ejemplo con Postfix. Al principio pensamos en realizar un SMTP Relay con Postfix, pero habían más sistemas que envían correos a otra parte con un From distinto, por lo que, se descarto esa posibilidad.
hace un tiempo utilizamos Swaks (http://www.jetmore.org/john/code/swaks/), el cual es un cliente SMTP para Linux y cuenta con una licencia GPLv2. Funciona con autenticación SMTP y es muy poderoso en varios aspectos, ya que nos permite modificar cabeceras de correo que envía.
Nos hicimos la pregunta, ¿Se puede integrar el envío de correos de Nagios con Swaks?. Comenzamos realizando pruebas con la autenticación de Swaks contra el sistema SMTP del cliente.
# swaks -server smtp.gmail.com:587 -tls –auth-user nagios@pruebas.com –auth-password CONTRASEÑA –to c1@assureit.co –from nagios@pruebas.com –body “Esto es una prueba” –h-Subject “Prueba de Assure”
Los parametros del comando es el siguiente:
# swaks ==> Es el binario que tenemos en linux.
-server ==> Servidor SMTP
-tls ==> Protocolo de autenticación.
-auth-user ==> Usuario del SMTP.
-auth-password ==> Contraseña del usuario SMTP.
-to ==> El correo de remitente.
–from ==> Quien envia el correo, en este caso es el mismo -auth-user.
–body ==> El cuerpo que se encuentra dentro del mensaje.
–h-Subject ==> Titulo del correo.
En los comandos de correos Nagios, vemos que tiene los siguientes parametros en el archivo de configuración /usr/local/nagios/etc/objects/commands.cfg para el envío de correos.
/usr/bin/printf “%b” “ Nagios \n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n” | /usr/bin/mail -s “** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **” $CONTACTEMAIL$
/usr/bin/printf “%b” “ Nagios \n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n” | /usr/bin/mail -s “** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” $CONTACTEMAIL$
Por lo que realizamos las siguientes modificaciones del Script /usr/local/nagios/etc/objects/commands.cfg, modificando los comandos de envío de correos.
/usr/bin/printf “%b” “ Nagios \n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n” > /tmp/mail1.txt | /usr/bin/swaks -server smtp.gmail.com:587 -tls –auth-user nagios@pruebas.com –auth-password CONTRASEÑA–to c1@assureit.co,$CONTACTEMAIL$ –from sistema-nagios@pruebas.com –body /tmp/mail1.txt –h-Subject “** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **”
/usr/bin/printf “%b” “ Nagios \n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n” > /tmp/mail.txt | /usr/bin/swaks -server smtp.gmail.com:587 -tls –auth-user nagios@pruebas.com –auth-password CONTRASEÑA –to c1@assureit.co,$CONTACTEMAIL$ –from sistema-nagios@pruebas.com –body /tmp/mail.txt –h-Subject “** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **”
Reiniciamos el Nagios, y verificamos que el sistema comience a realizar el envío de correos autenticados por SMTP, y nos llegue a nuestra bandeja las notificaciones o alertas de Nagios.