Email Service は分析を公開しており、すべてのドメインについてメール送信のパフォーマンスと配信率を確認できます。
Cloudflare ダッシュボード ↗ のチャートに表示されるメトリクスは、Cloudflare の GraphQL Analytics API から取得しています。GraphQL または HTTP クライアントから プログラムで メトリクスにアクセスできます。
Email Service が現在公開しているメトリクスは次のとおりです。
| データセット | GraphQL データセット名 | 説明 |
|---|---|---|
| 送信(集計) | emailSendingAdaptiveGroups |
ステータス、日付、送信ドメイン、認証結果などのディメンションでグループ化した、メール送信件数の集計です。 |
| 送信(イベント) | emailSendingAdaptive |
送信者、宛先、件名、メッセージ ID、エラー情報など、個別のメール送信イベントの詳細です。 |
| ルーティング(集計) | emailRoutingAdaptiveGroups |
ステータス、日付、受信ドメイン、認証結果などのディメンションでグループ化した、メールルーティング件数の集計です。 |
| ルーティング(イベント) | emailRoutingAdaptive |
送信者、宛先、件名、メッセージ ID、処理の判断など、個別のメールルーティングイベントの詳細です。 |
メトリクスは過去 31 日間を対象にクエリでき、同じ期間保持されます。
Email Service のドメイン単位の分析は、Cloudflare ダッシュボードで確認できます。現在および過去のメトリクスを表示する手順は次のとおりです。
- Cloudflare ダッシュボード ↗ にログインし、アカウントを選択します。
- Compute > Email Service に移動し、Email Sending または Email Routing を選択します。
- 既存のドメインを選ぶか、アカウント全体のメトリクスを表示します。
- Analytics タブを選択します。
必要に応じて、クエリする時間範囲を選べます。デフォルトは直近 24 時間です。
GraphQL Analytics API を使って、Email Service ドメインの分析をプログラムからクエリできます。この API は Cloudflare ダッシュボードと同じデータセットを参照し、GraphQL の イントロスペクション にも対応しています。
GraphQL Analytics API を使い始めるには、ドキュメントに沿って GraphQL Analytics API の認証 を設定します。API トークンには Analytics Read 権限が必要です。
これらは ゾーンレベル のデータセットです。クエリするときは、zoneTag フィルターにゾーン ID(アカウント ID ではありません)を指定します。Email Service の GraphQL データセットは次のとおりです。
emailSendingAdaptiveGroups— グループ化できるディメンション付きの、メール送信件数の集計emailSendingAdaptive— 個別のメール送信イベントemailRoutingAdaptiveGroups— グループ化できるディメンション付きの、メールルーティング件数の集計emailRoutingAdaptive— 個別のメールルーティングイベント
emailSendingAdaptiveGroups データセットは、グループ化とフィルターに次のディメンションを使えます。
| ディメンション | 型 | 説明 |
|---|---|---|
date |
Date | 日単位のグループ化 |
datetime |
Time | イベントの正確なタイムスタンプ |
datetimeMinute |
Time | 分単位のグループ化 |
datetimeFiveMinutes |
Time | 5 分間隔のグループ化 |
datetimeFifteenMinutes |
Time | 15 分間隔のグループ化 |
datetimeHour |
Time | 時間単位のグループ化 |
status |
string | 配信ステータス(例: delivered、deliveryFailed) |
eventType |
string | メールの起点(incoming、forward、reply、newEmail) |
sendingDomain |
string | メールの送信に使ったドメイン |
envelopeTo |
string | 受信者のエンベロープアドレス |
errorCause |
string | 送信失敗の原因 |
arc |
string | ARC 認証結果 |
dkim |
string | DKIM 認証結果 |
dmarc |
string | DMARC 認証結果 |
spf |
string | SPF 認証結果 |
isSpam |
uint8 | メールがスパムとしてフラグされたかどうか |
isNDR |
uint8 | 非配信レポートかどうか |
isLastEvent |
uint8 | このメールの最後のイベントかどうか |
emailSendingAdaptive データセットには上記に加え、イベント単位のフィールド from、to、subject、messageId、sessionId、errorDetail があります。
emailRoutingAdaptiveGroups データセットは、グループ化とフィルターに次のディメンションを使えます。
| ディメンション | 型 | 説明 |
|---|---|---|
date |
Date | 日単位のグループ化 |
datetime |
Time | イベントの正確なタイムスタンプ |
datetimeMinute |
Time | 分単位のグループ化 |
datetimeFiveMinutes |
Time | 5 分間隔のグループ化 |
datetimeFifteenMinutes |
Time | 15 分間隔のグループ化 |
datetimeHour |
Time | 時間単位のグループ化 |
status |
string | メールの処理結果 |
eventType |
string | メールの起点(incoming、forward、reply、newEmail) |
action |
string | ルーティングルールが適用したアクション |
ruleMatched |
string | メールが一致したルーティングルールの UUID |
arc |
string | ARC 認証結果 |
dkim |
string | DKIM 認証結果 |
dmarc |
string | DMARC 認証結果 |
spf |
string | SPF 認証結果 |
isSpam |
uint8 | メールがスパムとしてフラグされたかどうか |
isNDR |
uint8 | 非配信レポートかどうか |
isLastEvent |
uint8 | このメールの最後のイベントかどうか |
emailRoutingAdaptive データセットには上記に加え、イベント単位のフィールド from、to、subject、messageId、sessionId、errorDetail、ruleMatched があります。
次は、Email Service の分析を取得するよくある GraphQL クエリです。これらのクエリは変数 $zoneTag を使います。値には Cloudflare のゾーン ID を指定します。ゾーン ID は、Cloudflare ダッシュボードのドメイン Overview ページで確認できます。
{
"zoneTag": "<YOUR_ZONE_ID>",
"start": "2024-07-15",
"end": "2024-07-30"
}指定した期間のメール件数を、date と status(例: delivered、deliveryFailed)でグループ化してクエリします。
query EmailSendingByStatus($zoneTag: string!, $start: Date!, $end: Date!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailSendingAdaptiveGroups(
filter: { date_geq: $start, date_leq: $end }
limit: 10000
orderBy: [date_DESC]
) {
count
dimensions {
date
status
}
}
}
}
}指定した期間の配信失敗の原因を、errorCause と sendingDomain でグループ化して調べます。
query EmailDeliveryFailures($zoneTag: string!, $start: Date!, $end: Date!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailSendingAdaptiveGroups(
filter: { date_geq: $start, date_leq: $end, status: "deliveryFailed" }
limit: 10000
orderBy: [date_DESC]
) {
count
dimensions {
date
errorCause
sendingDomain
}
}
}
}
}メール送信件数を時間単位でグループ化してクエリします。トラフィックの傾向を把握するのに役立ちます。
query EmailSendingHourlyVolume($zoneTag: string!, $start: Time!, $end: Time!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailSendingAdaptiveGroups(
filter: { datetimeHour_geq: $start, datetimeHour_leq: $end }
limit: 10000
orderBy: [datetimeHour_ASC]
) {
count
dimensions {
datetimeHour
status
}
}
}
}
}特定の配信問題を切り分けるため、個別のメールイベントをクエリします。emailSendingAdaptive データセットを使い、datetime(Time 型)でフィルターします。
query RecentEmailEvents($zoneTag: string!, $start: Time!, $end: Time!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailSendingAdaptive(
filter: { datetime_geq: $start, datetime_leq: $end }
limit: 50
orderBy: [datetime_DESC]
) {
datetime
from
to
subject
status
eventType
sendingDomain
messageId
errorCause
errorDetail
dkim
dmarc
spf
isSpam
}
}
}
}指定した期間にルーティングされたメール件数を、date と status でグループ化してクエリします。
query EmailRoutingByStatus($zoneTag: string!, $start: Date!, $end: Date!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailRoutingAdaptiveGroups(
filter: { date_geq: $start, date_leq: $end }
limit: 10000
orderBy: [date_DESC]
) {
count
dimensions {
date
status
}
}
}
}
}どのルーティングルールがメールに一致したかを、ruleMatched と action でグループ化して確認します。
query EmailRoutingRuleActivity($zoneTag: string!, $start: Date!, $end: Date!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailRoutingAdaptiveGroups(
filter: { date_geq: $start, date_leq: $end }
limit: 10000
orderBy: [date_DESC]
) {
count
dimensions {
date
ruleMatched
action
}
}
}
}
}切り分けのために、個別のルーティングイベントをクエリします。
query RecentRoutingEvents($zoneTag: string!, $start: Time!, $end: Time!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailRoutingAdaptive(
filter: { datetime_geq: $start, datetime_leq: $end }
limit: 50
orderBy: [datetime_DESC]
) {
datetime
from
to
subject
status
action
ruleMatched
messageId
errorDetail
dkim
dmarc
spf
isSpam
}
}
}
}- メールログ — ダッシュボードで個別のメールアクティビティを確認します。
- 監査ログ — 設定変更を追跡します。
- GraphQL Analytics API — GraphQL API の完全なリファレンスです。