Postfix,一个 IP 上的多个域名和多个证书

Postfix,一个 IP 上的多个域名和多个证书

我有一个 Postfix 服务器,它有多个域,我想为每个域分配一个特定的证书。我的服务器只有一个 IP。

我已经找到了一种使用多 IP 的解决方案,但是我不知道该怎么做。

  • 服务器:Debian 9
  • 后缀:3.1.8

答案1

据我所知,postfix 中还没有可用的 SNI。文档 (http://www.postfix.org/TLS_README.html) 说“没有计划在 Postfix SMTP 服务器中实现 SNI。”,尽管 Victor 在 1 月份提到他希望在 postfix 3.4 中添加 SNI 支持。替代方案:

  • 多个 IP
  • 包含所有域名的证书。

此外,所有域名使用相同的 MX 也没什么问题。MX 主机名可以是您的服​​务域或其他名称。此外,helo/ehlo 名称配置为相同/相似的主机名。如果它对 GoogleApps 和其他主要电子邮件提供商有利,那么对我们也有利。

答案2

如果你使用的是 Postfix >=3.4,请考虑以下步骤来自此链接

步骤1:注释掉上面两行,并将以下几行添加到 /etc/postfix/main.cf:

    # smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
    # smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
    
    # provide the primary certificate for the server, to be used for outgoing connections (note the indentation)
    smtpd_tls_chain_files =
        /etc/letsencrypt/live/mail.yourprimarymailserverdomain.com/privkey.pem,
        /etc/letsencrypt/live/mail.yourprimarymailserverdomain.com/fullchain.pem
    
    # provide the map to be used when SNI support is enabled
    tls_server_sni_maps = hash:/etc/postfix/vmail_ssl.map

第2步:使用以下内容创建文件 /etc/postfix/vmail_ssl.map:

    # Compile with postmap -F hash:/etc/postfix/vmail_ssl.map when updating
    # One host per line
    mail.yourprimarymailserverdomain.com /etc/letsencrypt/live/mail.yourprimarymailserverdomain.com/privkey.pem /etc/letsencrypt/live/mail.yourprimarymailserverdomain.com/fullchain.pem
    mail.yoursecondarymailserverdomain.com /etc/letsencrypt/live/mail.yoursecondarymailserverdomain.com/privkey.pem /etc/letsencrypt/live/mail.yoursecondarymailserverdomain.com/fullchain.pem
    # add more domains with keys and certs as needed

步骤3: 跑步postmap -F hash:/etc/postfix/vmail_ssl.map

步骤4: 跑步systemctl restart postfix

步骤5:现在测试您域名的 SSL!对于每个域名,运行以下命令:openssl s_client -connect localhost:25 -servername mail.mydomainname.com -starttls smtp

答案3

对于那些不知道的人来说,每次证书更改时都需要重建 SNI 表,因为会生成用于postmap -F导入文件的底层表内容(它不仅仅存储对文件名的引用)。

postmap -F hash:/etc/postfix/tls_server_sni_maps.map

答案4

Postfix 版本 3.4 现在支持 SNI,因此它可以在 Ubuntu 19.10 中使用。

此外,这样做确实有充分的理由 - Outlook 等客户端会尝试使用与电子邮件域名匹配的服务器名称进行自动配置。如果您的邮件帐户位于 Gmail 或其他共享域,这不是问题,但托管在具有多个域的服务器(甚至是 VPS)上的个人域需要这样的解决方案

相关内容