Sa Indy, ikabit ang proxy sa IOHandler na ginagamit ng TIdSMTP. Panatilihing nakatuon ang TIdSMTP.Host at Port sa serbisyo ng email. Ang bahagi ng proxy ng IOHandler ang nagbibigay ng address ng tagapamagitan at nagsasagawa ng proxy handshake sa kaparehong koneksyon.

Ang katangiang gagamitin ay depende sa bersyon ng Indy: inilalantad ng Indy 9 ang SocksInfo; gumagamit ang Indy 10 ng TransparentProxy. Suriin ang library ng mga bahagi sa aplikasyon sa halip na pumili ng halimbawa batay lamang sa pangalan ng release ng Delphi.

Indy 10 na may SOCKS5

Ipagpalagay na taglay na ng form ang mga bahaging ito:

  • Smtp: TIdSMTP
  • MailSocket: TIdIOHandlerStack
  • Socks: TIdSocksInfo

Ikonekta at i-configure ang mga ito bago buksan ang SMTP koneksyon:

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;

Ang mga halaga ng port ay halimbawa lamang. Dapat tumugma ang SMTP port sa serbisyo at TLS mode na balak mong gamitin. Ang SOCKS port ay pag-aari ng proxy.

Para sa pinahihintulutang pampublikong SMTP test kung saan pinapayagan ang pampublikong tagapamagitan, nag-aalok ang listahan ng SOCKS5 proxy ng mga kandidatong address. Tiyakin na pinapayagan ng kandidato ang aktuwal na mail host at port, at gamitin ang sangay na walang proxy authentication nang hindi pinapanatili ang mga kredensyal mula sa dating proxy.

Nagsisimula ang TIdSocksInfo sa svNoSocks, kaya ang pagtatakda lamang ng pangalan ng proxy host ay hindi ito pinapagana. Piliin ang angkop na bersyon ng SOCKS. Kung kailangan ng proxy ang SOCKS5 username/password authentication, i-configure ang paraan ng authentication at ang mga kredensyal:

Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;

Kinakatawan ng ProxyUser at ProxyPassword ang mga halagang ibinibigay ng aplikasyon. Nagpapatunay ang mga katangiang ito sa proxy. I-configure nang hiwalay ang SMTP account at ang paraan ng authentication nito sa email client.

Pagpapanatili ng umiiral na TLS IOHandler

Ang email client na gumagamit ng STARTTLS o implicit TLS ay nangangailangan ng IOHandler nitong may kakayahang SSL. Huwag palitan ang bahaging iyon ng simpleng TIdIOHandlerStack para lamang idagdag ang proxy.

Sa Indy 10, nagmumula ang base ng SSL IOHandler sa TIdIOHandlerStack at namamana nito ang suporta sa proxy. Para sa umiiral nang tugmang SSL IOHandler na pinangalanang MailTLS, nagiging ganito ang koneksyon:

Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;

Pinipili pa rin ng setting na UseTLS ng SMTP component ang TLS mode ng serbisyo ng email. I-configure ang pagtitiwala sa sertipiko at pagpapatunay ng hostname sa integrasyon ng TLS para sa smtp.example.net, hindi para sa hostname ng proxy. Ang pagdaragdag ng tunnel ay hindi mismo nagtatatag ng pagpapatunay ng sertipiko.

Paggamit ng HTTP CONNECT proxy sa halip

Para sa Indy 10, gumamit ng bahaging TIdConnectThroughHttpProxy, na makukuha mula sa IdConnectThroughHttpProxy. Ipagpalagay na may umiiral na instance na pag-aari ng form na pinangalanang HttpTunnel:

HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;

Kung gumagamit ang SMTP ng MailTLS, italaga ang HttpTunnel sa TransparentProxy ng handler na iyon sa halip. Nananatili ang target ng email sa Smtp.

Nagtatatag ang bahaging ito ng HTTP CONNECT tunnel at nagpapatupad ng Basic proxy authentication sa pamamagitan ng mga katangian nitong Username at Password. Ang proxy na nangangailangan ng ibang mekanismo ng authentication ay nangangailangan ng tugmang implementasyon; huwag ipagpalagay na ang dalawang katangiang ito ay nagbibigay ng lahat ng HTTP authentication scheme.

Dapat ding payagan ng proxy ang CONNECT sa aktuwal na port ng mail server. Ang pahintulot na mag-tunnel sa mga web server sa 443 ay hindi nangangahulugang pahintulot na maabot ang submission service sa 587 o SMTP server sa 25.

Ang koneksyon sa Indy 9

Gumagamit ang Indy 9 ng TIdIOHandlerSocket at ng katangian nitong SocksInfo. Sa mga bahaging pag-aari ng form na pinangalanang Socket9 at Socks9, ang katumbas na wiring ay:

Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;

Sinusuportahan ng implementasyon nitong SOCKS ang bersyon 4, 4a at 5. Hindi maaaring idikit nang direkta ang kaayusan ng TransparentProxy at HTTP CONNECT component ng Indy 10 sa lumang interface na ito.

Walang hiwalay na paunang proxy login na dapat gawin sa ibang TCP client. Ang proxy authentication, pag-set up ng tunnel at palitan ng SMTP ay dapat na kabilang sa koneksyong aktuwal na ginagamit ng SMTP component. Kapag tama ang wiring na iyon, matutukoy ang pagkabigo sa proxy negotiation, SMTP greeting, TLS o email authentication, sa halip na ituring ang bawat pagtanggi bilang maling email password.

Kaugnay na mga artikulo