Top / AWS / Amazon SES

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

やってみる

送信元アドレスの登録

リージョンは下記の3つしかまだないようなので今回は「米国東部 (バージニア北部)」( us-east-1 )を選択しました。

IMG_3817.png

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

IMG_3818.png

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

IMG_3819.png

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

IMG_3820.png

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

IMG_3821.png

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

サンドボックスについて

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

サンドボックス外に移動するための申請とは具体的には Amazon SESの送信制限を解除する(SandBoxの外へ移動する) | infoScoop開発者ブログ などに書いてあることをすればよいのですが、いったん今回は、送信先のアドレスも上記と同様のやり方で、Amazon SESに登録しておきます。

SMTPユーザの作成

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

あ、ちなみにココのページに書いてある

Server Name: email-smtp.us-east-1.amazonaws.com 

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

IMG_3822.png

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

IMG_3823.png

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

IMG_3824.png

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

ThunderbirdなどのメーラのSMTP設定

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

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

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

009_th.png

プログラムから送ってみる

さいごに、プログラムから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

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

おつかれさまでした。

コマンドラインから稼働確認

Network/メールサーバ/送信テスト/暗号化アリSMTP-AUTH

関連リンク


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / AWS / Amazon SES

現在のアクセス:396


添付ファイル: file009_th.png 64件 [詳細] fileIMG_3824.png 55件 [詳細] fileIMG_3823.png 61件 [詳細] fileIMG_3821.png 61件 [詳細] fileIMG_3819.png 57件 [詳細] fileIMG_3822.png 67件 [詳細] fileIMG_3820.png 55件 [詳細] fileIMG_3818.png 59件 [詳細] fileIMG_3817.png 57件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-07-04 (水) 22:07:33 (134d)