Amazon Linux 2023 の EC2 インスタンスで Postfix から Amazon SES 経由のメール送信を試してみた
はじめに
テクニカルサポートの 片方 です。
前回の記事では、Amazon Linux 2023 の EC2 インスタンスに Postfix と Dovecot を構築し、localhost 宛ての確認までを実施しました。
ただ、メールサーバーとして動作確認ができても、そのままでは外部宛てメール送信までうまくいくとは限りません。
特に Amazon EC2 では 25 番ポートの制限があるため、外部メールサーバーへの直接配送ではなく、Amazon SES を SMTP リレーとして利用する構成が選択肢になります。
そこで今回は、前回構築した EC2 インスタンスをベースに、Postfix から Amazon SES 経由でメール送信する構成を試してみました。
追加の準備
今回は、前回構築した EC2 + Postfix 環境をベースに、Amazon SES を SMTP リレーとして利用したメール送信を確認します。
前提
- ドメインは取得済みであること
- EC2 インスタンス上で Postfix の基本構成が完了していること
- Amazon SES を利用するリージョンをあらかじめ決めておくこと(今回は ap-northeast-1 を利用)
- EC2 へのログインは AWS Systems Manager Session Manager を利用すること
セキュリティグループ
今回は、以下のポートを開放したセキュリティグループで検証しました。
-
インバウンドルール
25, 110, 143, 587 (0.0.0.0/0) -
アウトバウンドルール
443, 587 (0.0.0.0/0)
443/TCP は Session Manager やパッケージ取得で利用し、587/TCP は Amazon SES の SMTP エンドポイントへ接続するために利用します。
また、今回は Postfix / Dovecot の待受確認や接続確認も行うため、25/TCP、110/TCP、143/TCP、587/TCP をインバウンドで許可しています。
やってみた
ドキュメントを参考に、以下の流れで実装します。
- DNS (Route 53) ホストゾーン作成、レコード登録
- SES でドメイン ID を検証
- SMTP 認証情報を作成
- Postfix 設定
- テスト送信
DNS (Route 53) ホストゾーン作成、レコード登録
今回は権限移譲したサブドメイン用の hosted zone を利用して構築しました。
この場合はレコード登録の記載方法が異なります。xx.aa.bb.cc. には各種設定を実施した自身の EC2 インスタンス パブリック IPv4 アドレスを 記載してください。EC2 インスタンスは停止・起動によりパブリック IPv4 アドレスが変わることがあるため、運用を見据える場合は Elastic IP の利用を検討します。
MXレコードは「どのサーバーがそのドメイン宛メールを受け取るか」を基に設定します。つまりメールを受信するサーバーの FQDN を記載します。
設定例)
-
A レコード
(空欄) → xx.aa.bb.cc. -
MX レコード
(空欄) → 10 xxxxxxxx.test.xxxx.xxxxxx.info.
TXT (SPF) レコード
v=spf1 include:amazonses.com -all
SES でドメイン ID を検証
- AWSコンソール → SES
- 左メニュー「ID」
- 「IDの作成」
- 設定
-
タイプ:ドメイン
-
ドメイン名:設定しているサブドメインを記載
例)xxxxxx.test.xx.xxxxxxx.info -
Easy DKIM:有効
-
DKIM キー長:RSA_2048
-
Route53 自動発行:ON

数分待ち、ステータス「検証済み」になることを確認します。
Route 53 で対象ドメインを管理しており、自動公開を有効にした場合は、Amazon SES が必要な CNAME レコードを自動追加できます。

SMTP 認証情報を作成
- SES → 「SMTP設定」
- 「SMTP認証情報の作成」
取得する:
- SMTP Username
- SMTP Password(保存必須)
認証ファイル作成で使用するので必ずどこかにメモしてください。
Postfix 設定
Session Manager などで EC2 インスタンスに接続し、Postfix に Amazon SES の SMTP リレー設定を追加します。なお、Amazon SES の SMTP 接続は TLS 必須です。
今回は、Amazon SES の SMTP エンドポイントとして ap-northeast-1 を利用しました。
そのため、relayhost には東京リージョンの SMTP エンドポイントを設定します。
まずは postconf を利用して main.cf に必要な設定を投入します。
sudo postconf -e \
"relayhost = [email-smtp.ap-northeast-1.amazonaws.com]:587" \
"smtp_sasl_auth_enable = yes" \
"smtp_sasl_security_options = noanonymous" \
"smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" \
"smtp_use_tls = yes" \
"smtp_tls_security_level = secure" \
"smtp_tls_note_starttls_offer = yes"
主な設定の意味は以下のとおりです。
- relayhost
外部宛てメールを直接配送せず、Amazon SES に中継させます - smtp_sasl_auth_enable
Amazon SES に対する SMTP 認証を有効化します - smtp_sasl_password_maps
SMTP 認証情報を保存したファイルを参照します - smtp_use_tls
TLS を利用して接続します - smtp_tls_security_level = secure
TLS を必須にし、サーバー証明書の検証も行います
続いて、Amazon SES の SMTP 認証情報を保存するファイルを作成します。
sudo nano /etc/postfix/sasl_passwd
内容は以下のように記載します。
[email-smtp.ap-northeast-1.amazonaws.com]:587 SMTP_USERNAME:SMTP_PASSWORD
- SMTP_USERNAME
Amazon SES で作成した SMTP Username - SMTP_PASSWORD
Amazon SES で作成した SMTP Password
ファイル保存後、postmap でハッシュ化します。
sudo postmap hash:/etc/postfix/sasl_passwd
あわせて、認証情報ファイルの権限を制限しておきます。
sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
Amazon Linux 2023 では、CA バンドルのパスとして /etc/ssl/certs/ca-bundle.crt を指定できます。これにより、Amazon SES 側のサーバー証明書を検証できるようになります。
sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt'
最後に、Postfix を再読込します。
sudo postfix check
sudo systemctl restart postfix

Mail 送信してみた
準備は完了したので、mail コマンドをインストールし、EC2 インスタンス + Postfix + SES リレー構成で Mail 送信可能か確認します。
sudo dnf install mailx -y
コマンド例
echo "This is a test mail via SES." | mail -r <user>@xxxxxxx.test.xx.xxxxxx.info -s "SES test" xxxxxxxx@gmail.com

正常に送信されることを確認できました!
まとめ
今回は、EC2 上の Postfix から Amazon SES を SMTP リレーとして利用し、外部宛てメール送信を試してみました。
Postfix と Amazon SES を組み合わせることで、EC2 の 25 番ポート制限を回避しつつ、587 番ポートで Amazon SES に中継してメール送信できることを確認できました。
実際に試してみると、Postfix 側の設定だけでなく、Amazon SES 側で検証済みの identity と実際の送信元アドレスが一致していることも重要でした。構成自体はシンプルですが、送信元ドメインや SMTP 認証情報の扱いは事前に整理しておくとスムーズに進められそうです。
前回の Postfix 構築に続き、今回は Amazon SES リレーによる送信確認まで進められたので、同様の構成を検証したい場合の参考になれば幸いです。
参考資料
- Amazon Linux 2023 の EC2 インスタンスに Postfix を user data を利用して自動構築してみた | DevelopersIO
- インスタンスと関数のポート 25 の制限を解除する | AWS re:Post
- Amazon SES と Postfix の統合 - Amazon Simple Email Service
- Amazon SES SMTP 認証情報を取得 - Amazon Simple Email Service
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました






