Amazon SESをSMTPインターフェースとして使う時のまとめ
油断をしていたら6月に更新をしていないようなので、作業メモで更新。
Amazon SESはSDKなどを使って直接メール送信する方法と、SMTPインターフェースを使用して送信する方法があります。
SDKを使ってメール送信をする方法はこちらのブログで紹介されているので、今回は後者の方法でメールを送信してみます。
Amazon SESの設定
まずSESで送信元となるメールアドレスは以下のようにVerified Sendersに登録しておいて下さい。
※SESがプロダクション環境でない場合は受信先メールも登録する必要があります
次に以下のようにSMTP Credentialsを作成します。
SMTP CredentialsはIAMによって提供されていますので、IAMのユーザー名を指定します。
IAMのユーザー名を指定すると以下のようにSMTPユーザーとパスワードが発行されます。
プログラムから使ってみる
先ほどのユーザーとパスワードを使用すると簡単にプログラムでメール送信が出来ます。
※ruby1.9.2で動作確認をしています
Postfixと連携してみる
さらに以下のように設定してPostfixからリレーさせてメール送信する事も出来ます。
①必要なパッケージのインストール
$ sudo yum -y install mailx postfix stunnel system-switch-mail $ sudo system-switch-mail postfix
②Stunnelの設定
$ sudo vi /etc/stunnel/stunnel.conf $ cat /etc/stunnel/stunnel.conf [smtp-tls-wrapper] accept = 2525 client = yes connect = email-smtp.us-east-1.amazonaws.com:465 $ sudo stunnel /etc/stunnel/stunnel.conf
③Postfixの設定(その他のセキュリティ設定は別途行って下さい)
$ sudo cp /etc/postfix/main.cf /etc/postfix/main.cf-orig $ sudo vi /etc/postfix/main.cf $ diff -u /etc/postfix/main.cf-orig /etc/postfix/main.cf --- /etc/postfix/main.cf-orig 2012-07-01 01:22:14.106737598 +0000 +++ /etc/postfix/main.cf 2012-07-01 01:42:24.660972013 +0000 @@ -74,6 +74,7 @@ # #myhostname = host.domain.tld #myhostname = virtual.domain.tld +myhostname = mail.okochang.com # The mydomain parameter specifies the local internet domain name. # The default is to use $myhostname minus the first component. @@ -110,10 +111,10 @@ # # Note: you need to stop/start Postfix when this parameter changes. # -#inet_interfaces = all +inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost -inet_interfaces = localhost +#inet_interfaces = localhost # Enable IPv4, and IPv6 if supported inet_protocols = all @@ -674,3 +675,12 @@ # readme_directory: The location of the Postfix README files. # readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES + +# +# Amazon SES Setting +# +relayhost = 127.0.0.1:2525 +smtp_sasl_auth_enable = yes +smtp_sasl_security_options = noanonymous +smtp_tls_security_level = may +smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd $ sudo vi /etc/postfix/sasl_passwd $ cat /etc/postfix/sasl_passwd 127.0.0.1:2525 YOUR_SMTP_USERNAME:YOUR_SMTP_PASSWORD $ sudo postmap hash:/etc/postfix/sasl_passwd $ rm /etc/postfix/sasl_passwd $ sudo service postfix restart
④Verified Senderの登録
冒頭で記載したように、SESでメールを送信する為にはVerified Sendersに登録する必要があります。
今回は構築したメールサーバをmail.okochang.comのMXとして名前解決出来るようにしました。
その後、先ほどと同じようにVerified Senderで送信するメールアドレスを登録します。
AWSから送信されたメールに記載されているURLにアクセスして検証を完了させます。
⑤動作確認
以下のようにPostfixを経由してメールを送信します。
※Verified Senderに登録したec2-userから実行しています
$ mail -s testmail1 hoge@example.com
参考リンク
- http://toypoo.s101.xrea.com/contents/install/stunnel.html
- http://d.hatena.ne.jp/winebarrel/20120328/p1
- http://blog.suz-lab.com/2011/12/postfixsesstunnnel.html
- http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/SMTP.MTAs.SecureTunnel.html
- http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/SMTP.MTAs.Postfix.html