RPi: inviare posta elettronica da Raspberry

Gioxx  —  09/05/2019 — 2 Comments

Di motivi possono essercene diversi, eppure la sostanza rimane sempre quella: RPi deve poter inviare email in caso di necessità. È comodo, è logico, è necessario quando hai bisogno di essere avvisato riguardo cambiamenti di sistema (un IP nuovo? È solo un esempio), rilevamento di dati da sensori esterni, log di backup che hai fatto eseguire al tuo fedele micro-computer e chissà cos’altro. Con ssmtp è questione di un attimo, sei subito pronto per partire, ti servirà solo un server SMTP da sfruttare (va bene anche Gmail, basati sulle informazioni di questo vecchio articolo: SMTP di GMail: l’utilizzo tramite app (terze parti)).

RPi: inviare posta elettronica da Raspberry

Installazione e configurazione

Dopo aver lanciato un sudo apt-get update utile all’aggiornamento dei pacchetti disponibili, installa ssmtp come anticipato nell’apertura dell’articolo, ti basta poco:

sudo apt-get install ssmtp
sudo apt-get install mailutils

Al termine dovrai inserire i dati di configurazione per poter sfruttare il server SMTP esterno, ti basterà modificare il file di configurazione di ssmtp tramite sudo nano /etc/ssmtp/ssmtp.conf. Puoi commentare le righe già presenti nel file, aggiungendo in coda l’intero blocco necessario:

root=postmaster@contoso.com
mailhub=smtp.contoso.com:587
rewriteDomain=contoso.com
hostname=rpi.contoso.com
AuthUser=postmaster@contoso.com
AuthPass=Pa$$word
UseSTARTTLS=YES
UseTLS=NO

Rapidissimamente:

  • postmaster@contoso.com è l’indirizzo (esistente) sul server SMTP, il quale verrà utilizzato per farsi riconoscere (root=) e autenticarsi (AuthUser=).
  • smtp.contoso.com:587 è il server SMTP che intendi utilizzare, seguito dal :587 che sta a indicare la porta da utilizzare (in questo caso la 587, varia in base alla configurazione del provider che scegli di utilizzare).
  • rewriteDomain=contoso.com è il valore / dominio che sta dopo la chiocciola, se il tuo indirizzo di posta è mario.rossi@pippo.it dovrai specificare pippo.it.
  • rpi.contoso.com è l’hostname dal quale partirà la nuova email. Questo può anche non esistere, ma se il parametro SPF specificato sul tuo server SMTP non permette all’intero dominio di essere riconosciuto dagli antispam, rischi che l’email venga scartata dal provider di posta di chi riceverà le email spedite da RPi. Ti consiglio quindi di mantenere il tuo vero dominio di posta (quello che usi per spedire le email, il famoso “pippo.it” di cui ti parlavo poco fa) così da evitare problemi.
  • UseSTARTTLS=YES e UseTLS=NO sono parametri che servono a chiedere a ssmtp di utilizzare l’autenticazione con protezione StartTLS anziché TLS.

Nel caso in cui tu voglia utilizzare il server SMTP di Gmail ti consiglio di dare un’occhiata a questo articolo che ho trovato sul web.

Modifica ora il contenuto del file revaliases (sudo nano /etc/ssmtp/revaliases) aggiungendo semplicemente questa riga:

root:postmaster@contoso.com

Salva il file e chiudilo, a questo punto ti manca solo da mettere a posto i permessi del file di configurazione di ssmtp (sudo chmod 774 /etc/ssmtp/ssmtp.conf) e sei pronto a eseguire il primo test di invio posta elettronica dal tuo RPi.

Test di invio

Lancia da terminale un semplice echo "testo della email" | mail -s "test" mario.rossi@contoso.com sostituendo ovviamente mario.rossi@contoso.com con il tuo indirizzo reale di posta elettronica, questo dovrebbe inviarti nel giro di poco una nuova email alla tua casella, segno che tutto è andato per il verso giusto.

Ma

Nel caso tu avessi mancato o riprodotto male un passaggio potresti avere la sfortuna (come successo la prima volta al sottoscritto) di incorrere nell’errore mail: cannot send message: Process exited with a non-zero status. A questo punto ti serve qualche informazione in più, io per averla io ho installato mpack (sudo apt-get install mpack) e:

  • creato un file di testo contenente il corpo di un messaggio di test (echo "Messaggio di test" > messaggio.txt),
  • creato un file di testo che fungesse da possibile allegato (echo 123prova > attach.txt),
  • fatto un invio di test tramite mpack per ottenere un messaggio di errore più esplicativo (mpack -s "Invio di test" -d messaggio.txt attach.txt mario.rossi@contoso.com).

Ed ecco servito il reale problema:

sendmail: RCPT TO:<mario.rossi@contoso.com> (504 5.5.2 <pi@raspberrypi>: Sender address rejected: need fully-qualified address)

Una volta messo a posto quanto sbagliato (segui scrupolosamente la procedura riportata poco sopra in questo mio articolo e assicurati di aver specificato nel modo giusto il tuo dominio di posta e le relative credenziali) la mail è partita correttamente, consegnata ancora calda nella mia mailbox poco dopo:

RPi: inviare posta elettronica da Raspberry 1

Da questo momento sarà possibile inviare mail da RPi, potrai quindi inserire i comandi necessari in qualsiasi script o esecuzione programmata (cronjob) secondo esigenza.


Grazie a:
askubuntu.com/questions/643873/how-to-get-ssmtp-to-map-local-user-to-email-address-for-the-to-field
raspberrypi.org/forums/viewtopic.php?t=191675
raspberry-projects.com/pi/software_utilities/email/ssmtp-to-send-emails
possiblelossofprecision.net/?p=591
Gioxx's Wall Se hai correzioni o suggerimenti puoi lasciare un commento nell'apposita area qui di seguito o contattarmi privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! Satispay / PayPal / Buy Me A Coffee / Patreon
Condividi l'articolo con i tuoi contatti: