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 या मेल प्रमाणीकरण में पहचाना जा सकता है, हर अस्वीकृति को खराब मेल पासवर्ड मानने के बजाय।