具有Postfix和SSL的虚拟域


21

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

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

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

还是我必须使用一个证书mail.xxx.com并告诉用户将yyy.commail.xxx.com用作传出服务器?这将打破单独的虚拟服务器的幻想。

[注意:这些域是完全分开的。这些不是共享公共根的多个子域]。

Answers:


10

还是我必须对mail.xxx.com使用单个证书,并告诉yyy.com用户使用mail.xxx.com作为传出服务器?

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

Postfix无法知道客户端请求的主机名。没有HTTP / 1.1 Host标头指示请求的域,而Postfix还不支持SNI

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


19

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

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

这是在后缀中的处理方法。

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

然后,您需要修改/ etc / postfix /中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:如果您使用courier-imap,对POP / 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地址(这两个证书是同一文件的副本)

希望这可以帮助!


感谢您抽出宝贵的时间写出如此详细的答案!我敢肯定,它将在将来对某人有所帮助。
nimrodm 2014年

2
那是希望!我花了一段时间来拼凑了一起,这是罕见的发现,解决实际工作,而不是别人surmising这样或那样可能工作..
彼得·

1
现在,您可以使用letencrypt与第一种方法一起使用。您可以免费获得多域证书
9/8平衡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.