Enviar correos desde el cliente msmtp por consola


Email Server icono Para enviar correos desde un servidor linux muchas veces se utiliza postfix, exim4 o cualquier otro servicio de envío de correo, este se instala en el servidor y con el comando mail se envía el correo hacia donde haga falta. El problema de esta configuración es que se nos queda un puerto abierto en el sistema, se puede cerrar a localhost y con el firewall pero aún así es mejor la política de seguridad de "Mínimo servicio", es decir, cuantos menos software y menos puertos abiertos mejor. Una alternativa a estos servicios para enviar correos en elos servidores son los clientes por consola. Básicamente se trata de un software para conectarse a servidores de correo por el protocolo SMTP o POP para utilizar su servicio de envio con als credenciales que tu le configures. Buscando estos clientes me encontré con ssmtp, este cliente tiene 2 problemas que no me gustaron desde el principio, el primero es que no tendrá más soporte por parte de su equipo de desarrollo, el otro es que su configuración se realiza para todos los usuarios del servidor, por lo que no se cumple la política de "Mínimos privilegios". Al tiempo de utilizar ssmtp me encontré con msmtp http://msmtp.sourceforge.net, este software si que tiene soporte y además puedes configurar las cuentas para un solo usuario, incluso si realizas una mala configuración de los permisos del fichero con el email y password te avisa y no te deja ejecutar el envío.

Instalación

Para instalarlo no tiene misterio, se ejecuta lo siguiente por consola:

apt install msmtp

Configuración

Podemos utilizar cualquier servicio que permita envío a través de smtp o pop, para la explicación utilizaremos el email:"test@gmail.com" y el password:"mipassword". Lo primero para configurar la cuenta crearemos un fichero llamado .msmtp en la carpeta del usuario en questión.

vi /home/usuario/.msmtprc

A continucación se explican las opciones más básicas para que funcione el servicio.

# Set default values for all following accounts.
defaults
auth           plain    # El tipo de autenticación
tls            on   # Activado el TLS, para cuando el cifrado es SSL/TLS
tls_starttls   off  # Activado el STARTTLS, para cuando el cifrado es STARTTLS
tls_certcheck  on   # Verificación de certificado por parte del cliente
logfile        ~/.msmtp.log # El fichero de log.

# Cuenta default
account        micuenta     # El nombre e la configuración
host           smtp.gmail.com   # Servidor donde conectamos
port           465      # Puerto al que conectamos
protocol       smtp     # Protocolo de conexión
from           test@gmail.com   # El remitente de los correos
user           test@gmail.com   # El usuario para autenticarse
password       mipassword   # El password para autenticarse

# Set a default account
account default : micuenta # Ponemos la cuenta por defecto como la cuenta "micuenta"

Testeando

Para comprobar la configuración podemos utilizar el siguiente comando de prueba.

echo -e "To: miotrocorreo@gmail.com\nFrom: test@gmail.com\nSubject:Esto es una prueba\n\n\nEsto es una prueba " | msmtp -C ~/.msmtprc "miotrocorreo@gmail.com"