Sapevi che puoi Inviare mail da terminale di Linux? Non c’è da stupirsi, credo. La domanda principale è perché dovresti prenderti la briga di inviare e-mail dal terminale Linux?
Ci potrebbero essere varie ragioni per questo. Supponiamo di avere un server Linux che devi mantenere protetto. Con la configurazione della posta, può inviarti automaticamente e-mail nel caso in cui ci sia un avviso. Questo è uno dei tanti casi d’uso in cui inviare mail da terminale di Ubuntu può aiutarti alla grande.
Vediamo come inviare mail da terminale Ubuntu con SSMTP.
Sommario
Cos’è l’SSMTP e come funziona?
SMTP (Simple Mail Transfer Protocol) è uno dei protocolli (insieme di regole e formati per dati e comunicazioni) utilizzati per l’invio e la ricezione di messaggi di posta elettronica. Sebbene fornitori come Outlook, Gmail di solito utilizza protocolli proprietari, forniscono servizi SMTP in modo che l’utente possa accedere ai propri messaggi di posta elettronica da qualsiasi client.
Sono necessarie due parti software: il server SMTP (ospitato dal fornitore di posta elettronica) e il client SMTP presente nel sistema.
SSMTP è uno di questi programmi client che può aiutarti a inviare le e-mail. Quando si invia un messaggio di posta elettronica, il client lo inoltra al server SMTP del fornitore, che lo invia al fornitore di posta elettronica del destinatario. Infine, sarà inoltrato al destinatario.
Per ulteriori informazioni su SMTP, utilizzare questo articolo wiki su SMTP.
Iniziamo con SSMTP nel modo giusto.
Inviare mail da terminale Linux tramite SSMTP
Vediamo come è possibile inviare posta nella riga di comando linux con l’aiuto di SSMTP.
Installazione di SSMTP
SSMTP è disponibile come pacchetto nella maggior parte delle distribuzioni Linux. Sfoglia il repository della tua distro per assicurarti. In Ubuntu 18.04 è possibile installare SSMTP come segue:
sudo apt install ssmtp
Ti consiglio prima di eseguire l’installazione di aggiornare Ubuntu con i comandi:
sudo apt-get update
sudo apt-get upgrade
Configurazione di SSMTP
Al termine, è necessario configurare SSMTP.
Poiché questo articolo si concentra principalmente sull’invio di una posta, ci atteniamo alla configurazione di base di SSMTP. È possibile utilizzarlo solo per inviare posta. Ogni utente deve specificare e-mail e password ogni volta che invia un messaggio di posta elettronica. Supponiamo che tutti utilizzino lo stesso server SMTP.
Alcuni degli altri articoli che potresti trovare online ti guideranno a memorizzare nome utente e password nel file di configurazione (/etc/ssmtp/ssmtp.conf). Consentirà a tutti gli utenti di inviare un’e-mail utilizzando le credenziali nella configurazione senza costringere ogni utente ad avere la propria e-mail e password.
“Ti consiglio di non eseguire tale configurazione a meno che tu non sia molto sicuro.”
È necessario modificare il file conf:
sudo gedit /etc/ssmtp/ssmtp.conf
Se hai familiarità con gli editor della riga di comando come Nano, Vim, Emacs e altri, sentiti libero di usarli. Aggiungere il file o sostituirlo con l’intero contenuto del file con il testo seguente:
mailhub=smtp.gmail.com:587
UseTLS=YES
UseSTARTTLS=YES
Anche se elimini l’intera configurazione e la sostituisci con solo lo snippet di cui sopra, dovrebbe funzionare perfettamente. Se hai problemi invece scrivimi nei commenti.
Se si utilizza un altro fornitore di posta elettronica, indicare nel campo mailhub server:port il server di posta utilizzato. In caso di difficoltà, assicurati di farci sapere nei commenti.
Invio di e-mail in Linux tramite SSMTP
Costruiamo un messaggio che deve essere inviato in un file denominato mail.txt.
To: info@bartolomeoalberico.it
Subject: Inviare mail da terminale Ubuntu
Questo è in esempio per inviare mail da terminale Ubuntu utilizzando SSMTP
Per inviare questa posta, è necessario utilizzare il formato come segue.
ssmtp -au EMAIL_ADDRESS -ap EMAIL_PASSWORD info@bartolomeoalberico.it < mail.txt
Sostituire EMAIL_ADDRESS, EMAIL_PASSWORD con i valori. Potresti notare una cosa info@bartolomeoalberico.it è menzionato sia nel messaggio che nel comando.
Questo perché l’indirizzo utilizzato nel comando ssmtp verrà utilizzato come ccn e l’indirizzo menzionato nel messaggio verrà utilizzato come indirizzo.
Errori invio mail da terminale
La mia scelta di usare il server smtp di Google è solo per non dovermi creare una nuova mail o un nuovo servizio solo per questo utilizzo, ma Google è troppo poco permissivo e potrebbe essere comune un errore del tipo o simile:
ssmtp: Authorization failed (535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 l12sm3234587qcu.31)
oppure un errore simile ma del tipo 534.
Non è altro che Google che ci sta impedendo l’accesso… per la nostra sicurezza. Si… ovviamente lo fa per noi!
Praticamente sembra che se il suo super sistema automatico rileva un tentativo “sospetto” ne impedisca l’accesso.
Per ovviare a ciò basta effettuare il login a questo indirizzo, quindi effettuare prima un logoff se si è già connessi:
https://accounts.google.com/b/0/DisplayUnlockCaptcha
da browser e dalla postazione che si sta utilizzando.
Eventualmente provare a riavviare e poi dovrebbe funzionare il tutto. Molte volte però non basta, e se funziona, un giorno potrebbe tornare a non funzionare (esperienza personale).
Eventualmente provare da browser a cambiare password, molti riportano poi esito positivo.
Come detto in precedenza potrebbe comparire anche questo errore:
ssmtp: Cannot open smtp.gmail.com:587
In questo caso rivedere bene permessi ai file e utenti/gruppi. Rileggere bene il tutorial per le spiegazioni.
In caso di altri errori dare sempre un’occhiata ai file di log:
/var/log/mail.log
/var/log/mail.err
Leggere bene il tipo di errore ed eventualmente dare anche un’occhiata ai limiti di un account google gratuito:
https://support.google.com/a/answer/166852?hl=it
Conclusione
Abbiamo visto come inviare mail da terminale Ubuntu utilizzando l’utility SSMTP. Puoi divertirti a cambiare la configurazione del server di posta a tuo piacimento.