Indy ના SMTP કનેક્શનને પ્રોક્સી IOHandler આપો
યોગ્ય Indy આવૃત્તિની IOHandler ગુણધર્મો સાથે SOCKS અથવા HTTP CONNECT ને TIdSMTP સાથે જોડો, મેલ અને પ્રોક્સી સેટિંગ્સ અલગ રાખીને.
Indy માં, પ્રોક્સીને તે IOHandler સાથે જોડો જે TIdSMTP વાપરે છે. TIdSMTP.Host અને Port ને મેલ સેવા તરફ રાખો. IOHandler નો પ્રોક્સી ઘટક મધ્યસ્થનું સરનામું આપે છે અને તે જ કનેક્શન પર પ્રોક્સી હેન્ડશેક કરે છે.
તમે વાપરો તે ગુણધર્મ Indy આવૃત્તિ પર આધાર રાખે છે: Indy 9 SocksInfo આપે છે; Indy 10 TransparentProxy વાપરે છે. ફક્ત Delphi રિલીઝના નામ પરથી ઉદાહરણ પસંદ કરવાને બદલે એપ્લિકેશનમાંની ઘટક લાઇબ્રેરી તપાસો.
SOCKS5 સાથે Indy 10
ધારો કે ફોર્મ પાસે પહેલેથી આ ઘટકો છે:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: 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 પોર્ટ પ્રોક્સીનો છે.
જ્યાં જાહેર મધ્યસ્થની પરવાનગી છે એવી માન્ય જાહેર SMTP કસોટી માટે SOCKS5 પ્રોક્સી યાદી ઉમેદવાર સરનામાં આપે છે. ઉમેદવાર વાસ્તવિક મેલ હોસ્ટ અને પોર્ટને માન્યતા આપે છે તેની ખાતરી કરો, અને પહેલાના પ્રોક્સીના ઓળખપત્રો રાખ્યા વિના પ્રોક્સી-પ્રમાણીકરણ-રહિત શાખા વાપરો.
TIdSocksInfo svNoSocks થી શરૂ થાય છે, તેથી ફક્ત પ્રોક્સી હોસ્ટનામ સેટ કરવાથી તે સક્રિય થતું નથી. યોગ્ય SOCKS આવૃત્તિ પસંદ કરો. જો પ્રોક્સીને SOCKS5 વપરાશકર્તાનામ/પાસવર્ડ પ્રમાણીકરણ જોઈએ, તો પ્રમાણીકરણ પદ્ધતિ અને ઓળખપત્રો બંને ગોઠવો:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser અને ProxyPassword એપ્લિકેશન આપે છે તે મૂલ્યો દર્શાવે છે. આ ગુણધર્મો પ્રોક્સી સાથે પ્રમાણીકરણ કરે છે. મેલ ક્લાઇન્ટમાં SMTP ખાતું અને તેની પ્રમાણીકરણ પદ્ધતિ અલગથી ગોઠવો.
હાલનું TLS IOHandler જાળવવું
STARTTLS અથવા ગર્ભિત TLS વાપરતા મેલ ક્લાઇન્ટને SSL સક્ષમ IOHandler ની જરૂર છે. ફક્ત પ્રોક્સી ઉમેરવા માટે તે ઘટકને સાદા TIdIOHandlerStack થી બદલો નહીં.
Indy 10 માં SSL IOHandler નો આધાર TIdIOHandlerStack થી ઉતરે છે અને તેનું પ્રોક્સી સમર્થન વારસામાં લે છે. MailTLS નામના હાલના સુસંગત SSL IOHandler માટે કનેક્શન આ બને છે:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
SMTP ઘટકનું UseTLS સેટિંગ હજી પણ મેલ સેવાનો TLS મોડ પસંદ કરે છે. smtp.example.net માટે TLS એકીકરણમાં પ્રમાણપત્ર વિશ્વાસ અને હોસ્ટનામ માન્યતા ગોઠવો, પ્રોક્સી હોસ્ટનામ માટે નહીં. ટનલ ઉમેરવાથી પોતાની રીતે પ્રમાણપત્ર માન્યતા સ્થપાતી નથી.
તેના બદલે HTTP CONNECT પ્રોક્સી વાપરવું
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 ગુણધર્મો દ્વારા પ્રાથમિક પ્રોક્સી પ્રમાણીકરણ અમલમાં મૂકે છે. બીજી પ્રમાણીકરણ પદ્ધતિ માગતા પ્રોક્સીને સુસંગત અમલીકરણની જરૂર છે; એવું ન ધારો કે આ બે ગુણધર્મો દરેક HTTP પ્રમાણીકરણ યોજના આપે છે.
પ્રોક્સીએ મેલ સર્વરના વાસ્તવિક પોર્ટ પર 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 ક્લાઇન્ટ સાથે કરવાનું અલગ પ્રારંભિક પ્રોક્સી લોગિન નથી. પ્રોક્સી પ્રમાણીકરણ, ટનલ સ્થાપના અને SMTP આદાનપ્રદાન તે કનેક્શનનું હોવું જોઈએ જે SMTP ઘટક ખરેખર વાપરે છે. જ્યારે તે વાયરિંગ સાચું હોય, ત્યારે નિષ્ફળતા પ્રોક્સી વાટાઘાટ, SMTP અભિવાદન, TLS કે મેલ પ્રમાણીકરણમાં શોધી શકાય છે, દરેક અસ્વીકારને ખરાબ મેલ પાસવર્ડ ગણવાને બદલે.