giovedì 30 luglio 2015

Inviare email da terminale

Molto spesso capita di dover integrare l'invio di una email a certi nostri script, per informarci su determinate situazioni, un esempio banale, collegandoci ad uno dei nostri post precedenti, potremmo farci dire attraverso una email, quando un file torrent è stato scaricato, oppure ogni volta che si fa un accesso tramite ssh, ci facciamo dire che è stato effettuato un accesso. Insomma questa funzione la possiamo integrare dove vogliamo.


Ma andiamo con ordine, per fare questo useremo un comando che si chiama “ssmtp”, è semplicemente un programma, che configurato a dovere, ci permette di utilizzare un nostro indirizzo email per mandare delle mail.

Procediamo con l'installazione, esso si trova praticamente in tutti i repository, per Ubuntu ad esempio diamo il seguente comando:

sudo apt-get install ssmtp

Per Arch Linux diamo questo:

sudo pacman -S ssmtp

Insomma l'installazione è davvero banale. Passiamo ora alla configurazione del programma.

CONFIGURAZIONE
Per configurarlo, dobbiamo andare a editare il file “/etc/ssmtp/ssmtp.conf”

Come prima cosa dobbiamo specificare con quale indirizzo email invieremo i nostri messaggi, e ogni indirizzo sarà associato ad un account. Apriamo quindi il file:

sudo nano /etc/ssmtp/ssmtp.conf

vedremo la scritta “root=postmaster”, possiamo togliere “postmaster”, e associare un indirizzo email all'utente “root”, e aggiungere, nella riga successiva, un altro utente con un suo indirizzo email, ad esempio:

daniele=mio_indirizzo@email.it

Ora andiamo a impostare il server smtp che verrà utilizzato per inviare le email. Ad esempio, nel mio caso, ho utilizzato un indirizzo email di Yahoo, quindi ho impostato il suo server smtp in questo modo:

mailhub=[smtp.mail.yahoo.com]:587

Dove 587 è la porta utilizzata dal server.
La mail di Yahoo, come anche Google, utilizzano il TLS e l'autenticazione, quindi per far funzionare tutto correttamente dobbiamo aggiungere anche le seguenti righe:

UseSTARTTLS=YES
UseTLS=YES
AuthMethod=LOGIN
#Per l'autenticazione
AuthUser=mio_indirizzo@email.it
AuthPass=password_email

Ora salviamo il file di configurazione chiudendolo con CTRL + X, e modifichiamo il seguente file:

sudo nano /etc/ssmtp/revaliases

In questo file aggiungiamo, per ogni utente, l'indirizzo email che utilizza con il rispettivo server smtp e la sua porta, ad esempio:

daniele:mio_indirizzo@email.it:server_smtp:porta

Anche qui chiudiamo con CTRL + X e salviamo.

La configurazione è quasi terminata, se provassimo ora a inviare una email con il comando “ssmtp”, non funzionerebbe in quanto dobbiamo dare i permessi anche agli altri utenti, oltre che a “root”, per leggere il file.

Cambiamo il gruppo dei file di configurazione in questo modo:

sudo chown root:mail /etc/ssmtp/*

e aggiungiamo l'utente che vogliamo utilizzare per inviare le email al gruppo “mail”, ad esempio:

sudo adduser -a daniele mail

Ora l'utente “daniele” ha i permessi per poter leggere i file, ma siccome nel file di configurazione è possibile che ci sia scritta la password per la mail, ci conviene rendere leggibile il file solamente agli utenti che sono nel gruppo “mail” oltre che all'utente “root”. Quindi diamo questo ultimo comando:

sudo chmod 640 /etc/ssmtp/*

Dove con il numero 6 diamo i permessi di lettura e scrittura all'utente “root”, con 4 diamo i permessi di lettura agli utenti del gruppo “mail” e infine con 0 neghiamo i permessi di lettura e scrittura a tutti gli altri utenti. Per saperne di più sul comando “chmod” potete andare a leggere questo nostro post.

Ora non ci resta che testare il comando.

Scriviamo:

ssmtp email@destinatario.com

Una volta cliccato invio, il programma attenderà che scriviamo le intestazioni della mail e il testo, come nel seguente esempio:

To:email@destinatario.com
From:nostra@mail.com
Subject:Oggetto della mail
Testo della mail

Una volta terminato di scrivere il testo clicchiamo CTRL + D, e il programma si chiuderà inviando la email.

In alternativa possiamo scrivere dentro un file di testo la mail, con l'intestazione e “darla in pasto” a ssmtp:

ssmtp email@destinatario.com < email_da_inviare.txt

CONCLUSIONI
Ora sapete come mandare le email dal vostro terminale, non vi resta che inserire questo comodissimo programma all'interno dei vostri script ;).

FONTI:
- Immagini Joel Garia;

Nessun commento:

Posta un commento