Amazon SESとは?
Amazon Simple Email Service(SES)はAPIを使って、大規模にEmailの配信が行えるシステム。
従量課金で使えて、PostfixやDNSの設定をしなくても良いので、cron等のメール送信をEC2から行う際にも利用しやすい。
ただし、送料として1日100通以上メールを送る場合は、Production Requestという申請が必要なため、 場合に応じて申請する。
ssmtpとSESを使う場合の設定方法
ssmtpは、外部のSMTPサーバを利用してメールを送るもの。SESでなく、Gmailを使う方法なんかもある。
今回は、Ubuntu 12.04で設定をした。
1.SESの設定
1.1 送信元(及び送信先)に利用するメールアドレスのVerify
認証したメールアドレスを送信元をにする必要があるため、設定を行う必要がある。 なお、Production Requestをしていない場合は、送信先もVerifyしたメールアドレスに限定されるため、この方法で登録する。
こちらにアクセスして、利用したい送信元のメールアドレスをVerifyする
(例: example@gmail.com)
登録したメールアドレスにverify用メールが届くので、ブラウザでリンクをクリックする。
1.2 SMTP用のIAMユーザを作成する
こちらのサイトが参考になる。
"Create My SMTP Credentials"をする
作成後得られる、Security Credentialsの"SMTP Username"と"SMTP Password"を保存する
2. ssmtpの設定
設定はこちらが参考になります。
2.1 ssmtpのインストール
今回はUbuntu 12.04で設定したのでapt-getでインストールした。
$ sudo apt-get install ssmtp
2.2 ssmtp.confのグループとパスワードを変更する
ssmtp.confには平文で(!)UsernameとPasswordが保存されるため、一応アクセス権限を変更しておく。 ただし、chgrpで設定するグループは、メールを送信したいユーザを全て登録すること。
$ sudo groupadd ssmtp
$ sudo adduser username ssmtp
一度ここでログインしなおしたほうが無難。
$ sudo chgrp ssmtp /etc/ssmtp/ssmtp.conf
$ sudo chmod 660 /etc/ssmtp/ssmtp.conf
2.3 /etc/ssmtp/ssmtp.confの設定を変更する
下記項目を修正/追記する。
mailhub=email-smtp.us-east-1.amazonaws.com:465
AuthUser=SMTPUSER
AuthPass=SMTPPASS
rewriteDomain=gmail.com
hostname=gmail.com
UseTLS=YES
リージョンが異なる場合は、mailhubを変える
SMTPUSERとSMTPPASSは1.2を参照
2.4 revaliasesの設定
SESはfromにverify済みのメールアドレスしか利用できないため、/etc/ssmtp/revaliasesの設定をする。 これをしないと、cron等でメールが送れずエラーになる。 送信元のアドレス(example@gmail.com)とmailhubは必要に応じて変更すること。
# sSMTP aliases
#
# Format: local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
root:example@gmail.com:email-smtp.us-east-1.amazonaws.com:465
user:example@gmail.com:email-smtp.us-east-1.amazonaws.com:465
2.5 メールの送信テスト
テストファイルをmail.txtとして作成。(下記の様なフォーマット)
From: example@gmail.com
To: youraddress@gmail.com
Title: Test
Test
テストメールを送信する。成功すれば何もエラーはでないはず。
$ ssmtp -t < mail.txt
番外編: crontabでの送信先の設定
MAILTOを書けばOK。ただし、Production Requestしていない場合送信先のverifyをすること。
MAILTO="youraddress@gmail.com"
参考URL:
http://www.bbck.net/blog/2011/12/18/ssmtp-and-amazon-ses
http://dev.classmethod.jp/cloud/amazon-ses-smtp/
http://www.usupi.org/sysad/172.html