Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

¿Cómo hacer comprobaciones de autenticación en un servidor de correo?

Recientemente tuve que hacer el diagnóstico de un servidor de correo que tenía problemas para autenticar a sus usuarios. El problema finalmente fue un error de configuración en el módulo de PAM, pero la experiencia me hizo recordar que me faltaba documentar para nuestros lectores como es que se realiza una conexión SMTP autenticando a través de Netcat o Telnet. Procedo entonces a documentar este procedimiento que puede resultar sumamente útil para realizar diagnósticos.

Evidentemente se requiere que el servidor de correo esté configurado para utilizar autenticación. Consultar el documento Configuración básica de Sendmail I. para lo relacionado con la configuración de autenticación.

Primeramente, se deben crear los criptogramas en Base64 para el nombre de usuario y clave de acceso. Esto se logra a través de una relativamente sencilla instrucción en perl:

perl -MMIME::Base64 -e 'print encode_base64("nombre-usuarios");'
perl -MMIME::Base64 -e 'print encode_base64("clave-de-acceso");'

Los dos criptogramas que se devuelvan, conviene guardarlos en un archivo o anotarlos en papel de manera temporal, de modo que se puedan utilizar posteriormente. Ejemplo para el usuario fulano con la clave de acceso 123qwe:

[usuario@mail ~]$ perl -MMIME::Base64 -e 'print encode_base64("fulano");'
ZnVsYW5v
[usuario@mail ~]$ perl -MMIME::Base64 -e 'print encode_base64("123qwe");'
MTIzcXdl

Iniciar una sesión con telnet o netcat (nc) hacia la IP o nombre del servidor de correo, especificando el puerto 25 (SMTP) o 587 (Submission), dependiendo el caso particular de cada quien si el ISP restringe las conexiones hacia puerto 25 desde ADSL.

nc mail.midominio.org 587

Una vez iniciada la sesión, ejecutar el siguiente mandato para iniciar comunicación:

helo midominio.org

Se utiliza AUTH LOGIN para indicar que se va a proceder a realizar una autenticación:

AUTH LOGIN

Lo anterior devuelve un criptograma en Base64 que en realidad es un dialogo para solicitar el nombre de usuario. Ingresar el criptograma que corresponde al nombre del usuario y pulsar la tecla ENTER.

A continuación, el sistema devuelve otro criptograma en Base64, el cual corresponde al diálogo para ingresar la clave de acceso. Ingresar el criptograma que corresponde a la clave de acceso del usuario.

El sistema debe devolver el siguiente mensaje para indicar que se ha autenticado con éxito:

235 2.0.0 OK Authenticated

Si algo salió mal, el sistema regresará algo como lo siguiente para indicar que ha fallado la autenticación:

535 5.7.0 authentication failed

A continuación, ejemplifico una conexión utilizando netcat y autenticando al usuario fulano con la clave de acceso 123qwe:

[usuario@mail ~]$ nc midominio.com 587
Trying 192.168.0.1...
Connected to midominio.com.
Escape character is '^]'.
220 midominio.com ESMTP ; Wed, 28 Oct 2009 16:30:23 -0400
helo midominio.com
250 midominio.com Hello dsl-189-xxx-xxx-xxx-dyn.prod-infinitum.com.mx
[189.180.218.69] (may be forged), pleased to meet you
AUTH LOGIN
334 VXNlcm5hbWU6
ZnVsYW5v
334 UGFzc3dvcmQ6
MTIzcXdl
235 2.0.0 OK Authenticated
quit
221 2.0.0 midominio.com closing connection

Si se desea enviar un mensaje de correo electrónico, solo basta utilizar la rutina de mandatos con MAIL FROM, RCPT TO y DATA.

[usuario@mail ~]$ nc midominio.com 587
Trying 192.168.0.1...
Connected to midominio.com.
Escape character is '^]'.
220 midominio.com ESMTP ; Wed, 28 Oct 2009 16:35:20 -0400
helo midominio.com
250 midominio.com Hello dsl-189-xxx-xxx-xxx-dyn.prod-infinitum.com.mx
[189.180.218.69] (may be forged), pleased to meet you
AUTH LOGIN
334 VXNlcm5hbWU6
ZnVsYW5v
334 UGFzc3dvcmQ6
MTIzcXdl
235 2.0.0 OK Authenticated
MAIL FROM:<fulano@localhost.localdomain>
250 2.1.0 <fulano@localhost.localdomain>... Sender ok
RCPT TO:<root@localhost.localdomain>
250 2.1.5 <root@localhost.localdomain>... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Hola. Este es un mensaje de prueba.
Adiós.
.

250 2.0.0 k2IM2RjA003987 Message accepted for delivery
quit
221 2.0.0 midominio.com closing connection


Atención: Salvo que se indique lo contrario, la licencia del texto de este documento es Creative Commons Reconocimiento 2.5, mediante la cual usted tiene permitido copiar, modificar, comunicar y distribuir el contenido de este texto, de manera total o parcial, y publicarlo o difundirlo en cualquier otro sitio de Internet o medio de comunicaciòn, siempre y cuando incluya o cite (1)el nombre de este sitio de Internet, (2)enlace permanente de este documento, (3)nombre del autor y (4)la misma licencia de distribución.

Opciones: Imprimir | Recomendar | Enlace permanente

Twitter Facebook Google Bookmarks Bitacoras.com Wikio Menéame Technorati Bloglines Digg Yahoo Buzz

Seguimientos (Trackback)

URL de seguimiento para esta entrada:
http://www.alcancelibre.org/trackback.php/como-hacer-comprobaciones-auth-smtp

[...] 2.0.0 k2IM2RjA003987 Message accepted for delivery quit 221 2.0.0 midominio.com closing connectionFuenteSHARETHIS.addEntry({ title: "¿Cómo hacer comprobaciones de autenticación en un servidor de correo?", url: [...] [leer más]

  • ¿Cómo hacer comprobaciones de autenticación en un servidor de correo?
  • 0comentarios
  • Crea cuenta nueva
Agregar comentario

Los siguientes comentarios son de la persona que los haya enviado. Este sitio se deslinda de cualquier responsabilidad respecto de las opiniones expresadas por los participantes en nuestros foros y secciones de comentarios, y el hecho de publicar las mismas no significa que se esté de acuerdo con éstas.