Inviare mail con terminale linux
2 Feb 2022 - Informatica, Software
Vediamo come inviare mail con terminale linux in modo da poter utilizzare questo tool per inviare notifiche mail.
Potrebbe rendersi necessario un giorno avere la possibilità di utilizzare la posta elettronica tramite un terminale linux.
In questo articolo (clicca qui), ad esempio, parliamo di come fare backup sfruttando un tool, rsync, e systemd. Potrebbe essere utile inviare una notifica tramite uno script bash se è avvenuto o meno il corretto funzionamento del servizio di backup.
Dividerò l’articolo in due parti. La prima mi soffermerò solo sulla configurazione del tool di invio di posta elettronica chiamato : ssmtp.
La seconda parte includerà il continuo dell’articolo precedente per implementare anche il servizio di notifica allo script di backup. Così se non ti interessa la questione del backup puoi anche saltare oltre.
Iniziamo!
Indice
Inviare mail con terminale linux: Configuriamo il tool per inviare la posta elettronica
Se hai un indirizzo gmail, ottimo! Configureremo il servizio con questo provider di posta. Altrimenti creane uno da zero…anzi visto che dopo bisogna dare il permesso all’acceso di servizi di terze parti, per questioni di sicurezza creane uno da zero lo stesso!!!
Infatti poi devi andare a questo indirizzo, una volta che ti sei loggato con l’account con cui vuoi utilizzare la mail, e dare il consenso:
https://www.google.com/settings/security/lesssecureapps
Per prima cosa è necessario installare il tool sulla macchina linux con:
sudo yum install ssmtp
sudo apt-get install ssmtp
adesso andiamo nel file di configurazione che si trova in /etc/ssmtp/ssmtp.conf e modifichiamo i parametri:
[email protected]
UseTLS=YES
UseSTARTTLS=YES
mailhub=smtp.gmail.com:587
[email protected]
AuthPass=la_password_della_mail_che_hai_scelto
Salva il file e praticamente la parte di configurazione è finita.
Ti basterà lanciare il comando seguente per mandare una mail dal terminale:
ssmtp [email protected]
All’atto in cui darai invio il cursore del terminale attenderà che tu inserisca il “subject” della mail ed il testo vero e proprio.
Ti basterà scrivere:
Subject:Test Invio Mail
dare invio e scrivere il testo.
Quando premerai CTRL + D per uscire invierà la mail.
Puoi anche inserire il testo del messaggio in un file .txt.
Il comando cambia in questo modo:
ssmtp [email protected] < /path/dove/hai/salvato_il_file.txt
All’invio ssmtp prenderà il contenuto del file e lo invierà per posta.
Si conclude qui l’articolo per chi vuole solo configurare solo il servizio di posta elettronica tramite terminale linux.
Se vuoi proseguire con la lettura troverai una configurazione di uno scritp in bash che notificherò il corretto funzionamento del servizio di backup che abbiamo configurato in un articolo precedente.
Notifichiamo: Scriviamo uno script per notificare il corretto processo di backup
Andiamo subito al sodo!
Non faremo altro che arricchire lo script scritto in precedenza in questo articolo https://www.giustinoromano.it/2022/02/02/fare-backup-con-rsync/ con dei semplici costrutti condizionali.
Di solito un programma in linux quando cessa il suo processo “esce” restituendo un valore pari a 0.
Se dovessero presentarsi dei problemi il programma termina con un valore diverso. Ad esempio nell’articolo precedente si parlava di errore con codice 23. Significa che il filesystem dell’hard disk sorgente è diverso da quello di destinazione.
Il programma quindi restituirà il valore 23 per quel tipo di errore.
Il concetto è quindi molto semplice.
Diremo allo script : “se il programma alla chiusura restituisce un valore 0 mandami una mail che mi conferma che è andato tutto ok (e magari lo stampiamo anche a video con un echo) altrimenti mandami un’altra mail dove mi dici che qualcosa è andato storto e di controllare i log“.
Preventivamente ci prepareremo due file di .txt da qualche parte. Magari uno lo chiamiamo “successo.txt” e l’altro “errore.txt“.
Li editeremo come meglio crediamo. Uno magari come : “è andato tutto a buon fine”. L’altro : “Si è presentato un problema. Controlla i log!”
Vediamo il file:
#!/bin/bash
rsync -zvrah /path/cartella/di/origine /path/cartella/di/destinazione
if [ $? -eq 0 ]
then echo "Pare sia andato tutto ok"; ssmtp [email protected] < /path/del/file/successo.txt
else echo "Qualcosa è andato storto! Errore!!!"; ssmtp [email protected] < /path/del/file/errore.txt
fi
exit 0
Notifichiamo: spieghiamo come è composto lo script
La sintassi del linguaggio bash non è molto complicata. La trovi anche su HTML.it. La chiave di tutto è in quel $? che nel linguaggio bash è chiamata variabile built-in che memorizza lo stato di uscita di un comando.
Appunto se è uguale, -eq , a zero significa che andato tutto a buon fine, altrimenti…
Spero che questo articolo ti sia piaciuto e che possa essere stato utile anche come seconda parte a quello dei backup.
Se hai consigli da darmi o vuoi dirmi la tua non esitare a scrivermi qui sotto nel box dei commenti.
GiustinoRomano.IT – I do IT with my Heart.