Smtp “意外”;根据验证程序,远程证书无效。”;

Smtp “意外”;根据验证程序,远程证书无效。”;,smtp,certificate,asp.net-core,mailkit,Smtp,Certificate,Asp.net Core,Mailkit,我正试图通过Mailkit从.NetCore/Ubuntu机器连接到SMTP服务器 我正试图在关闭SSL的情况下连接到服务器上的端口25 邮件服务器是本地局域网上的windows服务器,在其他机器上工作正常,设置与问题Ubuntu机器上使用的设置相同 用于连接的代码如下所示: using (var client = new SmtpClient()) { client.Connect("smtp.mydomain.c

我正试图通过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上竟然涉及证书


有人知道发生了什么吗?

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

如果这适用于其他Windows设备,您是否在广告中?如果是这样,则AD上可能有CA颁发通过组策略自动信任的证书。所以你也需要这样做

或者你可以说去他妈的,然后告诉StmpClient忽略安全性

client.EnableSsl = true;

在端口25上看到SSL证书的原因是服务器在该端口上提供starttls。要了解使用了哪个SSL证书,您可以通过OpenSSL使用以下方法:

openssl s_客户端-连接exchange01.int.contoso.com:25-starttls smtp


这里使用的SSL证书可能是自签名的,那么您可以将其替换为受信任的证书(如果可以),也可以信任自签名证书。

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