独自ドメインのメールをAmazon SESで配信する手順

皆さんこんにちは。
私の環境では独自ドメインのメールをTwilio SendGrid経由で送信しており、設定方法は2020年の記事で発信しておりました。

メール送信は月に数件程度と少ないこともあり無料で便利に使っておりましたが、今回2026年3月末をもってSendGridの無料プランは終了する 旨、連絡がありました。

6年以上にわたり利用させて頂き感謝でしかないです。ありがとうございました。
今回はこれを契機にAWSのAmazon SES経由で配信する構成に変更しましたので、解説します。

アーキテクチャ

以下のような構成にしました。

私はメールクライアント(MUA)として、旧来のメールクライアントと、ブラウザからのGmailサイト、Gmailスマホアプリを利用していますので、これらは引き続き利用可能なようにします。

私の自宅ネットワーク内にはProxmox VE上で立てているDNS/MTAのメール中継サーバー(VM)がありますので、メールクライアントそのサーバを経由してAmazon SESに転送するようにします。
本ブログを含め、他サーバやEC2インスタンスからもAmazon SESを通じて配信できるようにします。

またGmailアカウントの設定も行い、ブラウザ・アプリからもメール送信できるようにします。

 

設定手順

Amazon SESドメイン検証

まず、独自ドメインのメールが配信できるよう、ドメインの検証を行います。
この手続きによりAmazon SESが独自ドメインのメールを配信する正規のメールサーバーであることを証明できるようになります。

Amazon SESのコンソールから、設定⇒IDを開きます。
ここからIDの作成をクリックします。

続いて独自ドメイン名を入力します。

「カスタムMAIL FROMドメインの使用」はチェックを入れることが推奨され、有効にした場合はエンベロープFromに利用する独自ドメインのサブドメイン名を指定します。

「カスタムMAIL FROMドメインの使用」チェックを外した場合、エンベロープFromアドレス(メール配送時にサーバで付与されるFromアドレス)は Amazon SESデフォルトのドメインとなります。
その場合、ユーザーが指定したFromアドレス(独自ドメイン)とはドメイン名が異なるため、送信元ドメインのなりすましメールを検知・ブロックするメール認証技術であるDMARCに対応できず、送信したメールが迷惑メールと判定される可能性が上がります。

また私の場合はDNSサーバにRoute53を利用していないので、設定を外しました。

ドメイン検証(DKIM)の設定については、デフォルトのままとしました。
当該ドメインに既存設定がある場合は、適宜変更が必要と思われます。

「IDの作成」をクリックすると各種設定が表示されます。
以下の内容(合計6レコード)を、当該ドメインのDNSに登録することになります。

DKIM設定

メールサーバ間でのメール送受信の際、電子メールにデジタル署名を付与して「送信元のドメインが正しいこと」と「メールが改ざんされていないこと」を証明するドメイン認証技術です。

送信者が秘密鍵で署名し、受信者がDNSで公開鍵を取得して検証することで、通信経路でのメールの改ざんがされていないことが確認できます。

カスタムMAIL FROMドメイン設定

先述の通り、独自ドメインのサブドメインをエンベロープFromアドレスにすることで、到達率の向上(迷惑メールとして判定される可能性を下げる)メリットがあります。

その場合、独自ドメインのアドレスでAbuseメール(苦情受け付け)を設置するためのDNSレコードを追加します。

DMARC挙動設定

上記DKIMとカスタムMAIL FROM設定でDMARCに関する設定を行っておりますが、本設定ではDMARCでの認証チェックに失敗したメールをどのように処理するか指定できます。

今回はひとまずデフォルトのままとしています。

これらのDNSレコードを独自ドメインに追加します。
しばらく、DKIM・カスタムMAIL FROM設定が ☑ 成功 、概要欄で ☑ 検証済み になるのを待ちます。

 

AWSサポートに制限解除申請

ここまででAmazon SESが独自ドメインのメールを配信できる状態となりましたが、このままでは動作しません。

Amazon SESの標準設定ではサンドボックス環境として、検証済ドメインのメール(アドレス)宛にしか配信できない状態となっています。
そこで設定を始める、のボタンよりAWSサポートに連絡し制限解除の申請を行います。

申請の際は以下の情報を含める必要があります。

  • メールのタイプ(トランザクション、マーケティング)
  • WebサイトのURL
  • ユースケース
  • 申請内容に関しての連絡先メールアドレス

詳細はDevelopers.IOサイトに詳細な記事がありますので参考にしてください。

申請内容は細かに記載しないとRejectされる可能性があるので注意してください。
私の場合はBasicサポートということもあり、申請後24時間程度で連絡があり許可されました。

 

SMTP認証情報の取得

独自ドメインのメール配信準備が整いましたので、いよいよ配信経路を変更します。

Amazon SESのコンソールから、SMTP設定を開きます。
右上の「SMTP認証情報を作成」をクリックします。

SMTP Authの認証情報を発行するため、IAMユーザーを作成します。
作成するIAMユーザー名を指定します。

IAMユーザーが発行されました。
SMTPユーザー名とパスワードをダウンロードして保存しておきます。

 

Postfix統合

宅内メール中継サーバーのPostfixに、Amazon SES向けの転送設定を施します。
公式ガイドに基づき設定していきます。

※当方環境:AlmaLinux release 9.7

main.cfに以下のような設定を追加します。

# Amazon SES Relay Settings
relayhost = [email-smtp.ap-northeast-1.amazonaws.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/amazonses_password
smtp_use_tls = yes
smtp_tls_security_level = secure
smtp_tls_note_starttls_offer = yes

念のためTLSパラメータが正しく設定されていることを確認してください。

smtp_tls_CApath = /etc/pki/tls/certs
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt

続いて上記「SMTP認証情報の取得」の項で取得した認証情報をファイルとして保存します。
例:/etc/postfix/amazonses_password

XXXXのところがSMTPユーザー名、XXXXのところがSMTPパスワードになります。

[email-smtp.ap-northeast-1.amazonaws.com]:587 XXXXXXXXXXXXXXXXXXXX:ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

本ファイルには機密情報を平文で書き込んでいますので、パーミッションを変更します。

# chown root:root /etc/postfix/amazonses_password
# chmod 600 /etc/postfix/amazonses_password

postmapコマンドを使用しハッシュ化します。

# postmap /etc/postfix/amazonses_password

Postfixを再起動し、設定を読み込みます。

# systemctl restart postfix

 

Gmailアカウント設定

ブラウザ利用やスマホアプリからの送信にも対応するよう、Gmailアカウントにも設定を追加します。

ブラウザGmailの設定アイコンから全ての設定を表示をクリックします。

アカウントとインポート内にある、「他のメールアドレスを追加」をクリックします。

ダイアログウィンドウが開きます。

名前とメールアドレスを入力します。
「エイリアスとして扱います」については、私はチェックを入れました。

  • チェックした場合
    Gmailアドレスと独自ドメインのメールが分離されず一体となります。
  • チェックを外した場合
    Gmailアドレスと独自ドメインのメールは分離されます。

私の場合は分離する必要が無いのでエイリアスとしました。

SMTPサーバー(東京リージョンの場合は mail-smtp.ap-northeast-1.amazonaws.com )と、ユーザー名・パスワードを入力します。
上記で取得したSMTPユーザー名とSMTPパスワードになります。

確認のためメールが指定したメールアドレスに送信されます。
メール内のURLをクリックし認証します。

 

動作確認、まとめ

ここまでの設定で独自ドメインのメール配信環境が構築できました。

メール送信のテストを行い、メールログ等にて正しく配信されることを確認ください。
また、メール内のヘッダを確認して、DKIMやSPFの認証が正しく通っていることを確認ください。

私の環境では制限解除の申請が通ったことで、50,000通/日まで許容されました。
個人ドメインのメール送信なので、500通/日もあれば十分だったんですけどね。

Amazon SESには最近アップデートも多いので他の機能も触ってみたいと思います。
場合によっては記事化するかもしれません。

以上、Amazon SESによる独自ドメインのメール配信の話題でした。

コメント