Adicionar SOCKS a um cliente IMAP do Indy sem substituir o seu manipulador TLS
Defina TIdSocksInfo no TransparentProxy do IOHandler existente antes de Connect, deixando o servidor de correio como destino.
Para um Indy 10 IMAPClient com um IOHandler existente derivado de TIdIOHandlerStack, anexe as informações SOCKS antes de chamar Connect:
ProxyInfo := TIdSocksInfo.Create(IMAPClient);
ProxyInfo.Version := svSocks5;
ProxyInfo.Host := 'proxy.example';
ProxyInfo.Port := 1080;
(IMAPClient.IOHandler as TIdIOHandlerStack).TransparentProxy := ProxyInfo;Os tipos vêm de IdSocks e IdIOHandlerStack. Se ainda não existir um IOHandler, crie e atribua primeiro o manipulador adequado à ligação de correio.
Preserve um IOHandler SSL já configurado. Substituí-lo por um manipulador stack simples pode remover o TLS; TransparentProxy fornece apenas a negociação do proxy, não TLS implícito na 993 nem STARTTLS na 143.
O fragmento pressupõe SOCKS5 sem autenticação. Para um servidor de correio público, a lista de proxies SOCKS5 fornece candidatos; confirme que o endpoint escolhido permite o anfitrião e a porta IMAP necessários. Para uma conta proxy, configure a autenticação, o nome de utilizador e a palavra-passe de TIdSocksInfo separadamente da conta IMAP.
ProxyInfo.Host nomeia o intermediário. IMAPClient.Host continua a ser o serviço de correio com a identidade TLS pretendida e a sua política de validação de certificados.