Esistono altri client da riga di comando basati su terminale che possono essere utilizzati anche per inviare e-mail come sendmail, mutt, SSMTP, telnet, ma in questa guida ci concentreremo sulla mail
comando.
Il comando mail richiama il binario standard sendmail (/usr/sbin/sendmail) che a sua volta si connette all'MTA locale per inviare la posta alla sua destinazione. L'MTA locale è un server smtp in esecuzione locale che accetta messaggi sulla porta 25.
Ciò significa che un server smtp come Postfix dovrebbe essere in esecuzione sulla macchina in cui si intende utilizzare il comando mail. Se nessuno è in esecuzione, viene visualizzato il messaggio di errore "send-mail:Cannot open mail:25".
Installazione
Installa con questo comando:
Per Ubuntu
sudo apt-get install mailutils
Per centos 7
sudo yum install -y mailx
Per centos 8/Alma Linux/Rhel
sudo dnf install -y mailx
Verifica che il comando sia stato installato correttamente con questo comando:
mail
Il comando precedente controlla se è presente un'e-mail per l'utente corrente. Dovresti vedere un output come questo:
➜ mail
No mail for centos
Utilizzo
Invio di e-mail semplici
Usa questo comando per inviare un'email a [email protected]
. Il -s
argomento della riga di comando serve per specificare l'oggetto.
mail -s "Test mail" [email protected]
Il comando sopra si bloccherà dopo aver premuto invio in attesa che tu scriva il tuo messaggio. Quando hai finito usa Ctrl-D
per notificare al client di posta che hai finito e che l'e-mail è pronta per l'invio.
❯ mail -s "Test mail" [email protected]
Hey John,
Please remember to send me the Linux Book.
Regards,
Me.
EOT
Il EOT
è stato inserito quando ho premuto Ctrl-D
. Una volta che lo fai, il comando mail invierà il messaggio per la consegna e fatto.
Invia messaggio con contenuto da un file
Usa questo comando per inviare un messaggio dal file /path/to/file.txt
.
mail -s "Test mail" [email protected] < /path/to/file.txt
Puoi anche usare questa fodera in cui fai eco al contenuto da inviare e poi invialo al comando mail.
echo "Hello world" | mail -s "Test mail" [email protected]
Invia un'e-mail a più destinatari
Per inviare un'e-mail a più destinatari, puoi utilizzare un elenco di e-mail separato da virgole come in questo esempio:
echo "Hello world" | mail -s "Test mail" [email protected],[email protected]
Aggiunta di destinatari CC e BCC
È inoltre possibile allegare l'indirizzo della copia nascosta (BCC) e della copia carbone (CC). Usa -c <email>
per CC e -b <email>
per ccc.
Questo esempio specifica CC e BCC:
echo "Hello world" | mail -s "Test mail" -c [email protected] -b [email protected]
Specifica da nome e indirizzo
Puoi usare l'opzione -r
per specificare il nome e l'indirizzo da cui si vede di seguito:
echo "Hello world" | mail -s "Test mail" –r "Kip<[email protected]>" [email protected]
In alternativa, puoi usare -a
per aggiungere un'intestazione aggiuntiva da allegare al messaggio. Ecco un esempio di come fornire FROM
come parte di ciò.
echo "Hello world" | mail -s "Test mail" [email protected] -aFrom:[email protected]
Per specificare il nome da, utilizzare la seguente sintassi:
echo "Hello world" | mail -s "Test mail" [email protected] --aFrom:Kip\<[email protected]\>
Si noti che dobbiamo sfuggire alle frecce meno e grandi poiché hanno un significato speciale per il prompt della shell. Quando esegui il comando dall'interno di uno script, lo ometteresti.
Specifica l'indirizzo "Rispondi a"
Usa la replyto
per specificare la risposta all'indirizzo come in questo esempio:
echo "Hello world" | mail -s "Test mail" [email protected] [email protected]
E-mail con allegato
Invia un'email da [email protected]
a [email protected]
con un allegato.
mail -s "The File you requested" -a ~/Documents/file.txt -r [email protected] [email protected] <<EOF
Hi jane,
Please find the file requested attached.
Kind Regards,
John.
EOF
E-mail a un utente del sistema locale
Per inviare un'e-mail a un utente del sistema locale, specificare solo il nome utente al posto del destinatario. Puoi aggiungere il nome host ma non è necessario usando @hostname
.
mail -s "Test Subject" username
Abilitazione dettagliata
Se devi controllare cosa sta succedendo mentre l'email viene elaborata, abilita l'output dettagliato con arg -v
. Questo è utile per la risoluzione dei problemi come quando si desidera controllare i comandi SMTP utilizzati dal comando mail. Ecco un esempio:
mail -v -s "Hello theere" [email protected] <<< 'This is the message'