Imap

使用 Telnet 連接到 Hotmail 的 IMAP 伺服器

  • August 19, 2017

Hotmail 似乎有兩個獨立的 IMAP 埠:

imap-mail.outlook.com 993

和:

imap-mail.outlook.com 143

我的猜測是 143 是不安全的,而 993 是通過 SSL 的。但是,當我嘗試通過 993 連接時:

telnet imap-mail.outlook.com 993

我只是得到一個空白螢幕 - 沒有確認或問候消息。當我在 143 上嘗試同樣的事情時,我確實收到了一條消息,但它是加密的:

Imap登錄

隨後,發出登錄命令失敗:

. LOGIN myaddress@hotmail.co.uk mypassword

和:

. BAD Command received in Invalid state.

我什至不能在 993 上輸入這個,因為我沒有收到問候。

請有人告訴我為什麼這不是正確的連接,並可能建議如何解決這個問題?

這很正常; 如果您嘗試 telnet HTTPS,情況完全相同443;該埠993用於使用 TLS 的 IMAPS。在 TLS 連接中(來自RFC 5246, 7.4.1.2 Client Hello):

當客戶端第一次連接到伺服器時,它需要發送 ClientHello 作為它的第一條消息。客戶端還可以發送 ClientHello 響應 HelloRequest 或主動發送,以便重新協商現有連接中的安全參數。

伺服器不會打招呼,因為你應該先打招呼!

IMAP 埠的143工作方式不同,因為它不會啟動與 TLS 的連接。連接以純文字開始,客戶端對 TLS 的請求使用 ( RFC 3501, 6.2.1 ) STARTTLS

一種

$$ TLS $$協商在伺服器的標記響應CRLF結束後立即開始。OK一旦客戶端發出 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

換句話說,兩者都可以是安全的,但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
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

引用自:https://serverfault.com/questions/869291