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

Pau*_*els 3 imap telnet

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

imap-mail.outlook.com 993
Run Code Online (Sandbox Code Playgroud)

和:

imap-mail.outlook.com 143
Run Code Online (Sandbox Code Playgroud)

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

telnet imap-mail.outlook.com 993
Run Code Online (Sandbox Code Playgroud)

我只是得到一个空白屏幕 - 没有确认或问候消息。当我在 143 上尝试同样的事情时,我确实收到一条消息,但它是加密的:

登录

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

. LOGIN myaddress@hotmail.co.uk mypassword
Run Code Online (Sandbox Code Playgroud)

和:

. BAD Command received in Invalid state.
Run Code Online (Sandbox Code Playgroud)

我什至无法在 993 上输入这个,因为我没有收到问候语。

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

Esa*_*nen 9

这是正常的; 如果您尝试 telnet HTTPS,就会发生完全相同的情况443;该端口993用于使用 TLS 的 IMAPS。在 TLS 连接中(来自RFC 5246, 7.4.1.2 Client Hello):

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

服务器不会向你打招呼,因为你应该先打招呼!

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

[TLS] 协商CRLFOK来自服务器的标记响应结束后立即开始。一旦客户端发出 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
Run Code Online (Sandbox Code Playgroud)

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


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