1

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。

4

2 回答 2

4

除非您与服务器管理员事先安排好,否则不要尝试使用 SSL 进行连接。端口 (465) 用于 SSMTP 或 SMTPS(基于 SSL 的 SMTP)。与此端口的连接预计会使用 SSL 启动连接。由于 StartTLS 可用,因此已放弃使用此端口和协议。

有两个端口可以支持带有 StartTLS 的 SMTP。在没有 StartTLS 的情况下,两者都不支持 SSL,如果您尝试,可能会断开连接。SMTP (25) 和 Submission (587) 都可以支持 StartTLS。如果受支持,它将在对 EHLO 消息的响应中列出。然后,您可以启动 StartTLS 过程。有关详细信息,请参阅RFC 3207 。

从您的评论中可以看出,您真正关心的是如何验证证书。这是一个不同但相关的问题。它还假设邮件服务器没有使用自签名证书。就我而言,我使用自签名证书。这对我很有效,因为 StartTLS 很少(如果有的话)用于 SMTP(端口 25)连接。我对连接消息提交(端口 587 或端口 25)的客户端有合理的控制权,这些客户端必须在发送消息之前进行身份验证。根据我的经验,StartTLS 主要用于保护必须在发送电子邮件之前进行身份验证的客户端的连接。

于 2012-11-16T02:44:03.160 回答
1

对 SSL/TLS on connect (SMTPS) 或 SSL/TLS after 的支持STARTTLS因一台服务器而异,具体取决于软件及其配置方式。

SSL/TLS 连接的主要优点是它不需要对应用程序协议进行任何更改。事实上,您可以stunnel在每一侧使用类似的东西来包装连接。

SSL/TLS after 的主要优点STARTTLS是可以在同一个端口上完成。另一个优势可能是能够托管多个主机名(取代 TLS 级别的服务器名称指示),但我不确定这是否曾经用于 SMTP 服务器。

STMPS(连接时的 SSL/TLS)没有官方规范,并且使用未注册的端口号(465)。从理论上讲,它也已被弃用。然而,许多服务器可以支持它(例如Exim),并且如果它们能够这样做,它们将能够同时支持这两者:由托管服务来选择配置什么。

如果您正在编写客户端并且已经支持STARTTLS,那么在连接时支持 SSL/TLS 也应该相当便宜。支持两者当然是一个好主意,因为它可以被更多的用户使用(如果我没记错的话,Gmail 在某些时候只支持 SMTPS,它在防火墙阻止的情况下也很有用仅端口之一)。

两者都可以提供相似级别的安全性,只要以一种或另一种方式使用 SSL/TLS(并且执行正确的证书验证,包括主机名)。

关于SSL 和 TLS 之间的区别通常存在一些混淆。由于某种原因,似乎许多电子邮件软件实现未能意识到“STARTTLS”中最重要的词是“START”,而不是 TLS(在连接模式和协议选择方面)。不幸的是,这种混淆已传播到某些软件配置选项(甚至在流行的邮件客户端中),因此也传播到了 ISP 文档中。预计您的用户会感到困惑。

无论您要支持哪种模式,请确保它没有使用 TLS,如果可用”选项,如果 SSL/TLS 不可用,该选项将退回到普通交换:这会打开与 MITM 攻击的连接。

于 2012-11-16T11:23:14.320 回答