Invio automatico di email con Raspberry Pi

pi2modb1gb_-comp

 

Il bello del Raspberry Pi è che può essere programmato per svolgere determinate attività ed essere lasciato acceso a fare il suo lavoro senza monitor e tastiera collegati, anche in posti remoti e non immediatamente raggiungibili. L’ideale sarebbe quindi poter tenere sotto controllo il Raspberry Pi in qualche modo: una idea interessante è quella di inviare email automaticamente ad una casella di posta prestabilita. Le email possono essere generate al verificarsi di eventi particolari oppure in maniera periodica per la trasmissione di log di sistema o altri file importanti che vogliamo tenere d’occhio.

Ad esempio, un sensore di temperatura collegato ai GPIO di sistema fa scattare l’invio di una email nel caso la temperatura salga oltre un certo limite impostato. Altro esempio: notificare al destinatario l’indirizzo IP del raspberry, con cadenza regolare oppure in maniera più efficiente solo nel caso in cui cambi (molti provider assegnano un indirizzo IP dinamico che cambia continuamente). Altro esempio ancora l’invio periodico dei dati prelevati da una stazione meteo.

Utilizziamo i pacchetti ssmtp e mutt rispettivamente per l’invio delle email e di eventuali allegati

Useremo i server smtp di gmail, quindi occorrerà avere un account gmail dedicato (ad esempio una email del tipo raspberrypi@gmail.com)

Per prima cosa aggiorniamo il repository locale:


apt-get update

Installiamo poi smmtp e mailutils


apt-get install ssmtp
apt-get install mailutils

A questo punto apriamo il file di configurazione di ssmtp


nano /etc/ssmtp/ssmtp.conf

cancelliamo tutto ed inseriamo i nostri dati di login gmail, in questo caso email “email@gmail.com” e password “123456”. Il resto rimane inviariato:

root=postmaster
mailhub=smtp.gmail.com:587
hostname=raspberrypi
AuthUser=email@gmail.com
AuthPass=123456
UseSTARTTLS=YES

A questo punto editiamo il file revaliases

nano /etc/ssmtp/revaliases

ed inseriamo questa riga

root:root@raspberrypi:smtp.gmail.com:587

fatto ciò salviamo e settiamo i giusti permessi per il file di configurazione

chmod 774 /etc/ssmtp/ssmtp.conf

Invio di una email

L’invio della email è semplicissimo. Dalla console digitiamo:

echo "testo della email" | mail -s "oggetto" destinatario@dest.com

e dopo qualche istante l’email sarà inviata. Ovviamente il comando può essere impartito da uno script apposito o da una regola cron.

Se vogliamo aggiungere un file in allegato (log, immagini o quant’altro) utilizzamo questo altro comando:

echo "testo della email" | mutt -a /file/da/allegare.dat -s "oggetto" -- destinatario@dest.com

Nel caso dovesse verificarsi un errore è possibile che gmail stia bloccando il client ssmtp perchè considerato non sicuro (vecchia versione affetta dal bug heartbleed ad esempio). In questo caso occorre prima andare nelle impostazione della casella gmail e abilitare l’accesso alle app meno sicure, come spiegato qui

screen-shot-2016-12-15-at-00-32-40