SES経由でPostfixからメール送信する
公開日:2021年12月30日
最終更新日:2021年12月30日
レベル:★★★☆☆
SMTPサーバとしてPostfixを使用しているサーバからAmazon SESを経由してメールを送信する方法をご紹介します。
この記事の目次
前回「AWS EC2 DockerからSES経由でメール送信」という記事でDockerコンテナに入れた「msmtp」からAmazon SES(Simple Email Service)を使ってメールを送信する手順をご紹介しました。
今回は、SMTPサーバとして「Postfix」を使っている場合のSES経由でメールを送信する方法をご紹介します。
SES側の設定
Amazon SES側の設定方法は、前回の記事「AWS EC2 DockerからSES経由でメール送信」を参照ください。
Postfix側の設定
PostfixからSESを経由してメール送信するために次のようにPostfixの設定を変更します。
例ではCentOS 7 にPostfixをインストールしている場合です。ディストリビューションによってファイルのパスや再起動のコマンドが違う場合がありますが、適宜読み替えてください。
main.cfの編集
Postfixの/etc/postfix/main.cf ファイルに下記を追記します。
:
relayhost = [email-smtp.us-east-2.amazonaws.com]:587 <------- ①
:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/saslpasswd <----- ②
smtp_sasl_security_options = noanonymous
### for SES ###
smtp_use_tls = yes
smtp_tls_loglevel = 1
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
### for SES ###
- ①:PostfixからSESに転送する設定です。
使用するSESのサーバ名を指定します。
この例ではオハイオ(us-east-2)のSESを使用する設定です。ご利用のリージョンに合わせて設定を変更してください。
SESのホスト名はSESダッシュボードにて「SMTP Settings」メニューを開いた際に「Server Name」欄に表示されています。 - ②:SESへの認証情報をハッシュ化した「saslpasswd.db」を使用します。
saslpasswdの作成
/etc/postfix/saslpasswdファイルにSESへの認証情報を下記のように記述します。
(/etc/postfix/saslpasswdがなければ新規に作成します。)
[email-smtp.us-east-2.amazonaws.com]:587 ユーザ名:パスワード
- []内には使用するSESのサーバ名を記述します。
- ポート番号は「587」を設定します。
- ユーザ名はSESの設定時に取得した「credentials.csv」の「Smtp Username」の内容を記述します。
- パスワードはSESの設定時に取得した「credentials.csv」の「Smtp Password」の内容を記述します。
- ユーザ名とパスワードの間はコロン(:)で区切ります。
/etc/postfix/saslpasswd.dbを生成します。
# postmap /etc/postfix/saslpasswd
postfix再起動
設定を反映させるためにPostfixを再起動します。
# systemctl restart postfix
送信テスト
以上の設定が完了したらPostfixがインストールされているサーバからメールを送信してみます。
次のようにsendmailコマンドで送信テストもできます。
hoge@abc.comからfuga@def.comへメールを送信する例。最後の「.」を忘れないように。
# sendmail -f hoge@abc.com
To: fuga@def.com
From: hoge@abc.com
Subject: Test Mail
test desu
.
実際にメールを送信して正常に受信されることを確認します。
ー 以上 ー