Beri Koneksi SMTP Indy sebuah IOHandler proksi
Hubungkan SOCKS atau HTTP CONNECT ke TIdSMTP dengan properti IOHandler versi Indy yang tepat, dengan pengaturan email dan proksi terpisah.
Di Indy, pasang proksi pada IOHandler yang dipakai TIdSMTP. Pertahankan TIdSMTP.Host dan Port mengarah ke layanan email. Komponen proksi IOHandler menyediakan alamat perantara dan melakukan jabat tangan proksi pada koneksi yang sama.
Properti yang Anda pakai bergantung pada versi Indy: Indy 9 menyediakan SocksInfo; Indy 10 memakai TransparentProxy. Periksa pustaka komponen di aplikasi alih-alih memilih contoh hanya berdasarkan nama rilis Delphi.
Indy 10 dengan SOCKS5
Misalkan formulir sudah memiliki komponen berikut:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
Hubungkan dan konfigurasikan sebelum membuka koneksi 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;
Nilai porta adalah contoh. Porta SMTP harus sesuai dengan layanan dan mode TLS yang hendak Anda pakai. Porta SOCKS milik proksi.
Untuk uji SMTP publik yang diizinkan di mana perantara publik diperbolehkan, daftar proksi SOCKS5 menawarkan alamat kandidat. Pastikan kandidat mengizinkan host dan porta email sebenarnya, dan gunakan cabang tanpa autentikasi proksi tanpa menyimpan kredensial dari proksi sebelumnya.
TIdSocksInfo dimulai dengan svNoSocks, jadi hanya menetapkan nama host proksi tidak mengaktifkannya. Pilih versi SOCKS yang sesuai. Jika proksi memerlukan autentikasi SOCKS5 nama pengguna/kata sandi, konfigurasikan metode autentikasi serta kredensialnya:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser dan ProxyPassword mewakili nilai yang disediakan aplikasi. Properti ini mengautentikasi ke proksi. Konfigurasikan akun SMTP dan metode autentikasinya secara terpisah di klien email.
Mempertahankan IOHandler TLS yang ada
Klien email yang memakai STARTTLS atau TLS implisit memerlukan IOHandler-nya yang mampu SSL. Jangan ganti komponen itu dengan TIdIOHandlerStack biasa hanya untuk menambahkan proksi.
Di Indy 10, basis IOHandler SSL berasal dari TIdIOHandlerStack dan mewarisi dukungan proksinya. Untuk IOHandler SSL kompatibel yang ada bernama MailTLS, koneksinya menjadi:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
Pengaturan UseTLS komponen SMTP tetap memilih mode TLS layanan email. Konfigurasikan kepercayaan sertifikat dan validasi nama host di integrasi TLS untuk smtp.example.net, bukan untuk nama host proksi. Menambahkan terowongan tidak dengan sendirinya menegakkan validasi sertifikat.
Memakai proksi HTTP CONNECT sebagai gantinya
Untuk Indy 10, gunakan komponen TIdConnectThroughHttpProxy, tersedia dari IdConnectThroughHttpProxy. Dengan asumsi ada instance milik formulir bernama HttpTunnel:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
Jika SMTP memakai MailTLS, tetapkan HttpTunnel ke TransparentProxy penangan tersebut sebagai gantinya. Target email tetap pada Smtp.
Komponen ini membangun terowongan HTTP CONNECT dan menerapkan autentikasi proksi Basic melalui properti Username dan Password-nya. Proksi yang memerlukan mekanisme autentikasi lain membutuhkan implementasi yang kompatibel; jangan menganggap kedua properti ini menyediakan semua skema autentikasi HTTP.
Proksi juga harus mengizinkan CONNECT ke porta sebenarnya server email. Izin membuat terowongan ke server web pada 443 bukan berarti izin menjangkau layanan pengiriman pada 587 atau server SMTP pada 25.
Koneksi Indy 9
Indy 9 memakai TIdIOHandlerSocket dan properti SocksInfo-nya. Dengan komponen milik formulir bernama Socket9 dan Socks9, pengkabelan yang setara adalah:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
Implementasi SOCKS-nya mendukung versi 4, 4a, dan 5. Susunan TransparentProxy dan komponen HTTP CONNECT Indy 10 tidak dapat begitu saja ditempelkan ke antarmuka yang lebih tua ini.
Tidak ada login proksi pendahuluan terpisah yang perlu dilakukan dengan klien TCP lain. Autentikasi proksi, penyiapan terowongan, dan pertukaran SMTP harus menjadi milik koneksi yang benar-benar dipakai komponen SMTP. Bila pengkabelan itu benar, kegagalan dapat dilokalisasi pada negosiasi proksi, salam SMTP, TLS, atau autentikasi email, alih-alih menganggap setiap penolakan sebagai kata sandi email yang salah.