本記事の内容
OCIのEmail Deliveryはサービスリミットにより一日に送信可能なメール数が決められています。指定した時間の範囲で送信したメール数をOCI CLIで把握する方法を試してみたので、その内容を記載します。
確認方法
今回の検証は、OCI ComputeからmailxとEmail Deliveryを用いてメール送信を行い、その結果をOCI CLIで確認するという方法を行っています。
必要な設定は事前に以下ハンズオンを参考に行い、メール送信が可能な状態にしておきます。OCI CLIのインストールはマニュアルを参照して事前に済ませております。
【Email Delivery ハンズオン】
https://oracle-japan.github.io/ocitutorials/intermediates/sending-emails-1/
【OCI CLI】
https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/cliinstall.htm
上記に加え、今回確認するログはEmail Deliveryの配信到達性ダッシュボードのログの有効化が必要になるため、以下マニュアルを参考に設定を行っています。今回は既存のロググループにログを登録するよう設定しました。
【マニュアル】
https://docs.oracle.com/ja-jp/iaas/Content/Email/Reference/dashboard-topic-enabling-logging.htm
検証結果
まずは以下コマンドでメールを送信します。
echo "メールテスト" | mailx -s "メールテスト" <送信先メールアドレス>
メール受信が確認できた後、OCIコンソールのLoggingサービスから、配信到達性ダッシュボードのログの有効化にて設定したロググループでログを確認してみます。
メールが受信された場合、data.messageが「Accepted email <送信元> → <送信先>」となっていることが分かります。そのため、OCI CLIで検索する際に、以下のように「where data.message = '\''Accepted*'\''」とすることで、成功した送信数を取得します。
oci logging-search search-logs --search-query 'search "<compartment_ocid>/<log_goup_ocid>" | where data.message = '\''Accepted*'\'' | count' --time-start YYYY-MM-DDT00:00:00Z --time-end YYYY-MM-DDT23:59:00Z
検索結果はJSON形式で返されます。
{
"data": {
"fields": null,
"results": [
{
"data": {
"count": 1
}
}
],
"summary": {
"field-count": null,
"result-count": 1
}
}
}
countが「1」となっていることから、対象範囲の時間帯で送信成功したメールの数が取得できたことを確認できました。
最後に
サービスリミットはテナンシに対して課されますが、テナンシ全体のメール送信数を検索する方法は無いようでした。そのため、コンパートメント毎にメール送信数を検索し、それらを集計するようシェルスクリプトを構成することで、指定した検索時間帯でのメール送信数を把握することができると考えられます。