Amazon Simple Email Service (Amazon SES) を使用して、プライベートサブネットまたはパブリックサブネットでホストされている Microsoft SQL Server インスタンス用 Amazon Relational Database Service (Amazon RDS) に E メールを送信したいと考えています。
解決策
Amazon SES を設定する
Amazon SES コンソールを使用して、Simple Mail Transfer Protocol (SMTP) 認証情報を取得します。
確認メールを受信するには、次の手順を実行します。
- Amazon SES コンソールを開き、[E メールアドレス] をクリックします。
- [新しい E メールアドレスを検証する] をクリックし、確認メールを受信する E メールアドレスを入力します。
- [検証ステータス] が [検証済み] であることを確認します。
データベースメールのパラメータグループを設定する
注: データベースメールで使用するカスタムパラメータグループが既にある場合は、「データベースメールの設定」セクションに進んでください。パラメータグループが既に RDS for SQL Server インスタンスに関連付けられている場合は、このセクションの次の手順に進んでください。
カスタムパラメータグループを作成するには、次の手順を実行します。
- Aurora と RDS コンソールを開きます。
- [パラメータグループ] をクリックし、[パラメータグループの作成] をクリックします。
- [パラメータグループファミリー] で、使用している SQL Server のバージョンとエディションを選択します。例えば、SQL Server 2016 Enterprise Edition は sqlserver-ee-13.0 を使用します。
- グループ名と説明を入力してから、[作成] をクリックします。
- [パラメータグループ] ページで、グループを選択します。
- [パラメータの編集] をクリックし、[データベースメール xps] を選択します。
- [値] で [1] を選択します。
- [保存] をクリックします。
パラメータグループを RDS for SQL Server インスタンスに関連付けるには、次の手順を実行します。
- Aurora と RDS コンソールを開きます。
- [データベース] をクリックし、[変更] をクリックします。
- [データベースオプション] でパラメータグループを選択し、[続行] をクリックします。
- [変更のスケジューリング] で、[今すぐ] をクリックします。
- [DB インスタンスを変更] を選択して変更を適用し、インスタンスを再起動します。
データベースメールを設定する
RDS for SQL Server インスタンスがパブリックサブネットでホストされている場合は、データベースメールを設定できます。
インスタンスがプライベートサブネットにある場合、データベースメールを設定すると次のエラーメッセージが表示されることがあります。
"The mail could not be sent to the recipients because of the mail server failure.Exception Message: Could not connect to mail server."
上記のエラーメッセージを受け取った場合、DB インスタンスはメールサーバーに到達できません。この問題を解決するには、Amazon SES 用の Amazon Virtual Private Cloud (Amazon VPC) エンドポイントを作成します。
次の手順を実行します。
-
インスタンスのプライベート IP アドレスを特定します。
-
インスタンスに関連付けられているセキュリティグループに対するインバウンドルールを含む新しいセキュリティグループを作成します。
[タイプ] で、[カスタム TCP] を選択します。
[ポート範囲] で、E メールの送信に使用するポート番号を入力します。25、465、587、2465、または 2587 を使用できます。
[送信元タイプ] で [カスタム] を選択します。
[送信元] で、RDS for SQL Server インスタンスのプライベート IP アドレスを入力します。
-
VPC エンドポイントを作成します。
-
エンドポイントを選択し、[DNS] フィールドの下の名を書き留めます。
-
データベースメールアカウントを再作成します。
use msdbgo
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'Acc1',
@description = 'Mail account for sending outgoing
notifications.',
@email_address = 'example@example.com',
@display_name = 'Automated Mailer',
@mailserver_name =
'vpce-0a9cxxxxxxxxxxxxx-xxxxxxxx.email-smtp.ap-southeast-2.vpce.amazonaws.com',
<---- VPC endpoint created in previous step
@port = 587,
@enable_ssl = 1,
@username = 'SMTP-username', <---- For user name and
password, please use the SES credentials
@password = 'SMTP-password' ;
注: @mailserver_name を [DNS] フィールドからメモした DNS 名に置き換えてください。
-
次のコマンドを実行して、データベースメールが正しく設定されていることを確認します。
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'success@simulator.amazonses.com',@body = 'The database mail configuration was completed successfully.',
@subject = 'Automated Success Message';
注: データベースメールが正しく設定されていれば、メールが送信されます。
-
次のストアドプロシージャを実行して、すべての E メールアイテムを確認します。
SELECT * FROM msdb.dbo.sysmail_allitems
-
[sent_status] 列で、ステータスが [送信済み] であることを確認します。
関連情報
Amazon RDS Custom for SQL Server DB インスタンスの管理
Using Database Mail on Amazon RDS for SQL Server (Amazon RDS for SQL Server でのデータベースメールの使用)