web-dev-qa-db-ja.com

Indy 10-IdSMTP.Connectが「SSLライブラリをロードできませんでした」を発生させます。

これが私の設定です:

IdSMTP1.Host := 'smtp.gmail.com';
IdSMTP1.Port := 587;
IdSMTP1.UseTLS := utUseExplicitTLS;
IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;

OpenSSLを here からダウンロードしました。両方ともlibeay32.dllおよびssleay32.dllはアプリケーションの同じフォルダにあります。

Indyのバージョン:10.0.52

次のコマンドは私のマシンで動作しています:

telnet smtp.gmail.com 587

Indyを使用して、TLSが有効なSMTPサーバー(私の場合はGmail)で適切に接続するにはどうすればよいですか?

のようです IdSSLOpenSSLHeaders.Loadは、特に次の手順のアドレスを見つけることができませんでした:

  @IdSslSessionGetId := LoadIndyFunction(fn_SSL_SESSION_get_id);
  @IdSslSessionGetIdCtx := LoadIndyFunction(fn_SSL_SESSION_get_id_ctx);
  @IdSslCtxGetVersion := LoadIndyFunction(fn_SSL_CTX_get_version);
  @IdSslCtxSetOptions := LoadIndyFunction(fn_SSL_CTX_set_options);

  @iddes_set_odd_parity := LoadFunctionCLib(fn_des_set_odd_parity);
  @iddes_set_key := LoadFunctionCLib(fn_des_set_key);
  @iddes_ecb_encrypt := LoadFunctionCLib(fn_des_ecb_encrypt);

これはWhichFailedToLoadから返されたメッセージです:

 SSL_CTX_set_info_callback_indy 
 X509_STORE_CTX_get_app_data_indy 
 X509_get_notBefore_indy 
 X509_get_notAfter_indy 
 SSL_SESSION_get_id_indy 
 SSL_SESSION_get_id_ctx_indy 
 SSL_CTX_get_version_indy 
 SSL_CTX_set_options_indy 
 des_set_odd_parity 
 des_set_key des_ecb_encrypt
14

Embarcaderoフォーラムでの以下のディスカッションからの引用は次のとおりです。

インディ10.0.52で動作するOpenSSLバージョン

OpenSSLはIndyがアクセスする必要があるすべてを公開しなかったため、Indy 8、9、および初期10バージョンはカスタムビルドのOpenSSL DLLを使用しました。そのため、IndyはDLLにいくつかのカスタム関数を追加する必要がありました。その後のIndy 10バージョンは、公式のOpenSSL DLLに切り替わりました。

IndyのカスタムOpenSSL DLLはどこにも(私が知っているように)配布されなくなりましたが、このアーカイブされたダウンロードを試すことができます。

http://web.archive.org/web/20071022121646/http://www.intelicom.si/www.nsf/2434100e396ad3f3c125705100369374/d6b8e150fe453facc1257082006fc8b9/$FILE/indy_openssl096g.Zip

いくつかの古いIndy固有のOpenSSL DLLがFulganの SSL Archiveフォルダー で利用可能です。

10.0.52はIndy 10の古いリリースです。そのリリース以降、Indy 10には多くの変更が加えられました。本当に 最新のIndy 10リリース にアップグレードする必要があります。その後、Fulganの SSLメインフォルダ で入手できる最新のOpenSSL DLLを使用できます。

18
Remy Lebeau