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:587che 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.itdovrai 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=YESeUseTLS=NOsono 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 lascia un commento!