Contents

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

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:

1
$ 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:

1
2
$ 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):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 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.
 root=tucorreo@dominiocorreo.com
 # Servidor SMTP al que reenviaremos los correos.
 mailhub=smtp.gmail.com:587
 # Datos de autenticación de la cuenta de correo.
 AuthUser=cuentareenviadora@gmail.com
 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:

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

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

1
$ 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:

1
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:

1
$ echo Correo de prueba | sudo mail -s Test tucorreo@dominiocorreo.com

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:

1
$ 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!