INVIO AUTOMATICO DI EMAIL CON RASPBERRY PI

15/12/2016

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


Torna alla home

Commenti

8 commenti


marco (marco@marcopesce.it)
il 28 Agosto 2019 alle 15:25

Ciao a cosa serve il "&nbsp" ?

Rispondi


marco (marco@marcopesce.it)
il 28 Agosto 2019 alle 15:25

a cosa serve &nbsp ?

Rispondi


Gianluca (Admin)
il 6 Febbraio 2020 alle 12:17

niente, è un refuso. Ho corretto il comando

Rispondi


Anonymous (5f4282686f7f1@example.com)
il 23 Agosto 2020 alle 16:51

mail: cannot send message: Process exited with a non-zero status

Rispondi


dario (dario.monfrino@mmcsas.it)
il 23 Ottobre 2020 alle 14:34

ciao, anche a me da errore
mail: cannot send message: Process exited with a non-zero status

Rispondi


Alberto (albertomazzoni@me.com)
il 14 Marzo 2021 alle 16:33

mail: cannot send message: Process exited with a non-zero status

Rispondi


Francesca
il 13 Ottobre alle 22:49

Il pacchetto SSMTP non é più disponibile. Come si fa adesso?

Rispondi


Gianluca (Admin)
il 14 Ottobre alle 11:12

@Francesca
Prova ad utilizzare il pacchetto più recente msmtp
Come indicato qui:
https://unix.stackexchange.com/questions/525235/install-ssmtp-in-debian-buster

Rispondi


Il tuo nome o email (Se usi l'email potrai essere notificato delle risposte)
Il tuo messaggio