实际上,这在任何地方都没有明确定义,是否应该“信任”服务器取决于连接到它的客户端(当然可以是另一个邮件服务器)。引用相关RFC(RFC 2487):
如果SMTP客户端认为认证或
隐私级别不够高,无法继续,则它应该
在TLS协商完成后立即发出SMTP QUIT命令。
如果SMTP服务器确定身份验证或
隐私级别不够高,无法继续进行,则它应
使用
554应答代码(可能的文本字符串,例如:如“
由于缺乏安全性,命令被拒绝”)。
在TLS协商中是否相信另一方的真实性的决定是本地事务。但是,
决策的一些一般规则是:
- A SMTP client would probably only want to authenticate an SMTP
server whose server certificate has a domain name that is the
domain name that the client thought it was connecting to.
这基本上意味着,当服务器使用给定证书提供TLS加密时,接受还是拒绝该证书的决定完全取决于另一部分,这可能会使证书上的名称与连接的名称相同,但是可以即使不匹配也很好接受。
但是,等等,还有更多。再次引用相同的RFC:
TLS握手完成后,SMTP协议将重置为
初始状态(服务器发出220
服务就绪问候语后SMTP中的状态)。服务器必须丢弃
从客户端获得的任何知识,例如EHLO命令的参数,
而这不是从TLS协商本身获得的。客户端
必须丢弃从服务器获得的任何知识,例如
SMTP服务扩展列表,这些知识不是从TLS
协商本身获得的。客户端应该
在成功的TLS协商之后发送EHLO命令作为第一个命令。
因此,服务器在TLS握手之前对HELO / EHLO的响应似乎并不重要。
以我的经验,自签名证书可以在面向Internet的邮件服务器上很好地工作,这意味着其他邮件服务器甚至不费心去验证它们,它们会很乐意接受任何可以提供TLS加密的内容,而无论发出什么证书权限或主题名称。