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