【Amazon SES】メールが届かない！suppression listから削除する

<!-- wp:heading -->
<h2>はじめに</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>　Amazon SESでメールを送信してもメールが届かないケースの中で送信先のメールアドレスが<span class="marker">suppression list</span>に登録されている場合がある。<br>　その場合は<span class="marker">suppression list</span>から削除する必要があるので、そのやり方について紹介します。</p>
<!-- /wp:paragraph -->

この記事は[ブログ](https://www.unagino-nedoko.com/aws/suppresion-list)でも公開しています。

<!-- wp:heading -->
<h2>suppression List</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>　suppression listとはメールが到達できないアドレスに何度も送信しないようにするためのリストです。SESは送信時にsuppression listを見て送信先のメールアドレスが存在すればバウンスとして処理をしてメールの送信は行いません。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>　そのsupression listにも<span class="marker">global suppresion list</span> と <span class="marker">account-level suppression list</span> の２種類があります。<br>２種類ともリストから削除の仕方も違うのでそれぞれ説明をしていきます。</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>global suppression list </h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>　<span class="marker-under">global suppression list はハードバウンスが起こると登録されるようです。</span>ハードバウンスとはメールアドレスが存在しないなど恒久的にメールが送信できない状況です。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>　一定期間リストに登録されると自動的に削除されますが、もう一度ハードバウンスになると前回よりも長期間リストに登録されることになります。（最大で１４日間残ることになります。）</p>
<!-- /wp:paragraph -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><p>Amazon SES のユーザーから送信された E メールがハードバウンスを起こすと、Amazon SES はバウンスを起こした E メールアドレスをグローバルサプレッションリストに追加します。</p><cite>https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/sending-email-global-suppression-list.html</cite></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>　リスト に登録されるとAmazon SESを利用している全てのユーザーに適用されてメール送信できなくなります。</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>global suppression listから削除する</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>　gloval suppression list から対象のメールアドレスを削除は、コンソールからしかできません。<br>削除できるリージョンも決まっていて、<span class="marker-under">米国東部 (バージニア北部)、米国西部 (オレゴン)、またはヨーロッパ (アイルランド)</span>のいずれかとなります。（どのリージョンから削除しても問題はありません）</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><a href="https://us-west-2.console.aws.amazon.com/ses/home?region=us-west-2#suppressionlist-removal:">https://us-west-2.console.aws.amazon.com/ses/home?region=us-west-2#suppressionlist-removal:</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>　<span class="marker">Email Address</span> と画面に表示されている文字列を <span class="marker">Type characters</span>に入力して<span class="marker">Submit</span>をするとリストから削除されます。</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":111,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://www.unagino-nedoko.com/wp-content/uploads/2021/07/image-1.png" alt="" class="wp-image-111"/></figure>
<!-- /wp:image -->

<!-- wp:heading -->
<h2>account-level suppression list</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>　AWSアカウントに適用されるsuppression listでハードバウンスやメールが苦情として処理された場合に適用されて次回以降にメールが送信されないようにします。<br>　globalは追加などできないですが、account-levelは追加・削除をすることができます。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>　2019年11月25日以降にAmazonSESを使用した場合は自動で適用されますが、それより以前から利用している場合は、Amazon SES APIの<span class="marker">PutAccountSuppressionAttributes</span>で有効にする必要があります。</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>account-level suppresion list を有効にする</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>　AWS CLIを利用すると以下のコマンドで有効にすることができます。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>aws sesv2 put-account-suppression-attributes \
--suppressed-reasons BOUNCE COMPLAINT</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p><span class="marker">suppressed-reasons</span> パラメータには、<span class="marker">BOUNCE</span> か <span class="marker">COMPLAINT</span> もしくは両方を設定する必要があります。</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>account-level suppresion list に追加する</h3>
<!-- /wp:heading -->

<!-- wp:code -->
<pre class="wp-block-code"><code>aws sesv2 put-suppressed-destination \
--email-address recipient@example.com \
--reason BOUNCE</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p><span class="marker-blue"><span class="marker">recipient@example.com</span></span> を <span class="marker-blue"><span class="marker">BOUNCE</span></span> の理由で追加します。</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>account-level suppresion list の一覧を取得する</h3>
<!-- /wp:heading -->

<!-- wp:code -->
<pre class="wp-block-code"><code>aws sesv2 list-suppressed-destinations</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>コマンドを実行すると以下のような結果が返ってきます。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>{
    "SuppressedDestinationSummaries": &#91;
        {
            "EmailAddress": "recipient2@example.com",
            "Reason": "COMPLAINT",
            "LastUpdateTime": 1586552585.077
        },
        {
            "EmailAddress": "recipient0@example.com",
            "Reason": "COMPLAINT",
            "LastUpdateTime": 1586552666.613
        },
        {
            "EmailAddress": "recipient1@example.com",
            "Reason": "BOUNCE",
            "LastUpdateTime": 1586556479.141
        }
    ]
}</code></pre>
<!-- /wp:code -->

<!-- wp:heading {"level":3} -->
<h3>account-level suppresion list から削除する</h3>
<!-- /wp:heading -->

<!-- wp:code -->
<pre class="wp-block-code"><code>aws sesv2 delete-suppressed-destination \
--email-address recipient@example.com</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p><span class="marker-blue"><span class="marker">recipient@example.com</span></span> に対象となるメールアドレスを指定して実行するとリストから削除されます。</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>最後に</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>　Amazon SESを利用しているとメールが届かないというケースが出てきてきます。その場合はsuppresion listを確認してみるのも対応の一つです。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>　同じようなことで悩まれている人の参考になればと思います。</p>
<!-- /wp:paragraph -->