Microsoft Windows Server IIS SMTP経由でのAmazon SES

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

渡辺です。

Amazon SESを介してEメールを送信するときに、Microsoft Windows Server の IIS SMTP サーバーを介する方法を試してみました。 手順は公式ドキュメントにありますが、スクリーンショットを交えて解説します。

クライアントからのメール送信ではWindowsサーバをSMTPサーバとし、 WindowsサーバのSMTPサーバでは、Amazon SESにメールをリレーする設定を行います。

SES

EC2インスタンスの起動

はじめに、マネジメントコンソールからWindows Server 2012のインスタンスと、送信確認用のAmazon Linuxインスタンスを作成します。 セキュリティグループの設定で送信確認用インスタンスからWindowsサーバにSMTP通信ができるようにしておいてください。

Amazon SESの準備

Amazon SESに送信元・送信先メールアドレスを登録し、verifyしておきます。 また、SMTPの認証情報を作成しておいてください。

Windows Serverの準備

Windowsサーバにリモートディスクトップで接続し、IISサーバとSMTPサーバをインストールしていいきます。

IISとSMTPサーバのインストール

Server Managerのダッシュボードを起動し、ダッシュボードの「Add roles and features」をクリックします。

IIS_SMTP_1

ウィザードを進めていき、「Server Roles」で「Web Server(IIS)」を選択します。

IIS_SMTP_2

次に「Features」で「SMTP Server」を選択します。

IIS_SMTP_3

Web Server Role(IIS)では、Management Toolsの「IIS 6 Management Compatibility」をチェックします。

IIS_SMTP_4

後はウィザードに従ってインストールを完了します。

IIS SMTP サービスの設定

Server Managerのダッシュボードの「Tools」から「Internet Information Service(IIS) 6.0 Manager」を選択します。

IIS_SMTP_6

SMTP Virtual Server #1のプロパティを開きます。 プロパティの「Access」タブから「Relay」をクリックし、送信元となるサーバのアドレスを追加します。

IIS_SMTP_7 今回は、ローカルホスト(127.0.0.1)と送信確認用Amazon Linux(172.31.4.109)を登録しました。

IIS_SMTP

続けて「Delivery」タブを開きます。 「Outbound Security」をクリックし、「Basic authentication」にAmazon SESのSMTP認証情報を設定します。 また、「TLS encryption」にチェックを入れてください。

IIS_SMTP_7

次に「Outbound connections」をクリックし、「TCP port」が25または587であることを確認します。

IIS_SMTP_8

最後に「Advanced」をクリックし、「Smart host」にSESのエンドポイントを設定します。

IIS_SMTP_9

設定が完了したならば、SMTPサーバを再起動(Stop -> Start)してください。

送信確認

送信確認用Amazon LinuxにSSHログインし、mailxコマンドでメールを送信してみます(SMTPサーバのメール送信テストにmailxコマンドを使う)。

確認には、次のように~/.mailrcでsmtpサーバとfromアドレスを指定します。

set smtp=smtp://172.31.4.107:25
set from="classmethod@example.com"

準備ができたならば、メールを送信してみましょう。

$ mail -s "TEST" -v classmethod@example.com

送信出来なかった場合は、以下の点を確認してみてください。

  • SESで送信元送信先アドレスがverifyされているか?(もしくはプロダクション申請が通っているか)
  • Windowsサーバと送信確認用サーバが25ポートでアクセスできるか?
  • 送信確認用AmazonLinuxのIPアドレスが、SMTPサーバのリレー許可アドレスに含まれているか?

まとめ

Windows ServerのSMTPサーバを利用すると、メール送信時のリトライ処理やSESの設定が一元管理できるメリットがあります。 ただし、Windows Serverがメールの単一障害点になることは注意してください。