MailKit で SOCKS5 経由の POP3 に接続する
Pop3Client を POP3S サーバーへ接続する前に、MailKit の Socks5Client を設定します。
MailKit はメールサービスの接続インターフェースを通じて SOCKS5 クライアントを直接提供します。Connect を呼ぶ前に ProxyClient を設定します。
using MailKit.Net.Pop3;
using MailKit.Net.Proxy;
using MailKit.Security;
using var client = new Pop3Client();
client.ProxyClient = new Socks5Client("proxy.example.net", 1080);
client.Connect("pop.example.net", 995, SecureSocketOptions.SslOnConnect);
client.Authenticate(mailUser, mailPassword);
Console.WriteLine(client.Count);
client.Disconnect(true);例のホストは実際の SOCKS とメールのエンドポイントに置き換えてください。示したプロキシーアカウントなしのコンストラクターでは、SOCKS5 プロキシー一覧の項目が、許可された公開 POP3S 経路のプロキシーアドレスを提供できます。そのプロキシーはメールホストと実際のポートを許可している必要があります。mailUser と mailPassword の値は、アプリケーション自身のメールボックス資格情報の扱いから取得します。この例はメッセージを数えるだけで、ダウンロードも削除の印付けも行いません。
示した API は MailKit 4.17.0 で文書化されています。Socks5Client には、SOCKS サーバーが資格情報を要求する場合に System.Net.NetworkCredential を受け取るコンストラクターもあります。
ポート 995 と SslOnConnect の組み合わせは、POP3 接続に直ちに TLS を選びます。証明書を通常どおり検証できるよう、Connect にはメールサーバーのホスト名を残してください。ポート 110 で STLS を要求するプロバイダーでは、SecureSocketOptions.StartTls を明示的に選び、そのプロバイダーが文書化しているエンドポイントを使ってください。