2011年12月14日水曜日

SESってなんじゃ?(SMTPがサポートされました)

SESにSMTP機能がサポートされました。
メーラーでもSendmailやPostfixでも利用できるのは素晴らしいですね。
今回は試しにmiura@cloudpack.jpのメールアドレスで、GmailからSESを経由してHotmailにメール送信してみたいと思います。


SESの設定


AWSコンソールのSESタブを開くと、「SMTP Settings」というメニューが増えています。


これを開くと、SMTPサーバーの基本情報が表示されます。
Server Name: email-smtp.us-east-1.amazonaws.com
Port: 465
TLS: Yes
Authentication: Your SMTP credentials

Authenticationの欄にある通り、SMTPで送信するには、SMTP認証用のIAMユーザーを作る必要があり、画面中央の「Create My SMTP Credential」を押すと手順に従って設定できます。


ボタンを押すと、自動的にIAMタブに遷移し、「Create User for SMTP」というダイアログが開き、SMTP用のIAMユーザーを登録します。ここにSMTP用のIAMユーザー名を入力して、「Create」ボタンを押します。



すると、作成完了のダイアログが表示されます。
Credential情報は「Show User SMTP Security Credential」で表示されます。


Credential情報はファイルとして「Donwload Credential」でダウンロードし保管しておきます。
"Iam User Name","Smtp Username","Smtp Password"
"smtp-memorycraft","ACCESS_KEY******","SECRET_KEY******"


ダウンロードが終わり、ダイアログを閉じると再びSESタブに自動遷移します。
SESのダッシュボードを表示し、メール送信者を追加するために、「Verify a New Sender」をクリックします。



ここで、今回SMTPで送信したい送信者のメールアドレスを入力し、「Submit」をクリックます。



すると、そのメールアドレス宛に認証用のメールが届くので、認証リンクをクリックします。



AWSの画面が表示され、認証が完了した旨のメッセージが表示されています。これで送信者の認証が完了しました。


SESは無償では、認証したメールアドレスに対してしか送信できないため、テスト受信用のメールアドレスもこれと同様にして認証しておきます。(手順は同様なので、割愛します。)



メールクライアント( Gmail ) の設定


次にGmailのSMTP設定を行います。 「設定<アカウントとインポート」 タブの「名前」欄で送信者のメールアドレスを追加します。今回は既にGmail経由送信で設定済みだったので、「編集」で設定を変えてみます。



「次のステップ」を押すと、「Gmail経由で送信する」が選択されているので、「SMTPサーバー経由で送信する」のほうをクリックして選択します。すると、SMTPサーバー、ポート、ユーザー名、パスワード、接続プロトコルの入力欄が表示されます。
SESのSMTP Settingsに記載のあったように、SMTPサーバー名とポート、プロトコルを入力します。

Server Name: email-smtp.us-east-1.amazonaws.com
Port: 465
TLS: Yes
Authentication: Your SMTP credentials

また、ダウンロードしたcredential.csvに記載されている、Smtp UsernameとSmtp Passwordをユーザー名、パスワードに入力します。



ここで、「変更を保存」をクリックすると、有効性のチェックが始まるのですが、下記のようなエラーがでました。



どうやらTLS接続だとうまく設定できないようです。接続プロトコルをSSLにしたら、設定が成功したのでこのまま進みます。
登録が完了すると、「名前」欄が以下のような表示に変わり、AWSを使ったSMTP接続が設定されていることが確認できます。




それでは実際にメールを送信してみます。以下の内容のメールを「Verify User」で登録しておいたhotmailアドレス宛に送信します。



hotmail側を見てみると、、、


おおー、受け取れています!
アプリケーションなどでもSDKではなく、従来のSMTP送信でメール配信することができますね。

以上です。