Вопрос или проблема
Недавно я попытался настроить несколько SSL для нескольких доменов, используя SNI в postfix. (Настройки Dovecot остались без изменений).
Теперь я получаю ошибки TLS (var/etc/mail.log):
Jan 22 22:06:17 2099047-cg00264 postfix/smtpd[138223]: connect from unknown[46.39.58.24]
Jan 22 22:06:17 2099047-cg00264 postfix/smtpd[138223]: warning: table hash:/etc/postfix/vmail_ssl.map.db: key history.tor: malformed BASE64 value: /FakeSSL/history.tor/history.t
Jan 22 22:06:17 2099047-cg00264 postfix/smtpd[138223]: warning: tls_server_sni_maps: history.tor map lookup problem
Jan 22 22:06:17 2099047-cg00264 postfix/smtpd[138223]: SSL_accept error from unknown[46.39.58.24]: -1
Jan 22 22:06:17 2099047-cg00264 postfix/smtpd[138223]: warning: TLS library problem: error:0A0000EA:SSL routines::callback failed:../ssl/statem/extensions.c:1000:
Jan 22 22:06:17 2099047-cg00264 postfix/smtpd[138223]: lost connection after STARTTLS from unknown[46.39.58.24]
Jan 22 22:06:17 2099047-cg00264 postfix/smtpd[138223]: disconnect from unknown[46.39.58.24] ehlo=1 starttls=0/1 commands=1/2
Мой postfix main.conf:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 3.6 on
# fresh installs.
compatibility_level = 3.6
smtpd_use_tls = yes
# TLS parameters
smtpd_tls_cert_file=/OtherSSL/mishkin.ml/mishkin.ml.chain.pem
smtpd_tls_key_file=/OtherSSL/mishkin.ml/mishkin.ml.priv.key
smtpd_tls_security_level=may
#smtp_tls_CApath=/OtherSSL/CA
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_auth_only = yes
smtpd_tls_wrappermode = no
smtpd_tls_mandatory_ciphers = high
tls_server_sni_maps = hash:/etc/postfix/vmail_ssl.map
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mishkin.ml
mydomain = mishkin.ml
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, mishkin.ml, 2099047-cg00264.twc1.net, localhost.twc1.net, localhost, history.tor
virtual_alias_domains = mishkin.ml, history.tor
virtual_alias_maps = hash:/etc/postfix/virtual
relayhost =
mynetworks = 90.156.226.142/32
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
vmail_ssl.map:
mishkin.ml /OtherSSL/mishkin.ml/mishkin.ml.chain.pem /OtherSSL/mishkin.ml/mishkin.ml.priv.key
history.tor /FakeSSL/history.tor/history.tor.chain.pem /FakeSSL/history.tor/history.tor.priv.key
SSL были созданы с использованием https://github.com/Vinalti/Self-Signed-Certificates-Generator
- Попытался заменить оба smtpd_tls файла на параметр smtpd_tls_chain_files
- Перенес postfix на порт 25 (да, перенес С 587 на 25)
- Следовал инструкциям по настройке SNI
- Пробовал получить сертификат через openssl, а не через этот скрипт
Ответ или решение
Проблема, с которой вы столкнулись, связана с настройкой TLS в Postfix для нескольких доменов с использованием SNI (Server Name Indication). Ошибки, указанные в логах, свидетельствуют о неправильной конфигурации SSL-сертификатов для ваших доменов. Давайте разберем шаги по обнаружению и устранению проблемы.
Теория
Server Name Indication (SNI) — это механизм, который позволяет серверу выбирать правильный SSL-сертификат в зависимости от домена, к которому осуществляется подключение. Это особенно полезно при обслуживании нескольких доменов с использованием одного IP-адреса. В вашей настройке Postfix с SNI используется файл vmail_ssl.map
, в котором перечислены домены и соответствующие им пути к сертификатам и ключам.
Основные источники ошибок:
-
Неправильное форматирование файла карты SNI:
- В вашей конфигурации указано
hash:/etc/postfix/vmail_ssl.map
. Убедитесь, что файл карты правильно скомпилирован с помощьюpostmap /etc/postfix/vmail_ssl.map
.
- В вашей конфигурации указано
-
Ошибки BASE64:
- Сообщение лога указывает на «malformed BASE64 value», что может свидетельствовать о повреждении сертификата. Убедитесь, что ваш сертификат для
history.tor
корректный и закодирован в формате BASE64.
- Сообщение лога указывает на «malformed BASE64 value», что может свидетельствовать о повреждении сертификата. Убедитесь, что ваш сертификат для
-
Проблемы с самоподписанными сертификатами:
- Постарайтесь использовать сертификационный центр, которому доверяют клиентские системы. Самоподписанные сертификаты могут вызвать проблемы совместимости, особенно с клиентами, ожидающими доверительных цепочек от известных CA (Certificate Authorities).
Пример
Ваша конфигурация Postfix указана как:
tls_server_sni_maps = hash:/etc/postfix/vmail_ssl.map
myhostname = mishkin.ml
...
И файл vmail_ssl.map
:
mishkin.ml /OtherSSL/mishkin.ml/mishkin.ml.chain.pem /OtherSSL/mishkin.ml/mishkin.ml.priv.key
history.tor /FakeSSL/history.tor/history.tor.chain.pem /FakeSSL/history.tor/history.tor.priv.key
Обратите внимание на следующее:
- Правильность и доступность файлов сертификатов и закрытых ключей. Проверьте, чтобы файлы были правильно расположены на сервере и имели соответствующие права доступа.
- Компиляция файла
vmail_ssl.map
с помощьюpostmap
, чтобы избежать ошибок при чтении нележащих записей.
Применение
-
Проверка файлов сертификатов:
Используйте командуopenssl
для валидации ваших файлов сертификатов:openssl x509 -in /FakeSSL/history.tor/history.tor.chain.pem -text -noout
Проверьте целостность и правильность каждой цепочки сертификатов. Убедитесь, что все промежуточные сертификаты включены, если они требуются.
-
Конфигурация Postfix:
Пересоберите конфигурациюvmail_ssl.map
:sudo postmap /etc/postfix/vmail_ssl.map
Убедитесь, что нет ошибок во время компиляции, и проверьте права доступа к файлу.
-
Диагностика проблем TLS:
Воспользуйтесь инструментами диагностики, такими какopenssl
илиssldump
, для тестирования SMTP-соединения:openssl s_client -starttls smtp -crlf -connect mishkin.ml:25
Проанализируйте вывод команды на наличие ошибок и выявите возможные проблемы с цепочками сертификации или другими аспектами.
-
Использование доверенных сертификатов:
Если возможно, обратитесь к стороннему сертификационному центру, чтобы получить признанные сертификаты, если вы испытываете проблемы с самоподписанными сертификатами. Это значительно упростит настройку и восприятие клиентами. -
Логи и предупреждения:
Продолжайте просмотр логов в/var/log/mail.log
и следите за новыми или неразрешенными проблемами, связанными с TLS и SNI.
Эти шаги помогут локализовать и устранить основные проблемы, связанные с настройкой SSL-сертификатов для нескольких доменов в Postfix с использованием SNI. Если проблема сохраняется, рассмотрите возможность привлечения стороннего эксперта для более глубокого анализа конфигурации вашей системы.