Ir al contenido


Foto

SSL Negotiation failed con Indy


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

#1 tiquinho

tiquinho

    Member

  • Miembros
  • PipPip
  • 36 mensajes

Escrito 25 septiembre 2022 - 09:07

Buenos días a todos

 

Se me presenta el siguiente mensaja "SSL Negotiation failed" cuando intento enviar un correo a tráves del componente Indy.

 

Pero este mensaje solo se me presenta con un host, ya que con otros host no pasa.

 

Ejemplo

 

Host que presenta error

 

Host de error:  mail.rehabilitar.com.co

Puerto: 465

email: correo@rehabilitar.com.co

pw: *******

 

Host que envia el correo sin problemas

 

Host de error:  mail.esepopayan.gov.co

Puerto: 465

 

email: correo@esepopayan.gov.co

pw: *******

 

Ya he realizado varios ajustes(ddl, ajuste a method entre otros) y nada, siempre que pongo el host mail.rehabilitar.com.co me sale el error, lo cambio a mail.esepopayan.gov.co y pasa sin problemas.

No se si tenga que ver que el host de esepopyan funcione en un servidor windows y el de rehabilitar en un servidor linux. No tengo conocimientos sobre esas cuestiones.

 

Muchas gracias por la ayuda que me puedan brindar.


delphi
  1. class function TUEnviarCorreo.EnviarCorreo(pParametrosEmail : TParametrosEmailAWA): Boolean;
  2. var vSSL : TIdSSLIOHandlerSocketOpenSSL;
  3. vSMPT : TIdSMTP;
  4. vDATA: TIdMessage;
  5. vAttachmentfile : TIdAttachmentFile;
  6. i : Integer;
  7. vZip : TZIPFile ;
  8. vNombreZipArchivo:string;
  9. begin
  10. vSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  11. vSMPT := TIdSMTP.Create(nil);
  12. vDATA := TIdMessage.Create(nil);
  13. vZip := TZipFile.Create;
  14. try
  15.  
  16. // asignar datos SSL
  17. vSSL.Host := trim(pParametrosEmail.FHost);
  18. vSSL.Port := pParametrosEmail.FPort;
  19. vSSL.MaxLineAction := maException;
  20. vSSL.Destination := trim(vSSL.Host) + ':' + trim(vSSL.Port.ToString);
  21. vSSL.SSLOptions.Method := sslvTLSv1_2;
  22. vSSL.SSLOptions.Mode := sslmUnassigned;
  23. vSSL.SSLOptions.VerifyMode := [];
  24. vSSL.SSLOptions.VerifyDepth := 0;
  25. // asignar datos SMTP
  26. vSMPT.Host := trim(pParametrosEmail.FHost);
  27. vSMPT.Port := pParametrosEmail.FPort;
  28. vSMPT.Username := trim(pParametrosEmail.FDireccionSalida); // please change to your gmail address //
  29. vSMPT.Password := trim(pParametrosEmail.FDireccionPassword);
  30. vSMPT.IOHandler := vSSL;
  31. vSMPT.AuthType := satDefault;
  32. vSMPT.UseTLS := utUseExplicitTLS;
  33. // asignar informacion del mensaje
  34. vDATA.Subject := trim(pParametrosEmail.FAsunto);
  35. vDATA.Recipients.EMailAddresses := trim('xxxxxx@gmail.com');
  36. if (pParametrosEmail.FCC = 'T') then
  37. vDATA.CCList.EMailAddresses := trim(pParametrosEmail.FDireccionSalida);
  38. vDATA.Body.Text := pParametrosEmail.FMensaje;
  39. vDATA.From.Name := trim(pParametrosEmail.FNombreDireccionSalida);
  40. vDATA.From.Address := trim(pParametrosEmail.FDireccionSalida);
  41. //vDATA.ReceiptRecipient.Address := trim(pParametrosEmail.FDireccionSalida);
  42. vNombreZipArchivo := pParametrosEmail.FNumeroFactura+'.zip';
  43.  
  44. vZip.Open(pParametrosEmail.FRuta+vNombreZipArchivo, zmWrite);
  45. for i := 0 to pParametrosEmail.FArchivosAdjuntos.Count - 1 do
  46. begin
  47.  
  48. vZip.Add(WideString(pParametrosEmail.FArchivosAdjuntos[i]));
  49. //vAttachmentfile := TIdAttachmentFile.Create(vDATA.MessageParts, WideString(pParametrosEmail.FArchivosAdjuntos[i]))
  50. end;
  51.  
  52. vAttachmentfile := TIdAttachmentFile.Create(vDATA.MessageParts,pParametrosEmail.FRuta+vNombreZipArchivo);
  53. vZip.Close;
  54. try
  55. //ShowMessage('correo 5 cuente');
  56. if not vSMPT.Connected then
  57. vSMPT.Connect;
  58. //ShowMessage('correo 5.1 cuente de nuevo');
  59. vSMPT.Send(vDATA);
  60. vSMPT.Disconnect(True);
  61. Result := true;
  62.  
  63. except
  64. on E: Exception do
  65. begin
  66. ShowMessage(E.Message);
  67. Result := false;
  68. end;
  69. end;
  70. finally
  71. vSMPT.Free;
  72. vSSL.Free;
  73. vZip.Free;
  74. end;
  75. end;

 

 

 

 

 

 

 

 

 

 

 

 


  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 25 septiembre 2022 - 11:41

Ha habido cambios en los protocolos para aumentar la seguridad. Quizás usas una versión antigua o el servidor de correo esté configurado para no permitir envíos desde aplicaciones consideradas no seguras.

 

Mira este ejemplo de seoane usando curl

 

 

Saludos.


  • 0

#3 tiquinho

tiquinho

    Member

  • Miembros
  • PipPip
  • 36 mensajes

Escrito 26 septiembre 2022 - 07:47

Ha habido cambios en los protocolos para aumentar la seguridad. Quizás usas una versión antigua o el servidor de correo esté configurado para no permitir envíos desde aplicaciones consideradas no seguras.

 

Mira este ejemplo de seoane usando curl

 

 

Saludos.

 

Hola buenos días

 

Uso la versión 10.6.2.0, trabajo con delphi 10.4


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 26 septiembre 2022 - 01:04

Hola tiquinho
 
Yo tengo esta configuración y funciona sin problema, 
  


delphi
  1.  
  2. IdSMTP1.Host     := Servidor;
  3.   IdSMTP1.Username := CuentaSalida;
  4.   IdSMTP1.Password := PasswSalida;
  5.   IdSMTP1.Port     := PuertoSalida;
  6.  
  7.   if chkBox_SSL.Checked then
  8.   begin
  9.     SSL.Port := IdSMTP1.Port;
  10.     SSL.SSLOptions.Method := sslvTLSv1_2;
  11.     IdSMTP1.IOHandler := SSL;
  12.     IdSMTP1.UseTLS := utUseExplicitTLS;
  13.   end;

Espero te ayude.

Saludos


  • 0

#5 tiquinho

tiquinho

    Member

  • Miembros
  • PipPip
  • 36 mensajes

Escrito 07 octubre 2022 - 11:55

Les comento que el problema se pudo solucionar a medias por así decirlo, simplemente se cambio de proveedor de correo a gmail y se pudo enviar los correos.

 

Supongo que el problema era desde infraestructura del proveedor de internet que ofrece a la institución.

 

La única diferencia que encontré entre el que funcionaba y el que no fue lo siguiente:

 

Correcta (institución ese popayán):

'220-host-esepopayan.esepopayan.gov.co ESMTP Exim 4.95 #2 Mon, 26 Sep 2022 13:14:36 -0500'
 
Incorrecta (ips rehabilitar popayán):
'220-vps-128502.ipsnuevapopayana.com ESMTP Exim 4.95 #2 Mon, 26 Sep 2022 13:47:17 -0500'
 
Creo que el error es aquí:
ipsnuevapopayana 
 
Ya que, en mi concepto, debería ser: ipsnuevapopayan (sin la a al final, ya que la ciudad es popayan). 
 
Por ahora cierro el tema.
 
Muchas gracias por sacar de su tiempo para darme una respuesta

  • 1

#6 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 mensajes
  • LocationCali, Colombia

Escrito 01 noviembre 2022 - 05:43

Hola grupo, se me está presentando el mismo problema,  desde mi aplicación en windows funciona perfectamente, pero al intentar correrlo en mi servidor linux ubuntu ya no funciona.  he intentado muchas otras cosas y no he podido solucionar el problema.

 

Tengo total control sobre el servidor linux pero aún así no he podido encontrar cual es el problema.  

 

Servidor ubuntu 22.04.

 

Saludos.


  • 0

#7 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 mensajes
  • LocationCali, Colombia

Escrito 18 enero 2023 - 08:21

El tema del correo en Linux no ha sido tan sencillo de solucionar,  aparentemente el soporte de indy para Linux OpenSSL no funciona (creo),  la solución fue hacer el envío sin el protocolo SSL y a un puerto especifico para ello en el servidor de correos,  no se con certeza si hay soporte de Indy para SSL, pero lo solucioné de esta manera al menos para continuar.

 

El servidor es de Godaddy.


delphi
  1. SMTP.IOHandler := LSocketSSl;
  2. SMTP.Host := 'smtpout.secureserver.net';
  3. SMTP.Port := 3535; //Puerto que no exige SSL
  4. SMTP.AuthType := satDefault;
  5. SMTP.Username := 'usuario@micorreo.com';
  6. SMTP.Password := 'password*';
  7. //SMTP.UseTLS := utUseExplicitTLS; //Se elimina esta línea
  8. SMTP.UseTLS := utNoTLSSupport; //Se adiciona esta línea.


  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 enero 2023 - 09:04

Hola amigo Gustavo,

 

Muchas gracias por la retro. YO suelo utilizar cURL para envío de correos, lo hago en windows y debería funcionar en Linux, voy a hacer unas pruebas y en cuanto tenga algo lo subo.

 

Saludos


  • 0

#9 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 mensajes
  • LocationCali, Colombia

Escrito 06 marzo 2023 - 03:44

SOLUCIONADO!

 

Definitivamente a día de hoy con la versión Delphi 11.3 las bibliotecas de Indy no soportan la versión instalada de opensll, por lo tanto, hay que instalar una versión anterior.

 

En el post de Synaptica.ino encontré la respuesta y ya la probé, funcionando muy bien en ubuntu 22.04 Ya probé el envío de correos y en webbroker el certificado para habilitar el https.

 

https://synaptica.in...n-ubuntu-20-04/


php
  1. wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz
  2. tar -xf openssl-1.0.2u.tar.gz cd openssl-1.0.2u
  3. ./config shared
  4. Make

Una vez compilado, solo hay que copiar las librerías *.so junto a la aplicación en Linux con el siguiente comando.


php
  1. cp ./*.so /<YOUR FOLDER>

* Recuerden que en linux puede necesitar anteponer sudo antes de los comandos dependiendo de los permisos

 

** igualmente cada vez que se compila en linux se borra la carpeta completa, así que tienen 2 opciones copiar nuevamente los archivos .so después de compilarlos o adiconarlos en los anexos de la aplicación para que al momento de compilación automáticamente los copie.


  • 1




IP.Board spam blocked by CleanTalk.