Ir al contenido


Foto

No funcionan los indys con SMTP autenticación de contraseña segura ????


  • Por favor identifícate para responder
18 respuestas en este tema

#1 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 08 febrero 2010 - 02:32

Uso Delphi7 con los indys 9, tengo mas de 5 años usando una herramienta para el envio de presupuestos por correo através de los indys, esto lo hacia con cuentas de prodigy que proporciona la compañia telefonica TELMEX sin ningun problema, hasta que decidimos instalar un servidor de correo personal para la empresa, ahora con otro dominio .com.mx, con el objetivo de que nuestro servidor no tuviesemos problemas en cuanto a spam y basura que viaja en la internet, decidimos usarlo con autenticación de contraseña segura por lo tanto el servidor requiere forsozamente autenticación, pero veo que en los indys no trae nada relacionado a eso, uso 2 componentes:

TIdMsgSend .- Me permite armar mi correo y adjuntar los archivos a enviar

TidSMTP .- Permite enviar el correo através de un servidor de correo saliente.

En este ultimo tiene una propiedad que se llama Authentication, del cual elijo atLogin, que se supone que es para autenticar el correo através de una contraseña pero al mandar el correo electronico me sale el siguiente error:



delphi
  1. EidProtocolReplyError with message '5.7.1 Unable to relay por MiCliente@hotmail.com'



Buscando en el google, casi no encontre nada relacionado con ese error relacionando a los indys, inclusive ya actualize a la version 10, donde me sale varios errores al abrir mi aplicacion en delphi señalando que varias propiedades ya no se usan, la propiedad authentication le cambiaron el nombre a authenticationfile y ya hice las pruebas con los 3 valores de esa propiedad y no funciona, marca el mismo error.

Agradezco cualquier ayuda.... GRACIAS....

  • 0

#2 kafastoforman

kafastoforman

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 277 mensajes
  • LocationMexico D.F.

Escrito 08 febrero 2010 - 03:28

que tal agag4, alguna vez me enfrente a un problema similar y mi problema radicaba en la asignacion de las propiedades del objeto IdSMTP, las cuales eran:

  host:= '';
  port:= 25;
  Username:= 'usuario';
  Password:= 'password';
  AuthenticationType:= atLogin;

Sí no asignaba correctamente esas propiedades, me dejaba enviar correos a direcciones del mismo dominio, pero cuando lo intentaba mandar a otro dominio era cuando me salia el error que mencionabas. asi que te recomendaria que revisaras bien esas propiedades

Otra posiblidad es que tu servidor de correo pida encripcion SSL.

Saludos

atte

Kafastoforman
  • 0

#3 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 08 febrero 2010 - 03:30

algo similar me sucede a mi, en este caso el servidor pide SSL y el puerto de salida es 465.  Imagino que las Indy deben tener un SMTP con ssl, no me he puesto a detallarlo ya que no lo tengo como prioridad pero de pronto sea una idea.
  • 0

#4 V3ct0r

V3ct0r

    Member

  • Miembros
  • PipPip
  • 16 mensajes
  • LocationVenezuela

Escrito 09 febrero 2010 - 01:21

Yo también e tenido el mismo problema porque requiere autentificación SSL yo buscando por la nube :) algunos dicen que tienes que tener un libreria para que funcione y otros dicen que hay que actualizar a la ultima versión de Indy
Le envío el extracto de código que yo conseguí aun no lo he probado.



delphi
  1. unit UfrmPrincipal;
  2.  
  3. interface
  4.  
  5. uses
  6.   Forms, Classes, Controls, StdCtrls,
  7.  
  8.   IdIOHandler, IdIOHandlerSocket, IdSSLOpenSSL, IdMessage,
  9.   IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  10.   IdMessageClient, IdSMTP;
  11.  
  12. type
  13.   TfrmPrincipal = class(TForm)
  14.     IdSMTP: TIdSMTP;
  15.     mCuerpoEmail: TMemo;
  16.     edAsuntoEmail: TEdit;
  17.     edServidorSmtp: TEdit;
  18.     lbAsuntoEmail: TLabel;
  19.     lbCuerpoEmail: TLabel;
  20.     IdMessage: TIdMessage;
  21.     lbServidorSmtp: TLabel;
  22.     edNombreUsuario: TEdit;
  23.     btnEnviarEmail: TButton;
  24.     lbNombreUsuario: TLabel;
  25.     edEmailRemitente: TEdit;
  26.     lbEmailRemitente: TLabel;
  27.     edContrasenaUsuario: TEdit;
  28.     edEmailDestinatario: TEdit;
  29.     lbEmailDestinatario: TLabel;
  30.     lbContrasenaUsuario: TLabel;
  31.     IdSSLIOHandlerSocket: TIdSSLIOHandlerSocket;
  32.     procedure btnEnviarEmailClick(Sender: TObject);
  33.   end;
  34.  
  35. var
  36.   frmPrincipal: TfrmPrincipal;
  37.  
  38. implementation
  39.  
  40. {$R *.dfm}
  41.  
  42. uses
  43.   Dialogs;
  44.  
  45. procedure TfrmPrincipal.btnEnviarEmailClick(Sender: TObject);
  46. begin
  47.   with IdMessage do
  48.   begin
  49.     Body.Clear();
  50.     Recipients.Clear();
  51.     Subject := edAsuntoEmail.Text;
  52.     Body.AddStrings(mCuerpoEmail.Lines);
  53.     Sender.Address := edEmailRemitente.Text;
  54.     Recipients.Add.Address := edEmailDestinatario.Text;
  55.   end;
  56.  
  57.   with IdSMTP do
  58.   begin
  59.     Port := 465;
  60.     Host := edServidorSmtp.Text;
  61.     AuthenticationType := atLogin;
  62.     Username := edNombreUsuario.Text;
  63.     Password := edContrasenaUsuario.Text;
  64.     Connect();
  65.  
  66.     btnEnviarEmail.Enabled := false;
  67.     try
  68.       Send(IdMessage);
  69.       ShowMessage('Correo enviado con éxito');
  70.     finally
  71.       btnEnviarEmail.Enabled := true;
  72.     end;
  73.  
  74.     if Connected then
  75.       Disconnect();
  76.   end;
  77. end;
  78.  
  79. end.



  • 0

#5 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 09 febrero 2010 - 06:07

gracias por sus respuestas, voy a probar el código que me proporcionas V3ct0r, en cuanto a lo que me comentas kafastoforman, si asigno bien las propiedades, lo tengo casi igual a como lo venia usando con las cuentas del dominio prodigy, pero cambio el usuario ahora es .com.mx y el puerto de salida es el 26.... les doy noticias pronto haber como me fue....
  • 0

#6 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 11 febrero 2010 - 11:04

No me funciona, sigue igual el problema, el tipo de seguridad no es SSL, ya intente actualizar a la version 10 y sigue igual, aun asi cambiandole las 3 valores de la propiedad AutenticathionFile.
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 11 febrero 2010 - 11:13

Yo creo que este es un tema acerca del bloqueo del puerto 25 que realizó TELMEX hace unos meses por cuestiones de protección anti-SPAM (según ellos).

http://www.telmex.co..._puerto_25.html

Puedes solicitar que te desbloqueen el puerto 25 a través del siguiente enlace

https://www.benefici...to25Internet.do

Salud OS


  • 0

#8 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 11 febrero 2010 - 11:35

Gracias egostar, pero se me olvido mencionar que uso el puerto 26 para el correo saliente.
  • 0

#9 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 11 febrero 2010 - 06:58

Adjunto imagen del outlook, para que vean como lo configuro, si no activo la opción MI SERVIDOR REQUIERE AUTENTICACION, no me manda los correos me marca el mismo error que delphi:


delphi
  1. EidProtocolReplyError with message '5.7.1 Unable to relay por MiCliente@hotmail.com'


y si activo esa opción y presiono el boton CONFIGURACION para capturar de nuevo la cuenta y la contraseña de esta manera si envia el correo dentro del outlook, ando investigando como hacer lo mismo pero con los indys ó será que ya no le dieron soporte después de que outlook agrego la opcion de autenticacion ????

Gracias.....

Archivos adjuntos


  • 0

#10 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 11 febrero 2010 - 08:23

Hola, la versión 9 no soporta SSL, más las Indy 10 tengo enterado que sí la soportan.

Saludos.
  • 0

#11 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 12 febrero 2010 - 09:25

Ya probe la versión 10 de los indys, dentro de la propiedad autenticathionFile que ahora lo llaman asi, elegi los 3 difentes valores que vienen dentro, hice cambios en otras propiedades, y no pude hacer que funcionará en esa versión....
  • 0

#12 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 12 febrero 2010 - 10:37

¿Llegaste a probar éste código?.
  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 12 febrero 2010 - 10:38

Vaya que es muy raro el asunto, solo faltaría analizar algo, ¿ será que tu servidor SMTP tiene proxie ?

Salud OS
  • 0

#14 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 12 febrero 2010 - 10:57

a ver vamos por partes, estas seguro que tienes las indy 10 instaladas??  yo las tengo y en el idSmtp no me sale la opción que dices.

Como yo necesito hacer lo mismo me puse a buscar y encontre que necesito unas librerias adicionales para trabajar con SSL, aqui en este articule del amigo Seoane lo explica mejor:

http://delphi.jmrds.com/?q=node/32

Para comenzar, luego que tengas instalado las INDY 10 y las librerias deberas agregar en tu formulario el componente idSMTP de la paleta Indy CLients  y un IdSSLIOHandlerSocketOpenSSL de la paleta Indy I/O Handler

Configuras las opciones basicas que ya eso sabes como, la unica diferencia es que deberas colocar en la propiedad USE TLS la opcion "UseImplicitTLS" ademas de  enlazar en la propiedad IOHANDLER del idSMTP con el componente socket de ssl que agregastes anteriormente.  Y en este ultimo componente deberas decirle el HOST y el PORT

Debes ejecutar una vez cada que se cargue el programa la siguiente sentencia

IdSSLOpenSSLHeaders.Load;

para lo que necesitas agregar IdSSLOpenSSLHeaders AL USES
y en teoria ya deberia funcionar, a mi me da un error de

---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EIdOSSLConnectError with message 'Error connecting with SSL.'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help 
---------------------------

Pero debe ser alguna configuración, prueba y me dices que tal te fue.
  • 0

#15 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 12 febrero 2010 - 12:20

Aclaro, con la configuración de gmail si funciona, pero con el servidor POP de la empresa no quiere trabajar.
  • 0

#16 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 12 febrero 2010 - 06:01

No uso servidor proxy, al buscarle en el google, encontre la forma de descifrar que tipo de seguridad usa con la propiedad


delphi
  1.   showmessage(SMTP.AuthSchemesSupported.Text);



En el mensaje me sale lo siguiente:



delphi
  1. GSSAPI
  2. NTLM



Leyendo un poco GSSAPI = Generic Security Service Application Program Interface
en pocas palabras, es un API para usar sistemas de seguridad de forma genérica. GSSAPI es un estándar de la IETF que aborda el problema que implica la existencia en la actualidad de muchos sistemas de seguridad similares pero incompatibles.

Leyendo la ayuda de los indys, la version 8 y 9 si aguantan ese tipo de seguridad, inclusive encontre un codigo para poder garantizar la autenticación:



delphi
  1. IdSMTP1.AuthenticationType := atNone;
  2. IdSMTP1.Connect;
  3.   try
  4.     if IdSMTP1.AuthSchemesSupported.IndexOf('LOGIN')>-1 then begin
  5.       IdSMTP1.AuthenticationType := atLogin;
  6.       IdSMTP1.Authenticate;
  7.     end;
  8.     IdSMTP1.Send(IdMessage1);
  9.   finally
  10.     IdSMTP1.Disconnect;
  11.   end;



Pero nunca entra a la condición de autenticacion, y si lo obligo a entrar me marca el mismo error.  :undecided:

ESTO ES PARA ALGUN MODERADOR:
Cambiando de tema no se si se dieron cuenta cuando uno escribe por aqui, empieza a bailar las letras, es decir se sube y se baja la barra de desplazamiento que esta a la derecha, espero algun moderador me lea, ya me ha sucedido varias veces al responder los temas.  :shocked:

  • 0

#17 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 12 febrero 2010 - 06:08

Hola,

Sobre el asunto del efecto que mencionas, yo no lo he notado, habrá que ver que explorador usas, yo uso Opera, no se si alguien ha experimentado ese efecto que mencionas.

Veremos si es posible reproducirlo y en su caso intentar corregirlo.

Salud OS
  • 0

#18 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 13 febrero 2010 - 09:21

Al estar investigando encontre que la autenticación que debo de mandar al enviar correos con los indys es "Autorizacion de tipo NTLM", pero no encuentro nada en la pagina de los indy, y en la web muy poca documentación.

  • 0

#19 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 13 febrero 2010 - 11:41

Baje el EasyMail Objects 6.5
http://www.quiksoft....tp/default.aspx
y ese si soporta NTLM, ya pude enviar correos, lastima que los indys de plano no se puede enviar correos por la misma autenticacion que creo no lo aguanta.
  • 0




IP.Board spam blocked by CleanTalk.