Error al intentar auth plain en SMTP

Iniciado por hechelion, 27 Enero 2010, 08:13 AM

0 Miembros y 2 Visitantes están viendo este tema.

hechelion

Saludos.

Estoy haciendo un programa (vb6) que tiene que mandar un correo, pero no he logrado superar la autenticación, no posteo en el foro de VB6, porque luego de varias pruebas tengo el mismo problema al intentar conectarme "a mano" mediante telnet y si pruebo sobre un servidor open relay mi programa si funciona, por lo cual descarto un problema de programación y sólo me queda un problema de concepto.

Lo que intento hacer luego del EHLO es un "AUTH PLAIN cadenacodificada", la cadena se encuentra en base64 y es "nombre_usuario password" y el servidor me retorna el siguiente error
"535 Incorrect  aunthentication data"

Por todo lo que he leído, el sistema debería funcionar y la verdad me quedé sin ideas, agradecería cualquier ayuda o indicación de que puedo estar haciendo mal.

acá les copio un intento con telnet, usando el usuario y contraseña "test" y "test" respectivamente.

220-cpanel.xxxxxxx.xx ESMTP Exim 4.69 #1 Wed, 27 Jan 2010 03:46:37 -0300
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.
ehlo xxxxxx.xx
250-cpanel.xxxxxx.xx Hello xxxxxx.xx [xxx.xxx.xxx.xxx]
250-SIZE 52428800
250-PIPELINING
250-AUTH PLAIN LOGIN
250-STARTTLS
250 HELP
auth plain dGVzdCB0ZXN0
535 Incorrect authentication data
421 cpanel.xxxxxx.xx: SMTP command timeout - closing connection


Se ha perdido la conexión con el host.

Presione cualquier tecla para continuar...



PD: Por cierto, use el buscador (con 999 días) y sólo encontré 3 temas donde ninguno se refería a mi problema.

hechelion

Ya encontré el error, mis disculpas, pero se me ocurrió justo después de escribir el post y no encontré un botón para borrar.

Igual, por si a alguien más tiene la misma duda le dejo la respuesta.
el ESMTP utiliza el byte null (0) como separador entre el nombre de usuario y la contraseña y yo estaba usando el byte espacio (20). o sea, yo hacía:

GenerarBase64(Nombre_usuario password)
y debía ser
GenerarBase64(Nombre_usuario\0password)

mogukiller

No te olvides que segun el estandar deberias de anteponer el byte a null tambien antes del user.

Quedaria

\0user\0password