はじめに
私は金沢工業大学の情報工学科に所属している人間です。今はバックエンド開発や、インフラ系の学習をしています。
この記事では私が初めてAWSのSESとS3を用いてメールサーバーを立ててみた時のお話をしていきます。
現状
私はAWSでメールサーバーを立てる前はGMOのLolipopにて実装されるメールサーバーを利用していました。しかし、何分学生の身分ではサーバーを維持するのにお金がない!!ということでAWSに移管したらお値段が安くなるよということを聞き、今後インフラにも手を出すならAWSを学習し始めるかということで今回メールサーバーを立てていきます。
条件
この記事の後ほどに実装する予定のメールサーバーを利用してメールの送受信がおこなえるようにすることができるようにする。※2025/12/29現在作成していません。
AWSとは
まずAWSとは何なのかということを話していこう。
この記事を読んでいる人なら一度は聞いたことがあるかもしれないが、AWSとはAmazonが提供している様々なクラウドサービスを自身で実装することのできるプラットフォームです。
SESとは
SESとはユーザー自身のEメールアドレスやドメインを用いてEメールを送受信するためのメールプラットフォームです。
S3
S3とはAWSが提供するストレージサービスであり、容量は無制限にデータを保存することができる。
構築
今回はこれらのSESやS3を用いることにより、自身が受信したデータをS3にほぞんするようにする。
SESの設定
AWSのコンソールにて、SESと調べ Amazon Simple Email Serviceの使用を開始する。
すると図1のようになるので検証用メールアドレスの登録をおこないました。

図1 SES-メールアドレスの追加
その次に、送信ドメインを記載するようになるので自身が所有しているドメインを登録してください。今回はbloomia.cloudで受信、ml.bloomia.cloudで送信されるようにします。というわけで、図2のように送信ドメインにbloomia.cloud、MAIL FROMドメインにmlを指定します。

図2 SES-ドメインの追加
その後オプションに関してはなにも追加せずに画面を進めていくとある、図3の使用を開始を押下してドメインを追加します。

図3 SES-設定の確認
すると、図4のような画面になるのでこの画面を下に遷移したところに出てくる、DomainKeys Identified MAil , カスタム MAIL FROM ドメイン , Domain-based Message Authentication,...のレコードセットをドメインを自身のネームサーバーに登録していきます。私の場合はCloudflareに最近ドメインを移管したのでCloudflareのネームサーバーに図5のように登録をしていきます。

図4 SES-ドメイン設定画面

図5 ネームサーバーへの登録
次に、テナントを用意しよう。SESの設定からテナントを作成する。今回は図6のようにbloomiaというテナントを作成するようにする。

図6 テナントの作成
また、テナントを作成した後にその作成したテナント内に入り設定をおこなう。この設定では、ID, 設定セットをそれぞれ割り当てる。IDには、先ほど登録したドメインを追加する。設定セットには初期のものを設定しておく。
続いて、Eメール受信の設定をおこなう。SESの設定からEメール受信から設定をおこなう。すべてのルールセットから、ルールセットの作成を押下し一意のルールセット名を登録する。今回はmail-rule-setとした。また、そのルールセット名の中にすべての受信ルールを設定するためにルールの作成を押下する。受信ルール名はses.bloomia.cloudとし、受信者の条件の追加は空欄として続ける。その次に新しいアクションの追加を押下し、図7に示す画面からS3バケットへの配信を押下し、設定する。

図7 Eメール受信ルールのアクション設定
図8に示すS3のバケットの設定をおこなう。

図8 S3バケットの設定
S3バケットの作成を押下し、バケット名をbloomia.cloud-sesとした。また、オブジェクトキープレフィックスをMailbox/として次に進みルールを作成する。Eメール受信のページに戻り、先ほど作成したルールセットを有効化する。
S3の設定
先ほど作成したbloomia.cloud-sesのバケットポリシーを以下のように編集する。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSESPuts",
"Effect": "Allow",
"Principal": {
"Service": "ses.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::[バケット名]/*",
"Condition": {
"StringEquals": {
"AWS:SourceAccount": "[アカウントID]",
"AWS:SourceArn": "arn:aws:ses:[リージョン名]:[アカウントID]:receipt-rule-set/[ルールセット名]:receipt-rule/[ルール名]"
}
}
}
]
}
以上の設定をおこなうことで、メールサーバーを立てることができる。
受信確認
現在、サンドボックス環境となっておりSESのIDに登録しているメールアドレスまたはドメインしか送受信することができないので登録しているメールアドレスから今回はinfo@bloomia.cloudへと送信した。
送信すると、図9のようにS3に保存される。

図9 S3へのメール保存
送信確認
図10のようにSESのテストEメールの送信をおこなう。シナリオはカスタムを選択することにより、指定のメールアドレスに送ることができる。

図10 SES-テストEメールの送信
送信先メールアドレスを確認すると図11のように受信していることがわかる。

図11
まとめ
これらにようにAWSのSESとS3を利用することにより、メールサーバーを実装することができた。