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.
Contenidos
¿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 '\0usuario@dominio.tld\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
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