2016-08-18 37 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證書是自簽名的,那麼你可以用可信任的證書代替(如果可以的話),或者你可以信任自簽名證書。

相關問題