使用Telnet连接到Hotmail的IMAP服务器

Hotmail似乎有两个独立的IMAP端口:

imap-mail.outlook.com 993 

和:

 imap-mail.outlook.com 143 

我的猜测是143是不安全的,993是通过SSL。 但是,当我尝试连接超过993:

 telnet imap-mail.outlook.com 993 

我只是得到一个空白的屏幕 – 没有确认或问候消息。 当我尝试超过143的同样的东西,我得到一个消息,但它的encryption:

ImapLogin

随后,发出login命令失败:

 . LOGIN [email protected] mypassword 

附:

 . BAD Command received in Invalid state. 

我甚至不能在993上input,因为我没有得到问候。

请有人build议我为什么这是不正确的连接,并可能build议如何解决这个问题?

这个是正常的; 如果您尝试telnet HTTPS 443 ,则会发生同样的情况; 端口993用于使用TLS的IMAPS。 在TLS连接(从RFC 5246,7.4.1.2客户端Hello )中:

当客户端首次连接到服务器时,需要发送ClientHello作为其第一条消息。 客户端还可以发送ClientHello来响应HelloRequest或主动为了重新协商现有连接中的安全参数。

服务器不会问候你,因为你应该先问候一下!

IMAP端口143工作方式不同,因为它不启动与TLS的连接。 连接以纯文本forms开始,客户端请求TLS( RFC 3501,6.2.1 ) STARTTLS

在来自服务器的标记的OK响应结束时,在CRLF之后立即开始[TLS]协商。 一旦客户端发出STARTTLS命令,它不能发出更多命令,直到看到服务器响应并且完成[TLS]协商。

例:

 C: a001 CAPABILITY S: * CAPABILITY IMAP4rev1 STARTTLS LOGINDISABLED S: a001 OK CAPABILITY completed C: a002 STARTTLS S: a002 OK Begin TLS negotiation now <TLS negotiation, further commands are under [TLS] layer> C: a003 CAPABILITY S: * CAPABILITY IMAP4rev1 AUTH=PLAIN S: a003 OK CAPABILITY completed C: a004 LOGIN joe password S: a004 OK LOGIN completed 

换句话说,两个CAN都是安全的,但143并不一定,因为它也用于普通的IMAP。


如果您需要通过TLSdebugging连接 ,则不能使用最初为telnet协议devise的telnet命令。 但是,还有其他几个工具,例如

  • OpenSSL的

     openssl s_client -connect imap-mail.outlook.com:993 openssl s_client -starttls imap -connect imap-mail.outlook.com:143 
  • 的GnuTLS

     gnutls-cli imap-mail.outlook.com -p 993 gnutls-cli imap-mail.outlook.com -s -p 143 
  • ncatsocat (不支持STARTTLS

     ncat --ssl imap-mail.outlook.com 993 socat openssl:imap-mail.outlook.com:993 stdio socat ssl:imap-mail.outlool.com:993 readline 
  • 在Debian上, telnet-ssl -z ssl imap-mail.outlook.com 993