Добавление SOCKS в IMAP-клиент Indy без замены обработчика TLS
Задайте TIdSocksInfo в TransparentProxy существующего IOHandler до Connect, оставив почтовый сервер пунктом назначения.
Для Indy 10 IMAPClient с существующим IOHandler, производным от TIdIOHandlerStack, подключите сведения SOCKS перед вызовом Connect:
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 обеспечивает только согласование прокси, а не неявный TLS на 993 или STARTTLS на 143.
Фрагмент предполагает SOCKS5 без аутентификации. Для публичного почтового сервера список прокси SOCKS5 даёт кандидатов; убедитесь, что выбранная конечная точка разрешает нужные хост и порт IMAP. Для прокси-аккаунта настройте аутентификацию, имя пользователя и пароль TIdSocksInfo отдельно от аккаунта IMAP.
ProxyInfo.Host задаёт посредника. IMAPClient.Host остаётся почтовой службой с задуманной идентичностью TLS и политикой проверки сертификатов.