Comprobar mediante telnet la autenticación SMTP
Para realizar una prueba manual de la autenticación SMTP debemos “hablar” con el servidor en base64. Vamos a ver como hacerlo.
Hacemos un telnet al servidor en el puerto 25:
$ telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.dominio.com ESMTP
Seguimos diciendo al servidor “auth login“:
auth login 334 VXNlcm5hbWU6
La respuesta que nos da es “VXNlcm5hbWU6“, que si lo decodificamos vemos que nos pide el usuario:
$ php -r 'echo base64_decode($argv[1])."\n";' VXNlcm5hbWU6 Username:
Por lo que debemos codificar en base 64 el usuario y mandarlo al servidor:
$ php -r 'echo base64_encode($argv[1])."\n";' usuario@dominio.com dXN1YXJpb0Bkb21pbmlvLmNvbQ==
Con el usuario codificado en base64 se lo pasamos al servidor:
dXN1YXJpb0Bkb21pbmlvLmNvbQ== 334 UGFzc3dvcmQ6
A continuación nos pide la contraseña. Si descodificamos “UGFzc3dvcmQ6” lo podemos ver:
$ php -r 'echo base64_decode($argv[1])."\n";' UGFzc3dvcmQ6 Password:
Por lo que de nuevo debemos mandarle la contraseña en base 64. La codificamos:
$ php -r 'echo base64_encode($argv[1])."\n";' secreto c2VjcmV0bw==
Y se la mandamos al servidor:
c2VjcmV0bw== 235 ok, go ahead (#2.0.0)
Con su respuesta “235 ok, go ahead” indica que nos hemos autenticado correctamente. Si la contraseña fuese incorrecta recibiriamos “535 authorization failed (#5.7.0)”
La sessión completa sería:
# telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 mail.dominio.com ESMTP auth login 334 VXNlcm5hbWU6 dXN1YXJpb0Bkb21pbmlvLmNvbQ== 334 UGFzc3dvcmQ6 c2VjcmV0bw== 235 ok, go ahead (#2.0.0)
Relacionados
Imprimir


31. January 2009 at 8:54 pm :
tienes un pequeño problema con la distinción entre la b y la v, es “comprobar” llevas ya varias así, pero ésta en el título duele especialmente.
31. January 2009 at 9:01 pm :
De esta no me la ha dado el chivatazo el corrector. Corregido!
Muchas gracias
8. May 2009 at 12:14 pm :
¿y si te sale esto?
auth login
502 unimplemented (#5.5.1)
admin:
Hola,
El servidor de correo no dispone de autenticación. En el caso de qmail se trata de un parche: smtp-auth.
saludos!
28. January 2010 at 6:36 pm :
Hola, muy bueno el apunte