Enviar un email desde Raspberry usando sendmail

Es posible que quieras automatizar una tarea en un script con Bash y que este sea ejecutado por tu Raspberry y en función de los resultados, puedas enviar un email desde tu Raspberry con el resultado de la ejecución. Para ello usaremos sendmail y este programa requiere de ciertas dependencias para usar con GMail.

Esto tutorial seguramente se pueda aplicar a distribuciones basadas en Debial tal como Ubuntu, Xubuntu…

Instalación de sendmail

Primeramente necesitamos actualizar la lista de paquetes disponibles desde el repositorio:

sudo apt-get update

Una vez hemos ejecutado el anterior comando, pasamos a instalar sendmail y sus dependencias para hacer uso del protocolo TSL que exige GMail:

sudo apt-get install sendmail libnet-ssleay-perl libio-socket-ssl-perl

Comando para enviar un email desde nuestra cuenta de Gmail con nuestra Raspberry Pi

Ahora vamos a probar si funciona lo que hemos instalado, para ello vamos a probar a enviar un email desde Raspberry con tu cuenta de GMail:

sendEmail -f micuenta@gmail.com -s smtp.gmail.com:587 \
    -xu micuenta@gmail.com -xp MiContraseña -t micuenta@gmail.com \
    -o tls=yes -u "Titulo de mi primer mensaje" \
    -m "Este es el contenido de mi primer mensaje enviado desde mi Raspberry Pi desde GMail"

Si tras ejecutar el comando anterior la terminal nos devuelve un error de tipo:

invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 332

Tenemos que modificar el fichero SSL.pm del error:

sudo nano /usr/share/perl5/IO/Socket/SSL.pm

y en la línea 1490 sustituimos:

 m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i

por esta otra:

m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i

Con todo esto corregiremos este error. Más información de este error en http://raspberrypi.stackexchange.com/questions/2118/sendemail-failure

Ejemplo de script

Os dejo una adaptación simple del comando anterior a un script bash:

#!/bin/bash
# Autor protoinformatico - Pablo Toledo

USUARIO="micuenta@gmail.com"
PASSWORD="miclave"
DESTINO="destinatario@destino.com"

sendEmail -f $USUARIO -s smtp.gmail.com:587 \
    -xu $USUARIO -xp $PASSWORD -t $DESTINO \
    -o tls=yes -u "Asunto del email" \
    -m "Texto del contenido del email"

Espero que os sea útil, si tenéis alguna duda podéis dejar un comentario 🙂