fbpx

Inviare mail con terminale linux


2 Feb 2022 - Informatica, Software


Inviare mail con terminale linux

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!

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.




Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Translate Me



Contatti


         

About Me








Mi chiamo Giustino e sono un Tecnico Informatico, sono appassionato, tra le tante cose, di Reti e Web Design!
Clicca sul link e scopri di più




Leggi anche...