Indy дотор проксийг TIdSMTP ашигладаг IOHandler-т холбоно. TIdSMTP.Host болон Port-ыг шуудангийн үйлчилгээ рүү чиглүүлсэн хэвээр байлгана. IOHandler-ийн прокси бүрэлдэхүүн нь зуучлагчийн хаягийг өгч, прокси гар барилтыг мөн тэр холболт дээр гүйцэтгэдэг.

Ашиглах шинж чанар нь Indy хувилбараас хамаарна: Indy 9 нь SocksInfo-ыг санал болгодог; Indy 10 нь TransparentProxy-ыг ашигладаг. Жишээг зөвхөн Delphi хувилбарын нэрээр сонгохын оронд програмын бүрэлдэхүүний санг шалгана уу.

Indy 10 ба SOCKS5

Маягт эдгээр бүрэлдэхүүнтэй аль хэдийн гэж үзье:

  • 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 порт нь проксид хамаарна.

Нийтийн зуучлагчийг зөвшөөрсөн зөвшөөрөгдсөн нийтийн 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 эсвэл шуудангийн нэвтрүүлэлтээс илрүүлж болно, батлагдаагүй бүрийг буруу шуудангийн нууц үг гэж үзэхийн оронд.

Холбоотой нийтлэлүүд