Vamos a ver cómo enviar mails con mailx en Linux CentOS 7.
Mailx necesita un servidor local SMTP (MTA : Mail Transfer Agent) para poder enviar los mails.
Lo primero actualizamos el sistema
yum -y update |
E instalamos mailx:
yum install -y mailx |
Creamos un enlace simbólico:
ln -s /bin/mailx /bin/email |
Ahora tenemos que configurar el servidor SMTP para realizar envíos, y usar el de Google:
vi /etc/mail.rc |
Editamos el fichero de configuración para enviar emails con nuestra cuenta de gmail, y lo configuramos así:
set smtp=smtps://smtp.gmail.com:465 set smtp-auth=login set smtp-auth-user=usuario@gmail.com set smtp-auth-password=PASSWORD set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb/ |
Y ahora enviamos un email de esta forma por medio de la terminal:
echo "cuerpo del mail" | mail -v -s "Message Subject" destinatario@correo |
Parámetros de mailx
-a archivo : adjunta un archivo al mensaje.
-b lista : pone en copia oculta a “lista”. Las direcciones de “lista” han de estar separadas por coma.
-c lista : pone en copia a “lista”. Las direcciones de “lista” han de estar separadas por coma.
-d : habilita el modo debugging y deshabilita la entrega real de mails. Está pensado para fines de desarrollo.
-q (archivo) : utiliza el contenido de un archivo como cuerpo del email.
-r : establece la dirección del remitente.
-s : subject. El asunto del email.
-v : Verbose mode. Muestra por pantalla los detalles del envío.
Varias formas de enviar mail con mailx
Mail simple
Tecleamos el comando
mail -s "asunto del mail" destinatario@correo |
Y comenzamos a escribir el contenido del mail. Podemos pulsar enter para añadir nuevas líneas.
Cuando acabemos el mail tecleamos Ctrl + D y mailx mostrará EOT
Tras eso, el mail se enviará
$ mail -s "asunto del mail" destinatario@correo Hola a alguien Cómo estás Estoy bien Adiós EOT |
Tomar el mensaje de un archivo
El cuerpo del email será el contenido de un fichero.
$ mail -s "asunto del mail" destinatario@correo < /ruta/al/fichero |
También podemos añadir el mensaje por medio de una tubería y el comando “echo”
echo "cuerpo del mail" | mail -s "asunto del mail" destinatario@correo |
Enviar mail a múltiples destinatarios
Para enviar el email a varios destinatarios, especificamos las direcciones de correo separándolas con una coma:
echo "cuerpo del mail" | mail -s "asunto del mail" destinatario1@correo,destinatario2@correo |
Usar Cc y CCO (enviar a “en copia” y “con copia oculta”)
Usaremos las opciones -b (copia oculta) y -c (en copia):
echo "something" | mailx -s "asunto" -b copia_oculta@correo -c en_copia@correo -r remitente@correo destinatario@correo |
Especificar el nombre y la dirección desde la que se envía el mail
Usaremos la opción -r
Detrás del nombre debemos poner la dirección envuelta en “<>”
$ echo "cuerpo del mail" | mail -s "asunto del mail" -r "NOMBRE<[email protected]>" destinatario@correo |
Especificar la dirección “Responder a”
Podemos especificar la dirección de respuesta, usando la opción -S y la variable”replyto”
# email con "responder a" $ echo "cuerpo del mail" | mail -s "asunto del mail" -S replyto="[email protected]" destinatario@correo |
# email con "responder a" y un nombre $ echo "cuerpo del mail" | mail -s "asunto del mail" -S replyto="nombre<[email protected]>" destinatario@correo |
Adjuntos
Podemos añadir adjuntos con la opción -a
$ echo "cuerpo del mail" | mail -s "asunto del mail" -r "NOMBRE<[email protected]>" -a /ruta/al/archivo destinatario@correo |
Usar un SMTP externo
$ echo "cuerpo del mail" | mailx -v -r "remitente@correo" -s "asunto del mail" -S smtp="smtp.loquesea:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="mail_del_smtp@correo" -S smtp-auth-password="abc123" -S ssl-verify=ignore destinatario@correo |
Si tenemos problemas para enviarlo podemos eliminar la línea:
-S smtp-use-starttls |
Error con mailx usando Gmail : “Username and Password not accepted“ (Acceso de aplicaciones poco seguras)
Es bastante probable que, usando gmail como smtp en mailx, recibamos el error:
535-5.7.8 Username and Password not accepted. Learn more at smtp-server: 535-5.7.8 …
Si estás seguro de que has introducido correctamente tu usuario y contraseña, entonces el problema es que tienes que habilitar el acceso a aplicaciones poco seguras en tu cuenta de Gmail.
Has de acceder a tu cuenta de Gmail, a la sección “Acceso de aplicaciones poco seguras“, y permitir el acceso de aplicaciones poco seguras:
Permitir el acceso de aplicaciones poco seguras: SÍ
Hecho esto, ya podrás enviar correctamente emails con mailx, usando como smtp tu cuenta de gmail: