跳转到内容
搜索文档

配置 MTA-STS

最后更新 查看 MarkdownAgent 设置

MTA Strict Transport Security(MTA-STS)由 Microsoft、Google 和 Yahoo 等电子邮件服务提供商引入,用于防范 SMTP 会话中的降级和中间人攻击,并解决电子邮件领域缺乏以安全为先的通信标准的问题。

假设 example.com 是你的域名并使用 Email Service。以下介绍如何为其启用 MTA-STS。

添加 _mta-sts DNS 记录

  1. 在 Cloudflare 仪表板中,前往 Records(记录) 页面。

    Go to Records ↗
  2. 创建一条新的 CNAME 记录,名称为 _mta-sts,指向 Cloudflare 的记录 _mta-sts.mx.cloudflare.net。请确保禁用代理模式。

    MTA-STS CNAME 记录
  3. 确认记录已创建:

    dig txt _mta-sts.example.com
    _mta-sts.example.com. 300 IN  CNAME _mta-sts.mx.cloudflare.net.
    _mta-sts.mx.cloudflare.net. 300 IN  TXT "v=STSv1; id=20230615T153000;"

    这会告知尝试连接我们的对端客户端:我们支持 MTA-STS。

提供策略文件

接下来,你需要在 mta-sts.example.com 上提供一个 HTTPS 端点来提供策略文件。此文件定义域中使用 MTA-STS 的邮件服务器。此处使用 HTTPS 而非 DNS 的原因是,并非所有人都已使用 DNSSEC,因此我们希望避免另一个中间人攻击向量。

为此,你需要部署一个 Worker,使电子邮件客户端能够使用 "well-known" URI 约定拉取 Cloudflare 的 Email Service 策略文件。

  1. 将 MTA-STS 代理 Worker 部署到你的账户:

    Deploy to Cloudflare

    此 Worker 会将 https://mta-sts.mx.cloudflare.net/.well-known/mta-sts.txt 代理到你自己的域名。

  2. 部署后,前往 Worker 配置,然后 Settings(设置) > Domains & Routes(域和路由) > +Add(添加)。输入子域 mta-sts.example.com

    MTA-STS Worker 自定义域名

    然后你可以用以下命令确认策略文件是否正常工作:

    curl https://mta-sts.example.com/.well-known/mta-sts.txt
    version: STSv1
    mode: enforce
    mx: *.mx.cloudflare.net
    max_age: 86400

    这表明你的域名 example.com 强制执行 MTA-STS。具备能力的电子邮件客户端将仅通过到指定 MX 服务器的安全连接向此域投递邮件。如果无法建立安全连接,邮件将不会被投递。

Email Service 还支持上游 MTA-STS,在将邮件转发到 Gmail、Microsoft 等服务提供商时,可大幅提高安全性。

后续步骤

这篇文档对您有帮助吗?