我正在尝试通过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上都有证书。
有没有人知道发生了什么?
答案 0 :(得分:2)
服务器可能正在启用TLS作为SMTP的一部分。这很常见,它是STARTTLS动词。
如果这适用于其他Windows机箱,您是否在AD中?如果是这样,AD发行证书上的CA可能是通过组策略自动信任的CA.所以你也需要configure OpenSSL on your Ubuntu machine to trust that CA。
或者你可以说他妈的,告诉StmpClient忽略安全性
client.EnableSsl = true;
答案 1 :(得分:0)
您在端口25上看到SSL证书的原因是服务器在该端口上提供starttls的原因。要找出使用的SSL证书,您可以通过OpenSSL使用以下here方式:
openssl s_client -connect exchange01.int.contoso.com:25 -starttls smtp
这里使用的SSL证书可能是自签名的,然后您可以将其替换为可信任的证书(如果可以),或者您可以信任自签名证书。