После некоторого обсуждения выяснилось, что код для создания соединения через прокси, на который есть ссылка в вопросе, действительно работал, но
- В Fiddler должна быть отключена расшифровка SSL.
В противном случае Fiddler не пропустит исходное рукопожатие TLS, но создаст одно между Fiddler и сервером и другое между клиентом и Fiddler, где последний имеет сертификат, созданный Fiddler. Клиент обычно не будет доверять этому сертификату по умолчанию и, таким образом, потерпит неудачу при установлении связи TLS.
Более того, Fiddler ожидает, что трафик внутри соединения TLS будет HTTP, то есть клиент отправляет запрос HTTP, а сервер отправляет ответ HTTP обратно. POP3 работает по-разному, имея другой синтаксис сообщения и сервер начинает с отправки, а не с клиента.
- Это действительно должно быть
client.Connect(sslStream)
, как показано в вопросе, а не что-то вроде client.Connect(tcpStream)
, как было в ОП в его реальном коде. В последнем случае клиент просто попытается прочитать зашифрованные данные из соединения и, таким образом, потерпит неудачу.