У меня есть почтовый сервер Postfix для размещения нескольких виртуальных доменов (скажем, xxx.com
и yyy.com
).
Пользователи настраивают свой сервер исходящей почты как mail.xxx.com
и mail.yyy.com
. Все почтовые серверы относятся к одному и тому же физическому серверу Postfix (один и тот же IP-адрес, единственный экземпляр Postfix, работающий на этом сервере Linux).
Какой SSL-сертификат мне нужен для Postfix smtpd_tls_cert_file
вариант конфигурации?
Или мне нужно использовать один сертификат для mail.xxx.com
и рассказать пользователям о yyy.com
использовать mail.xxx.com
как их исходящий сервер? Это разрушило бы иллюзию отдельных виртуальных серверов.
[Примечание: домены полностью разделены. Это не несколько поддоменов, имеющих общий корень].
На самом деле ... Если вы хотите, чтобы каждый домен использовал действительный сертификат SSL, у вас есть 2 решения: использовать многодоменный сертификат или настроить каждый домен на уникальный IP-адрес. Первое решение ужасно: эти сертификаты обычно довольно дороги (хотя вы можете найти и недорогие), в них будут перечислены все домены, которые вы хотите сертифицировать в одном сертификате, и, что наиболее важно, они выдаются только один раз, поэтому добавление всего один новый домен означает получение совершенно нового сертификата.
Лучшее решение - разместить каждый домен на своем собственном IP-адресе, а затем сопоставить каждый сертификат с его соответствующим IP-адресом.
Вот как вы это делаете в postfix.
Сначала вы разместите свои сертификаты для каждого домена в / и т.д. / постфикс / каталог (вы также можете создать / и т.д. / постфикс / ssl / каталог) Примечание: я использую Plesk, который использует файлы сертификатов .pem, но вы также можете использовать файлы .key и .cer (файлы .pem - это просто конкатенация файлов .key и .cer в указанном порядке)
тогда вам нужно изменить master.cf файл в / и т.д. / постфикс /
Изначально мой выглядел так (вероятно, потому, что я добавил последние 3 IP-адреса после настройки сервера:
1.1.1.1- unix - n n - - smtp -o smtp_bind_address=1.1.1.1 -o smtp_bind_address6= -o smtp_address_preference=ipv4
2.2.2.2- unix - n n - - smtp -o smtp_bind_address=2.2.2.2 -o smtp_bind_address6= -o smtp_address_preference=ipv4
smtp inet n - n - - smtpd
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes
submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticate d,reject -o smtpd_sender_restrictions=
3.3.3.3- unix - n n - - smtp -o smtp_bind_address=3.3.3.3 -o smtp_bind_address6= -o smtp_address_preference=ipv4
4.4.4.4- unix - n n - - smtp -o smtp_bind_address=4.4.4.4 -o smtp_bind_address6= -o smtp_address_preference=ipv4
5.5.5.5- unix - n n - - smtp -o smtp_bind_address=5.5.5.5 -o smtp_bind_address6= -o smtp_address_preference=ipv4
Теперь, чтобы привязать каждый сертификат к соответствующему IP-адресу, выполните следующие действия:
1.1.1.1- unix - n n - - smtp -o smtp_bind_address=1.1.1.1 -o smtp_bind_address6= -o smtp_address_preference=ipv4
2.2.2.2- unix - n n - - smtp -o smtp_bind_address=2.2.2.2 -o smtp_bind_address6= -o smtp_address_preference=ipv4
3.3.3.3- unix - n n - - smtp -o smtp_bind_address=3.3.3.3 -o smtp_bind_address6= -o smtp_address_preference=ipv4
4.4.4.4- unix - n n - - smtp -o smtp_bind_address=4.4.4.4 -o smtp_bind_address6= -o smtp_address_preference=ipv4
5.5.5.5- unix - n n - - smtp -o smtp_bind_address=5.5.5.5 -o smtp_bind_address6= -o smtp_address_preference=ipv4
#smtp inet n - n - - smtpd
#smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes
#submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions=
1.1.1.1:smtp inet n - n - - smtpd -o smtpd_tls_cert_file=/etc/postfix/cert1.pem -o smtpd_tls_key_file=/etc/postfix/cert1.pem
1.1.1.1:smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_tls_cert_file=/etc/postfix/cert1.pem -o smtpd_tls_key_file=/etc/postfix/cert1.pem
1.1.1.1:submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_tls_cert_file=/etc/postfix/cert1.pem -o smtpd_tls_key_file=/etc/postfix/cert1.pem
2.2.2.2:smtp inet n - n - - smtpd -o smtpd_tls_cert_file=/etc/postfix/cert2.pem -o smtpd_tls_key_file=/etc/postfix/cert2.pem
2.2.2.2:smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_tls_cert_file=/etc/postfix/cert2.pem -o smtpd_tls_key_file=/etc/postfix/cert2.pem
2.2.2.2:submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_tls_cert_file=/etc/postfix/cert2.pem -o smtpd_tls_key_file=/etc/postfix/cert2.pem
3.3.3.3:smtp inet n - n - - smtpd -o smtpd_tls_cert_file=/etc/postfix/cert3.pem -o smtpd_tls_key_file=/etc/postfix/cert3.pem
3.3.3.3:smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_tls_cert_file=/etc/postfix/cert3.pem -o smtpd_tls_key_file=/etc/postfix/cert3.pem
3.3.3.3:submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_tls_cert_file=/etc/postfix/cert3.pem -o smtpd_tls_key_file=/etc/postfix/cert3.pem
4.4.4.4:smtp inet n - n - - smtpd -o smtpd_tls_cert_file=/etc/postfix/cert4.pem -o smtpd_tls_key_file=/etc/postfix/cert4.pem
4.4.4.4:smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_tls_cert_file=/etc/postfix/cert4.pem -o smtpd_tls_key_file=/etc/postfix/cert4.pem
4.4.4.4:submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_tls_cert_file=/etc/postfix/cert4.pem -o smtpd_tls_key_file=/etc/postfix/cert4.pem
5.5.5.5:smtp inet n - n - - smtpd -o smtpd_tls_cert_file=/etc/postfix/cert5.pem -o smtpd_tls_key_file=/etc/postfix/cert5.pem
5.5.5.5:smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_tls_cert_file=/etc/postfix/cert5.pem -o smtpd_tls_key_file=/etc/postfix/cert5.pem
5.5.5.5:submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_tls_cert_file=/etc/postfix/cert5.pem -o smtpd_tls_key_file=/etc/postfix/cert5.pem
Это оно!! (не забудьте закомментировать исходные строки, как показано выше)
PS: чтобы сделать то же самое для POP / IMAP, если вы используете courier-imap, вы просто помещаете копии этих файлов .pem в / usr / share / courier-imap / (или, в случае Plesk, вы помещаете их в / usr / share / ) и назовите их следующим образом: imapd.pem.xx.xx.xx.xx pop3d.pem.xx.xx.xx.xx
где xx.xx.xx.xx - соответствующий IP-адрес (2 сертификата являются копиями одного и того же файла)
Надеюсь это поможет!
Или мне нужно использовать один сертификат для mail.xxx.com и указать пользователям yyy.com использовать mail.xxx.com в качестве сервера исходящей почты?
Да, в конечном итоге вам придется либо это сделать, либо использовать сертификат с несколькими CommonName
или SubjAltName
атрибуты.
Postfix не может узнать, какое имя хоста запросил клиент. Нет такой вещи, как я. е. HTTP / 1.1 Host
заголовок, который указывает запрошенный домен, а Postfix не поддерживает SNI все же.
Если вы действительно хотите иметь два разных домена для вашего почтового сервера, вам придется запустить два экземпляра smtpd
на двух отдельных сетевых интерфейсах / IP-адресах. Обычно вы просто выбираете «нейтральный» домен и говорите своим пользователям использовать его.