Usare Sendmail e Swaks per inviare email da Linux o Windows 10 con WSL

Guida all'uso di due strumenti per l'invio di email basati su riga di comando. Da usare in Linux oppure in Windows 10 con WSL 2.

Sendmail è MTA (mail transfer agent) che si occupa dell’invio di messaggi di posta elettronica verso server remoti mentre Swaks (Swiss Army Knife for SMTP) è un client SMTP che permette di collegarsi con qualunque server di posta in uscita, di qualsiasi provider.

Se si volesse creare e inviare un’email a partire da un modello in formato HTML, va tenuto presente che i normali client di posta modificano il sorgente introducendo spesso variazioni che rendono il messaggio illeggibile con alcuni programmi o webmail: Perché e quando preferire un client email a una webmail.

Con le principali distribuzioni Linux oppure con WSL 2 in Windows 10 (vedere Linux in Windows: come, quando e perché utilizzarlo) è possibile usare applicazioni opensource come Sendmail e Swaks che coprono esigenze differenti ma che in ogni caso permettono di inviare email senza sorprese; cosa particolarmente utile quando si ha a che fare con un template in formato HTML che non deve essere modificato per nessun motivo.

Uno strumento come Litmus PutsMail ben evidenzia come uno stesso messaggio HTML possa apparire in forme diverse a seconda del client email o del servizio webmail utilizzati.

La differenza tra Sendmail e Swaks è che mentre il primo si occupa autonomamente dell’invio delle email dialogando con gli MTA dei provider di posta di destinazione, il secondo è un client capace di dialogare con qualunque server SMTP.

Sia Sendmail che Swaks sono compatibili con tutte le principali distribuzioni Linux. Nel nostro caso, però, a mo’ di test, utilizzeremo entrambi gli strumenti da una macchina Ubuntu 20.04 LTS installata in Windows 10 con WSL 2. A dimostrazione di come anche da Windows 10 si possano effettuare tutte le operazioni che normalmente si eseguono da un’installazione “ad hoc” di una distribuzione Linux.

Nella finestra del terminale di Ubuntu Linux o comunque, nel nostro caso, nella finestra di WSL 2 (previa installazione di Ubuntu come macchina virtuale), scriviamo quanto segue per creare un file HTML contenente il testo dell’email che si vuole spedire:

nano template.html

Selezionando il sorgente dell’email in formato HTML, si può incollarla nel file template.html quindi salvarla premendo CTRL+O quindi CTRL+X per uscire dall’editor di testo.

Installare Sendmail per inviare direttamente le email

Nel caso di Sendmail andremo a digitare quanto segue per installare e configurare l’applicazione:

sudo apt-get install sendmail -y
sudo sendmailconfig

Dopo aver digitato il secondo comando premere Invio per rispondere affermativamente a ogni domanda (Y).

Digitando nano email.sh è possibile creare uno script per l’invio di un messaggio di posta HTML a partire dal contenuto del file template.html generato in precedenza.

All’interno del file email.sh si incollerà quanto segue apportando tutte le opportune sostituzioni per quanto riguarda destinatario, mittente e oggetto del messaggio:

ARG_EMAIL_TO="destinatario@provider.abc"
ARG_EMAIL_FROM="Nome mittente <info@nomemittente.abc>"
ARG_EMAIL_SUBJECT="Oggetto email"

(
echo "To: ${ARG_EMAIL_TO}"
echo "From: ${ARG_EMAIL_FROM}"
echo "Subject: ${ARG_EMAIL_SUBJECT}"
echo "Mime-Version: 1.0"
echo "Content-Type: text/html; charset='utf-8'"
echo
cat template.html
) | sendmail -t

Per rendere eseguibile lo script basterà digitare chmod +x email.sh e premere Invio.

Come ultimo passo, digitando ./email.sh si potrà procedere con l’invio dell’email.

Digitando sudo nano /etc/hosts si potrà eventualmente modificare la corrispondenza tra indirizzi IP e indirizzi mnemonici in modo da impostare ciò che dovrà apparire negli header del messaggio di posta.

Come inviare un messaggio HTML collegandosi a un server SMTP con Swaks

Mentre Sendmail si comporta come un MTA, Swaks è una sorta di “coltellino svizzero” per inviare messaggi di posta elettronica a qualunque server SMTP.

Per installare il programma in Ubuntu basta digitare quanto segue:

sudo apt-get install swaks -y

Per inviare subito un’email da un server SMTP remoto che usa il protocollo TLS (porta 465) basterà usare la sintassi seguente:

swaks --to destinatario@nomeprovider.abc --from "Nome mittente <info@provider.abc>" --header "Subject: Oggetto email" --server smtps.provider.abc --auth LOGIN --auth-user "info@provider.abc" --auth-password "PASSWORD" --tls-on-connect --attach-type text/html --attach-body template.html

In questo caso (--tls-on-connect) viene utilizzata la porta 465 ma si può usare anche STARTTLS specificando semplicemente --tls.

Con --attach-body template.html si chiede che il contenuto del file HTML venga utilizzato per formattare il messaggio di posta.

Per indicare più destinatari del messaggio basterà aggiungerli subito dopo --to separati da virgole.
Per nascondere tutti i destinatari (ccn:) tranne uno basterà indicare quest’ultimo aggiungendo --header "To: nome@destinatario.abc".

Ti consigliamo anche

Link copiato negli appunti