Invia posta tramite server SMTP
Il comando di posta predefinito sul terminale Linux utilizza il server smtp locale (mta) sulla porta 25 per inviare e-mail. Tuttavia, a volte è necessario specificare un server smtp esterno da utilizzare per l'invio di posta.
Ad esempio, hai appena impostato un server smtp, come Postfix o Exim, quindi vorresti testarlo per verificare se sta ricevendo e inoltrando le e-mail correttamente o meno.
Essere in grado di inviare e-mail dalla riga di comando utilizzando questo server smtp esterno è veloce piuttosto che dover configurare un client di posta come Thunderbird sul tuo computer locale.
Esistono 2 utility da riga di comando chiamate mailx e swaks che possono essere utilizzate per inviare e-mail utilizzando un server smtp esterno. Questi sono abbastanza utili quando devi inviare e-mail da uno script bash in modo automatico.
1. comando mailx
Il comando mailx è disponibile da molti pacchetti differenti come mailutils, heirloom-mailx ecc. Per prima cosa devi usare il comando aptitude per cercare il pacchetto mailx disponibile per il tuo sistema. Ecco un esempio
$ aptitude search mailx p bsd-mailx - simple mail user agent p bsd-mailx:i386 - simple mail user agent v mailx - v mailx:i386
Per scoprire quale comando mailx sta utilizzando il tuo sistema, esegui il comando readlink. Ecco un esempio di output.
$ readlink -f /usr/bin/mailx /usr/bin/bsd-mailx $ readlink -f /usr/bin/mailx /usr/bin/mail.mailutils
Non tutte le varianti di mailx possono utilizzare server SMTP esterni per inviare la posta. Solo quello che viene dal pacchetto chiocciola (tirato da heirloom-mailx) può farlo.
Utilizzeremo heirloom-mailx poiché consente di specificare i dettagli della connessione smtp in un unico comando ed emettere e inviare rapidamente un'e-mail.
$ sudo apt-get install heirloom-mailx
Ora invia un'e-mail con un server smtp esterno come questo -
echo "This is the message body and contains the message" | mailx -v -r "[email protected]" -s "This is the subject" -S smtp="mail.example.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="[email protected]" -S smtp-auth-password="abc123" -S ssl-verify=ignore [email protected]
Ecco una versione passo passo dello stesso comando -
$ echo "This is the message body and contains the message" | mailx -v \ > -r "[email protected]" \ > -s "This is the subject" \ > -S smtp="mail.example.com:587" \ > -S smtp-use-starttls \ > -S smtp-auth=login \ > -S smtp-auth-user="[email protected]" \ > -S smtp-auth-password="abc123" \ > -S ssl-verify=ignore \ > [email protected]
Assicurati di utilizzare le impostazioni corrette, come il numero di porta, il meccanismo di autenticazione, ecc. Il comando produrrebbe un output dettagliato fornendo tutti i dettagli della comunicazione SMTP che si verifica dietro, rendendo molto semplice il test e il debug.
Nota: Il pacchetto heirloom-mailx è stato rimosso da Ubuntu dalla versione 18 in poi. Ora devi installare il pacchetto s-nail.
$ sudo apt-get install s-nail
Il comando s-nail è lo stesso del comando mailx cimelio. Solo il nome è diverso. Esegui lo stesso comando sopra sostituendo mailx con s-nail e dovrebbe funzionare.
Se stai usando l'ultima versione di s-nail (14.9.x) la sintassi per specificare i dettagli del server SMTP potrebbe essere leggermente diversa. Controlla l'ultimo manuale qui
http://manpages.ubuntu.com/manpages/bionic/en/man1/s-nail.1.html
Dai un'occhiata al post precedente sul comando mailx qui -
9 esempi di comandi mail/mailx per inviare e-mail dalla riga di comando su Linux
2. Comando Swaks
Swaks (coltellino svizzero per SMTP) è un semplice strumento da riga di comando che può essere utilizzato per testare i server SMTP per verificare se stanno funzionando correttamente. Supporta anche TLS.
Installa swaks su Ubuntu/Debian con il seguente comando
$ sudo apt-get install swaks
Ora invia l'e-mail
$ echo "This is the message body" | swaks --to [email protected] --from "[email protected]" --server mail.example.com --auth LOGIN --auth-user "[email protected]" --auth-password "abc123" -tls
Tutte le opzioni sono abbastanza auto esplicative. L'opzione "--server" specifica il server SMTP esterno da utilizzare, "--auth" specifica il tipo di autenticazione. L'opzione "-tls" dice a swaks di usare STARTTLS.
Controlla la pagina man per ulteriori opzioni.