Как SMTP-клиенты определяют, использовать ли Явный или неявный SSL

StackOverflow https://stackoverflow.com/questions/803899

  •  03-07-2019
  •  | 
  •  

Вопрос

Большинство почтовых клиентов, поддерживающих SSL / TLS, требуют от пользователя только указания, следует ли включать SSL.Пользователю не обязательно что-либо знать о явном и неявном SSL и различиях между ними.

Итак, как почтовый клиент определяет, какой тип SSL использовать?Основано ли это на номерах портов по умолчанию?Может быть, просто попробовать одно, а затем другое?

Это было полезно?

Решение

Почтовый клиент должен знать, используется ли неявный SSL при подключении, поскольку он отвечает за инициирование SSL-квитирования с ClientHello Сообщение.Как он это определяет, зависит от клиента.Номера портов - отличная подсказка, но в каком-либо пользовательском интерфейсе также может быть установлен флажок, который активирует его, даже если используется стандартный (незащищенный) номер порта.

Существуют зарегистрированные IANA номера портов для защищенной почты, но некоторые интернет-провайдеры могут использовать другие порты.

  • IMAP/SSL:993
  • POP3/SSL:995

SMTP / SSL часто предлагается на порту 465, но это не зарегистрировано и встречается реже, поскольку явная поддержка SSL широко поддерживается SMTP-агентами.

Поддержка явного SSL может быть объявлена сервером с использованием согласования для конкретного протокола.Например, когда клиент подключается к SMTP-серверу и выдает команду EHLO, сервер перечисляет свои возможности, которые могут включать поддержку команды STARTTLS.

Другие советы

Порт 465 очень распространен среди коммерческих почтовых серверов и используется очень часто.Чаще всего он используется для неявного SSL.Когда вы подключаетесь по telnet к этому порту, вы получаете тайм-аут, поскольку вы должны сначала настроить SSL-соединение, прежде чем осуществлять связь с почтовым сервером.Таким образом, тайм-аут может быть первым признаком того, что у вас есть неявное SSL-соединение.Вы не можете использовать EHLO для возврата результатов, поскольку никакое соединение, кроме SSL-соединения, не разрешено.И НЕТ, вы не просто подключаетесь к SMTP-серверу, работающему под управлением неявного SSL, он не ответит и просто разорвет соединение.Это то, что он должен делать.Явный SSL сначала разрешит подключение, а затем настроит SSL.И да, часто используется неявный SSL.Недостатком является то, что стандарты RFC не конкретизируют, как это реализовано, поэтому разные разработчики настраивают его по-разному, даже несмотря на то, что некоторые считают неявный SSL устаревшим.

Я полагаю, что большинство клиентов, поддерживающих SMTP через SSL, начинают с незашифрованного соединения и выдают EHLO, а не HELO.Первый имеет дополнительные ответы с флагом, один из которых указывает, поддерживает ли сервер команду STARTTLS или нет.Если они это сделают, то клиент может использовать STARTTLS, а затем использовать SSL с этого момента.

Пример:

% telnet quack.kfu.com 25
220 quack.kfu.com ESMTP ready NO UCE
EHLO client
250-quack.kfu.com Hello client [xx.xx.xx.xx] (may be forged), pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 25000000
250-ETRN
250-AUTH PLAIN LOGIN
250-STARTTLS
250-DELIVERBY
250 HELP
starttls
220 2.0.0 Ready to start TLS
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top