Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-03-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Lightbulb Conectar a servidor IMAP con SSL

Hola amigos.

Estoy intentando realizar una aplicacion para notificar cuando nos llegan correos nuevos. En mi centro esta montado un servidor IMAP, de la suite OpenSource Zimbra. Lo que sucede es que cuando intento conectar al servidor por el puerto 993, que es el que esta puesto ahora, al parecer se me conecta, pero entonces me da el siguiente error.

"Invalid Command"

Alguien sabe que sucede?
Estoy utilizando Delphi 7, Indy 9 y en el directorio de la aplicacion tengo las librerias "ssleay32.dll" y "libeay32.dll" que las cogi del cliente Exodus.

Si me pudieran ayudar se los agradeceria mucho.

Este es mi codigo de conexion.

Código Delphi [-]
  IMAP4.Host := 'imap.uci.cu';
  IMAP4.Port := 993;
  IMAP4.IOHandler := idSSLIOHandlerSocket1;
  idSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv3;
  idSSLIOHandlerSocket1.SSLOptions.Mode := sslmBoth;
  IMAP4.Connect;
Responder Con Cita
  #2  
Antiguo 17-03-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Acabo de descargar la Indy 10 a ver si con eso logro hacer algo. Ya que todos los ejemplos que veo en internet y que funcionan usan la version 10.
Luego les cuento como me va !
Responder Con Cita
  #3  
Antiguo 18-03-2010
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 21
Enan0 Va por buen camino
yo con Indy 10 no he podido hacerlo funcionar. voy a preparar un ejemplo con indy 9 si te parece bien, hacemelo saber y lo subo!

saludos
Responder Con Cita
  #4  
Antiguo 18-03-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Bueno nunca esta de mas. Si pudieras hacerlo te lo agradeceria muchisimo.
Responder Con Cita
  #5  
Antiguo 18-03-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Despues de un tiempo intentando establecer conexion con mi servidor logre hacerlo utilizando el siguiente codigo.

Código Delphi [-]
try
  ssl.ConnectTimeout := 3500;
  ssl.Open;
  ssl.StartSSL;
  ssl.PassThrough := True;
  ssl.SSLOptions.Mode := sslmUnassigned;
  ssl.SSLOptions.Method := sslvSSLv23;
  IMAP41.IOHandler := SSL;

  IMAP41.Connect(True);
except On E: Exception do
  Memo3.Lines.Add( Format('Exception "%s": %s', [E.ClassName, E.Message]) );
end;

Ya el host, puerto, usuario y contraseña se los puse al componente directo. Entonces agregue una pequeña porsion de codigo en los eventos OnStatus del SSLHandler y del idIMAP41 y lo que se ve es esto cuando intento conectarme.

Código:
Resolving hostname imap.edu.com
Connecting to 10.10.9.120
StatusInfo: SSL status: "before/connect initialization"
StatusInfo: SSL status: "before/connect initialization"
StatusInfo: SSL status: "SSLv2/v3 write client hello A"
StatusInfo: SSL status: "SSLv3 read server hello A"
StatusInfo: SSL status: "SSLv3 read server certificate A"
StatusInfo: SSL status: "SSLv3 read server done A"
StatusInfo: SSL status: "SSLv3 write client key exchange A"
StatusInfo: SSL status: "SSLv3 write change cipher spec A"
StatusInfo: SSL status: "SSLv3 write finished A"
StatusInfo: SSL status: "SSLv3 flush data"
StatusInfo: SSL status: "SSLv3 read finished A"
StatusInfo: SSL status: "SSL negotiation finished successfully"
StatusInfo: SSL status: "SSL negotiation finished successfully"
StatusInfo: Cipher: name = AES256-SHA; description = AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1
; bits = 256; version = TLSv1/SSLv3;
Pero entonces me salta esta exception.

Código:
Exception "EAssertionFailed": Assertion failure (D:\Cosas de Programación\Programas y componentes\Cosas de la Indy\indy10\Protocols\IdSSLOpenSSL.pas, line 1435)
Cuando miro la version de Indy que estoy utilizando veo estos datos.

Código:
  gsIdVersion = '10.2.3'; {do not localize}
  gsIdProductName = 'Indy';  {do not localize}
Las librarias que estoy utilizando son:

Código:
openssl-0.9.8i-i386-win32
Alguien tiene una idea de por que ocurre esto?

Aqui comentan algo al respecto pero no entiendo mucho.

http://forums2.atozed.com/viewtopic.php?f=7&p=4403

Si alguien me pudiera explicar se los agradeceria muchisimo.

Ha en esa linea del archivo "IdSSLOpenSSL.pas" lo que se ve es esto.
Es decir es en este procedimiento que se dispara la exception.

Código:
procedure TIdSSLIOHandlerSocketOpenSSL.OpenEncodedConnection;
begin
  Assert(Binding<>nil);

  if not Assigned(fSSLSocket) then begin
    fSSLSocket := TIdSSLSocket.Create(Self);
  end;
  Assert(fSSLSocket.fSSLContext=nil);

  fSSLSocket.fSSLContext := fSSLContext;

  if IsPeer then begin
    fSSLSocket.Accept(Binding.Handle);
  end else begin
    fSSLSocket.Connect(Binding.Handle);
  end;
  
  fPassThrough := False;
end;

Última edición por fide_uci fecha: 18-03-2010 a las 13:13:40.
Responder Con Cita
  #6  
Antiguo 19-03-2010
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 21
Enan0 Va por buen camino
al parecer hay una nueva actualizacion para la version indy 10
Tuesday, March 09, 2010 12:17 AM 759404 openssl-0.9.8m-i386-win32.zipme fije aca

http://indy.fulgan.com/SSL/

espero que te ayude!
Responder Con Cita
  #7  
Antiguo 19-03-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Bueno. Ya me di cuenta de eso. Acabo de descargar la version ultima que es la

Código:
  gsIdVersion = '10.5.7'; {do not localize}
  gsIdProductName = 'Indy';  {do not localize}
Con las DLL's que me dices.
----> openssl-0.9.8m-i386-win32.zip

Ahora me sucede lo mismo y me salta este error.

Código:
Exception "EAssertionFailed": Assertion failure (D:\Cosas de Programación\Programas y componentes\Cosas de la Indy\IndyTiburon\Lib\Protocols\IdSSLOpenSSL.pas, line 1813)
Responder Con Cita
  #8  
Antiguo 19-03-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Para mi que es algo mal que estoy haciendo no se.
Para usas la SSL no es necesario inicializar algun componente, clase o algo ?
Responder Con Cita
  #9  
Antiguo 22-03-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Alguien tiene una idea de que sucede ?
Responder Con Cita
  #10  
Antiguo 22-03-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Bueno amigos ya he logrado resolver gran parte de lo que sucedia. Ahora se me conecta sin ningun problema, pero lo que me sucede es lo siguiente.

Cuando yo le doy al Imap41.Connect, este deberia conectarse y loguearme automaticamente pero no lo hace. El estado de la conexion imap se mantiene en csNonAuthenticated y de ahi no sale. No se que es lo que sucede pero si logro resolver ese problema la verdad es que creo que ya tendre todo listo para lo que necesito.

Alguien me podria indicar que es lo que sucede ?
Responder Con Cita
  #11  
Antiguo 25-03-2010
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 21
Enan0 Va por buen camino
intentasete usar la llamada

Código Delphi [-]
IdIMAP41.Login

despues del connect?

la verdad que funciona muy diferente de lo que es Indy 9.

Yo la verdad que no pude hacerlos funcionar. (obvio no soy un experto) pero siempre tengo algun problema nuevo que no me deja avanzar.

Bueno aca dejo el ejemplo con Indy 9.0.18 y delphi 5 si utlizan delphi 6 o superior tendrian que agargar la unidad Variants en la declaracion.
esta version no incluye las DLL porque no me lo permite el Sistema (tamaño excedido)

Pd: el archivo es un RAR.
Archivos Adjuntos
Tipo de Archivo: zip Imap4 Test.rar.zip (9,1 KB, 58 visitas)

Última edición por Enan0 fecha: 25-03-2010 a las 09:09:49.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conectar a servidor ftp con delphi pablopessoa Internet 2 02-12-2008 20:44:47
Cómo conectar con un servidor MySQL jact85 MySQL 3 20-09-2008 14:45:18
Conectar a Servidor Mysql alt126 Conexión con bases de datos 2 29-07-2008 22:15:00
conectar a servidor con ip dinamico carlo_acp Conexión con bases de datos 1 29-10-2007 00:48:17
no me puedo conectar con el servidor jzginez MySQL 0 19-11-2003 22:00:40


La franja horaria es GMT +2. Ahora son las 21:09:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi