MTA Strict Transport Security(MTA-STS ↗)由 Microsoft、Google 和 Yahoo 等电子邮件服务提供商引入,用于防范 SMTP 会话中的降级和中间人攻击,并解决电子邮件领域缺乏以安全为先的通信标准的问题。
假设 example.com 是你的域名并使用 Email Service。以下介绍如何为其启用 MTA-STS。
-
在 Cloudflare 仪表板中,前往 Records(记录) 页面。
Go to Records ↗ -
创建一条新的 CNAME 记录,名称为
_mta-sts,指向 Cloudflare 的记录_mta-sts.mx.cloudflare.net。请确保禁用代理模式。
-
确认记录已创建:
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 策略文件。
-
将 MTA-STS 代理 Worker 部署到你的账户:
此 Worker 会将
https://mta-sts.mx.cloudflare.net/.well-known/mta-sts.txt代理到你自己的域名。 -
部署后,前往 Worker 配置,然后 Settings(设置) > Domains & Routes(域和路由) > +Add(添加)。输入子域
mta-sts.example.com。
然后你可以用以下命令确认策略文件是否正常工作:
curl https://mta-sts.example.com/.well-known/mta-sts.txtversion: STSv1 mode: enforce mx: *.mx.cloudflare.net max_age: 86400这表明你的域名
example.com强制执行 MTA-STS。具备能力的电子邮件客户端将仅通过到指定 MX 服务器的安全连接向此域投递邮件。如果无法建立安全连接,邮件将不会被投递。
Email Service 还支持上游 MTA-STS,在将邮件转发到 Gmail、Microsoft 等服务提供商时,可大幅提高安全性。
- Email authentication — SPF、DKIM 和 DMARC 参考。
- Postmaster — 面向 postmaster 的 TLS、ARC 和 SMTP 详情。
- Domain configuration — 查看你域的 DNS 记录。