Amazon SESでエイリアスアドレス宛のメールを受信してS3に配信する

特別な設定が必要なわけではありませんが、当たり前過ぎるのか SES でエイリアスアドレスも受信"出来る"という情報や中身が見当たらなかったので遺しておきます。

# 結論

>Also matches variations of the address that contain labels (such as *user+123@example.com* and *user+xyz@example.com*).
>
>[Creating receipt rules console walkthrough - Amazon Simple Email Service](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-receipt-rules-console-walkthrough.html#receipt-rules-create-rule-settings) より

エイリアス付きのアドレスにも送れます。
また、受け取った MIME 形式のメールや受信メールイベントの To に、エイリアス付きのアドレスが記録されます。

# 検証

## 構成図

![ses-receive-mail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/91dcbafd-7bcd-6705-419a-39afb6eee948.png)

## 前提

- 受信用のドメインは Route 53 の NS を有効なホストゾーンとして設定している
- 受信用のドメインで SES の検証済みIDを作成し、検証済みである

## 設定

S3 バケットは受信ルールの作成時に作成します。

### MXレコードの設定

[Email receiving](https://docs.aws.amazon.com/ses/latest/dg/regions.html#region-receive-email) に記載の通り、Route 53 にて以下の受信エンドポイントを MX レコードとして登録します。

| Region Name          | Region         | Email Receiving Endpoint                  |
| -------------------- | -------------- | ----------------------------------------- |
| Asia Pacific (Tokyo) | ap-northeast-1 | inbound-smtp.ap-northeast-1.amazonaws.com |

![2024-02-15_20h53_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/e636c65a-39a2-1082-e0b2-4a49e972360b.png)

### 受信ルールの作成

SES コンソールの E メール受信を開きます。

![2024-02-15_21h11_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/9928396a-8114-4d4c-bf40-f3c005e88f0f.png)

まずは任意の名前でルールセットを作成します。

![2024-02-15_21h13_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/a42f8e4b-6ef8-d84e-cecd-86f58098db03.png)

次にルールの作成を行います。

![2024-02-15_21h13_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/4308dd6b-746a-7ff5-dac0-ae3927f3454c.png)

任意のルール名を指定します。

![2024-02-15_21h16_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/1b66a658-bb63-0781-04bc-41ccb98c82a9.png)

ガイドラインや[ドキュメント](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-receipt-rules-console-walkthrough.html#receipt-rules-create-rule-settings)を参考に受信者の条件を指定します。
※何れの指定でもエイリアスアドレスは受信可能です。

今回は特定のE メールアドレス`mail@example.com`と一致させる条件で設定します。

![2024-02-15_21h17_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/6d2b18c7-b5d8-4425-0059-c87961999f86.png)

アクションは S3 バケットへの配信 を選択します。

![2024-02-15_21h47_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/66309f78-96b5-1f99-2fd7-2bb98a0f52a4.png)

S3 バケットの作成をします。
※既存バケットも指定できますが、バケットポリシーの設定が別途必要です。

![2024-02-15_21h18_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/b484c70b-518a-81ed-dacb-b3c29cb726f9.png)

自動作成されたバケットには、検証用のオブジェクトが作成され、バケットポリシーが設定されます。

![2024-02-15_21h58_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/4f4f17b3-6ec6-a87d-eec8-17c503852841.png)

```json:バケットポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowSESPuts-1701234464477",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::ses-receive-mail-123456789012/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "123456789012"
                },
                "StringLike": {
                    "AWS:SourceArn": "arn:aws:ses:*"
                }
            }
        }
    ]
}
```

最後にルールセットを有効として設定します。

![2024-02-15_21h20_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/e09d023e-b4b7-7480-cdfe-1899a04bc13a.png)

![2024-02-15_21h20_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/2abd5fae-4c7f-78f6-eda7-bca74fb76a71.png)

## メール送信

受信者の条件として指定したアドレス`mail@example.com`にエイリアスを付けたアドレス`mail+hogefuga-alias@example.com`へ宛てたメールを送信します。

![2024-02-15_22h11_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/6aa7ea36-155e-f88b-1808-846b92685925.png)

バケットに MIME 形式のメールのオブジェクトが登録されています。

![2024-02-15_22h15_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/28cdbf5f-14a3-abec-1ba9-85eca545cf43.png)

ファイルの中を確認すると、宛先に指定したエイリアス付きのアドレスが To に記録されていました。

```MIME:gekvq8nmp1n8nl2gvlrm0fvm5n67qnji9h9s5v01
Return-Path: <hogefuga@gmail.com>
Received: from mail-oa1-f53.google.com (mail-oa1-f53.google.com [209.85.160.53])
 by inbound-smtp.ap-northeast-1.amazonaws.com with SMTP id gekvq8nmp1n8nl2gvlrm0fvm5n67qnji9h9s5v01
 for mail+hogefuga-alias@example.com;
 Thu, 15 Feb 2024 13:14:08 +0000 (UTC)
X-SES-Spam-Verdict: PASS
X-SES-Virus-Verdict: PASS
Received-SPF: pass (spfCheck: domain of _spf.google.com designates 209.85.160.53 as permitted sender) client-ip=209.85.160.53; envelope-from=hogefuga@gmail.com; helo=mail-oa1-f53.google.com;
Authentication-Results: amazonses.com;
 spf=pass (spfCheck: domain of _spf.google.com designates 209.85.160.53 as permitted sender) client-ip=209.85.160.53; envelope-from=hogefuga@gmail.com; helo=mail-oa1-f53.google.com;
 dkim=pass header.i=@gmail.com;
 dmarc=pass header.from=gmail.com;
X-SES-RECEIPT: AEFBQUFBQUFBQUFIVDRsOWZ3aGR5N3ZkUUwrKy9hVFhFSDJGdW1ISjdzVnZPNlJlREVFUkV5OU50MCtzL3U2UXZhaVRvTVdhMGQ5S0JIZ3VyYkM5Si8wR2FaMVJHeStkSGptVE93eXh0ekdKMmRzUndNZlZJSGFxcW85NnVZT2dmV2EvSEZidDErOWVUMnRCNWEyVWNpVWQ0M3ZsZmlERkE0TGdiWVc2Kyt2emlQR3gxaXRSTmV5QkczMlFiYmdsVHdWckNkcGRybWVlNWkyNGliSkhIWkF3TWpQdmtlVVVGQ1lLOW53My9WYk5lNzVQQm1jNk9FR3dQc1VzSVFRSWo0djhVazNwSkprVklBSkVQcjRWQkRnMGFXcmdiRnQxZFAvQy9sTE52ZU8yRDBsSGJhaEdVaHc9PQ==
X-SES-DKIM-SIGNATURE: a=rsa-sha256; q=dns/txt; b=mUKwpLmQ4PUuJ3tcB+IgUfxgu5pEfraJp2zVcr4ep4ZqZI7+1dzD9oE8IEbexJAiggtunUNFMh9kCGEpcdoesh2U1fldMGm77qGqwC6n38yJmSLlRrvCXNki7/e9cO13TNJv3gk2NeET8taPzR5w8bjBzdFTXpzQYq0ujsJFW0g=; c=relaxed/simple; s=zh4gjftm6etwoq6afzugpky45synznly; d=amazonses.com; t=1708003563; v=1; bh=nI50x1v7xgitw4Q592+WA/EeaOT7UZ77uVJKHzGg+D4=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-Version:Content-Type:X-SES-RECEIPT;
Received: by mail-oa1-f53.google.com with SMTP id 586e51a60fabf-214309bbbf0so109985fac.1
        for <mail+hogefuga-alias@example.com>; Thu, 15 Feb 2024 13:14:08 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1708003561; x=1708608361; darn=example.com;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=nI50x1v7xgitw4Q592+WA/EeaOT7UZ77uVJKHzGg+D4=;
        b=b/EpK9TENr7vZVyFYnN4NVXFPJr8r5WzJ5tqp0cFzaryXAxPa/7sLUBOPZT9Kq5YPK
         etpzostS/RGo3WsmZag0PrT00QjDj1dtjfYVmI6QMUIRhGFdYmolMzX4m3e32aNty6yd
         WJENlngSU97KZBqYNYEFvIGIdmv8yxpq55xVEp1VoyJuRhMcyi+HvDExbS0Ptl8f4Tf1
         222XriYZXwwRun3CkbLZtxi+hkHZFPaJwlardU2sw3aDsRHGTe/7g6LnoOQDKuVLH9hO
         gIruPI9OdVep5C026p8dOLLaoW2762/FowyEU82IEyZYDIrsDIKP+syP8qLNdf06dKCu
         1gmQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1708003561; x=1708608361;
        h=to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=nI50x1v7xgitw4Q592+WA/EeaOT7UZ77uVJKHzGg+D4=;
        b=MLn/6eP9X8Ue5yEGPk7Mbal5+UrBV9uHgiriW5UtnO4bbOi/KSyKAX3/wTVl+v4YfQ
         10yufqERiWwTBJmpd1+pooZjfmW0DMS9jD+DBc9DCsDNbUB4v26/yyz64hWkf8EFbrbg
         5TEHMDWpSk8nean0FN+mDVK1E5ZdSI1KEGzqJnnnp8kyGym0jgOjWMOBHsVE+3EtFg7s
         xsth0WhjkfWuKbBPvs/z0MpDvUer6hYVMtnXNoSkg3KG3OLKg6BcDWjet2Rt0yA3wTLs
         6eBGg1yNDA6hBl1HRiPutwRyf2Do4SHi6S1KeBYut8T6RCNeD31G+/tL+9AOiA07S443
         4GPg==
X-Gm-Message-State: AOJu0YwZ3GN/Sz4qnTvz+0RwuBy0MvAytJ0G3JDfgj7uYepr+iWspfl7
	tg2y+XJTeAdSW/8SKzL5WMB5261FRW7F7hDE/XOqNw13cLXfGy+Inqt6p5oI6TGz8pCAP5JRzgO
	GGDX1Z3vzfv2891RzNX8SJwNAsMK92KYfplo=
X-Google-Smtp-Source: AGHT+IF5lhkF0sZ2tkpf0uaqP0JpqYDMwQYgmKulOx3CGX2vAZ5qMh1MbE8Y97HgIaLQ0W9EXyfHjDp+MvklXnJ4Znc=
X-Received: by 2002:a05:6870:b4a8:b0:21a:2e89:7d87 with SMTP id
 y40-20020a056870b4a800b0021a2e897d87mr1708191oap.2.1708003561328; Thu, 15 Feb
 2024 05:13:47 -0800 (PST)
MIME-Version: 1.0
From: hogefuga <hogefuga@gmail.com>
Date: Thu, 15 Feb 2024 22:13:37 +0900
Message-ID: <CAGFI65eq-HazpQuFqTmPAYePVORe0+7_M0Jbx3Taiy8o5WgZ9A@mail.gmail.com>
Subject: test-subject
To: mail+hogefuga-alias@example.com
Content-Type: multipart/alternative; boundary="0000000000008c54da06116b91c1"

--0000000000008c54da06116b91c1
Content-Type: text/plain; charset="UTF-8"

test-body

--0000000000008c54da06116b91c1
Content-Type: text/html; charset="UTF-8"

<div dir="ltr">test-body<br></div>

--0000000000008c54da06116b91c1--

```

# 参考

https://docs.aws.amazon.com/ses/latest/dg/receiving-email-receipt-rules-console-walkthrough.html

https://docs.aws.amazon.com/ses/latest/dg/regions.html

https://docs.aws.amazon.com/ses/latest/dg/receiving-email-action-s3.html