Yn Indy, atodwch y dirprwy at yr IOHandler a ddefnyddir gan TIdSMTP. Cadwch TIdSMTP.Host a Port yn pwyntio at y gwasanaeth post. Mae cydran dirprwy'r IOHandler yn darparu cyfeiriad y cyfryngwr ac yn cyflawni'r handshake dirprwy ar yr un cysylltiad.

Mae'r briodwedd a ddefnyddiwch yn dibynnu ar fersiwn Indy: mae Indy 9 yn datgelu SocksInfo; mae Indy 10 yn defnyddio TransparentProxy. Gwiriwch y llyfrgell gydrannau yn y rhaglen yn hytrach na dewis enghraifft yn seiliedig ar enw rhyddhau Delphi yn unig.

Indy 10 gyda SOCKS5

Tybiwch fod y ffurflen eisoes yn berchen ar y cydrannau hyn:

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

Cysylltwch a chyflunio'r rhain cyn agor y cysylltiad 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;

Mae gwerthoedd y porthladdoedd yn enghreifftiau. Rhaid i borthladd SMTP gyd-fynd â'r gwasanaeth a'r modd TLS rydych yn bwriadu ei ddefnyddio. Mae porthladd SOCKS yn perthyn i'r dirprwy.

Ar gyfer prawf SMTP cyhoeddus a ganiateir lle caniateir cyfryngwr cyhoeddus, mae'r rhestr dirprwyon SOCKS5 yn cynnig cyfeiriadau ymgeisiol. Cadarnhewch fod yr ymgeisydd yn caniatáu'r gwesteiwr a'r porthladd post gwirioneddol, a defnyddiwch y gangen heb ddilysu dirprwy heb gadw manylion o ddirprwy cynharach.

Mae TIdSocksInfo yn dechrau gyda svNoSocks, felly nid yw gosod enw gwesteiwr dirprwy yn unig yn ei alluogi. Dewiswch y fersiwn SOCKS briodol. Os yw'r dirprwy'n gofyn am ddilysu SOCKS5 ag enw defnyddiwr/cyfrinair, cyfluniwch y dull dilysu yn ogystal â'r manylion:

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

Mae ProxyUser a ProxyPassword yn cynrychioli gwerthoedd a ddarperir gan y rhaglen. Mae'r priodweddau hyn yn dilysu gyda'r dirprwy. Cyfluniwch gyfrif SMTP a'i ddull dilysu ar wahân ar y cleient post.

Cadw IOHandler TLS presennol

Mae cleient post sy'n defnyddio STARTTLS neu TLS ymhlyg angen ei IOHandler sy'n gallu SSL. Peidiwch â disodli'r gydran honno ag TIdIOHandlerStack plaen dim ond i ychwanegu'r dirprwy.

Yn Indy 10, mae sylfaen IOHandler SSL yn disgyn o TIdIOHandlerStack ac yn etifeddu ei gefnogaeth dirprwy. Ar gyfer IOHandler SSL cydnaws presennol o'r enw MailTLS, daw'r cysylltiad yn:

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

Mae gosodiad UseTLS y gydran SMTP yn dal i ddewis modd TLS y gwasanaeth post. Cyfluniwch ymddiriedaeth tystysgrif a dilysu enw gwesteiwr yn y gydblethiad TLS ar gyfer smtp.example.net, nid ar gyfer enw gwesteiwr y dirprwy. Nid yw ychwanegu twnnel yn sefydlu dilysiad tystysgrif ynddo'i hun.

Defnyddio dirprwy HTTP CONNECT yn lle

Ar gyfer Indy 10, defnyddiwch gydran TIdConnectThroughHttpProxy, sydd ar gael o IdConnectThroughHttpProxy. Gan dybio bod achos presennol yn eiddo i'r ffurflen o'r enw HttpTunnel:

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

Os yw SMTP yn defnyddio MailTLS, neilltuwch HttpTunnel i TransparentProxy y trafodwr hwnnw yn lle. Mae'r targed post yn aros ar Smtp.

Mae'r gydran hon yn sefydlu twnnel HTTP CONNECT ac yn gweithredu dilysu dirprwy Sylfaenol trwy ei phriodweddau Username a Password. Mae dirprwy sy'n gofyn am fecanwaith dilysu arall angen gweithrediad cydnaws; peidiwch â thybio bod y ddwy briodwedd hyn yn darparu pob cynllun dilysu HTTP.

Rhaid i'r dirprwy hefyd ganiatáu CONNECT i borthladd gwirioneddol y gweinydd post. Nid yw caniatâd i dwnelu i weinyddwyr gwe ar 443 yn awgrymu caniatâd i gyrraedd gwasanaeth cyflwyno ar 587 neu weinydd SMTP ar 25.

Cysylltiad Indy 9

Mae Indy 9 yn defnyddio TIdIOHandlerSocket a'i briodwedd SocksInfo. Gyda chydrannau'n eiddo i'r ffurflen o'r enw Socket9 a Socks9, y gwifrau cyfatebol yw:

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

Mae ei weithrediad SOCKS yn cefnogi fersiynau 4, 4a a 5. Ni ellir gludo trefniant TransparentProxy a chydran HTTP CONNECT Indy 10 i'r rhyngwyneb hŷn hwn yn syth.

Nid oes mewngofnodi dirprwy rhagarweiniol ar wahân i'w wneud gyda chleient TCP arall. Rhaid i ddilysu'r dirprwy, sefydlu'r twnnel a chyfnewid SMTP berthyn i'r cysylltiad y mae'r gydran SMTP yn ei ddefnyddio mewn gwirionedd. Pan fo'r gwifrau hwnnw'n gywir, gellir lleoli methiant wrth drafodaeth dirprwy, cyfarchiad SMTP, TLS neu ddilysu post yn hytrach na thrin pob gwrthodiad fel cyfrinair post gwael.

Erthyglau cysylltiedig