具有 Postfix 和 SSL 的虚拟域

具有 Postfix 和 SSL 的虚拟域

我有一个 Postfix 邮件服务器设置,用于托管多个虚拟域(比如xxx.comyyy.com)。

用户将其外发邮件服务器配置为mail.xxx.commail.yyy.com。所有邮件服务器都指的是同一个物理 Postfix 服务器(同一个 IP,在此 Linux 服务器上运行的单个 Postfix 实例)。

Postfix 配置选项需要哪个 SSL 证书smtpd_tls_cert_file

或者我必须使用单个证书mail.xxx.com并告诉用户yyy.com将其用作mail.xxx.com其发送服务器?这会打破独立虚拟服务器的假象。

[注意:这些域名是完全独立的。这些不是共享一个共同根的多个子域名]。

答案1

或者我是否必须对 mail.xxx.com 使用单个证书并告诉 yyy.com 的用户使用 mail.xxx.com 作为他们的发件服务器?

是的,最终您必须这样做,或者使用具有多个CommonNameSubjAltName属性的证书。

Postfix 无法知道客户端请求了哪个主机名。不存在Host指示请求域的 HTTP/1.1 标头,并且 Postfix 不支持信噪比然而。

如果您确实需要为邮件服务器设置两个不同的域,则必须smtpd在两个单独的网络接口/IP 地址上运行两个实例。通常,您只需选择一个“中立”域并告诉您的用户使用该域。

答案2

实际上...如果您希望每个域都使用有效的 SSL 证书,您有两种解决方案:使用多域证书,或将每个域设置在唯一的 IP 上。第一种解决方案很糟糕:这些证书通常非常昂贵(尽管您可以找到便宜的证书),它们会在同一证书上列出您希望认证的所有域,最重要的是,它们只颁发一次,因此仅添加一个新域就意味着获得一个全新的证书。

更好的解决方案是将每个域名放在其自己的 IP 上,然后将每个证书与其各自的 IP 匹配。

以下是在 Postfix 中执行此操作的方法。

您首先将每个域的证书放在在 /etc/postfix/目录(您也可以创建一个在 /etc/postfix/ssl/目录)注意:我使用 Plesk,它使用 .pem 证书文件,但您也可以使用 .key 和 .cer 文件(.pem 文件只是 .key 和 .cer 文件的组合,按此顺序)

然后,您需要修改主配置文件归档在 /etc/postfix/

最初,我的看起来像这样(可能是因为我在设置服务器后添加了最后 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:如果您使用 courier-imap,要对 POP/IMAP 执行相同操作,只需将这些 .pem 文件的副本放在/usr/share/courier-imap/(或者在 Plesk 中,你可以将它们放在/usr/共享/) 并将其命名为:imapd.pem.xx.xx.xx.xx pop3d.pem.xx.xx.xx.xx

其中 xx.xx.xx.xx 是相应的 IP 地址(这 2 个证书是同一文件的副本)

希望这可以帮助!

相关内容