Indy SMTP қосылымына прокси IOHandler беріңіз
Дұрыс Indy нұсқасының IOHandler қасиеттерімен SOCKS немесе HTTP CONNECT-ті TIdSMTP-ге қосыңыз, пошта мен прокси параметрлері бөлек.
Indy ішінде проксиді TIdSMTP пайдаланатын IOHandler-ге тіркеңіз. TIdSMTP.Host мен Port пошта қызметіне бағытталған күйде қалсын. IOHandler-дің прокси компоненті делдалдың мекенжайын береді және прокси қол алысуын сол қосылымда орындайды.
Пайдаланатын қасиет Indy нұсқасына байланысты: Indy 9 SocksInfo ұсынады; Indy 10 TransparentProxy пайдаланады. Мысалды тек Delphi шығарылымының атына қарап таңдамай, қолданбадағы компонент кітапханасын тексеріңіз.
Indy 10 және SOCKS5
Пішінде бұл компоненттер бұрыннан бар делік:
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-те немесе пошта аутентификациясында анықтауға болады, әр бас тартуды қате пошта құпиясөзі деп санаудың орнына.