【发布时间】:2010-06-22 18:37:25
【问题描述】:
我安装了 hmailserver 5.3.2 并进行了配置。它接收和发送 电子邮件正常,但我想用它从 .net/C# 发送电子邮件 应用程序位于另一台服务器上,为此我想使用 SSL 通信。之前,应用程序被配置为发送 通过 gmail 发送电子邮件,在端口 587 上运行正常,但现在我们想使用 我们自己的邮件服务器。我们首先将应用程序配置为连接 smtp.domain.com 在端口 25 上运行,它会发送电子邮件。
那我们 创建了一个自签名证书来测试我们是否可以发送 通过安全通道发送消息。我创建了证书 openSSL 设置通用名称为:mail.domain.com, smtp.domain.com, *.domain.com、domain.com。我在防火墙上打开了 587 端口,然后 将 hmailserver 配置为使用证书进行入站连接 那个港口。 我创建的证书都不起作用(我尝试了一个,然后 创建了另一个,依此类推),在 应用:
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) 和大约 80 秒后连接已关闭(FIN),中间没有任何内容。
我是否必须在某处安装该证书以便 .net 应用程序将其视为受信任?我的意思是,我已经将它安装为受信任的根证书颁发机构,并且可以通过运行 mmc 进行检查,所以我现在不知道该去哪里...
感谢您的帮助!
PS:不确定这是否属于 ServerFault,因为它涉及 C# 应用程序,但也涉及邮件服务器...
编辑:代码示例:
ServicePointManager.ServerCertificateValidationCallback =
(sender, certificate, chain, sslPolicyErrors) => true;
SmtpClient mailClient = new SmtpClient("smtp.domain.com");
mailClient.Credentials = new NetworkCredential("username@domain.com", "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"
【问题讨论】:
-
您可以尝试提供您正在尝试做的事情的代码示例。本来打算发个答案的,不过和上面的
signed link上面的一些回复是一样的。
标签: c# .net ssl smtp self-signed