Skip to content

Nuface Blog

隨意隨手記 Casual Notes

Menu
  • Home
  • About
  • Services
  • Blog
  • Contact
  • Privacy Policy
  • Login
Menu

MTA-STS:SMTP 加密強制政策

Posted on 2025-12-032025-12-03 by Rico

📌 前言

電子郵件在傳輸過程中,本質上是明文的。如果中間遭遇 DNS 欺騙、降級攻擊(downgrade attack)或中間人攻擊(MITM),郵件的內容和憑證就可能被攔截或竄改。為提升郵件安全性,Google、Microsoft、Yahoo 等大型郵件供應商提出 MTA-STS(Mail Transfer Agent – Strict Transport Security)標準。

MTA-STS 的目的很簡單:

👉 強制所有寄件伺服器使用 TLS 加密,並驗證憑證,否則拒絕投遞。


🔐 什麼是 MTA-STS?

MTA-STS 是一種針對 SMTP 的安全強化機制,允許網域擁有者發布政策,要求其他郵件伺服器:

  1. 必須使用 TLS 進行加密傳輸
  2. TLS 必須成功驗證憑證(不得使用自簽、不合法、過期憑證)
  3. 不得降級成明文 SMTP

如果寄件端無法建立安全連線,郵件就會被暫存或退回,而不是以明文方式傳輸。


🧩 MTA-STS 的四大組成

1️⃣ DNS TXT 記錄

宣告你的網域啟用 STS 服務:

_mta-sts.example.com. TXT "v=STSv1; id=20250101"

id 代表版本,只要政策更新就需要調整。


2️⃣ HTTPS 端點(固定 URL)

寄件方會透過 HTTPS 下載你的 STS 政策:

https://mta-sts.example.com/.well-known/mta-sts.txt

要求:

  • 必須是 HTTPS
  • 必須使用公開 CA 憑證(不能用自簽)
  • 必須可從外部公開存取

3️⃣ MTA-STS 政策檔案(Policy File)

範例:

version: STSv1
mode: enforce
mx: mail.example.com
mx: mx-backup.example.com
max_age: 604800

政策參數:

參數意義
version固定 STSv1
modetesting / enforce / none
mx允許接收郵件的 MX 主機
max_age快取時間(秒)

4️⃣ 寄件端 MTA 快取

寄件 MTA 會將 STS 政策存放在快取中,以避免 DNS 遭攔截。


🔄 MTA-STS 的運作流程

  1. 寄件 MTA 查詢 _mta-sts.example.com TXT
  2. 下載 HTTPS 政策檔
  3. 檢查 MX 是否符合
  4. 強制使用 TLS 建立加密連線
  5. 驗證憑證是否有效
  6. 成功後投遞郵件,並快取政策內容

如果 TLS 協商、憑證驗證或 MX 不符 → 郵件會延遲投遞或直接拒收(依模式而定)。


🆚 MTA-STS 與 TLS-RPT、DANE 比較

技術功能優點缺點
MTA-STS強制 TLS、驗證憑證無需 DNSSEC,主流支援度最高需 HTTPS 網站
TLS-RPT回報 TLS 錯誤可監控政策是否生效需處理報告信件
DANE使用 DNSSEC 驗證憑證抗 MITM 無敵DNSSEC 部署困難

企業最常見組合:
👉 MTA-STS(enforce) + TLS-RPT


🏗 如何部署 MTA-STS(快速版)

1️⃣ 建立 DNS TXT

_mta-sts.example.com. TXT "v=STSv1; id=20250101"

2️⃣ 建立 HTTPS 站點

目錄:

/var/www/mta-sts/.well-known/mta-sts.txt

3️⃣ 寫入政策檔

version: STSv1
mode: enforce
mx: mail.example.com
max_age: 604800

4️⃣ MX 必須使用有效 TLS 憑證

  • 正式 CA
  • SAN 必須包含 MX 主機名稱
  • 支援 TLS 1.2 / 1.3

5️⃣(建議)設定 TLS-RPT

_smtp._tls.example.com. TXT "v=TLSRPTv1; rua=mailto:tls-rpt@example.com"

⚠ 常見問題

❌ 憑證 CN 與 MX 不匹配

→ 寄件端會拒收

❌ 使用自簽憑證

→ 直接拒收

❌ mode=testing 無法強制 TLS

→ 只會收到錯誤報告

❌ 忘記更新 id

→ 寄件端不會重新抓政策


🎯 結論

MTA-STS 是現代郵件系統不可或缺的安全機制。它部署簡單、無需 DNSSEC,卻能大幅提升郵件傳輸安全性。若你正在部署 Postfix、Dovecot 或自行管理企業郵件系統,務必啟用 MTA-STS + TLS-RPT,以確保郵件安全與信任度。

Recent Posts

  • Postfix + Let’s Encrypt + BIND9 + DANE Fully Automated TLSA Update Guide
  • Postfix + Let’s Encrypt + BIND9 + DANE TLSA 指紋自動更新完整教學
  • Deploying DANE in Postfix
  • 如何在 Postfix 中部署 DANE
  • DANE: DNSSEC-Based TLS Protection

Recent Comments

  1. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on High Availability Architecture, Failover, GeoDNS, Monitoring, and Email Abuse Automation (SOAR)
  2. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on MariaDB + PostfixAdmin: The Core of Virtual Domain & Mailbox Management
  3. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Daily Operations, Monitoring, and Performance Tuning for an Enterprise Mail System
  4. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Final Chapter: Complete Troubleshooting Guide & Frequently Asked Questions (FAQ)
  5. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Network Architecture, DNS Configuration, TLS Design, and Postfix/Dovecot SNI Explained

Archives

  • December 2025
  • November 2025
  • October 2025

Categories

  • AI
  • Apache
  • Cybersecurity
  • Database
  • DNS
  • Docker
  • Fail2Ban
  • FileSystem
  • Firewall
  • Linux
  • LLM
  • Mail
  • N8N
  • OpenLdap
  • OPNsense
  • PHP
  • QoS
  • Samba
  • Switch
  • Virtualization
  • VPN
  • WordPress
© 2025 Nuface Blog | Powered by Superbs Personal Blog theme