Check the new version here

Popular channels

Enviar correos desde la línea de comandos con sSMTP y Gmail

Fuente:



Nota del copiador (@danielarario):
Recomiendo este blog, ya que tiene muchos post interesantes, dejo el enlace a su pagina: http://sobrebits.com/

Enviar correos directamente desde la línea de comandos, a simple vista, puede no parecernos muy útil, puesto que si queremos enviar un correo, lo normal será que usemos una interfaz gráfica que nos permita poner emoticonos bonitos y letras con colores chillones. No obstante, enviar correos desde la línea de comandos puede permitir que nuestros scripts se comuniquen directamente con nosotros allá donde estemos. Si unimos esta capacidad para nuestros scripts junto con la programación de tareas con cron, podremos hacer que nuestro sistema haga absolutamente cualquier cosa que imaginemos con el añadido de que nosotros estaremos siempre informados de ello.

sSMTP, la herramienta elegida para enviar correos desde la terminal

Para llevar a cabo esta tarea podemos valernos de distintas herramientas, pero yo me quedo con sSMTP.
sSMTP es una pequeña y ligerísima herramienta que reenviará todo el correo que enviemos a un servidor SMTP externo (como el de Gmail), que será el encargado de hacer la entrega al buzón de destino. Las ventajas principales que presenta sSMTP son las siguientes:

Como he dicho anteriormente sSMTP reenvía el correo a un servidor externo, por lo que ni es una herramienta para leer correos, ni un servidor de correo ni nada que se le parezca, sSMTP simplemente reenvía correo, lo que lo hace extremadamente ligero.
Usar sSMTP con el SMTP de Gmail nos va a garantizar que aunque estemos detrás de una IP con una reputación baja los correos no acabarán sepultados en la carpeta de SPAM de nuestros buzones.

Instalar y configurar sSMTP para enviar correos con el SMTP de Gmail

Nota: Los pasos indicados en las siguientes líneas están testeados en Ubuntu Server 14.04, no obstante, no debería representar un problema adaptarlo a cualquier otra distribución.

Lo primero que debemos hacer, como siempre, es instalar las herramientas necesarias, que en este caso son sSMTP y mailutils:

$ sudo apt-get update && sudo apt-get install ssmtp mailutils


Después de instalar, deberemos editar el archivo de configuración principal, no sin antes hacer una copia del archivo original por si las cosas no salieran como deseamos:


$ sudo cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.old
$ sudo nano /etc/ssmtp/ssmtp.conf


Y deberemos dejarlo así (he borrado las líneas comentadas para hacerlo más compacto):


# Este campo define la cuenta de correo que va a recibir todos los correos de los UID por debajo de 1000 en el sistema local. Básicamente se trata de cuentas del sistema, como la cuenta de root.
 [email protected]
 # Servidor SMTP al que reenviaremos los correos.
 mailhub=smtp.gmail.com:587
 # Datos de autenticación de la cuenta de correo.
 [email protected]
 AuthPass=estoesunacontraseña
 # Usar SSL/TLS
 UseTLS=Yes
 UseSTARTTLS=Yes
 # Nombre del host
 hostname=nombredehost


Evidentemente estos datos deben ser sustituidos por los de nuestra cuenta de correo.

Después de esto, debido a que la contraseña de nuestra cuenta está en texto plano en el archivo de configuración, deberemos asegurarnos de que solo serán capaces de leer esa información los usuarios estrictamente necesarios.

Para ello cambiaremos la propiedad del archivo y se la asignaremos al usuario root y al grupo mail:

$ sudo chown root:mail /etc/ssmtp/ssmtp.conf

Y posteriormente asignaremos los permisos para que el resto de usuarios no pueda leer el archivo:


$ sudo chmod 640 /etc/ssmtp/ssmtp.conf


Por último, añadiremos a los usuarios que queramos que tengan la capacidad de enviar correos mediante la herramienta al grupo mail:


sudo adduser usuario mail


Prueba de envío de correo desde la línea de comandos y un extra

Con estos pasos correctamente ejecutados ya debemos ser capaces de enviar correos desde la línea de comandos. Para comprobarlo simplemente ejecutaremos lo siguiente:


$ echo Correo de prueba | sudo mail -s Test [email protected]


Si después de ejecutar esto nos dirigimos a nuestro buzón de correo veremos que tenemos un fantástico mail de asunto “Test” donde se nos indica que es un “Correo de prueba”.

Lo único malo de todo esto es que queda horrible si haces esto desde, por ejemplo, la cuenta root, puesto que en el nombre de la persona que envía el correo pone: root.
Si queremos cambiar el nombre del usuario que envía el correo con sSMTP, simplemente deberemos modificar el “full name” de dicho usuario. En el caso de root esto sería:


$ sudo chfn -f “Root del Servidor” root


Y a partir de ahora los correos llegarán de un tal: “Root del Servidor”.

Esta es una utilidad genial que instalar en nuestras Raspberry Pi o en cualquier servidor del que queramos recibir notificaciones.

¡En próximos post veremos como aplicar esta utilidad a algún script de monitoreo del sistema!
Comparte!

Agregado:

En mi caso, al ejecutarlo, me tiro dos errores. A continuacion, coloco la manera de solucionarlos.

1. Error.

Cannot open smtp.gmail.com:587
Can't send mail: sendmail process failed with error code 1


Soloucion: Agregar las siguientes lineas a iptables:

sudo /sbin/iptables -A INPUT -p tcp --sport 587 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo /sbin/iptables -A OUTPUT -p tcp --dport 587 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


2.Error.

send-mail: 530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 d2sm11978315qab.24 - gsmtp
Can't send mail: sendmail process failed with error code 1


Solucion. Ir a la configuración de seguridad de la cuenta Gmail y habilitar "Acceso a aplicaciones menos seguras" de www.google.com/settings/security.

Tambien recomiendo la pagina:

http://gnulibre.com/
0
0
0
0No comments yet