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
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
mail: cannot send message: Process exited with a non-zero status
ciao, anche a me da errore
mail: cannot send message: Process exited with a non-zero status
mail: cannot send message: Process exited with a non-zero status
Il pacchetto SSMTP non é più disponibile. Come si fa adesso?
@Francesca
Prova ad utilizzare il pacchetto più recente msmtp
Come indicato qui:
https://unix.stackexchange.com/questions/525235/install-ssmtp-in-debian-buster
Ciao a cosa serve il " " ?