Как SMTP-клиенты определяют, использовать ли явный или неявный SSL - PullRequest
5 голосов
/ 29 апреля 2009

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

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

Ответы [ 3 ]

4 голосов
/ 29 апреля 2009

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

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

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

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

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

2 голосов
/ 24 марта 2014

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

0 голосов
/ 29 апреля 2009

Я полагаю, что большинство клиентов, поддерживающих 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
...