我安装了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