Настройка сертификатов для нескольких доменов в Postfix и Dovecot

Я не знаю, как настроить файл конфигурации postfix main.conf и файлы конфигурации dovecot 10-ssl.conf, чтобы мой почтовый сервер мог работать с несколько сертификатов. Позвольте мне объяснить ... У меня два домена на одном сервере, скажем

  • mail.example. это
  • mail.example.com

и два разных сертификата для обоих в разных папках

  • etc / letsencrypt / live / mail.example.it
  • etc / letsencrypt / live / mail.example.com

Вопрос в том, как мне установить параметры tls в main.conf конфигурации postfix? Кажется, поддерживается только одна запись в

  • smtpd_tls_cert_file
  • smtpd_tls_key_file

Та же проблема в 10-ssl.conf конфигурации dovecot: похоже, поддерживается только одна запись для

  • ssl_cert
  • 12158_key [ Большое спасибо за помощь

2
задан 11 July 2018 в 13:26
4 ответа

Насколько мне известно, это невозможно. У вас есть два варианта:

  • Использовать один домен в качестве MX для всех остальных доменов, которые должен обрабатывать сервер. Итак, если у вас есть сертификат, настроенный для example.com , и вы также хотите обрабатывать почту для example.org , установите запись MX, указывающую на ваш example.com в зону example.org .
  • Используйте сертификаты с несколькими сетями SAN для каждого нужного домена. Это означает, что у вас есть только один файл сертификата, охватывающий все ваши домены.
4
ответ дан 3 December 2019 в 09:57

Это делается путем просмотра незашифрованного доменного имени в заголовке Server Name Indication (SNI) в режиме рукопожатия TLS для выбора правильного сертификата до того, как будет произведен обмен зашифрованными данными. На данный момент (я отредактирую этот ответ, если он изменится), Postfix не поддерживает SNI.

Обновление : В постфиксе 3.4.0 - http://www.postfix.org/announcements/postfix-3.4.0.html

Dovecot, с другой стороны, поддерживает SNI. Смотрите этот пример конфигурации:

# Default
ssl_cert = </path/to/default/cert
ssl_key = </path/to/default/private/key

# mail.example.it
local_name mail.example.it {
    ssl_cert = </etc/letsencrypt/live/mail.example.it
    ssl_key = </path/to/mail.example.it/private/key
}

# mail.example.com
local_name mail.example.com {
    ssl_cert = </etc/letsencrypt/live/mail.example.com
    ssl_key = </path/to/mail.example.com/private/key
}

Вы можете пропустить каждый домен ssl_key, если он совпадает со значением по умолчанию.

.
0
ответ дан 3 December 2019 в 09:57

В то время как @Billy дал решение для Dovecot — которое работает для меня, эти два сообщения очень помогли мне с Postfix: Postfix и несколько SSL-сертификатов и Использование нескольких «myhostname» в постфиксе.

0
ответ дан 12 September 2020 в 14:20

Postfix 3.4 и более поздние версии теперь позволяют картам SNI работать с несколькими сертификатами для разных доменов. /subdomains:

http://www.postfix.org/postconf.5.html#tls_server_sni_maps

Советы по правильной настройке с помощью Let's Encrypt:

http://postfix.1071664.n5.nabble. com/How-to-use-the-new-server-TLS-SNI-feature-3-4-x-td100786.html#a100819

Подводя итог, вот что пользователь @MK список рассылки Postfix говорит (на случай, если приведенная выше ссылка по какой-то причине не работает):

----- main.cf -----
# provide the primary certificate for the server, to be used for outgoing connections
smtpd_tls_chain_files =
 /etc/letsencrypt/live/servername.serverdom.com/privkey.pem,
 /etc/letsencrypt/live/servername.serverdom.com/fullchain.pem

# provide the map to be used when SNI support is enabled
tls_server_sni_maps = hash:/etc/postfix/vmail_ssl.map
-----
----- /etc/postfix/vmail_ssl.map -----
# Compile with postmap -F hash:/etc/postfix/vmail_ssl.map when updating
# One host per line
servername.serverdom.com 
 /etc/letsencrypt/live/servername.serverdom.com/privkey.pem 
 /etc/letsencrypt/live/servername.serverdom.com/fullchain.pem
servername.otherdom.com 
 /etc/letsencrypt/live/servername.otherdom.com/privkey.pem 
 /etc/letsencrypt/live/servername.otherdom.com/fullchain.pem
-----

Затем запустите

$ postmap -F hash:/etc/postfix/vmail_ssl.map

Перезапустите postfix как обычно.

Выполнить

$ openssl s_client -connect localhost:25 -servername servername.otherdom.com -starttls smtp

$ openssl s_client -connect localhost:25 -servername servername.serverdom.com -starttls smtp

To test: вы найдете имя хоста в деталях сертификата. Оно будет соответствовать имени сервера хоста по умолчанию, если совпадения нет. По этой причине убедитесь, что имя сервера хоста находится в файле карты.

Примечание: Я не проверял это сам, я просто искал некоторые подсказки о том, как это сделать, и случайно наткнулся на эту ветку SF...

1
ответ дан 23 October 2020 в 22:32

Теги

Похожие вопросы