#author("2018-07-02T07:18:32+00:00","default:masatomix","masatomix")
#author("2018-07-04T13:07:33+00:00","default:masatomix","masatomix")
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

#contents


今回は Amazon Simple Email Service (Amazon SES)  です。
Amazon SESはいわゆるメール送信サービスで、SMTPサーバの機能を提供するサービスです。
EC2などAWS上のサーバが使うSMTPサーバとして使用することができます。というか、いわゆるSMTPサーバなので、普通にThunderbirdなどのメーラ(MUA)からメール送信すると、自前のプログラムからメールを送信するとかにも利用可能です。


**やってみる [#yc2b0794]
*** 送信元アドレスの登録 [#u8d7bfd8]
リージョンは下記の3つしかまだないようなので今回は「米国東部 (バージニア北部)」( us-east-1 )を選択しました。

#ref(IMG_3817.png)

Amazon SESは IMAPなどのメールサービスではないので、送信元となるメールアドレスは自分で準備しておきます。
その送信元となる Email アドレスを登録するため、メニューの「Email Addresses」 を選択。

#ref(IMG_3818.png)

「Verify a New Email Address」 をクリック

#ref(IMG_3819.png)

送信元の Email アドレスを入力して、「Verify This New Email Address」をクリックします。

#ref(IMG_3820.png)

すると、該当アドレスに本人確認のためのメールが飛んできます。
飛んできた確認メールを処理すると、ほどなくしてStatusが下記の通り「pending verification」から「verified」となるはずです。

#ref(IMG_3821.png)

以上で、送信元アドレスの登録が完了しました。

***サンドボックスについて [#x80eeb61]

[[Amazon SES サンドボックス外への移動 - Amazon Simple Email Service>http://amzn.to/2IxOurb]]  にあるとおり、スパムとか不正行為の抑止のためにAmazon SES は初期状態では「サンドボックス」内での運用になっているようです。
この状態だと 送信元の本人確認だけでなく''送信先の本人確認も必要''など、いろいろな制限があるようです。Amazon SESを本番運用で使用したい場合は、サンドボックス外に移動するための手続き(申請)を行う必要があります。

サンドボックス外に移動するための申請とは具体的には  [[Amazon SESの送信制限を解除する(SandBoxの外へ移動する) | infoScoop開発者ブログ>https://www.infoscoop.org/blogjp/2015/07/29/amazon-ses-release-limit/]]  などに書いてあることをすればよいのですが、いったん今回は、''送信先のアドレス''も上記と同様のやり方で、Amazon SESに登録しておきます。


*** SMTPユーザの作成 [#b866de46]
つづいて、このSMTPサーバを使うためのユーザを作成します。
SMTP Settingsの「Create My SMTP Credentials」 をクリックします。

あ、ちなみにココのページに書いてある 
 Server Name: email-smtp.us-east-1.amazonaws.com 

がSMTPサーバ名となっています。

#ref(IMG_3822.png)

SMTPのユーザ名は、AWSの IAM ユーザの「アクセスキー ID」になります。この画面では IAMユーザ名を指定してユーザを作成しますが、メール送信に使用するSMTPユーザ名は「アクセスキー ID」なので、IAMユーザ名はデフォルトのままでもよいかもしれません。


#ref(IMG_3823.png)

「作成」をクリックするとIAMユーザが作成されます。そのユーザの「アクセスキーID」と「シークレットアクセスキー」が、SMTPユーザのユーザ名とパスワードになります。「アクセスキーID」と「シークレットアクセスキー」は、作成完了画面で下記のとおり確認することができます。


#ref(IMG_3824.png)

以上でSMTPユーザの作成が完了しました。


*** ThunderbirdなどのメーラのSMTP設定 [#q09825f9]
さて、もろもろの設定やSMTPユーザの作成が完了したので、ThunderbirdなどのメーラにSMTPの設定をおこなってメール送信してみてください。
具体的には

- STMPサーバ名: email-smtp.us-east-1.amazonaws.com
- ポート番号: 465  ← 587とかでもいけるかも
- 接続の保護: SSL/TLS  ← START TLS でもいけるかも
- ユーザ名:   IAM ユーザの アクセスキー ID
- パスワード:  IAM ユーザの シークレットアクセスキー

などを設定すればOKです。

#ref(009_th.png)


*** プログラムから送ってみる [#y7198361]
さいごに、プログラムからSMTPを指定してメールを送信してみます。Nodejsにはメール送信するライブラリ nodemailerというのがあるので、コレを使いました。
Githubに置いてあるので、適宜参照ください。
 $ git clone https://github.com/masatomix/nodejs-samples.git -b feature/ses_mail
 $ cd nodejs-samples

設定ファイルは以下の通り:

 $ cat config/default.json
 {
   "smtp": {
     "host": "email-smtp.us-east-1.amazonaws.com",
     "port": 465,
     "secure": true,
     // true for 465, false for other ports
     "auth": {
       "user": "AKIAxxxxxxxxxxx",   ← 正しいものに変更
       "pass": "Aixxxxxxxxxxxxxxxxxxxxx"  ← 正しいものに変更
     }
   },
   "mail": {
     "from": "from@example.com", ←送信元アドレス
     "to": "to@example.com"  ← 送信先アドレス
   }
 }

送信プログラムは以下の通り:

 $ cat index.js
 "use strict";
 
 const me = this;
 
 const logger = require('./logger');
 const config = require('config');
 const nodemailer = require("nodemailer");
 
 module.exports.execute001 = () => {
     const transporter = nodemailer.createTransport(config.smtp);
     const mailOptions = {
         from: config.mail.from,
         to: config.mail.to,
         subject: 'test mail',
         text: 'メール送信テスト'
     };
 
     transporter.sendMail(mailOptions, (error, info) => {
         if (error) {
             logger.console.error("send mail failed.");
             logger.console.error(error.message);
         }
         logger.console.debug("send mail success.");
         logger.console.debug('Message sent: %s', info.messageId);
     });
 };
 
 me.execute001();

プログラムを実行してみます。やりかたは、あ、Nodejsが入ってる前提ですが
 $ npm install
 $ npm start

でメールが送信されると思います。



おつかれさまでした。

** コマンドラインから稼働確認 [#x9f4307b]
[[Network/メールサーバ/送信テスト/暗号化アリSMTP-AUTH]]


**関連リンク [#d1dbde66]
-[[Amazon SES(高信頼性で安価なEメールサービス - Amazon Simple Email Service)| AWS>http://amzn.to/2HLwZma]]
-[[Amazon SESの送信制限を解除する(SandBoxの外へ移動する) | infoScoop開発者ブログ>https://www.infoscoop.org/blogjp/2015/07/29/amazon-ses-release-limit/]]
-[[知ってる?nodemailerを使ってメールを送る方法 - RAKUS Developers Blog>http://tech-blog.rakus.co.jp/entry/2017/09/07/110411]]
-[[コマンドラインを使用し、Amazon SES SMTP インターフェイスを介して E メールを送信する - Amazon Simple Email Service>https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-email-smtp-client-command-line.html]] コマンドプロンプトからの疎通(OpenSSLが必要ですが)。
-[[telnetコマンドでSMTP認証を確認するには - 逆引き集 - CentOSで自宅サーバー構築>https://centossrv.com/memo/log/18.shtml]] SSLでない場合はTelnetで。
-[[smtp4dev ダウンロードできなくなった | | Tomehachi>http://blog.tomehachi.net/%E9%96%8B%E7%99%BA%E5%85%A8%E8%88%AC/smtp4dev-cannot-download/]]


----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS