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 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
ncat
和socat
(不支持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