

# Amazon RDS for SQL Server でのデータベースメールの使用
<a name="SQLServer.DBMail"></a>

データベースメールを使用して、SQL Server データベースインスタンスの Amazon RDS からユーザーに E メールメッセージを送信できます。メッセージには、ファイルとクエリ結果を含めることができます。データベースメールは、次のコンポーネントを含みます。
+ **設定オブジェクトおよびセキュリティオブジェクト** – これらのオブジェクトは 、プロファイルとアカウントを作成し、`msdb` データベースに保存されます。
+ **メッセージングオブジェクト** – これらのオブジェクトは、メッセージの送信に使用する [sp\_send\_dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql) ストアドプロシージャと、メッセージに関する情報を保持するデータ構造を含みます。それらは `msdb` データベースに保存されます。
+ **ログオブジェクトと監査オブジェクト** – データベースメールは、`msdb` データベースと Microsoft Windows アプリケーションイベントログにログ情報を書き込みます。
+ **データベースメール 実行可能ファイル** – `DatabaseMail.exe` は、`msdb` データベースのキューから読み取り、E メールメッセージを送信します。

RDS は、Web Edition、Standard Edition、および Enterprise Edition の SQL Server のすべてのバージョンで、データベースメールをサポートします。

## 制約事項
<a name="SQLServer.DBMail.Limitations"></a>

SQL Server DB インスタンスでのデータベースメールの使用には、次の制約事項が適用されます。
+ データベースメールは、SQL Server Express Edition ではサポートされていません。
+ データベースメールの設定パラメータの変更はサポートされていません。プリセット (デフォルト) の値を表示するには、[sysmail\_help\_configure\_sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-help-configure-sp-transact-sql) ストアドプロシージャを使用します。
+ 添付ファイルは、完全にはサポートされていません。詳細については、「[添付ファイルの使用](#SQLServer.DBMail.Files)」を参照してください。
+ 添付ファイルの最大サイズは 1 MB です。
+ データベースメールは、マルチ AZ DB インスタンスで追加の設定が必要です。詳細については、「[マルチ AZ 配置に関する考慮事項](#SQLServer.DBMail.MAZ)」を参照してください。
+ 定義済み演算子に E メールメッセージを送信する SQL Server エージェントの設定はサポートされていません。

## データベースメールの Amazon RDS ストアドプロシージャと関数
<a name="SQLServer.DBMail.StoredProc"></a>

Microsoft が提供する[ストアドプロシージャ](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/database-mail-stored-procedures-transact-sql)により、データベースメールの使用 (アカウントやプロファイルの作成、一覧表示、更新、削除) が可能です。加えて、RDS は、次の表に示すストアドプロシージャおよびデータベースメールの機能を提供します。


| プロシージャ/関数 | 説明 | 
| --- | --- | 
| rds\_fn\_sysmail\_allitems | 送信メッセージ (他のユーザーの送信メッセージを含む) を表示します。 | 
| rds\_fn\_sysmail\_event\_log | イベント (他のユーザーの送信メッセージのイベントを含む) を表示します。 | 
| rds\_fn\_sysmail\_mailattachments | 添付ファイル (他のユーザーの送信メッセージの添付ファイルも含む) を表示します。 | 
| rds\_sysmail\_control | メールキュー (DatabaseMail.exe プロセス) を開始および停止します。 | 
| rds\_sysmail\_delete\_mailitems\_sp | すべてのユーザーが送信した E メールメッセージをデータベースメール内部テーブルから削除します。 | 

## 添付ファイルの使用
<a name="SQLServer.DBMail.Files"></a>

SQL Server の RDS からのデータベースメールメッセージでは、次の添付ファイル拡張子をサポートしていません。.ade、.adp、.apk、.appx、.appxbundle、.bat、.bak、.cab、.chm、.cmd、.com、.cpl、.dll、.dmg、.exe、.hta、.inf1、.ins、.isp、.iso、.jar、.job、.js、.jse、.ldf、.lib、.lnk、.mde、.mdf、.msc、.msi、.msix、.msixbundle、.msp、.mst、.nsh、.pif、.ps、.ps1、.psc1、.reg、.rgs、.scr、.sct、.shb、.shs、.svg、.sys、.u3p、.vb、.vbe、.vbs、.vbscript、.vxd、.ws、wsc、.wsf、および.wsh

データベースメールは、現在のユーザーの Microsoft Windows セキュリティコンテキストを使用して、ファイルへのアクセスを制御します。SQL Server 認証でログインするユーザーは、`@file_attachments` ストアドプロシージャで`sp_send_dbmail` パラメータを使用してファイルをアタッチすることはできません。Windows では、リモートコンピュータから別のリモートコンピュータに、SQL Server が認証情報を提供することはできません。したがって、データベースメールは、SQL Server を実行しているコンピュータ以外のコンピュータからコマンドを実行すると、ネットワーク共有からファイルをアタッチすることはできません。

ただし、SQL Server Agent ジョブを使用して、ファイルをアタッチすることができます。SQL Server Agent の詳細については、Microsoft ドキュメントの「[Amazon RDS 用 SQL Server エージェントの使用](Appendix.SQLServer.CommonDBATasks.Agent.md)」および「[SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/sql-server-agent)」を参照してください。

## マルチ AZ 配置に関する考慮事項
<a name="SQLServer.DBMail.MAZ"></a>

マルチ AZ DB インスタンスでデータベースメールを設定しても、設定はセカンダリに自動的には反映されません。マルチ AZ インスタンスをシングル AZ インスタンスに変換し、データベースメールを設定した後に、DB インスタンスをマルチ AZ に戻すことをお勧めします。次に、プライマリノードとセカンダリノードの両方に、データベースメールの設定があります。

データベースメールを設定したマルチ AZ インスタンスからリードレプリカを作成すると、レプリカはその設定を継承しますが、SMTP サーバーのパスワードは継承しません。パスワードを使用して、データベースメールアカウントを更新します。

## SMTP (ポート 25) 制限の削除
<a name="SQLServer.DBMail.SMTP"></a>

デフォルトでは、AWS は RDS for SQL Server DB インスタンスの SMTP (ポート 25) でのアウトバウンドトラフィックをブロックします。これは、Elastic Network Interface 所有者のポリシーに基づいてスパムを防ぐために行われます。必要に応じて、この制限を削除できます。詳細については、「[Amazon EC2 インスタンスまたは Lambda 関数のポート 25 の制限を解除するにはどうすればよいですか?](https://repost.aws/knowledge-center/ec2-port-25-throttle)」を参照してください。