Ubuntu – Postfix, Dovecot, Dnsmasq – Невозможно отправить почту

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

Недавно я попытался настроить несколько 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

  1. Попытался заменить оба smtpd_tls файла на параметр smtpd_tls_chain_files
  2. Перенес postfix на порт 25 (да, перенес С 587 на 25)
  3. Следовал инструкциям по настройке SNI
  4. Пробовал получить сертификат через openssl, а не через этот скрипт

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

Проблема, с которой вы столкнулись, связана с настройкой TLS в Postfix для нескольких доменов с использованием SNI (Server Name Indication). Ошибки, указанные в логах, свидетельствуют о неправильной конфигурации SSL-сертификатов для ваших доменов. Давайте разберем шаги по обнаружению и устранению проблемы.

Теория

Server Name Indication (SNI) — это механизм, который позволяет серверу выбирать правильный SSL-сертификат в зависимости от домена, к которому осуществляется подключение. Это особенно полезно при обслуживании нескольких доменов с использованием одного IP-адреса. В вашей настройке Postfix с SNI используется файл vmail_ssl.map, в котором перечислены домены и соответствующие им пути к сертификатам и ключам.

Основные источники ошибок:

  1. Неправильное форматирование файла карты SNI:

    • В вашей конфигурации указано hash:/etc/postfix/vmail_ssl.map. Убедитесь, что файл карты правильно скомпилирован с помощью postmap /etc/postfix/vmail_ssl.map.
  2. Ошибки BASE64:

    • Сообщение лога указывает на «malformed BASE64 value», что может свидетельствовать о повреждении сертификата. Убедитесь, что ваш сертификат для history.tor корректный и закодирован в формате BASE64.
  3. Проблемы с самоподписанными сертификатами:

    • Постарайтесь использовать сертификационный центр, которому доверяют клиентские системы. Самоподписанные сертификаты могут вызвать проблемы совместимости, особенно с клиентами, ожидающими доверительных цепочек от известных 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, чтобы избежать ошибок при чтении нележащих записей.

Применение

  1. Проверка файлов сертификатов:
    Используйте команду openssl для валидации ваших файлов сертификатов:

    openssl x509 -in /FakeSSL/history.tor/history.tor.chain.pem -text -noout

    Проверьте целостность и правильность каждой цепочки сертификатов. Убедитесь, что все промежуточные сертификаты включены, если они требуются.

  2. Конфигурация Postfix:
    Пересоберите конфигурацию vmail_ssl.map:

    sudo postmap /etc/postfix/vmail_ssl.map

    Убедитесь, что нет ошибок во время компиляции, и проверьте права доступа к файлу.

  3. Диагностика проблем TLS:
    Воспользуйтесь инструментами диагностики, такими как openssl или ssldump, для тестирования SMTP-соединения:

    openssl s_client -starttls smtp -crlf -connect mishkin.ml:25

    Проанализируйте вывод команды на наличие ошибок и выявите возможные проблемы с цепочками сертификации или другими аспектами.

  4. Использование доверенных сертификатов:
    Если возможно, обратитесь к стороннему сертификационному центру, чтобы получить признанные сертификаты, если вы испытываете проблемы с самоподписанными сертификатами. Это значительно упростит настройку и восприятие клиентами.

  5. Логи и предупреждения:
    Продолжайте просмотр логов в /var/log/mail.log и следите за новыми или неразрешенными проблемами, связанными с TLS и SNI.

Эти шаги помогут локализовать и устранить основные проблемы, связанные с настройкой SSL-сертификатов для нескольких доменов в Postfix с использованием SNI. Если проблема сохраняется, рассмотрите возможность привлечения стороннего эксперта для более глубокого анализа конфигурации вашей системы.

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

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