2016-08-18 39 views
1

我试图通过Mailkit从.NetCore/Ubuntu机器连接到SMTP服务器。意外“根据验证过程,远程证书无效。”

我试图连接到SSL关闭的服务器上的端口25。

邮件服务器是本地局域网上的一台Windows服务器,并且可以在其他机器上正常工作,其设置与Ubuntu机器上使用的相同。

用来连接的代码如下:

  using (var client = new SmtpClient()) 
      { 
       client.Connect("smtp.mydomain.com", 25,false); 
       client.Authenticate(username, password); 
       client.Send(emailMessage); 
       client.Disconnect(true); 
      } 

然而,这与错误消息 的.Connect线之后立即抛出异常“的远程证书根据验证过程是无效的。 “

我很惊讶,证书在所有涉及香草端口25

有没有人有任何想法是怎么回事?

回答

2

服务器可能启用TLS作为SMTP的一部分。这很常见,它是STARTTLS动词。

如果这适用于其他Windows盒子,您是否在AD?如果是这样的话,AD上可能有一个CA颁发证书,通过组策略自动信任证书。所以你也需要configure OpenSSL on your Ubuntu machine to trust that CA

或者你可以说他妈的它,并告诉StmpClient忽略安全与

client.EnableSsl = true; 
+0

感谢您的回复。我可以通过传递SecureSocketOptions.None来解决这个问题。作为Connect()方法的第三个参数。 – Hughgo

0

为什么你看到端口25上的SSL证书的原因是由于原因,在服务器上,提供一个STARTTLS港口。要找出哪个SSL证书使用您可以直接使用OpenSSL的通过提到here方式如下:

的OpenSSL的s_client.First -connect exchange01.int.contoso.com:25 -starttls SMTP

它可能因为这里使用的这个SSL证书是自签名的,那么你可以用可信任的证书代替(如果可以的话),或者你可以信任自签名证书。

相关问题