Amazon RDS では、UTL_MAIL オプションおよび SMTP サーバーを使用して Oracle UTL_MAIL をサポートしています。UTL_MAIL パッケージを使用して、データベースから直接電子メールを送信できます。Amazon RDS では、Oracle の次のバージョンで UTL_MAIL をサポートしています。
Oracle Database 21c (21.0.0.0)、すべてのバージョン
Oracle Database 19c (19.0.0.0)、すべてのバージョン
UTL_MAIL を使用する場合の制約をいくつか次に示します。
-
UTL_MAIL は Transport Layer Security (TLS) をサポートしていないため、E メールは暗号化されません。
カスタムの Oracle ウォレットを作成およびアップロードして、リモート SSL/TLS リソースに安全に接続するには、「証明書と Oracle ウォレットを使用した、UTL_HTTP アクセスの設定」の手順を行います。
Wallet に必要な固有の証明書は、サービスによって異なります。AWS のサービスの場合は、通常、Amazon Trust Services リポジトリ
にあります。 -
UTL_MAIL は、SMTP サーバーでの認証をサポートしていません。
-
E メールでは 1 つの添付ファイルのみ送信できます。
-
32 K より大きい添付ファイルを送信することはできません。
-
ASCII および Extended Binary Coded Decimal Interchange Code (EBCDIC) 文字エンコードのみ使用できます。
-
SMTP ポート (25) は、Elastic Network Interface 所有者のポリシーに基づいてスロットリングされます。
UTL_MAIL を有効にすると、DB インスタンスのマスターユーザーのみに実行権限が付与されます。必要に応じて、UTL_MAIL を使用できるよう、マスターユーザーは他のユーザーに実行権限を付与することができます。
重要
UTL_MAIL プロシージャの使用を追跡するため、Oracle の組み込み監査機能を有効にすることをお勧めします。
Oracle UTL_MAIL の前提条件
Oracle UTL_MAIL を使用するための前提条件は次のとおりです。
-
1 つ以上の SMTP サーバーと、対応する IP アドレスまたはパブリック/プライベートドメインネームサーバー (DNS) 名。カスタム DNS サーバーを通じて解決されるプライベート DNS 名については、「カスタム DNS サーバーのセットアップ」を参照してください。
Oracle UTL_MAIL オプションの追加
DB インスタンスに Oracle UTL_MAIL オプションを追加する一般的な手順は以下のとおりです。
新しいオプショングループを作成するか、既存のオプショングループをコピーまたは変更します。
オプショングループに [] オプションを追加します。
オプショングループを DB インスタンスに関連付けます。
UTL_MAIL オプションの追加後、オプショングループがアクティブになるとすぐに、UTL_MAIL がアクティブになります。
UTL_MAIL オプションを DB インスタンスに追加するには
-
使用するオプショングループを決定します。新しいオプショングループを作成することも、既存のオプショングループを使用することもできます。既存のオプショングループを使用する場合は、次のステップは飛ばしてください。または、次の設定でカスタム DB オプショングループを作成します。
-
[Engine] で、使用する Oracle のエディションを選択します。
-
[メジャーエンジンのバージョン] で、DB インスタンスのバージョンを選択します。
詳細については、「オプショングループを作成する」を参照してください。
-
-
オプショングループに [UTL_MAIL] オプションを追加します。オプションの追加方法の詳細については、「オプショングループにオプションを追加する」を参照してください。
-
新規または既存の DB インスタンスに、DB オプショングループを適用します。
-
新規 DB インスタンスの場合は、インスタンスを起動するときにオプショングループを適用します。詳細については、「Amazon RDS DB インスタンスの作成」を参照してください。
-
既存の DB インスタンスの場合は、インスタンスを修正し、新しいオプショングループを添付することで、オプショングループを適用します。詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。
-
Oracle UTL_MAIL の使用
UTL_MAIL オプションを有効にした後、それを使用する前に、SMTP サーバーを設定する必要があります。
SMTP_OUT_SERVER パラメータを有効な IP アドレスまたはパブリック DNS 名に設定することで、SMTP サーバーを設定します。SMTP_OUT_SERVER パラメータでは、複数のサーバーのアドレスのカンマ区切りリストを指定できます。初期のサーバーが利用できない場合、UTL_MAIL は次のサーバーを順に試します。
DB パラメータグループを使用して、DB インスタンスのデフォルトの SMTP_OUT_SERVER を設定できます。DB インスタンスで、データベースで以下のコードを実行して、セッションの SMTP_OUT_SERVER パラメータを設定できます。
ALTER SESSION SET smtp_out_server = mailserver.domain.com:25
;
UTL_MAIL オプションが有効になり、SMTP_OUT_SERVER が設定されたら、SEND
プロシージャを使用して E メールを送信できます。詳細については、Oracle ドキュメントの UTL_MAIL
Oracle UTL_MAIL オプションの削除
DB インスタンスから Oracle UTL_MAIL を削除できます。
DB インスタンスから UTL_MAIL を削除するには、次のいずれかを実行します。
-
複数の DB インスタンスから UTL_MAIL を削除するには、属しているオプショングループから UTL_MAIL オプションを削除します。この変更はそのオプショングループを使用するすべての DB インスタンスに影響します。詳細については、「オプショングループからオプションを削除する」を参照してください。
-
単一の DB インスタンスから UTL_MAIL を削除するには、DB インスタンスを変更し、UTL_MAIL オプションが含まれていない別のオプショングループを指定します。デフォルト (空) のオプショングループや別のカスタムオプショングループを指定できます。詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。
トラブルシューティング
Amazon RDS で UTL_MAIL を使用する際に生じる可能性がある問題は以下のとおりです。
-
Throttling。SMTP ポート (25) は、Elastic Network Interface 所有者のポリシーに基づいてスロットリングされます。UTL_MAIL を使用して正常に E メールを送信できたにもかかわらず、
ORA-29278: SMTP transient error: 421 Service not available
エラーが表示された場合は、スロットリングされている可能性があります。E メール配信がスロットリングされた場合は、バックオフアルゴリズムを実装することをお勧めします。バックオフアルゴリズムの詳細については、「AWS でのエラーの再試行とエクスポネンシャルバックオフ」および「"throttling Maximum sending rate exceeded" エラーの対処法」を参照してください。 この調整の削除をリクエストできます。詳細については、「EC2 インスタンスからポート 25 のスロットルを削除する方法を教えてください。
」を参照してください。