
SESで承認したドメインのサブドメインを送信元アドレスとしてメールを送信してみる
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX事業本部の若槻です。
以前投稿した次の記事でSESで承認したドメインを送信元としてメールを送信できるようにしました。
今回は、上記対応をしたドメインのサブドメインからメールが送信できるのかAWS CLIで確認してみました。
確認してみた
まず、確認に使用する「SESで承認されたドメイン名」と「送信先メールアドレス」を指定します。
% verifiedDomain=<SESで承認されたドメイン名>
% toAddress=<送信先メールアドレス>
次に、ses get-identity-verification-attributesコマンドにより、ドメインがSES上で承認されていることを念のため確認します。
% aws ses get-identity-verification-attributes \
  --identities ${verifiedDomain}
{
    "VerificationAttributes": {
        "<SESで承認されたドメイン名>": {
            "VerificationStatus": "Success",
            "VerificationToken": "XXXXXXXXXXXXXXX="
        }
    }
}
実行結果で"VerificationStatus": "Success"とあるため、ドメインはきちんと承認されていることを確認できました。
それでは、ses send-emailコマンドにより、サブドメインtest@sub.<SESで承認されたドメイン名>を送信元アドレスとしてSESからメールを送信してみます。
% aws ses send-email \
  --from test@sub.${verifiedDomain} \
  --to ${toAddress} \
  --subject subject \
  --text body
{
    "MessageId": "xxxxxxxxxxxxxxx-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx-xxxxxxx"
}
サブドメインが送信元のメールが届きました。

結論として、SESで承認したドメインのサブドメインを送信元としてメールを送信することができました。
エラーとなったパターン
ses send-emailコマンドによるメール送信で次のようなパターンではエラーとなりました。
--textを空文字列としたら、値はnullできないためエラーとなりました。また--textオプションを付けない場合も同じエラーとなりました。何かしらbodyを指定する必要があるようです。
% aws ses send-email \
  --from test@sub.${verifiedDomain} \
  --to ${toAddress} \
  --subject subject \
  --text ''
An error occurred (ValidationError) when calling the SendEmail operation: 1 validation error detected: Value null at 'message.body' failed to satisfy constraint: Member must not be null
- 当然ですが、SESで未承認のドメインのアドレスを送信元とした場合もエラーとなりました。
 
% aws ses send-email \
  --from test@example.com \
  --to ${toAddress} \
  --subject subject \
  --text body
An error occurred (MessageRejected) when calling the SendEmail operation: Email address is not verified. The following identities failed the check in region AP-NORTHEAST-1: test@example.com
おわりに
SESで承認したドメインのサブドメインを送信元アドレスとしてメールを送信してみました。
上位ドメインを一つSESで承認しておけば、環境や用途ごとに異なるサブドメインをメール送信に使えるのは便利ですね。
参考
- send-email | aws . ses
 - get-identity-verification-attributes | aws . ses
 - AWS CLIを利用してAmazon SESの設定をやってみた – メール送信編 | Developers.IO
 - ドメインのRoute 53での取得、SESでの承認、SESでのメール送信上限の緩和およびSandbox制限の解除をしてみた | Developers.IO
 
以上






