TLS ハンドラーを置き換えずに Indy IMAP クライアントへ SOCKS を追加する
Connect の前に既存の IOHandler の TransparentProxy へ TIdSocksInfo を設定し、メールサーバーを宛先のままにします。
Indy 10 IMAPClient で既存の IOHandler が TIdIOHandlerStack から派生している場合は、Connect を呼び出す前に SOCKS 情報を設定します。
ProxyInfo := TIdSocksInfo.Create(IMAPClient);
ProxyInfo.Version := svSocks5;
ProxyInfo.Host := 'proxy.example';
ProxyInfo.Port := 1080;
(IMAPClient.IOHandler as TIdIOHandlerStack).TransparentProxy := ProxyInfo;型は IdSocks と IdIOHandlerStack から取得します。まだ IOHandler がない場合は、メール接続に適したハンドラーを先に作成して割り当ててください。
設定済みの SSL IOHandler は維持します。それを単純な stack ハンドラーに置き換えると TLS が失われる可能性があります。TransparentProxy が提供するのはプロキシのネゴシエーションだけで、993 の暗黙的 TLS や 143 の STARTTLS ではありません。
この断片は認証なしの SOCKS5 を前提としています。公開メールサーバーでは SOCKS5 プロキシ一覧 が候補を提供します。選択したエンドポイントが必要な IMAP ホストとポートを許可していることを確認してください。プロキシのアカウントでは、TIdSocksInfo の認証・ユーザー名・パスワードを IMAP アカウントとは別に設定します。
ProxyInfo.Host は仲介者を指定します。IMAPClient.Host は意図した TLS 識別情報と証明書検証ポリシーを保ったままメールサービスです。