#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;}