У 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
для IMAPS, который использует TLS. В соединении 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