Indy లో, TIdSMTP ఉపయోగించే IOHandler కు proxy ను కలపండి. TIdSMTP.Host మరియు Port ను మెయిల్ సేవ వైపు ఉంచండి. IOHandler యొక్క proxy భాగం మధ్యవర్తి చిరునామాను అందిస్తుంది మరియు అదే కనెక్షన్‌పై proxy హ్యాండ్‌షేక్ చేస్తుంది.

మీరు ఉపయోగించే లక్షణం Indy వెర్షన్‌పై ఆధారపడి ఉంటుంది: Indy 9 SocksInfo ఇస్తుంది; Indy 10 TransparentProxy ఉపయోగిస్తుంది. కేవలం Delphi విడుదల పేరు చూసి ఉదాహరణ ఎంచుకోకుండా అప్లికేషన్‌లోని భాగాల లైబ్రరీని తనిఖీ చేయండి.

SOCKS5 తో Indy 10

ఫారమ్‌లో ఇప్పటికే ఈ భాగాలు ఉన్నాయని అనుకుందాం:

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

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;

పోర్ట్ విలువలు ఉదాహరణలు. SMTP పోర్ట్ మీరు ఉపయోగించాలనుకునే సేవ మరియు TLS మోడ్‌కు సరిపోలాలి. SOCKS పోర్ట్ proxy కు చెందుతుంది.

పబ్లిక్ మధ్యవర్తి అనుమతించబడిన అనుమతిత పబ్లిక్ SMTP పరీక్ష కోసం SOCKS5 proxy జాబితా అభ్యర్థి చిరునామాలను అందిస్తుంది. అభ్యర్థి నిజమైన మెయిల్ హోస్ట్ మరియు పోర్ట్‌ను అనుమతిస్తుందని నిర్ధారించి, మునుపటి proxy యొక్క ఆధారాలను ఉంచకుండా proxy-ప్రమాణీకరణ-లేని శాఖను ఉపయోగించండి.

TIdSocksInfo svNoSocks తో ప్రారంభమవుతుంది, కాబట్టి proxy హోస్ట్‌నేమ్ మాత్రమే సెట్ చేయడం దాన్ని సక్రియం చేయదు. సరైన SOCKS వెర్షన్ ఎంచుకోండి. proxy కు SOCKS5 వినియోగదారు పేరు/పాస్‌వర్డ్ ప్రమాణీకరణ అవసరమైతే, ప్రమాణీకరణ పద్ధతిని మరియు ఆధారాలను రెండింటినీ కాన్ఫిగర్ చేయండి:

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

ProxyUser మరియు ProxyPassword అప్లికేషన్ అందించే విలువలను సూచిస్తాయి. ఈ లక్షణాలు proxy తో ప్రమాణీకరిస్తాయి. మెయిల్ క్లయింట్‌లో SMTP ఖాతాను మరియు దాని ప్రమాణీకరణ పద్ధతిని విడివిడిగా కాన్ఫిగర్ చేయండి.

ఇప్పటికే ఉన్న TLS IOHandler ను నిలుపుకోవడం

STARTTLS లేదా అంతర్లీన TLS ఉపయోగించే మెయిల్ క్లయింట్‌కు SSL సామర్థ్యం ఉన్న IOHandler అవసరం. proxy ను జోడించడానికి మాత్రమే ఆ భాగాన్ని సాధారణ TIdIOHandlerStack తో భర్తీ చేయవద్దు.

Indy 10 లో SSL IOHandler ఆధారం TIdIOHandlerStack నుండి వస్తుంది మరియు దాని proxy మద్దతును వారసత్వంగా పొందుతుంది. MailTLS అనే ఇప్పటికే ఉన్న సరిపోయే SSL IOHandler కోసం కనెక్షన్ ఇలా అవుతుంది:

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

SMTP భాగం యొక్క UseTLS సెట్టింగ్ ఇప్పటికీ మెయిల్ సేవ యొక్క TLS మోడ్‌ను ఎంచుకుంటుంది. smtp.example.net కోసం TLS ఇంటిగ్రేషన్‌లో సర్టిఫికెట్ విశ్వాసం మరియు హోస్ట్‌నేమ్ ధృవీకరణను కాన్ఫిగర్ చేయండి, proxy హోస్ట్‌నేమ్ కోసం కాదు. టన్నెల్ జోడించడం దానంతటదే సర్టిఫికెట్ ధృవీకరణను స్థాపించదు.

బదులుగా HTTP CONNECT proxy ఉపయోగించడం

Indy 10 కోసం TIdConnectThroughHttpProxy భాగాన్ని ఉపయోగించండి; ఇది IdConnectThroughHttpProxy నుండి అందుబాటులో ఉంది. ఫారమ్ యాజమాన్యంలోని HttpTunnel అనే ఇప్పటికే ఉన్న ఇన్‌స్టాన్స్ ఉందని అనుకుందాం:

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

SMTP MailTLS ఉపయోగిస్తే, బదులుగా HttpTunnel ను ఆ హ్యాండ్లర్ యొక్క TransparentProxy కు కేటాయించండి. మెయిల్ లక్ష్యం Smtp పైనే ఉంటుంది.

ఈ భాగం HTTP CONNECT టన్నెల్ స్థాపించి, తన Username మరియు Password లక్షణాల ద్వారా ప్రాథమిక proxy ప్రమాణీకరణను అమలు చేస్తుంది. వేరే ప్రమాణీకరణ యంత్రాంగం కావాల్సిన proxy కు సరిపోయే అమలు అవసరం; ఈ రెండు లక్షణాలు అన్ని HTTP ప్రమాణీకరణ పథకాలను అందిస్తాయని అనుకోవద్దు.

proxy మెయిల్ సర్వర్ యొక్క నిజమైన పోర్ట్‌కు CONNECT ను కూడా అనుమతించాలి. 443 లోని వెబ్ సర్వర్లకు టన్నెల్ అనుమతి అంటే 587 లోని సమర్పణ సేవకు లేదా 25 లోని SMTP సర్వర్‌కు చేరే అనుమతి కాదు.

Indy 9 కనెక్షన్

Indy 9 TIdIOHandlerSocket మరియు దాని SocksInfo లక్షణాన్ని ఉపయోగిస్తుంది. Socket9 మరియు Socks9 అనే ఫారమ్-యాజమాన్య భాగాలతో సమానమైన వైరింగ్:

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

దాని SOCKS అమలు 4, 4a మరియు 5 వెర్షన్‌లకు మద్దతు ఇస్తుంది. Indy 10 యొక్క TransparentProxy మరియు HTTP CONNECT భాగం అమరికను ఈ పాత ఇంటర్‌ఫేస్‌లో నేరుగా అతికించలేము.

మరో TCP క్లయింట్‌తో చేయాల్సిన ప్రత్యేక ప్రాథమిక proxy లాగిన్ లేదు. proxy ప్రమాణీకరణ, టన్నెల్ సెటప్ మరియు SMTP మార్పిడి SMTP భాగం నిజంగా ఉపయోగించే కనెక్షన్‌కే చెందాలి. ఆ వైరింగ్ సరిగ్గా ఉంటే, వైఫల్యాన్ని proxy చర్చలు, SMTP పలకరింపు, TLS లేదా మెయిల్ ప్రమాణీకరణలో గుర్తించవచ్చు, ప్రతి తిరస్కరణను తప్పు మెయిల్ పాస్‌వర్డ్‌గా భావించకుండా.

సంబంధిత వ్యాసాలు