EC2でSESメール設定[Postfix]を行う

Pocket

EC2で初期状態からメール送信できるまで設定していきます
最終的にphpでメール送信できるようにしたいためpostfixを使用します

 

前提

・SES登録済
・メール上限申請済
・EC2構築済み

参考

SESの設定等は以下サイトを参照してみてください

・Amazon SES 東京リージョンの初期設定
・メール送信上限の緩和

 

postfixのインストール

まずはEC2にSSHログインしてpostfixをインストールします
自動起動も設定します(ここは任意で問題ないです)

$ sudo yum install postfix
$ sudo systemctl start postfix
$ sudo systemctl is-enabled postfix

 

main.cfの編集①

vim で開いて最終行に追記します

$ sudo vim /etc/postfix/main.cf

relayhostはSESのSMTP Settingsに記載してあります
25番ポートを使用するためには解除申請を提出が必要なので、今回は587番ポートを使用します

smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = encrypt
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
relayhost = email-smtp.ap-northeast-1.amazonaws.com:587
smtp_sasl_auth_enable = yes
smtp_use_tls = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt

 

main.cfの編集②

myhostnameとmydomainも編集します
route53で取得したドメインと合わせましょう

myhostname = test.example.co.jp
mydomain = example.co.jp

 

sasl_passwdの作成

$ sudo vim /etc/postfix/sasl_passwd

sasl_passwdには、SESから取得したcredentials情報を記載します

email-smtp.ap-northeast-1.amazonaws.com:587 [Smtp Username]:[Smtp Password]

 

sasl_passwdのハッシュ化

sasl_passwdの作成が完了したらハッシュ化します

$ sudo postmap hash:/etc/postfix/sasl_passwd
$ ls -1 /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
$ ls -l /etc/postfix/sasl_passwd*

 

postfixの再起動

設定が終わったら反映させるために再起動します

$ sudo postfix reload
$ sudo service postfix restart

 

メール送信確認

$ echo "mail-body" | mail -r 送信元 -s "mail-subject" 送信先

今回の設定例であれば以下になります
送信元のアドレスをmain.cfのmydomainと合わせないと送れないので注意しましょう

echo "mail-body" | mail -r support@example.co.jp -s "mail-subject" 送信先

 

メール送信ログの確認

メール送信ログは以下コマンドで確認できます

$ sudo less /var/log/maillog

 

以上です、お疲れ様でした