当記事では、Amazon SESのドメインIDを削除せずに一時的に無効化する方法を紹介します。
背景
SESのドメインIDを一時的に無効化したい場合、単純なON/OFF切り替え機能は提供されていません。
AWSサポートに問い合わせたところ、代替案として送信承認ポリシーを使用して、
一時的にメール送信を拒否する設定を追加することで実現できることが分かりました。
実装手順
1. SESコンソールでドメインIDを選択
AWSマネジメントコンソールからSESにアクセスし、左側のメニューから「ID」を選択します。
ID一覧から、IDタイプが「ドメイン」のものを選択します。
(ここでは、ドメインがxxxxxxxxxxx.clickのもので検証)
2. 承認タブからカスタムポリシーを作成
選択したドメインの詳細画面で「承認」タブをクリックします。
今回は、「カスタムポリシーの作成」をクリックします。
3. 送信拒否ポリシーを適用
以下のJSONポリシーを入力し、「ポリシーの適用」ボタンをクリックして保存します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyAllSending",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "arn:aws:ses:<リージョン名>:<AWSアカウントID>:identity/<ドメイン名>"
}
]
}
注意点:
- ポリシー名は任意の名前を設定できます
-
<リージョン名>
、<AWSアカウントID>
、<ドメイン名>
は実際の値に置き換えてください
動作確認
テストメールの送信
設定が正しく適用されたか確認するため、「テストメールの送信」ボタンをクリックします。
テストメールを送信しようとします。
すると、権限エラーでメール送信が拒否されることを確認できます。
無効化の解除
メール送信を再度有効にする場合は、作成した送信承認ポリシーを削除するだけで、通常通りメール送信が可能になります。
IaCでの対応状況
2025年7月現在、CloudFormationおよびCDKでは送信承認ポリシーの設定は未対応です。
この機能に関してはAWSサポートにも要望が寄せられているとのことです。
関連するGitHub Issue:
aws-cloudformation/cloudformation-coverage-roadmap#1576
参考資料
まとめ
SESドメインIDの一時的な無効化は、送信承認ポリシーを活用することで実現できます。
この方法により、ドメインIDを削除することなく、必要に応じてメール送信機能を制御できます。
テスト環境での誤送信防止や、一時的な送信停止が必要な場合に有効な手段となるのではないでしょうか。