Как лучше всего проверить, поддерживает ли SMTP-сервер SSL?

Вопрос или проблема

Как лучше всего проверить, поддерживает ли SMTP-сервер SSL или нет?

Дополнительный вопрос: как сделать его поддерживающим SSL, если он еще не поддерживает SSL.

ОС – CentOS.

Это зависит от того, имеете ли вы в виду SSL или TLS.

  • SSL имеет свой собственный порт TCP/465. Лучший способ проверить его наличие – использовать замечательный s_client от OpenSSL, который проведет для вас процесс согласования SSL.

      openssl s_client -connect localhost:465
    

Если ваш сервер не привязан к localhost, то, очевидно, замените его на IP-адрес или имя хоста.

  • TLS сначала выглядит как обычный SMTP. Шифрование согласовывается на основе открытого текстового протокола. Вы можете проверить его доступность, отправив серверу запрос EHLO. Для этого можно использовать клиенты Netcat или Telnet.

      $ nc -v localhost 25
      localhost [127.0.0.1] 25 (smtp) открыто
      220 mail.example.com ESMTP Exim 4.69 Пт, 11 Сен 2009 09:25:20 +0100
      ehlo test
      250-mail.example.com Здравствуйте localhost [127.0.0.1]
      250-RАЗМЕР 10485760
      250-ПАЙПЛИНИГ
      250-STARTTLS
      250 ПОМОЩЬ
    

Важная строка – предпоследняя (250-STARTTLS), которая сообщает о возможности STARTTLS.

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

На мой взгляд, ответы, приведенные на этой странице, просто неверны.

Причина в том, что SSL/TLS + SMTP может означать две разные вещи.

Одна из них заключается в том, что вы обертываете сокет в SSL/TLS. Если сервер хочет обслуживать как нешифрованный, так и зашифрованный трафик, ему нужны два порта для этой цели, по одному для каждого типа трафика. По умолчанию SMTP-серверы обычно используют порт 25 для нешифрованного трафика и порт 465 для зашифрованного. С помощью внешних инструментов, таких как stunnel, это может быть реализовано таким образом, что клиент и сервер не осознают, что фактический трафик проходит по зашифрованному сокету. Так что вы можете реализовать этот подход, даже если ваш SMTP-сервер не поддерживает SSL/TLS.. но серверы, такие как sendmail и postfix, это поддерживают, так что внешнего инструмента не нужно.

Другой подход заключается в том, что используется STARTTLS. Это расширение протокола SMTP, и, следовательно, требует, чтобы и сервер, и клиент поддерживали его. Используя STARTTLS, сервер может обслуживать как зашифрованный, так и нешифрованный трафик через один и тот же сокет, т.е. вы можете использовать порт 25 для обоих. Вы можете проверить, включен ли STARTTLS на SMTP сервере, подключившись к нему на порту 25 и отправив команду EHLO, как объясняет Дэн в другом месте на этой странице.

Как SSL, так и TLS являются просто протоколами шифрования, причем TLS является преемником SSL.

Я получил информацию здесь.

Путаница между двумя подходами усугубляется терминологией, используемой SMTP-серверами. Обратите внимание на параметры Postfix smtpd_tls_security_level и smtpd_use_tls и связанную с ними документацию. Эти параметры касаются STARTTLS, а не прямо TLS. Другие SMTP-серверы также прекрасно путают терминологию.

Существует простой инструмент для этого. Вы отправляете им электронное письмо, и они отвечают с множеством деталей:

https://www.checktls.com/perl/TestSender.pl

Если вы используете CentOS, вероятно, вы используете Sendmail. Установите пакет Sendmail-mc. Внутри /etc/mail/sendmail.mc имеются некоторые директивы, которые вам нужно изучить для TLS:

dnl # Элементарная информация о создании сертификатов для sendmail TLS:
dnl #     cd /usr/share/ssl/certs; make sendmail.pem
dnl # Полное использование:
dnl #     make -C /usr/share/ssl/certs usage
dnl #
dnl define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl
dnl define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl
dnl define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl
dnl define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.pem')dnl

Когда у вас это будет работать, вы можете включить Sendmail через SSL похожим образом:

DAEMON_OPTIONS(`Addr=142.46.200.221, Port=465, Name=SSA, M=Eas')

О, и выделите достаточно времени, чтобы поиграть с этим, прежде чем сделать правильно.

Когда я это делал, я почти всегда запускал три экземпляра sendmail:

  • один с включенным TLS на порту 587 с различными конфигурациями SMTP-AUTH (чтоб аутентифицированные удаленные пользователи могли отправлять произвольные письма);
  • один с включенным SSL на порту 465 с различными конфигурациями SMTP-AUTH (по той же причине, разные клиенты (спасибо Microsoft Outlook “Express”); и
  • один с включенным TLS, но без AUTH, закрытый так, чтобы он принимал письма только для действительных локальных получателей (удаленные отправители могут использовать TLS или нет, как им угодно).

Каждый имел отдельный файл конфигурации. Должен быть способ заставить первые два работать в одном экземпляре, прослушивающем оба порта, но у меня это так и не получилось.

Если вы станете достаточно большим, эти разные экземпляры могут выполняться на разных машинах.

Чтобы проверить, поддерживает ли SMTP-сервер SSL, вы можете:

Использовать Telnet или OpenSSL: Вы можете подключиться к SMTP-серверу с помощью Telnet или OpenSSL и проверить соединение на порту 465 (SSL) или 587 (TLS). Если соединение защищено, вы увидите ответ, указывающий на то, что шифрование SSL/TLS включено.

Проверить настройки SMTP в вашем почтовом клиенте: При настройке SMTP-сервера в вашем почтовом клиенте клиент часто показывает, включено ли SSL/TLS, когда вы настраиваете соединение.

Использовать инструмент для тестирования SMTP: Вы можете использовать онлайн-инструменты, такие как MXToolbox или SMTP Diag Tool, чтобы протестировать соединение сервера и проверить, активно ли SSL/TLS.

Если вы ищете надежный SMTP-сервер с поддержкой SSL, вы можете попробовать SMTPmart, Mailgun или SMTPget. Они предоставляют безопасные SMTP-серверы с шифрованием SSL/TLS, обеспечивая защиту ваших электронных коммуникаций и надежную доставку.

Ответ или решение

Как проверить, включен ли SSL на SMTP-сервере?

Проверка наличия поддержки SSL/TLS на SMTP-сервере может быть выполнена несколькими способами. Нижеприведенные методы помогут вам провести тщательную проверку.

1. Проверка с помощью OpenSSL

Для оценки поддержки SSL на SMTP-сервере мы можем использовать инструмент OpenSSL. Если ваш сервер использует SSL, он должен отвечать на запросы на порту 465. Для проверки выполните следующую команду в терминале:

openssl s_client -connect <hostname_or_ip>:465

Замените <hostname_or_ip> на имя хоста или IP-адрес вашего сервера. Если SSL поддерживается, вы увидите информацию о сертификате и о том, что канал зашифрован.

2. Проверка с помощью Telnet или Netcat (для STARTTLS)

Если ваш SMTP-сервер поддерживает STARTTLS (что является более распространённой практикой), вы можете проверить это, используя Telnet или Netcat для соединения на стандартный SMTP-порт 25. Выполните следующую команду:

nc -v <hostname_or_ip> 25

После этого введите команду EHLO:

ehlo test

Если сервер поддерживает STARTTLS, вы должны увидеть строку 250-STARTTLS в ответе, что свидетельствует о наличии возможности перейти на защищенное соединение.

3. Использование инструментов диагностики SMTP

Существуют и веб-инструменты для диагностики SMTP, такие как MXToolbox или SMTP Diag Tool. Эти инструменты автоматизируют процесс проверки и предоставят отчёт о состоянии вашего SMTP-сервера, включая информацию о поддержке SSL/TLS.

Как включить поддержку SSL/TLS на SMTP-сервере в CentOS

Если после проверки вы обнаружили, что ваш SMTP-сервер не поддерживает SSL/TLS, вы можете настроить его для включения этих функций. Рассмотрим основные шаги:

1. Установка необходимых пакетов

Если вы используете Sendmail, установите пакет Sendmail-mc. Используйте команду:

sudo yum install sendmail sendmail-mc

2. Конфигурация Sendmail для поддержки TLS

Откройте файл конфигурации /etc/mail/sendmail.mc и добавьте следующие строки, которые определяют сертификаты:

define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl
define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl
define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl
define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.pem')dnl

Обратите внимание, что перед использованием сертификатов вам нужно сгенерировать их (например, командой make -C /usr/share/ssl/certs usage).

3. Включение SSL на порту 465

В файле sendmail.mc добавьте опцию для прослушивания порта 465:

DAEMON_OPTIONS(`Addr=0.0.0.0, Port=465, Name=SSL')

4. Перегенерация конфигурации и перезапуск Sendmail

После внесения изменений, сгенерируйте новую конфигурацию:

make -C /etc/mail

Затем перезапустите службу Sendmail:

sudo systemctl restart sendmail

Заключение

Подводя итог, для проверки наличия поддержки SSL/TLS на SMTP-сервере в CentOS используйте OpenSSL, Telnet или диагностические инструменты. Если SSL/TLS не включен, следуйте приведённым шагам для его активации. Убедитесь в корректности настроек безопасности на вашем сервере, чтобы обеспечить надежную защиту вашей электронной почты.

Оцените материал
Добавить комментарий

Капча загружается...