見出し画像

EC2(Postfix, CentOS7) + Amazon SESを使う

はじめに

メモなので、恐らくちょいちょい間違ってる

送信専用として使う

なので、受信は想定しない

前提

リージョンはオレゴン

独自ドメインを使用する場合は SES でドメイン検証を済ませておく
送信オンリーならいらないかもしれない

SMTP認証情報を発行しておく
リージョン毎に一意なので、発行するリージョンには気をつける
IAMユーザーで発行する認証情報とは別らしい

送信元となるEメールアドレスも登録しておく
Gmailなどフリーメールでも大丈夫らしい

手順

1. postfix のインストール

$ sudo yum install postfix

2. 関連パッケージのインストール

$ sudo yum install cyrus-sasl-plain 

3. Postfix の設定を行う

$ sudo postconf -e "relayhost = [email-smtp.us-west-2.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 = encrypt" \
"smtp_tls_note_starttls_offer = yes" \
"smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt"

リージョンがオレゴンではない場合は `email-smtp.us-west-2.amazonaws.com` が別の値になる

4. メール送信を受け付けを許可するアドレスを設定する

構築するメールサーバーが自分で送信する場合は不要
別サーバーからSMTP接続による送信を行う場合は必要
IPアドレスは接続元アドレスを指定する

$ sudo postconf -e "mynetworks = 172.0.0.0/8"

5. SAML認証情報をセットする

$ sudo vi /etc/postfix/sasl_passwd
<sasl_passwdファイル内>
[email-smtp.us-west-2.amazonaws.com]:587 SMTPUSERNAME:SMTPPASSWORD

`SMTPUSERNAME`と`SMTPPASSWORD`は前提で発行しているSMTP認証情報の内容を記載する

6. データベースファイル作成

$ sudo postmap hash:/etc/postfix/sasl_passwd

7. 認証情報ファイル及びデータベースファイルにアクセス制限をかける

$ 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

8. postfix 再起動

$ sudo systemctl restart postfix

9. 動作確認(任意)

$ sendmail -f <送信元メールアドレス(前提で登録したアドレス)> <送信先メールアドレス>
From: Test Name <sender@example.com>
Subject: Amazon SES Test                
This message was sent using Amazon SES.                
.

メールが届かない場合は `/var/log/maillog` を確認する

`said: 535 Authentication Credentials Invalid` のエラーが出てれば恐らくSMTPの認証情報が間違ってる
SMTP認証情報を作る時にリージョンが間違ってるかもしれない
少なくとも自分はこれでずいぶん深く沼にハマった

参考サイト

https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/postfix.html
https://densan-hoshigumi.com/aws/aws-postfix-ses-send-email
https://www.rem-system.com/mail-postfix01/

この記事が気に入ったらサポートをしてみませんか?