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)).
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 specificarepippo.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
eUseTLS=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:
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
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)