Cómo hacer que Indy OpenSSL sea compatible con la mayoría de los servidores

Utilizo el siguiente código para configurar SSLHandler para la aplicación de envío / recepción POP3 / SMTP:

IdSSLHandler->SSLOptions->Mode        = sslmClient;
IdSSLHandler->SSLOptions->Method      = slvSSLv23;
IdSSLHandler->SSLOptions->SSLVersions = TIdSSLVersions() << sslvSSLv3 << sslvTLSv1 << sslvTLSv1_1 << sslvTLSv1_2;

Por lo tanto, se supone que el código anterior es compatible con SSL 3, TLS 1, TLS 1.1 y TLS 1.2 automáticamente. Esto no funciona bien e informa un error de "versión incorrecta". Cuando elSSLVersions&nbsp;la línea se elimina y luego funciona, pero por defecto incluyesslvSSLv2&nbsp;que no quiero apoyar Es lo mismo que:

IdSSLHandler->SSLOptions->Mode        = sslmClient;
IdSSLHandler->SSLOptions->Method      = slvSSLv23;
IdSSLHandler->SSLOptions->SSLVersions = TIdSSLVersions() << sslvSSLv2 << sslvSSLv3 << sslvTLSv1 << sslvTLSv1_1 << sslvTLSv1_2;

Por alguna razón, esto funciona y lo anterior no funciona en el mismo servidor. Yo sé esoslvSSLv23&nbsp;es una especie de valor de "usar cualquier versión disponible". Entonces, ¿por qué no funciona con el código anterior donde la versión 2 no está presente?

Además, puedo usar TSL1, que parece estar ampliamente implementado, pero si el servidor admite 1.1 o 1.2, entonces mi código no usará versiones más recientes, pero forzará la versión 1.0 a menos que se use algo como el anterior.

Me gustaría hacer una inicialización con los siguientes objetivos:

compatible con todos los servidores, independientemente de si usan v3, tls1, tls1.1 o tls1.2use automáticamente la versión más reciente y use una versión inferior si la más reciente no está disponible en el servidor pero no es inferior a la versión 3 - falla / excepción si la versión es inferior a 3

Pensé que la primera versión del código proporcionaría eso, pero informa un error de versión. ¿Son posibles los objetivos anteriores o se debe proporcionar una configuración de usuario para seleccionar la versión SSL a utilizar?