Как SMTP-клиенты определяют, использовать ли Явный или неявный SSL
Вопрос
Большинство почтовых клиентов, поддерживающих 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