Hay otros clientes de línea de comandos basados en terminales que también se pueden usar para enviar correos electrónicos como sendmail, mutt, SSMTP, telnet, pero en esta guía nos centraremos en el mail
comando.
El comando de correo invoca el binario estándar de sendmail (/usr/sbin/sendmail) que a su vez se conecta al MTA local para enviar el correo a su destino. El MTA local es un servidor smtp que se ejecuta localmente y acepta correos electrónicos en el puerto 25.
Esto significa que un servidor smtp como Postfix debería estar ejecutándose en la máquina donde pretende usar el comando de correo. Si no se está ejecutando ninguno, aparece el mensaje de error "send-mail:Cannot open mail:25".
Instalación
Instalar con este comando:
Para Ubuntu
sudo apt-get install mailutils
Para centos 7
sudo yum install -y mailx
Para centos 8/Alma Linux/Rhel
sudo dnf install -y mailx
Pruebe que el comando se instaló correctamente con este comando:
mail
El comando anterior verifica si hay un correo electrónico para el usuario actual. Debería ver una salida como esta:
➜ mail
No mail for centos
Uso
Enviar un correo electrónico sencillo
Use este comando para enviar un correo electrónico a [email protected]
. El -s
El argumento de la línea de comando es para especificar el asunto.
mail -s "Test mail" [email protected]
El comando anterior se bloqueará al presionar enter esperando que escriba su mensaje. Cuando termines usa Ctrl-D
para notificar al cliente de correo que ha terminado y que el correo electrónico está listo para enviarse.
❯ mail -s "Test mail" [email protected]
Hey John,
Please remember to send me the Linux Book.
Regards,
Me.
EOT
El EOT
se ingresó cuando presioné Ctrl-D
. Una vez que haga eso, el comando de correo enviaría el mensaje para su entrega y listo.
Enviar mensaje con contenido de un archivo
Use este comando para enviar un mensaje desde el archivo /path/to/file.txt
.
mail -s "Test mail" [email protected] < /path/to/file.txt
También puede usar este delineador en el que repite el contenido para enviarlo y luego canalizarlo al comando de correo.
echo "Hello world" | mail -s "Test mail" [email protected]
Enviar un correo electrónico a varios destinatarios
Para enviar un correo electrónico a varios destinatarios, puede utilizar una lista de correos electrónicos separados por comas como en este ejemplo:
echo "Hello world" | mail -s "Test mail" [email protected],[email protected]
Agregar destinatarios CC y BCC
También se pueden adjuntar direcciones en copia oculta (BCC) y en copia carbón (CC). Utilice -c <email>
para CC y -b <email>
para CCO.
Este ejemplo especifica CC y BCC:
echo "Hello world" | mail -s "Test mail" -c [email protected] -b [email protected]
Especifique el nombre y la dirección del remitente
Puede usar la opción -r
para especificar el nombre y la dirección del remitente como se ve a continuación:
echo "Hello world" | mail -s "Test mail" –r "Kip<[email protected]>" [email protected]
Alternativamente, puede usar -a
para agregar un encabezado adicional para adjuntar con el mensaje. Aquí hay un ejemplo de cómo proporcionar FROM
como parte de eso.
echo "Hello world" | mail -s "Test mail" [email protected] -aFrom:[email protected]
Para especificar el nombre from, use la siguiente sintaxis:
echo "Hello world" | mail -s "Test mail" [email protected] --aFrom:Kip\<[email protected]\>
Tenga en cuenta que tenemos que escapar de las flechas menor y mayor, ya que tienen un significado especial para el indicador de shell. Cuando está emitiendo el comando desde dentro de algún script, lo omitiría.
Especifique la dirección "Responder a"
Utilice el replyto
para especificar la respuesta a la dirección como en este ejemplo:
echo "Hello world" | mail -s "Test mail" [email protected] [email protected]
Correo electrónico con archivo adjunto
Enviar un correo electrónico desde [email protected]
a [email protected]
con un archivo adjunto.
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
Correo electrónico a un usuario del sistema local
Para enviar un correo electrónico a un usuario del sistema local, solo especifique el nombre de usuario en lugar del destinatario. Puede agregar el nombre de host pero no es necesario usando @hostname
.
mail -s "Test Subject" username
Habilitación detallada
Si necesita verificar lo que sucede mientras se procesa el correo electrónico, habilite la salida detallada con el arg -v
. Esto es bueno para la solución de problemas, como cuando desea verificar los comandos SMTP que utiliza el comando de correo. Aquí hay un ejemplo:
mail -v -s "Hello theere" [email protected] <<< 'This is the message'