Seguramente muchos de vosotros habéis querido estar informados del estado de vuestro servidor a través de alarmas de email, ¿verdad? Desde hace muchísimos años conozco multitud de sistemas de monitorización como por ejemplo, Cacti, Nagios (mi preferido), MRTG, HP Openview, Graphite, Pandora , Munin... pero posiblemente os haya interesado alguna vez recibir alarmas o notificaciones de vuestro servidor totalmente personalizadas. En este pequeñísimo tutorial, os voy a enseñar como enviar emails a través de la consola Shell gracias al programa SSMTP. De esta forma, junto con el programador de tareas CRON y un poco de Bash Scripting, podemos hacer maravillas a la hora de estar al tanto del estado de nuestros equipos. Espero que os guste mi nuevo tutorial.
Cómo enviar alertas automáticas de email con SSMTP en GNU/Linux Debian
⬇️ Compra en Amazon el hardware que utilizo ⬇️
- 💻 Ordenador Portátil: Descúbrelo aquí
- 🖥️🖥️ Monitores: Mis 2 súper monitores
- ⌨️ Teclado: Mini teclado + Lector DNIe
- 🖱️ Ratón: Mi ratón programable
- 🎧 Auriculares: Súper Auriculares TOP!
- 🖨️ Impresora: Mi fantástica impresora
- 🗄️ NAS Backup: Mi NAS para Backups
- 🔌 HUB USB: Mi HUB para puertos USB
- 📱 Smartphone: Mi Smartphone
- 📲 Tablet: Mi tablet para viajes
- ⌚ Smartwatch: Mi Smartwatch favorito
- 📹 Cámara deportiva: Mi cámara para deportes
Excepto el proceso de instalación del paquete SSMTP, todos los pasos podemos aplicarlos a cualquiera de las distribuciones actuales de GNU/Linux.
El manual es muy sencillo y seguro que no tendréis problemas en seguirlo con mis indicaciones. ¡Allá vamos!
1.- ELEMENTOS UTILIZADOS EN ESTE TUTORIAL
- Máquina virtual con GNU/Linux Debian 8.0 corriendo bajo VMWARE WORKSTATION 11
- SSMTP
2.- INSTALACIÓN DE SSMTP
Antes de realizar la instalación del paquete SSMTP, es recomendable primeramente actualizar la lista de paquetes de nuestros repositorios. Ejecutaremos (con root o sudo) los siguientes comandos para actualizar e instalar el paquete SSMTP:
# apt-get update
# apt-get install ssmtp
3.- CONFIGURACIÓN DE SSMTP
Ahora toca configurar SSMTP a través de su fichero principal de configuración en /etc/ssmtp/ssmtp.conf. Antes ed nada realizaremos uan copia de seguridad por si necesitamos revertir los cambios. Para ello haremos uso de nuestro editor de textos preferido, en mi caso usaré vi:
# cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.backup
# vi /etc/ssmtp/ssmtp.conf
El propósito de usar SSMTP es usar como una cuenta de GMAIL para el envío de correos desde nuestro propio equipo. Por tanto, debemos configurar los siguientes valores (el resto de valores podemos dejarlos tal y como están) en el fichero principal de configuración:
root = Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
mailhub = smtp.gmail.com:587
AuthUser=tu_email
AuthPass=tu_password
UseTLS=YES
UseSTARTTLS=YES
rewriteDomain=gmail.com
hostname=localhost
FromLineOverride=YES
Ahora necesitamos asociar al usuario root (en mi caso estoy usando root), la cuenta de email en el siguiente fichero /etc/ssmtp/revaliases quedando de la siguiente forma
root:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:smtp.gmail.com:587
Por último, para evitar que los emails se envien con From: root, ejecutaremos el siguiente comando y cambiaremos al valor a nuestro gusto:
# chfn -f 'Aquí nuestro valor' root
4.- CAMBIOS EN LA POLÍTICA DE SEGURIDAD DE GOOGLE
Tras el último cambio en la política de seguridad de Google, ya no es posible enviar los emails si no se usa una autenticación de tipo OAuth. Por tanto, debemos cambiar nuestra cuenta para que use una política de seguridad de acceso menos segura. Os recomiendo hacer esto con una cuenta de gmail nueva que tengáis en exclusiva para el envio de emails, no lo hagais con cuestra cuenta personal. El mensaje de Gmail y el link para cambiar la seguridad es el siguiente:
Gmail has recently started blocking emails from senders that do not authenticate using OAuth. To allow SSMTP to use gmail's SMTP server, you need to allow access to unsecure apps.
Una vez hecho este cambio ya podremos enviar los emails desde SSMTP.
5.- COMPROBAR EL ENVIO DE EMAILS
Para enviar un email podemos hacerlo de la siguiente forma:
# echo "Aquí el mensaje" | mail -s "Aquí el asunto" email_destino
6.- PEQUEÑO SCRIPT DE ENVIO DE ALARMA
A modo de ejemplo, os pongo un pequeño Script que comprueba si la ocupación del sistema /raíz supera el valor de 75%. Si este valor es superado, se envia un email avisando de dicha problema. El script hay que ponerlo en el CRON y programarlo cada X tiempo, pero existe un problema. Si lo lanzamos cada 5 minutos y el umbral es > de 75%, nos llegará un email cada 5 minutos, haciendo que sea muy molesto y posiblemente Google nos termine bloqueando la cuenta. Para ello, el CRON lo lanzaremos cada 5 minutos pero pondremos un pequeño contador en el Script de bash que compruebe si el email se ha enviado con anterioridad ( por ejemplo 6 horas ). De esta forma evitamos el SPAM. Os dejo a vuestro gusto la creación de Scripts y alarmas personalizadas:
El CRON quedará de la siguiente forma:
*/5 * * * * /scripts/alarmas.sh
Y el contenido del Script es:
#!/bin/bash
USAGE_ROOT=`df -h / | awk '{print $5}' | tail -n 1 | cut -f1 -d "%"`
EMAIL="Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo."
NOW=`date +%s`
LAST_MAIL="/tmp/alarmas_emails.log"
if [ ! -f $LAST_MAIL ];
then
touch $LAST_MAIL
fi
if [ "$USAGE_ROOT" -gt "75" ];
then
let DIF=$NOW-`cat $LAST_MAIL`
if [ $DIF -gt 21600 ]; #6 horas
then
echo "El porcentaje de uso del directorio / ha superado el umbral de 50%. Actualmente su valor es de $USAGE_ROOT" | mail -s "El umbral de / ha sido superado: $USAGE_ROOT%" $EMAIL
echo $NOW > /tmp/alarmas_emails.log
fi
fi
El email llega de la siguiente forma a nuestro correo de Gmail:
ENJOY!