Jepini lidhjes SMTP të Indy një IOHandler proxy
Lidhni SOCKS ose HTTP CONNECT me TIdSMTP duke përdorur vetitë IOHandler të versionit të saktë të Indy, me cilësime të veçanta për postën dhe proxy.
Në Indy, bashkëngjitni proxy-n IOHandler-it që përdor TIdSMTP. Mbani TIdSMTP.Host dhe Port të drejtuara drejt shërbimit të postës. Komponenti proxy i IOHandler-it ofron adresën e ndërmjetësit dhe kryen shtrëngimin e duarve të proxy-t në të njëjtin lidhje.
Vetia që përdorni varet nga versioni i Indy: Indy 9 ekspozon SocksInfo; Indy 10 përdor TransparentProxy. Kontrolloni bibliotekën e komponentëve në aplikacion në vend që të zgjidhni një shembull vetëm nga emri i botimit të Delphi.
Indy 10 me SOCKS5
Supozoni se formulari tashmë i zotëron këto komponentë:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
Lidhni dhe konfiguroni ata përpara se të hapni lidhjen SMTP:
Smtp.Host := 'smtp.example.net';
Smtp.Port := 587;
Smtp.IOHandler := MailSocket;
Socks.Host := 'proxy.example.net';
Socks.Port := 1080;
Socks.Version := svSocks5;
MailSocket.TransparentProxy := Socks;
Vlerat e portave janë shembuj. Porta SMTP duhet të përputhet me shërbimin dhe mënyrën TLS që synoni të përdorni. Porta SOCKS i përket proxy-t.
Për një test SMTP publik të lejuar ku lejohet një ndërmjetës publik, lista e proxy-ve SOCKS5 ofron adresa kandidate. Konfirmoni që kandidati lejon hostin dhe portën reale të postës, dhe përdorni degën pa vërtetim proxy pa mbajtur kredencialet e një proxy-t të mëparshëm.
TIdSocksInfo fillon me svNoSocks, pra vetëm vendosja e një emri hosti proxy nuk e aktivizon atë. Zgjidhni versionin e duhur të SOCKS. Nëse proxy kërkon vërtetim SOCKS5 me emër përdoruesi/fjalëkalim, konfiguroni si metodën e vërtetimit ashtu edhe kredencialet:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser dhe ProxyPassword përfaqësojnë vlera që ofron aplikacioni. Këto veti vërtetohen te proxy. Konfiguroni llogarinë SMTP dhe metodën e saj të vërtetimit veçmas në klientin e postës.
Ruajtja e një IOHandler TLS ekzistues
Një klient poste që përdor STARTTLS ose TLS të nënkuptuar ka nevojë për IOHandler-in e tij të aftë për SSL. Mos e zëvendësoni atë komponent me një TIdIOHandlerStack të thjeshtë vetëm për të shtuar proxy-n.
Në Indy 10 baza e IOHandler SSL rrjedh nga TIdIOHandlerStack dhe trashëgon mbështetjen e tij për proxy. Për një IOHandler SSL ekzistues të përputhshëm të quajtur MailTLS, lidhja bëhet:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
Cilësimi UseTLS i komponentit SMTP zgjedh ende mënyrën TLS të shërbimit të postës. Konfiguroni besimin e certifikatës dhe vërtetimin e emrit të hostit në integrimin TLS për smtp.example.net, jo për emrin e hostit të proxy-t. Shtimi i një tuneli nuk vendos vetvetiu vërtetimin e certifikatës.
Përdorimi i një proxy HTTP CONNECT në vend të kësaj
Për Indy 10, përdorni një komponent TIdConnectThroughHttpProxy, të disponueshëm nga IdConnectThroughHttpProxy. Duke supozuar se ekziston një instancë ekzistuese në pronësi të formularit e quajtur HttpTunnel:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
Nëse SMTP përdor MailTLS, caktoni HttpTunnel në TransparentProxy e atij trajtuesi. Objektivi i postës mbetet në Smtp.
Ky komponent vendos një tunel HTTP CONNECT dhe zbaton vërtetim bazë proxy përmes vetive të tij Username dhe Password. Një proxy që kërkon një mekanizëm tjetër vërtetimi ka nevojë për një implementim të përputhshëm; mos supozoni se këto dy veti ofrojnë të gjitha skemat e vërtetimit HTTP.
Proxy duhet gjithashtu të lejojë CONNECT në portën reale të serverit të postës. Leja për të tuneluar drejt serverëve web në 443 nuk nënkupton leje për të arritur një shërbim dërgimi në 587 ose një server SMTP në 25.
Lidhja e Indy 9
Indy 9 përdor një TIdIOHandlerSocket dhe vetinë e tij SocksInfo. Me komponentë në pronësi të formularit të quajtur Socket9 dhe Socks9, lidhja ekuivalente është:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
Implementimi i tij SOCKS mbështet versionet 4, 4a dhe 5. Rregullimi TransparentProxy dhe komponenti HTTP CONNECT i Indy 10 nuk mund të ngjitet thjesht në këtë ndërfaqe më të vjetër.
Nuk ka një hyrje paraprake të veçantë në proxy që duhet bërë me një klient tjetër TCP. Vërtetimi i proxy-t, konfigurimi i tunelit dhe shkëmbimi SMTP duhet t'i përkasin lidhjes që komponenti SMTP përdor në të vërtetë. Kur kjo lidhje është e saktë, një dështim mund të lokalizohet në negociimin e proxy-t, përshëndetjen SMTP, TLS ose vërtetimin e postës, në vend që çdo refuzim të trajtohet si fjalëkalim i gabuar poste.