一、為什麼在架設 Mail Server 前要先處理 DNS?
電子郵件的收發行為是建立在 DNS 上的。
無論是外部寄信給你,還是你寄信出去,DNS 都扮演「郵局導航系統」的角色。
主要涉及四項紀錄:
| 記錄類型 | 功能 | 範例 |
|---|---|---|
| MX (Mail Exchanger) | 告訴全世界你的郵件要送到哪一台伺服器 | example.com. MX 10 mail.example.com. |
| SPF (Sender Policy Framework) | 說明哪些主機有權代表你的網域寄信 | v=spf1 ip4:1.2.3.4 include:_spf.google.com -all |
| DMARC (Domain-based Message Authentication, Reporting and Conformance) | SPF、DKIM 驗證結果的策略規範與報告 | v=DMARC1; p=quarantine; rua=mailto:dmarc-report@example.com |
| DKIM (DomainKeys Identified Mail) | 利用簽章機制驗證郵件內容是否被竄改 | 在 DNS 上建立 default._domainkey.example.com TXT |
💡 實際建議:
- MX 要正確對應 mail server 主機名(含 A 紀錄)
- SPF 建議使用 include 授權外部寄信伺服器
- DMARC 可先用
p=none收集報告,待穩定後改為 quarantine/reject - DKIM 的 public key 放在 DNS TXT,private key 由 mail server 簽章
二、Postfix 的 SNI 設定觀念:Inbound vs Outbound
SNI(Server Name Indication)是 TLS 中的重要機制,
讓伺服器可依照 不同的收件網域(或主機名) 提供對應的憑證。
在 Postfix 中,這可用於 多網域郵件服務 或 多租戶環境。
1️⃣ Inbound SNI(收信端):
當外部郵件伺服器連入時,會以收件人網域 (RCPT TO: user@domain.com) 為依據。
若 Postfix 啟用 SNI,則可針對不同的收件網域提供不同的 TLS 憑證。
📂 設定範例:
smtpd_tls_server_sni_maps = hash:/etc/postfix/sni_in_map
mail.domain1.com /etc/ssl/domain1.pem
mail.domain2.com /etc/ssl/domain2.pem
✅ 適用場景:
- 你管理多個 domain(domain1.com、domain2.com)
- 希望每個網域使用對應的證書(提升信任度)
⚠️ 注意事項:
- 收信時通常由 MX 指向單一主機,因此 inbound SNI 的實際使用率不高,
除非你同時收多網域郵件,且每個網域需對外展示不同憑證。
2️⃣ Outbound SNI(寄信端):
當 Postfix 對外寄信時,若要依「寄件網域」使用不同的憑證與來源信箱,
可以設定 smtp_tls_policy_maps 或 smtp_tls_sni_maps。
📂 設定範例:
smtp_tls_sni_maps = hash:/etc/postfix/sni_out_map
example.com /etc/ssl/example.pem
other.com /etc/ssl/other.pem
✅ 適用場景:
- 多租戶寄信,每個寄件網域需要對外展示不同的身份
- 每個 domain 都有自己的 DKIM 與憑證
- 可避免被收信方視為「憑證與寄件域不符」的可疑郵件
⚖️ 使用取捨:
- 若僅單一 domain → 不需使用 outbound SNI
- 若提供多品牌寄信 → 建議啟用 outbound SNI
三、Dovecot 與 SNI 的應用
Dovecot 提供 IMAP / POP3 服務,也支援 SNI,
可以根據連線的主機名(例如 mail.domain1.com vs mail.domain2.com)
自動載入不同的 SSL 憑證。
📂 設定範例:
local_name mail.domain1.com {
ssl_cert = </etc/ssl/domain1.pem
ssl_key = </etc/ssl/domain1.key
}
local_name mail.domain2.com {
ssl_cert = </etc/ssl/domain2.pem
ssl_key = </etc/ssl/domain2.key
}
✅ 適用場景:
- 多網域收信服務(不同品牌或部門)
- 使用 Let’s Encrypt wildcard 憑證時仍可靈活設定
四、整合建議:DNS 與 SNI 的實務配套
| 需求 | DNS 設定 | SNI 使用建議 | 備註 |
|---|---|---|---|
| 單一企業網域 | 單一 MX, SPF, DKIM, DMARC | 不必使用 SNI | 維護最簡單 |
| 多品牌、多網域寄信 | 每個 domain 各自 MX/SPF/DKIM | 使用 outbound SNI | 提升寄信可信度 |
| 提供代寄信服務 | 統一 MX, 多 SPF include | 使用 inbound/outbound SNI | 加強隔離性 |
| 企業內部信箱服務 | 單一 MX, wildcard 憑證 | 不使用 SNI | 維護最穩定 |
五、結語
在設計郵件系統時,DNS 設定與 SNI 架構是整體信任鏈的基石。
正確的 MX、SPF、DKIM、DMARC 組合,
搭配 Postfix / Dovecot 的 SNI 設定策略,
能讓你的郵件服務不僅安全可靠,也更具「企業信任度」。