Envía notificaciones por email en Linux con tu cuenta Gmail y el programa sendmail

Escrito por Sergio De Luz
GNU Linux
0

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.

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.

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 < 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.


Últimos análisis

Valoración RZ
10
Valoración RZ
7
Valoración RZ
9
Valoración RZ
10
Valoración RZ
8
Valoración RZ
10
Valoración RZ
9
Valoración RZ
9
Valoración RZ
10