SMTP客户端如何确定是使用显式还是隐式SSL

时间:2009-04-29 19:29:41

标签: ssl smtp imap pop3

大多数支持SSL / TLS的邮件客户端只要求用户说明是否应启用SSL。用户不必知道任何关于Explicit& amp;隐式SSL及其之间的差异。

那么,邮件客户端如何确定使用哪种类型的SSL?它是基于默认端口号吗?它只是尝试一个然后另一个吗?

3 个答案:

答案 0 :(得分:4)

邮件客户端必须知道连接时是否正在使用隐式SSL,因为它负责使用ClientHello消息启动SSL握手。它如何决定这取决于客户。端口号是一个很好的提示,但是在某些UI中也可能有一个复选框,即使在使用标准(未受保护的)端口号时也会强制它。

有安全邮件的IANA注册端口号,但某些ISP可能使用其他端口。

  • IMAP / SSL:993
  • POP3 / SSL:995

SMTP / SSL通常在端口465上提供,但这没有注册,并且不太常见,因为SMTP代理广泛支持对显式SSL的支持。

服务器可以使用特定于协议的协商来公布对显式SSL的支持。例如,当客户端连接到SMTP服务器并发出EHLO命令时,服务器将列出其功能,其中可能包括对STARTTLS命令的支持。

答案 1 :(得分:2)

端口465在商业邮件服务器中非常常见,并且经常使用。通常它用于隐式SSL。当您telnet到此端口时,您将获得超时,因为您必须先设置SSL连接,然后才能与邮件服务器通信。因此,超时可能是您拥有隐式SSL连接的第一条线索。您不能使用EHLO返回结果,因为不允许使用SSL连接以外的连接。并且不,您不是简单地连接到运行隐式SSL的SMTP服务器,它将不响应,只会丢弃连接。这就是应该做的。显式SSL将首先允许连接,然后设置SSL。并且是经常使用隐式SSL。缺点是RFC标准并不具体如何实现它,因此不同的开发人员以不同的方式设置它,即使隐式SSL被某些人视为折旧。

答案 2 :(得分:0)

我相信大多数支持SMTP over SSL的客户端都会以未加密的连接开始,并发出EHLO而不是HELO。前者有额外的标志响应,其中一个指示服务器是否支持STARTTLS命令。如果他们这样做,那么客户端可以使用STARTTLS,然后从那时起使用SSL。

示例:

% telnet quack.kfu.com 25
220 quack.kfu.com ESMTP ready NO UCE
EHLO client
250-quack.kfu.com Hello client [xx.xx.xx.xx] (may be forged), pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 25000000
250-ETRN
250-AUTH PLAIN LOGIN
250-STARTTLS
250-DELIVERBY
250 HELP
starttls
220 2.0.0 Ready to start TLS