我有一個具有多個網域的 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)上的個人網域需要這樣的解決方案