我安裝了hmailserver 5.3.2並進行了配置。它通常會收到併發送 電子郵件,但我想用它來發送來自位於另一臺服務器上的.net/C# 應用程序的電子郵件,並且我希望使用 SSL通信。之前,應用程序被配置爲通過端口587通過gmail發送 電子郵件,並且它工作正常,但現在我們想要使用我們自己的郵件服務器 。我們首先將該應用程序配置爲在端口25上連接 smtp.domain.com,並且該工作正常,它會發送電子郵件。通過帶有自簽名SSL證書的郵件服務器從.net應用程序發送電子郵件
然後我們 創建一個自簽名證書來測試,如果我們能夠通過一個安全channel.I與OpenSSL的 設置通用名爲發送 消息創建的證書:mail.domain.com,smtp.domain.com , * .domain.com,domain.com。我在防火牆上打開了端口587,並在 上配置了hmailserver,以便在該端口上使用 入站連接的證書。 無I創建工作的證書(我嘗試之一,然後 創建另一個等),生成以下(通用)例外在 應用:
System.Exception: _COMPlusExceptionCode = -532459699
當然,我還試圖通過連接telnet:telnet smtp.domain.com 587,而我剛剛得到一個空白屏幕。從 開始,當我禁用端口587上的ssl時,它不是防火牆問題,我可以正常連接。 查看日誌甚至沒有顯示在使用 587時嘗試連接SSL。
我已經檢查了這些問題:Getting SmtpClient to work with a self signed SSL certificate和Using a self-signed certificate with .NET’s HttpWebRequest/Response,但它沒有解決我的問題。使用ServerCertificateValidationCallback的方法沒有任何影響。
我嘗試了端口25(這也是上面提到的其中一個問題),465,587,並且所有3都發生了相同的事情:初始握手(SYN/SYN-ACK/ACK) 80s連接關閉(FIN),兩者之間沒有任何關係。
我是否必須在某處安裝該證書,以便.net應用程序將其視爲可信?我的意思是,我已經安裝它作爲受信任的根證書頒發機構,並可以通過運行mmc進行檢查,所以我現在不知道該去哪裏...
感謝您的幫助!
PS:不知道這是否屬於ServerFault,因爲它涉及C#應用程序也是一個郵件服務器...
編輯:代碼示例:
ServicePointManager.ServerCertificateValidationCallback =
(sender, certificate, chain, sslPolicyErrors) => true;
SmtpClient mailClient = new SmtpClient("smtp.domain.com");
mailClient.Credentials = new NetworkCredential("[email protected]", "pwd");
mailClient.Port = 587;
mailClient.EnableSsl = true;
MailMessage mailMessage = new MailMessage("mailAddressFrom", "mailAddressTo", "subject", "body");
mailMessage.IsBodyHtml = true;
mailClient.Send(mailMessage);
編輯2:登錄(基於Ramunas'建議):
"TCPIP" 3588 "2010-06-23 10:02:49.685" "TCPConnection - Posting AcceptEx on 0.0.0.0:465"
"DEBUG" 3588 "2010-06-23 10:02:49.809" "Creating session 24039"
"TCPIP" 772 "2010-06-23 10:04:29.639" "TCPConnection - SSL handshake with client failed. Error code: 2, Message: End of file, Remote IP: X"
"DEBUG" 772 "2010-06-23 10:04:29.639" "Ending session 24039"
您可能會嘗試提供您正在嘗試執行的代碼示例。我打算髮佈一個答案,但它與上面自簽名鏈接上的一些響應相同。 – 2010-06-22 20:17:54