Como enviar correos a través de Gmail, ¡simple y directo!
En esta entrada voy a explicar como instalar un programa bastante simple para enviar correos a través de Gmail, desde nuestra Raspberry Pi/Odroid U3, o cualquier sistema que tengáis instalado. Con esta nueva funcionalidad, podremos enviar alertas por correo electrónico cuando se produzca algún evento que estemos monitorizando. Tengo que decir que esto no es necesario para enviar correos desde dentro de openHAB, ya que dispone de un addon específico para ello.
Instalación
Los programas que usaremos son el Heirloom-mailx y ssmtp. Para instalarlos usamos el siguiente comando:
root@jdomo:/# apt-get install heirloom-mailx ssmtp
y si queremos comprobar que todo ha ido correctamente, y que se han creado los enlaces bien, lo podemos hacer con:
root@jdomo:/# ls -ali /etc/alternatives/mail* 21860 lrwxrwxrwx 1 root root 23 jun 4 09:38 /etc/alternatives/mail -> /usr/bin/heirloom-mailx 29883 lrwxrwxrwx 1 root root 39 jun 4 09:38 /etc/alternatives/mail.1.gz -> /usr/share/man/man1/heirloom-mailx.1.gz 14481 lrwxrwxrwx 1 root root 23 jun 4 09:38 /etc/alternatives/mailx -> /usr/bin/heirloom-mailx 22201 lrwxrwxrwx 1 root root 39 jun 4 09:38 /etc/alternatives/mailx.1.gz -> /usr/share/man/man1/heirloom-mailx.1.gz root@jdomo:/# ls -ali /usr/sbin/sendmail 32201 lrwxrwxrwx 1 root root 5 jul 1 2012 /usr/sbin/sendmail -> ssmtp
En el resultado anterior vemos que el sistema usará los programas de Heirloom para enviar correos.
Configuración
Tenemos dos archivos para configurar el envío de correos, los dos en /etc/ssmtp, el principal es ssmtp.conf. Básicamente tenemos que especificar el usuario y la contraseña de la cuenta de Gmail que usaremos para realizar los envíos. Os debe quedar parecido al mio:
# # Config file for sSMTP sendmail # root=CORREO@gmail.com AuthUser=CORREO@gmail.com AuthPass=CONTRASEÑA FromLineOverride=YES mailhub=smtp.gmail.com:587 hostname=gmail.com UseTLS=YES UseSTARTTLS=YES
El otro, revaliases, sirve para asociar cuentas de usuario local con cuentas externas básicamente. Sirve para que cuando enviemos algún mensaje a root (como hace el demonio cron por ejemplo), se reenvíe al correo que le digamos. El mio queda como el que sigue:
# sSMTP aliases # # Format: local_account:outgoing_address:mailhub # root:CORREO@gmail.com:smtp.gmail.com:587
Pruebas
Ya lo tenemos todo listo, solo falta hacer alguna prueba:
root@jdomo:/# echo "Este es mi primer mensaje de prueba" | mail -s "[jdomo] prueba" root root@jdomo:/# echo "Este es mi segundo mensaje de prueba" | mail -s "[jdomo] prueba 2" jdiaz.bb@gmail.com
Si no recibís los correos podéis probar a añadir al comando mail, la opción -v para ir viendo en la consola todo la conversación que se establece con el servidor de correo durante el envío.
Fácil, ¿verdad? Además de utilísimo. Ahora podremos hacer que cuando se reinicie nuestro equipo domótico nos envie un mensaje, o cuando alguien se conecte por SSH, o incluso si tenemos un sensor Arduino/ENC28J60 y perdemos la conexión con él, que nos avise. Hay mil posibilidades, y más ahora con internet en los móviles, nos podremos enterar al instante de los problemas que detecte nuestro sistema.
Espero que os sea tan útil como a mi 🙂
Fácil y muy útil, si señor. Muchas gracias.
Me alegro de que te sirviera. Gracias a ti por comentar 🙂
Yo uso este script de Python para mandarme la IP cuando conecta sin necesidad de instalar nada. Me pareció muy cómodo
https://github.com/manuti/Check_IP_and_send_email
Al definir un sistema de correo para todo el sistema operativo, cuando se produce cualquier evento (por ejemplo los resultados de las tareas programadas con el cron), se envían por correo sin necesidad de hacer nada, o como mucho especificar el destinatario del mail (en las tareas del cron, se mandan automáticamente a root, o al que se especifique en la variable MAILTO (creo que se llamaba así) dentro de la tarea programada).
En el sistema domótico es cómodo tenerlo así ya que hay muchas comprobaciones que se hacen periódicamente, y que se me mandan por mail sin hacer nada. No suelen llegar casi nunca errores, pero cuando llegan sabes exactamente lo que ha pasado.
Tengo que hacer una entrada, para que veáis como se configura el envío de SMS, que lo uso cuando se detecta que se ha perdido la conexión de red, y el envío de correos no funciona… 🙂