GNU/Linux >> Linux Esercitazione >  >> Linux

Invia la posta dalla riga di comando con un server smtp esterno su Linux

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.


Linux
  1. Come faccio a inviare e-mail dalla riga di comando?

  2. inviare posta dal terminale Linux in una riga

  3. Come posso inviare un messaggio al mio socket.io websocket dalla riga di comando in Linux?

  4. Come posso inviare automaticamente la posta crittografata con gpg dalla riga di comando di Linux?

  5. Come inviare un messaggio di posta non elaborato su Linux?

Come inviare un'e-mail con allegato file dalla riga di comando

comando mailx in linux – invia e ricevi posta Internet

Invia e-mail in Linux dalla riga di comando

Come monitorare l'integrità del server Linux con gli strumenti della riga di comando

Linux / UNIX:Come inviare e-mail con allegati utilizzando il comando mailx

Mutt, Mail e Telnet – Invia e-mail dalla riga di comando o dal terminale di Linux