Cómo comprobar la autenticación SMTP (SMTP Auth) y la conexión con StartTLS en el shell

SMTP StartTl comprobar desde el shell con OpenSSL

Muchas veces es necesario realizar verificaciones dentro del marco del soporte técnico. En muchas ocasiones la verificación se realiza creando una cuenta en el programa de escritorio, lo cual si bien es posible no es el método apropiado. Es preferible hacerlo desde la línea de comandos. Nos permite verificar o hacer test de autenticación SMTP, verificar las conexiones encriptadas mediante StartTLS.

¿Cómo comprobar la autenticación SMTP y la conexión con StartTLS usando la linea de comandos o shell?

Muchas veces es necesario realizar verificaciones dentro del marco del soporte técnico. En muchas ocasiones la verificación se realiza creando una cuenta en el programa de escritorio, lo cual si bien es posible no es el método apropiado. Es preferible hacerlo desde la línea de comandos. Nos permite verificar o hacer test de autenticación SMTP, verificar las conexiones encriptadas mediante StartTLS.

Autenticación SMTP

La autenticación SMTP es el mecanismo por el cual un cliente se identifica a sí mismo con su servidor de correo electrónico para una cuenta de correo concreta, cuando intenta enviar uno o más correos electrónicos.

SMTP Auth. es la abreviación por la que se conoce la autenticación SMTP, la cual es una simple extensión del protocolo SMTP (protocolo simple de transferencia de correo) mediante el cual un cliente SMTP (Outlook, Thunderbird, Mail, etc..) puede iniciar sesión utilizando un mecanismo de autenticación elegido entre los disponibles por el servidor.

¿Qué es el TLS o Transport Layer Security?

El protocolo criptográfico actual más usado, conocido como TLS, en castellano quiere decir, seguridad de la capa de transporte, y es el predecesor del SSL (Secure Sockets Layers o capa de puertos seguros) que proporciona un mecanismo de seguridad a las comunicaciones en internet.

Basado en el protocolo X.509 y por añadidura usando criptografía asimetrica para autentificar la contraparte, con énfasis en la propiedad del PFS o Perfect Forward Secrecy (Secreto perfecto hacia delante) que otorga una corta vida a la clave una seguridad extra para que no pueda ser descubierta.

Pruebas de conexión TLS y autenticación SMTP desde la linea de comandos en Linux y Windows

La gran mayoría de los problemas derivados en el envión de correo electrónico por SMTP provienen de la combinación entre el inicio de sesión de nombre (usuario) y la contraseña. Otros, en menor porcentaje derivan de la incompatibilidad entre el cliente de correo y la configuración usada en el mecanismos de autenticación o de un error en el mecanismo de autenticación utilizado ya sea en el servidor o en el cliente.

Preparación, prueba y verificación

Para verificar la autenticación SMTP sobre TLS en el shell se necesita el cliente OpenSSL

En este artículo vamos a usar Ubuntu Focal 20.04, por lo que si se usa otra distribución linux o windows deberá conocer como instalar los paquetes requeridos.
# Sistema de paquetes .deb
sudo apt-get install openssl
# Sistema de paquetes .rpm
sudo yum install openssl

Crear la autenticación (login)

Antes de realizar el test de autenticación SMTP AUTH PLAIN con TLS, necesitas crear la información necesaria para el login. Esta generalmente es el par, username (correo electrónico) y contraseña.

Usando Perl

$ perl -MMIME::Base64 -e 'print encode_base64("\000usuario\@dominio.tld\000contraseña")'
AHNvcLKMNBGsfcq3squdHJhbC5jYXN0cmlzLm
No debes olvidar el escape de la arroba o perl lo interpretará como un arreglo (array) en lugar de una cadena (string)

Usando Bash

$ echo -ne '\[email protected]\0contgraseña' | base64
AHNvcLKMNBGsfcq3squdHJhbC5jYXN0cmlzLm

Conexión al servidor SMTP usando openssl en el shell (bash, zsh…)

openssl s_client -connect smtp.dominio.tld:25 -starttls smtp

CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = aicha.es
verify return:1
… 
... información sobre los certificados,...
…
Extended master secret: no
Max Early Data: 0
---
read R BLOCK
Conexión OpenSSL desde el shell a un servidor SMTP

Cuando la conexión se ha realizado obtendremos bien un código 250

250 DSN

o en su lugar una llamada a nuestra interacción

read R BLOCK

Esto nos indica que ya se puede comenzar la comunicación con el servidor en forma interactiva.

Para obtener los verbos disponible usaremos EHLO, que nos devolverá la lista

EHLO there
250-central
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING

Usando el verbo que nos indica la posibilidad de hacer la autenticacion con login plano, usaremos el login obtenido con perl o bash.

AUTH PLAIN AHNvcG9ydGVAY2VudHJhbXXXXXXXlzLmNvbQBGZ1Q1bXhqNFNFUUV4NkF3Q00=
235 2.7.0 Authentication successful

Si todo es correcto, obtendremos un código 235, que indica que todo fue bien.

Contenido extra: verificar StartTLS para SMTP-, POP3- o servidores IMAP comprobando los certificados TLS/SSL y HTTPS

Correo

openssl s_client -connect imap.dominio.tld:143 -starttls imap
openssl s_client -connect pop.dominio.tld:110 -starttls pop3
openssl s_client -connect smtp.dominio.tld:25 -starttls smtp

HTTPS TLS/SSL

openssl s_client -tls1_2 -servername URI-Autoridad -connect IP:443

Notas adicionales

  • dominio.tld debe ser sustituido por el nombre del servidor y su extensión
  • xxxx.dominio.tld corresponde al servidor que este asignado al protocolo que queremos comprobar.
  • URI-Autoridad debe ser sustituido por la autoridad de la URI, es decir el nombre que pondrías en el navegador SIN el esquema, ni la ruta: Ej. castris.com

Otros enlaces

Agradecimientos

Gracias a Carlos Baker por su foto, obtenida de Unsplash

Comparte este articulo en

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *