¿Necesitas enviar correos electrónicos desde la linea de comandos o desde tus scripts, pero no necesitas la complejidad de un servidor de correo completo como Postfix o Sendmail?
sSMTP es una excelente alternativa ligera que te permite enviar correos a través de un servidor SMTP externo. En este artículo, te guiaré a través de la instalación y configuración de sSMTP.
¿Qué es sSMTP?
sSMTP (simple SMTP) es un agente de transferencia de correo (MTA) que entrega correos electrónicos a un servidor de correo externo. A diferencia de los MTA completos, sSMTP no recibe correos electrónicos ni gestiona colas de correo. Su simplicidad lo convierte en una opción ideal para servidores que solo necesitan enviar correos, como notificaciones del sistema o correos generados por aplicaciones web.
Instalación de sSMTP
Lo instalaremos desde una terminal con el siguiente comando:
sudo apt install ssmtp
Configuración de sSMTP
El archivo de configuración principal de sSMTP es /etc/ssmtp/ssmtp.conf
.
Ábrelo con tu editor de texto favorito (por ejemplo, nano
):
sudo nano /etc/ssmtp/ssmtp.conf
A continuación, te muestro un ejemplo de configuración para usar con Gmail:
root=tu_usuario@gmail.com
mailhub=smtp.gmail.com:587
rewriteDomain=tu_dominio
hostname=tu_nombre_de_host
FromLineOverride=YES
AuthUser=tu_usuario@gmail.com
AuthPass=tu_contraseña_de_gmail
UseTLS=YES
UseSTARTTLS=YES
Explicación de las directivas:
root
: La dirección de correo electrónico que recibirá los correos destinados al usuario root.mailhub
: El servidor SMTP y el puerto. Para Gmail, essmtp.gmail.com:587
.rewriteDomain
: Reescribe el dominio del remitente. Útil si quieres que los correos parezcan provenir de tu propio dominio.hostname
: El nombre de host del sistema. Escribe hostname en una terminal para saber cual es el tuyo.FromLineOverride
: Permite que los scripts y programas especifiquen la dirección «From:».AuthUser
: Tu nombre de usuario para el servidor SMTP (tu dirección de correo electrónico).AuthPass
: Tu contraseña para el servidor SMTP.UseTLS
: Usa TLS para una conexión segura.UseSTARTTLS
: Inicia una conexión TLS después de la conexión inicial.
Genera tu contraseña de Gmail
Por razones de seguridad, solamente puedes usar una contraseña de aplicación en lugar de tu contraseña principal de Gmail. Una contraseña de aplicación es una contraseña de 16 dígitos que le otorga permiso a un dispositivo o aplicación para acceder a tu Cuenta de Google. Las contraseñas de aplicaciones solo se pueden usar con cuentas que tengan la Verificación en 2 pasos activada.
Puedes generar una contraseña de aplicación en la configuración de seguridad de tu cuenta de Google.
Esta opción no está a la vista, con lo que si quieres crear una contraseña de aplicación, deberás acceder al buscador que hay en la parte superior de la página, y escribir las palabras «contraseña de aplicación»
Se cargará una nueva página dónde deberás elegir un nombre para tu servicio. En mí caso, lo llamaré sSMTP
Una vez creado se abrirá una ventana en la que se te mostrará tu nueva contraseña asociada al servicio.
Nota. Esta contraseña se deberá de usar sin los espacios que hay entre los grupos de palabras.
Y este sería el ejemplo para una cuenta de Gmail.
Guarda los cambios con Ctrl + o y cierra la ventana con Crtl + x
Probando los ajustes.
Para ver si todo está bien, envía un correo electrónico a una cuenta válida.
echo -e 'Subject: prueba\n\nProbando los ajustes' | sendmail -v una_cuenta_valida@gmail.com
Te llegará un email, pero, observa la información que arroja tu terminal
1 [<-] 220 smtp.gmail.com ESMTP 5b1f17b1804b1-9217a84341asm185713575e9.0 - gsmtp
2 [->] EHLO pi
3 [<-] 250 SMTPUTF8
4 [->] STARTTLS
5 [<-] 220 2.0.0 Ready to start TLS
6 [->] EHLO pi
7 [<-] 250 SMTPUTF8
8 [->] AUTH LOGIN
9 [<-] 334 VXNriojdjuf9od
11 [->] c21hcnRfheiwr30dkBdeiefbC5jb20=
12 [<-] 334 UfjddodfcmQ6
13 [<-] 235 2.7.0 Accepted
14 [->] MAIL FROM:<mi_email@gmail.com>
15 [<-] 250 2.1.0 OK 5beherie804b1-4364refjefdo185713575e9.0 - gsmtp
16 [->] RCPT TO:<email_destino@gmail.com>
17 [<-] 250 2.1.5 OK 5b1dfjeofeb1-4364a37erefjdfo13575e9.0 - gsmtp
18 [->] DATA
19 [<-] 354 Go ahead 5bjfeof4b1-4364a3ereoefjñ5713575e9.0 - gsmtp
20 [->] Received: by pi5 (sSMTP sendmail emulation); Sun, 22 Dec 2024 12:19:23 +0100
21 [->] From: mi_email@gmail.com
22 [->] Date: Sun, 22 Dec 2024 12:19:23 +0100
23 [->] Subject: prueba
24 [->]
25 [->] Probando los ajustes
26 [->] .
27[<-] 250 2.0.0 OK 173584057 5b1ffjd23o1-4364o4jjkpñ5713575e9.0 - gsmtp
28 [->] QUIT
29 [<-] 221 2.0.0 closing connection 5brty5804b1-436465ytu7o76m185713575e9.0 - gsmtp
Fíjate en las lineas 14 y 21, deberán coincidir con tu dirección de email, no debe de aparecer tu usuario local u otra cosa, y para que esto no te suceda, debes configurar el siguiente apartado.
Configuración de reenvío para usuarios locales:
El siguiente paso es necesario hacerlo, ya que nos aseguramos que los emails se reenvían correctamente.
Me explico, si tu usuario local es me, y tu dirección de email es juan@gmail.com, cuando envíes emails con sSMTP, el remitente será me@gmail.com, pero esa dirección no es la tuya.
Algunas veces, Mx Linux se pondrá en contacto contigo cuando haya alguna alerta del sistema, y si tu email no está correctamente configurado, recibirás un email de error por parte de Gmail diciendo que la cuenta de correo no existe.
Si quieres que los correos sean reenviados correctamente, debes editar el archivo /etc/ssmtp/revaliases
:
sudo nano /etc/ssmtp/revaliases
Añade una línea como esta para cada usuario:
me:tu_email@gmail.com:smtp.gmail.com:587
Probar sSMTP
Para probar la configuración, puedes usar el comando mail
:
echo "Prueba de correo desde sSMTP" | mail -s "Asunto de prueba" destinatario@ejemplo.com
Reemplaza destinatario@ejemplo.com
con la dirección de correo electrónico a la que deseas enviar la prueba.
También puedes usar sendmail
:
echo -e "Subject: Prueba desde sendmail\n\nEste es el cuerpo del mensaje." | sendmail -v destinatario@ejemplo.com
Seguridad
Dado que la contraseña se almacena en texto plano en el archivo de configuración, asegúrate de que solo el usuario root tenga acceso de lectura a este archivo:
me@pi:~
$ ls -l /etc/ssmtp/ssmtp.conf
ls: no se puede acceder a '/etc/ssmtp/ssmtp.conf': Permiso denegado
Con lo escrito anteriormente observamos que no tenemos acceso como usuario, solo root puede hacerlo, y para comprobarlo, haz lo siguiente:
me@pi:~
$ sudo su
root@pi:/home/me# ls -l /etc/ssmtp/ssmtp.conf
-rw-r----- 1 root mail 694 dic 22 12:05 /etc/ssmtp/ssmtp.conf
root@pi:/home/me#
El propietario (que es root) puede leer y escribir y el grupo leer, si no fuese así puedes cambiar los permisos con el siguiente comando.
sudo chmod 640 /etc/ssmtp/ssmtp.conf
Conclusión
sSMTP es una herramienta sencilla y efectiva para enviar correos electrónicos desde tu servidor Linux. Su configuración es relativamente simple y es una excelente opción si no necesitas la funcionalidad completa de un servidor de correo. Recuerda priorizar la seguridad utilizando contraseñas de aplicación y restringiendo los permisos del archivo de configuración.