Invia mail da riga di comando
Il comando mail è essenziale che dovrebbe essere disponibile su qualsiasi server linux in modo che i vari servizi e altre applicazioni web in grado di generare e trasmettere messaggi di posta elettronica.
In un precedente post su mail command abbiamo visto come il comando mail può essere utilizzato per inviare e-mail dalla riga di comando sul server linux.,
In questo tutorial useremo una versione migliorata del comando mail. Si chiama mailx (o solo mail quando installato), e può fare molte più cose di quello che può fare il vecchio comando di posta del pacchetto gnu mailutils.
Come funziona
Il comando mail / mailx ha bisogno di un server smtp locale (MTA) in esecuzione per consegnare le e-mail. Il percorso seguito dall’e-mail è un po ‘ come questo-
mail -> sendmail -> local MTA -> recipient MTA
Il destinatario MTA sarebbe il server smtp di Gmail se il destinatario è qualcuno a gmail.com per esempio., Per l’MTA locale, è necessario installare un server smtp come Postfix. Un’installazione di base di Postfix con configurazione minima funzionerebbe nella maggior parte dei casi.
Installa il comando mailx
Su sistemi basati su Ubuntu/Debian il comando mailx è disponibile da 2 diversi pacchetti-
1. heirloom-mailx
2. bsd-mailx
Useremo il pacchetto heirloom-mailx perché ha più funzioni e opzioni.
Sui sistemi basati su CentOS/Fedora, c’è solo un pacchetto chiamato “mailx” che è il pacchetto heirloom.,
Per scoprire quale pacchetto mailx è installato sul tuo sistema, controlla l’output “man mailx” e scorri verso il basso fino alla fine e dovresti vedere alcune informazioni utili.
# ubuntu/debian$ sudo apt-get install heirloom-mailx# fedora/centos$ sudo yum install mailx
Utilizzando il comando mailx
Una volta installato, il comando mailx può essere referenziato direttamente con il nome mail, quindi è sufficiente digitarlo nella riga di comando.
1. Simple mail
Esegui il seguente comando, quindi mailx aspetterà che tu inserisca il messaggio dell’e-mail. È possibile premere invio per nuove linee. Quando hai finito di digitare il messaggio, premi Ctrl + D e mailx visualizzerà EOT.,
Dopo di mailx consegna automaticamente l’e-mail alla destinazione.
$ mail -s "This is the subject" Hi someoneHow are youI am fineByeEOT
2. Prendere messaggio da un file
Il corpo del messaggio di posta elettronica può essere preso da un file pure.
$ mail -s "This is Subject" < /path/to/file
Il messaggio può anche essere convogliato usando il comando echo-
$ echo "This is message body" | mail -s "This is Subject"
3. Destinatari multipli
Per inviare la posta a più destinatari, specificare tutte le e-mail separate da una virgola
echo echo "This is message body" | mail-s "This is Subject" ,
4., CC e CCN
Le opzioni “-c” e “-b” possono essere utilizzate per aggiungere rispettivamente gli indirizzi CC e CCN.
echo echo "Questo è il corpo del messaggio | / mail-s"Questo è Oggetto" - c
5. Specificare da nome e indirizzo
Per specificare un nome e un indirizzo “DA”, utilizzare l’opzione “-r”. Il nome deve essere seguito dall’indirizzo avvolto in “”.
echo echo "Questo è il corpo del messaggio"/mail-s "Questo è Oggetto" -r "Harry<>"
6., Specificare l’indirizzo” Reply-To ”
L’indirizzo reply to viene impostato con la variabile di opzione interna “replyto” utilizzando l’opzione “-S”.
7. Allegati
Gli allegati possono essere aggiunti con l’opzione “-a”.
echo echo "Questo è il corpo del messaggio"/mail-s "Questo è Oggetto" -r "Harry<>"- a/path/to/file
8. Usa server SMTP esterno
Questa è una caratteristica esclusiva, che si ottiene solo con heirloom mailx e non bsd mailx, o il comando mail di gnu mailutils o il comando mutt.,
Il comando mailx può utilizzare un server smtp esterno da utilizzare per inoltrare il messaggio. La sintassi è un po ‘ lunga ma ha senso.
Ecco una ripartizione
È possibile utilizzare i server smtp di Gmail e inviare e-mail tramite il tuo account Gmail. Che figata!
Per Gmail in particolare è necessario abilitare le impostazioni delle app meno sicure prima di poter inviare posta in questo modo.
9. Verbose-watch smtp communication
Quando si utilizzano server smtp esterni, è possibile scegliere di guardare l’intera comunicazione smtp che viene eseguita in background., Questo è utile specialmente durante il test o il debug dei server smtp.
Risoluzione dei problemi
Nel caso in cui le mail non vengano consegnate correttamente è necessario controllare alcune cose. La prima cosa da verificare è che un server smtp (mta) è in esecuzione localmente. Il comando netstat può dire che
Se un server stmp come Postfix è in esecuzione e ancora mail non stanno andando, quindi provare a riconfigurare Postfix per esempio. Sui sistemi Ubuntu/Debian, questo può essere fatto con il comando dpkg-reconfigure
$ sudo dpkg-reconfigure postfix
Quindi riprovare, il comando mail e dovrebbe funzionare., Se ancora non lo fa, provare a contattare il provider del server.
Nessuna mail dai sistemi locali
Se provi a inviare mail dal tuo computer locale a un indirizzo gmail, la tua posta molto probabilmente verrà rifiutata, quindi non provare a farlo.
Questo perché i normali computer connessi all’indirizzo Internet hanno un indirizzo ip che non è associato a nessun dominio valido in quanto tale e gmail verifica rigorosamente tali credenziali prima di approvare qualsiasi posta da passare.,
Note e risorse
Oltre a mailx, ci sono altri strumenti come Swaks e smtp-cli che possono essere utilizzati per inviare mail da riga di comando e supportare varie funzionalità come specificare server smtp e aggiungere allegati e così via.
Tuttavia il comando mailx è disponibile nei repository predefiniti delle distribuzioni più comuni, quindi può essere installato facilmente. Inoltre mantiene una sintassi molto simile a quella del comando mail che lo rende un drop in sostituzione del vecchio comando mail.,
Il comando mailx è anche in grado di leggere mail da server IMAP remoti, ma questo è qualcosa che abbiamo tenuto fuori da questo post e ne parleremo più tardi. Per saperne di più controllare la pagina man per il comando mailx con “man mailx”.