Envía notificaciones por email en Linux con tu cuenta Gmail y el programa sendmail
Cuando tenemos un sistema operativo Linux, ya sea de escritorio, en un servidor e incluso en un router con firmware basado en Linux como Tomato, DD-WRT, OpenWRT y otros. Es muy habitual necesitar que dicho sistema nos envíe información por e-mail como por ejemplo un log, la información de la dirección IP pública actual e incluso estadísticas de uso de CPU, RAM, disco etc. Podéis visitar nuestro tutorial sobre encriptar email con seguridad.
Anteriormente en RedesZone os mostramos el programa ssmtp que permitía su instalación rápida y fácil en una Raspberry Pi con el sistema operativo Raspbian, en este artículo tenéis un completo manual de instalación y uso. Podéis visitar nuestro tutorial sobre qué hacer si nos han hackeado la cuenta de Facebook.
En este artículo os vamos a enseñar cómo hacerlo con el programa sendmail que es ampliamente utilizado para este propósito, de hecho en algunas distribuciones Unix y Linux se encuentra instalado por defecto, e incluso en algunos firmwares de terceros también. Si no estuviera instalado basta con teclear lo siguiente (dependiendo de la distribución la forma de instalarlo cambia):
sudo apt install sendmail
Lo primero que debemos hacer es configurar el servidor para utilizarlo con Gmail, debemos teclear las siguientes órdenes:
mkdir -m 700 /etc/mail/authinfo/
echo "AuthInfo: "U:root" "I:Tu email de GMail" "P:contraseña" > /etc/mail/authinfo/gmail-auth
makemap hash gmail-auth
Ahora en el archivo /etc/mail/sendmail.mc debemos incorporar el siguiente código antes del primer MAILER DEFINITION (se encuentra al final del archivo, podéis editarlo con el editor nano):
define(`SMART_HOST',`[smtp.gmail.com]')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl
define(`confAUTH_OPTIONS', `A p')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash -o /etc/mail/authinfo/gmail-auth.db')dnl
Una vez configurado todo, procedemos a escribir un script en bash para automatizar un determinado evento y que nos informe por e-mail, o por ejemplo para recibir información sobre la carga de CPU. Nosotros hemos utilizado el siguiente script que sirve para enviarnos la carga de CPU media registrada.
Para crear el script procedemos a crear un fichero con extensión .sh como por ejemplo con el programa nano:
nano scriptCPU.sh
A continuación tenéis el script que nosotros hemos creado, tan sólo deberemos modificar las cinco primeras líneas correspondientes al correo electrónico origen y de destino que nosotros tengamos.
#!/bin/sh
EMAILDESTINO="email destino"
echo "Carga CPU">/tmp/mail.txt
echo "FECHA: `date -R`" >>/tmp/mail.txt
echo "" >>/tmp/mail.txt
echo "La carga de CPU media es de: `uptime | cut -d ',' -f 3-`" >>/tmp/mail.txt
echo "" >>/tmp/mail.txt
echo "---- " >>/tmp/mail.txt
echo "Tu servidor" >>/tmp/mail.txt
echo "" >>/tmp/mail.txt
cat /tmp/mail.txt | sendmail $EMAILDESTINO
Si necesitamos que el sistema operativo nos informe sobre el estado de la memoria RAM o la ocupación del disco tan sólo deberemos modificar el script para adaptarlo a nuestras necesidades.