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

使用 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 尝试同样的事情时,我确实收到了一条消息,但它是加密的:

登入

随后,发出登录命令失败:

. LOGIN [email protected] mypassword

和:

. BAD Command received in Invalid state.

我甚至无法在 993 上输入此信息,因为我没有收到问候语。

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

答案1

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

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

服务员没有向您打招呼,因为您应该先向他打招呼!

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

[TLS] 协商在服务器的 CRLF标记响应结束后立即开始。客户端发出命令后,不得发出进一步的命令,直到看到服务器响应并且 [TLS] 协商完成为止。OKSTARTTLS

例子:

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

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


如果你需要通过 TLS 调试连接,您不能使用telnet最初为 telnet 协议设计的命令。但是,还有其他几个工具,例如

  • OpenSSL

     openssl s_client -connect imap-mail.outlook.com:993
     openssl s_client -starttls imap -connect imap-mail.outlook.com:143
    
  • 加密传输协议

     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

相关内容