Назад | Перейти на главную страницу

Подключение к серверу IMAP Hotmail с помощью Telnet

У 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