SMTP允许通过端口25进行非加密通信。对于某些服务器(如Google的MX服务器),我可以在进行初始未加密连接后使用STARTTLS切换到TLS连接。
S:220 mx.google.com ESMTP l1si352658een.133
C:EHLO mail.example.com
S:250-mx.google.com at your service
S:250-SIZE 35882577
S:250-8BITMIME
S:250-STARTTLS
S:250-ENHANCEDSTATUSCODES
S:250 PIPELINING
C:STARTTLS
S:220 2.0.0 Ready to start TLS
[socket switches to TLS here]
C:EHLO mail.example.com
...
但是,我还想支持直接SSL连接,我想知道大多数邮件服务器是喜欢从SSL开始还是从TCP开始,然后在建立连接后转移到TLS。
答案 0 :(得分:4)
除非事先与服务器管理员达成协议,否则请勿尝试使用SSL进行连接。端口(465)用于SSMTP或SMTPS(SMTP over SSL)。预计与此端口的连接将启动与SSL的连接。由于StartTLS可用,因此已放弃使用此端口和协议。
有两个端口可以通过StartTLS支持SMTP。如果没有StartTLS,预计也不会支持SSL,如果你尝试,可能会丢弃连接。 SMTP(25)和提交(587)都可以支持StartTLS。如果它受支持,它将在对EHLO消息的响应中列出。然后,您可以启动StartTLS过程。有关详细信息,请参阅RFC 3207。
从您的评论中可以看出,您真正关心的是如何验证证书。这是一个不同但相关的问题。它还假定邮件服务器未使用自签名证书。就我而言,我使用自签名证书。这对我很有用,因为StartTLS很少(如果有的话)用于SMTP(端口25)连接。我可以合理地控制连接消息Submission(端口587或端口25)的客户端,它们必须在发送消息之前进行身份验证。根据我的经验,StartTLS主要用于保护在发送电子邮件之前必须进行身份验证的客户端的连接。
答案 1 :(得分:1)
STARTTLS
在stunnel
之后对SSL / TLS连接(SMTPS)或SSL / TLS的支持因服务器而异,具体取决于软件及其配置方式。
SSL / TLS在连接上的主要优点是它不需要对应用程序协议进行任何更改。实际上,您可以使用STARTTLS
之类的东西来包装连接。
STARTTLS
之后SSL / TLS的主要优点是它可以在同一个端口上完成。另一个优点可能是能够托管多个主机名(取代TLS级别的服务器名称指示的需要),但我不确定它是否曾用于SMTP服务器。
STMPS(连接时的SSL / TLS)没有官方规范并使用port number for which it is not registered(465)。理论上它也被弃用了。然而,许多服务器可以支持它(例如Exim),并且如果他们能够支持它们将能够支持两者:将由托管服务选择要配置的内容。
如果您正在编写客户端且已经支持{{1}},那么在连接时支持SSL / TLS应该相当便宜。支持这两者当然是一个好主意,因为它可以被更多用户使用(如果我没记错的话,Gmail曾经在某些时候仅支持SMTPS,并且在防火墙可以阻止的情况下它也很有用其中一个端口。)
只要使用SSL / TLS,这两种方法都可以提供类似的安全级别(并且执行了正确的证书验证,包括主机名)。
the difference between SSL and TLS通常存在一些混淆。出于某种原因,似乎许多电子邮件软件实现未能意识到“STARTTLS”中最重要的单词是“START”,而不是TLS(就连接模式和协议选择而言)。遗憾的是,这种混淆传播到一些软件配置选项(即使在流行的邮件客户端中),因此也传播到ISP文档中。期待您的用户感到困惑。
无论您希望支持哪种模式,请确保它没有"Use TLS, if available" option,如果SSL / TLS不可用,它将回退到普通交换:这将打开与MITM攻击的连接。 / p>