SSMTP: Envío fácil de correo desde la consola de comandos en Linux

Existen diferentes tipos de programas en GNU/Linux encargados de enviar correo. En el caso de hoy os hablaré de SSMTP, un programa que conozco desde hace no mucho, pero que me consta que en muchos entornos hace tiempo que esta funcionando.

¿Qué es ssmtp? ¿cómo funciona?

smtp es un emulador de sendmail de solo envío, para máquinas que normalmente recogen su correo desde un mailhub centralizado, ya sea a través pop, imap, un montajee nfs u otros medios. Proporciona la funcionalidad necesaria para que los usuarios y los programas envién correo a través de los agentes de usuario estándar.

Acepta un flujo de correo en la entrada estándar, con los destinatios especificados en la línea de comandos y reenvía el mensaje sincrónicamente, al agente de transferencia de correo de un mailhub, por ejemplo un servidor de correo o un relay en Gmail u otro proveedor.

Queda claro que no es un servidor de correo, como si lo es sendmail o postfix y no recibe correo, ni expande alias, ni administra colas. Su uso más habitual es para enviar correo automatizado, como por ejemplo alertas de sistemas o mensajes de scripts añadidos en cron.

Instalar ssmtp en GNU/Linux

Su instalación varía según la distribución, en sistemas RHEL o Centos, ya se encuentra incluido por defecto en los repositorios de EPEL

yum update
yum install ssmtp

En sistemas Debian, y similares como Ubuntu o Linux Mint, también se encuentra en los repositorios principales, su instalación es como sigue:

apt install msmtp

Se utiliza msmtp en vez ssmtp debido a que este último no se mantiene desde marzo de 2019. Por lo que Debian ofrece msmtp como alternativa. Tenéis más información al respecto al final de la entrada.

Para realizar la instalación en sistemas Arch y derivados, debemos tirar del repositorio AUR

pacman -S ssmtp

Por último, que no menos importante, en sistemas SUSE y OpenSUSE, simplemente hemos de escribir:

zypper in ssmtp

Ejemplo de uso de ssmtp con Gmail

En el caso de trabajar con Gmail, debemos configurar SSMTP, editando su archivo principal /etc/ssmtp/ssmtp.conf, indicando la configuración de la cuenta.

Es importante habilitar nuestra cuenta de Gmail para trabajar con aplicaciones no seguras. Si además utilizamos autentificación en dos factores para nuestra cuenta, debemos generar una App Password única, para poder trabajar con SSMTP.

Un ejemplo de configuración sería la siguiente:

root=cuentatest@gmail.com
 
mailhub=smtp.gmail.com:587
 
AuthUser=cuentatest@gmail.com
AuthPass=password
AuthMetod=LOGIN
UseSTARTTLS=YES
UseTLS=YES
 
FromLineOverride=YES
 
TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt

Como hemos visto cuando editamos su fichero de configuración la clave queda al descubierto, por lo que es muy importante que este archivo quede seguro. Por defecto solo tiene acceso root y el grupo mail. Si se mantiene esta configuración y no se añade ningún usuario adicional al grupo mail, no debería hacer falta ninguna acción adicional.

A continuación debemos crear un alias para nombres de usuarios locales, aunque esto es opcional:

/etc/ssmtp/revaliases
root:cuentatest@gmail.com:smtp.gmail.com:587

Para realizar una prueba:

mail -s "Esto es una prueba" cuentacorreo@ejemplo.com

También podemos añadir datos como el asunto y las cuentas en copia:

mail -s "TEST"
Subject: Esto es un correo de test
CC: segundocorreo@ejemplo.com

Como seguramente ya habrás, una vez hemos acabado de editar el correo, para enviarlo debemos apregar un par de veces la tecla ENTER y la combinación CTRL+D

Utilizar únicament SSMTP para enviar el correo

Por defecto, en nuestro sistema podemos tener configurados otros programas de correo, como sendmail o postfix. Para garantizar que todos los programas del sistema utilizan SSMTP, debemos realizar estos pasos, en el caso de los binarios mail o mailx

mv /usr/bin/mail /usr/bin/mail.orig
mv /usr/bin/mailx /usr/bin/mailx.original
ln -s /usr/sbin/ssmtp /usr/bin/mail
ln -s /usr/sbin/ssmtp /usr/bin/mailx

Fuentes consultadas

Wiki.archlinux.org – SSMTP (Español)

Página de man de SSMTP

Nota sobre sSMTP en Debian