LoginSignup
62

More than 5 years have passed since last update.

Amazon SESを使ってEC2からメールを送る方法

Last updated at Posted at 2013-01-24

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の設定を変更する

下記項目を修正/追記する。

/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は必要に応じて変更すること。

/etc/ssmtp/revaliases
# 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として作成。(下記の様なフォーマット)

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
62