AWS を使用して複数のドメイン向けに動的な MTA-STS ポリシーをホストする方法
このガイドは、MTA-STS(Mail Transfer Agent Strict Transport Security)の設定を検討しており、すでにAWS(Amazon Web Services)を技術スタックの一部として利用している方を対象としています。
これを実現するために、以下のAWSアプリケーションを使用します:
- ラムダ
- APIゲートウェイ
- 証明書マネージャー
- 53号線
注:このガイドでは多くのデフォルト値を使用していますが、これらはお客様の組織のセキュリティ体制や既存のAWS構成に適さない場合があります。本番環境で設定を行う際は、この点にご留意ください。
ステップ 1: Lambda 関数を作成する
まず、ポリシーサーバーとして機能する関数が必要です。Gmail や Outlook などのメールサーバーが mta-sts.example.com に接続すると、/well-known/mta-sts.txt に対して GET リクエストを送信します。
当社のLambda関数は、リクエストのHostヘッダーを確認し、どのポリシーを返すかを決定します。
- Lambdaコンソールに移動し、「関数の作成」をクリックします
- 関数に名前を付けます(例:mta-sts-handler)
- Pythonランタイム3.xを選択してください
- 「関数を作成」をクリック
- 以下のコードを貼り付け、ドメインとポリシーを適宜変更してから、「デプロイ」をクリックしてください

ステップ 2:ドメインの証明書を作成する
次のステップは、ドメイン証明書を作成することです。ここで申請するのはサブドメイン「mta-sts」の証明書である点に留意してください。このガイドでは、mta-sts.example.com および mta-sts.example.org を使用しています。
これらの証明書により、HTTPS経由でGETリクエストを送信できるようになります。
- 「証明書マネージャー」コンソールに移動し、「リクエスト」をクリックします。
- 「公開証明書をリクエスト」を選択し、「次へ」をクリックします。
- 完全修飾ドメイン名「mta-sts.example.com」を入力してください。このガイドでは、検証方法として「DNS 検証」を選択し、「リクエスト」をクリックします。
- 提供されたCNAME名とCNAME値を使用して、DNSにCNAMEレコードを作成してください。
証明書のステータスが「検証待ち」から「Amazon発行済み」に変わるはずです。これで、各ドメインについて手順1から4を繰り返すことができます。

ステップ3:APIを作成する
次に、このLambda関数をインターネットからアクセスできるようにする必要があります。
- API Gatewayコンソールに移動し、「API を作成」をクリックします
- HTTP APIの「ビルド」をクリックしてください
- APIに名前を付けます(例:mta-sts-handler)
- 「統合を追加」をクリックし、「Lambda」を選択してから、使用するLambda関数を選択し、「次へ」をクリックします

- 以下の属性で「ルートを追加」をクリックし、「次へ」をクリックします:
- メソッド:GET
- リソースパス: /.well-known/mta-sts.txt
- 対象: mta-sts-handler
- 芸名を「$default」のままにして、「次へ」をクリックしてください
- 確認して「作成」をクリックしてください
ステップ4:APIにドメイン名を割り当てる
それでは、API Gatewayでカスタムドメイン名を作成し、ステップ2で作成した証明書を割り当て、そのドメイン名をステップ3で作成したAPIに紐付けます。
- API Gateway メニューの「カスタムドメイン名」に移動し、「ドメイン名の追加」を選択します。
- ドメイン名(例:mta-sts.example.com)を入力し、セキュリティポリシーを「TLS 1.2」に設定し、ACM証明書として ステップ2で作成した該当する証明書を選択します。 「ドメイン名を追加」をクリックします。
- カスタムドメインの概要ページが表示されます。ページの下部にある「APIマッピングを設定」をクリックしてください。
- 「以下の属性で新しいマッピングを追加」をクリックし、次に「保存」をクリックします。
- API: mta-sts-handler
- ステージ: $default
- パス:**空欄のままにしてください
- 所有している各ドメインについて、この手順を繰り返してください。
ステップ 5: DNS を設定する
あとは、ドメインをAPI Gatewayのドメイン名に設定するだけです。この設定にはAWS Route 53を使用します。
- Route 53コンソールにアクセスし、「ホスト型ゾーン」を選択して、ドメインを選びます。
- 「レコードを作成」をクリック
- 以下の値を設定してください:
- レコード名:mta-sts
- レコードタイプ:A
- 別名:確認
- トラフィックを次の宛先に転送する:
- API Gateway APIへのエイリアス、
ご利用のリージョン、
API Gatewayのドメイン名
- API Gateway APIへのエイリアス、
- 「レコードを作成」をクリック

ポリシーファイルが有効であることを確認してください
すべての手順が完了したので、すべてが想定通りに動作しているか確認する必要があります。確認方法は2つあります。
最初の選択肢は、当社の「TLS & MTA-STS Inspector」を利用することです。これにより、ポリシーファイルが正しく配信されていることを確認できるだけでなく、TLSおよびMTA-STSレコードが有効であるかどうかもチェックされます。「TLS & MTA-STS Inspector」は、当社のDMARC管理プラットフォームを通じて、サブスクリプションまたは無料トライアルでのみご利用いただけます。

あるいは、ブラウザにURLを入力することもできます。正常に動作していれば、以下のように、ブラウザからセキュリティ警告が表示されることなく、ポリシーファイルが表示されます:

dmarcianが
をどのように支援できるかメールセキュリティの専門家チームを擁し、「メールとインターネットをより信頼できるものにする」という使命を掲げるdmarcianは、組織のドメインカタログの評価から、長期的なメールセキュリティの導入・管理に至るまで、全面的にサポートいたします。無料トライアルにご登録いただければ、導入支援およびサポートチームが全プロセスを通じてお手伝いいたします。
さらに詳しく議論を続けたい方は、ぜひ dmarcian Forum へお越しください。