Я не знаю, как настроить файл конфигурации 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 [ Большое спасибо за помощь
Насколько мне известно, это невозможно. У вас есть два варианта:
example.com
, и вы также хотите обрабатывать почту для example.org
, установите запись MX, указывающую на ваш example.com
в зону example.org
. Это делается путем просмотра незашифрованного доменного имени в заголовке 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
, если он совпадает со значением по умолчанию.
В то время как @Billy дал решение для Dovecot
— которое работает для меня, эти два сообщения очень помогли мне с Postfix
: Postfix и несколько SSL-сертификатов и Использование нескольких «myhostname» в постфиксе.
Postfix 3.4 и более поздние версии теперь позволяют картам SNI работать с несколькими сертификатами для разных доменов. /subdomains:
http://www.postfix.org/postconf.5.html#tls_server_sni_maps
Советы по правильной настройке с помощью Let's Encrypt:
Подводя итог, вот что пользователь @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...