MTA Strict Transport Security(MTA-STS ↗)は、Microsoft、Google、Yahoo などのメールサービスプロバイダーが導入した仕組みです。SMTP セッションでのダウングレード攻撃や中間者攻撃を防ぎます。メールにセキュリティ優先の通信標準が不足していた問題も解消します。
example.com が対象のドメインで、Email Service を使っているとします。次の手順で MTA-STS を有効にできます。
-
Cloudflare ダッシュボードで、Records ページを開きます。
Records を開く ↗ -
名前が
_mta-stsで、Cloudflare のレコード_mta-sts.mx.cloudflare.netを指す新しい CNAME レコードを作成します。プロキシモードは無効にしてください。
-
レコードが作成されたことを確認します。
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 を使うメールサーバーを定義します。ここで DNS ではなく HTTPS を使う理由は、まだ DNSSEC を使っていない環境があるためです。中間者攻撃の経路を増やさないようにします。
そのため、メールクライアントが "well-known" URI の慣例で Cloudflare の Email Service ポリシーファイルを取得できる Worker をデプロイします。
-
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 などのサービスプロバイダーへメールを転送するときのセキュリティが大きく向上します。
- メール認証 — SPF、DKIM、DMARC のリファレンス。
- Postmaster — ポストマスター向けの TLS、ARC、SMTP の詳細。
- ドメイン設定 — ドメインの DNS レコードを確認します。