Enviar emails con mailx y Gmail en CentOS

Vamos a ver cómo enviar mails con mailx en Linux CentOS 7.

 
enviar mails con mailx en CentOS
 
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 …

 

mailx - error envío con gmail

 

 
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:

 

mailx - gmail activar acceso de aplcaciones poco seguras

 

 

mailx - gmail activar acceso de aplcaciones poco seguras - 2

 

Permitir el acceso de aplicaciones poco seguras: SÍ

 

gmail - permitir el acceso de aplicaciones poco seguras
 

 

Hecho esto, ya podrás enviar correctamente emails con mailx, usando como smtp tu cuenta de gmail:

 
mailx enviado con gmail