# ============================================================================
# MTA-STS 模板（入站 TLS 强制）
#
# 它由**两条**记录组成，缺一个都不生效：
#   ① DNS：_mta-sts.<域>  TXT   v=STSv1; id=<版本号>
#   ② HTTPS：https://mta-sts.<域>/.well-known/mta-sts.txt
#
# 作用：告诉外面「发给我的信必须走 TLS，而且证书必须匹配这些 MX」。
# 与出站送达率无关 —— 它保护的是**别人发给你的信**。
# ============================================================================


# ============================================================================
# ① DNS 记录
# ============================================================================

# 记录名：_mta-sts.your.com
# 类型：  TXT
# 值：
_mta-sts.your.com. 300 IN TXT "v=STSv1; id=20261101T000000"

# id 的作用：接收方用它判断「策略内容有没有变」，变了才会重新去取 HTTPS 文件。
#            所以**每次改 mta-sts.txt 的内容，id 必须跟着变**（用时间戳最省事）。
#            只改 HTTPS 文件而不改 id = 你的修改永远不会生效，而且没有任何报错。


# ============================================================================
# ② HTTPS 策略文件
#    URL 必须是 https://mta-sts.your.com/.well-known/mta-sts.txt
#    证书必须是 mta-sts.your.com 这个**子域**的有效证书（不能借主域的）
# ============================================================================

version: STSv1
mode: testing
mx: mx1.your.com
mx: mx2.your.com
max_age: 604800

# ---- 逐行说明 ----
#
# version  固定 STSv1
#
# mode     testing   → 只报告，不阻断。**必须从这里起步**
#          enforce   → 真正执行：不发 TLS 或证书不匹配就拒收
#          none      → 关闭（保留记录但停用）
#
# mx       **必须列出全部 MX 主机，一台不漏。**
#          漏一台 → 发给那台的邮件走不了 TLS → 你的「加强安全」变成「丢信」。
#          用 max_age 之外唯一的核对方法：
#            dig +short MX your.com
#          把输出逐条搬过来，去掉末尾的点，**保留优先级之外的完整主机名**。
#
# max_age  接收方缓存这份策略多久（秒）。604800 = 7 天。
#          第一次上线用 86400（1 天），确认没问题之后再拉长。
#          它同时决定了「你发现问题后要等多久才能撤掉错配置」。


# ============================================================================
# 上线顺序（顺序错了就是丢信）
# ============================================================================
#
# 1. 先确认 mta-sts.your.com 能解析、证书能签、HTTPS 能访问
#      dig +short mta-sts.your.com
#      curl -sI https://mta-sts.your.com/.well-known/mta-sts.txt
#
# 2. 发 DNS TXT 记录（此时还没有 HTTPS 文件也没关系，接收方取不到就跳过）
#
# 3. 发 HTTPS 文件，mode: testing，max_age: 86400
#
# 4. 观察 7 天，看 TLS-RPT 报告里有没有 failure
#      （TLS-RPT 记录：_smtp._tls.your.com  TXT  "v=TLSRPTv1; rua=mailto:tlsrpt@your.com"）
#
# 5. 没有 failure 才切 mode: enforce，同时把 id 改掉
#
# 6. 稳定运行 30 天后再把 max_age 拉长


# ============================================================================
# ❌ 常见错误
# ============================================================================
#
# ❌ mx: 只写了一台（或者用了 CNAME 目标名而不是 MX 主机名）
#    → 发往其他 MX 的邮件开始失败，而且是**入站**失败，你的送达率工具看不到
#
# ❌ 改了 mta-sts.txt 但没改 DNS 里的 id
#    → 改动永远不生效，你会以为是接收方不支持
#
# ❌ 直接 mode: enforce + max_age: 31557600（一年）
#    → 配错之后一年内撤不干净。max_age 是你给自己留的逃生窗口
#
# ❌ 把 .well-known/mta-sts.txt 放在主域的网站根目录
#    → URL 必须是 mta-sts.<域> 这个子域，不是 your.com
#
# ❌ HTTPS 文件返回 302 跳转
#    → RFC 8461 要求 200 且不能跳转，跳转会被判为策略无效


# ============================================================================
# 该不该上
# ============================================================================
#
# 该上：你有固定的 MX 列表、能签 mta-sts 子域的证书、有地方收 TLS-RPT 报告。
# 不该上：你还在频繁换邮件服务商（MX 变一次就丢一次信）、或者只有一台 MX 且随时会换。
#
# 它是加分项，不是强制项。SPF / DKIM / DMARC / PTR 四项齐全之前，
# 不要先做这个 —— 那四项才决定「你的信能不能发出去」。
