DirectMail を EventBridge と統合し、メール配信通知を DingTalk、Message Queue for Apache RocketMQ、HTTP エンドポイントなどのターゲットにルーティングします。
イベントバスを設定すると、DirectMail 経由で送信されたメールの配信結果が、指定したルーティングルールに基づき、DingTalk、Message Queue for Apache RocketMQ、HTTP などのイベントターゲットにルーティングされます。これにより、非同期での配信結果の取得が可能になります。
イベントルーティングを設定するには、以下の手順を実行します。
イベントディストリビューションの有効化
DirectMail コンソールでイベント通知スイッチをオンにします。

EventBridge のアクティベートと権限付与
1. Alibaba Cloud ホームページで EventBridge を検索し、無料でサービスをアクティベートします。


イベントルールの作成
EventBridge コンソールで、「クラウドサービスのイベントバス」>「ルールの作成」に移動します。DirectMail 用のルール名と説明を入力します。

イベントパターンを設定します。「Alibaba Cloud 公式イベントソース」をイベントソースタイプとして選択し、イベントソースとして acs.dm を指定します。サポートされるイベントタイプは、送信失敗、送信成功、リンククリック、メール開封 です。必要に応じてイベントタイプを追加してください。サポート対象外のタイプはフィルターで除外されます。
イベントターゲットを設定するには、DingTalk、Message Service (MNS)、HTTP などのサービスタイプを選択します。詳細については、「イベントルールの管理」をご参照ください。
この例では、イベントターゲットとして Message Queue for MQTT を使用します。送信先キューを指定してください。(Message Queue for MQTT のアクティベートおよびキューの作成方法については、下記の「Message Queue for MQTT のアクティベートと受信キューの作成」セクションをご参照ください。)デフォルトのメッセージ本文は Base64 エンコーディングされていない完全なイベントです。必要に応じてリトライおよびデッドレターオプションを設定し、**[ルールの作成]** をクリックします。
ルールを作成後、EventBridge コンソールで確認できます。

イベントタイプと変更方法
サポートされるイベントタイプ
イベントタイプ | type パラメーターの値 |
dm:Deliver:Fail | |
dm:Deliver:Succeed | |
dm:Feedback:FblReport | |
dm:Feedback:Subscribe | |
dm:Feedback:UnSubscribe | |
dm:Trace:Click | |
dm:Trace:Open | |
dm:Validator:GrayListResult |
EventBridge は、メール送信後 30 日間イベントを受信します。
イベントタイプの統計設定
イベントタイプを変更するには、「イベントルール」>「イベントパターンの編集」>「イベントタイプ」をクリックします。


開封・クリック追跡の前提条件
メール開封およびクリックイベントの通知を受信するには、事前にデータ追跡を有効化する必要があります。「データ追跡の有効化」をご参照ください。
イベントメッセージの受信とリンクの検証
この例では、上記で設定した 軽量メッセージキュー を使用して、イベント配信パスを検証します。
軽量メッセージキューの設定
-
Message Queue for MQTT コンソール に移動します。Message Queue for MQTT がアクティベートされていない場合は、画面の指示に従ってアクティベートしてください。
-
左側のナビゲーションウィンドウで、キュー をクリックします。
-
キューの作成 をクリックします。
-
キュー名(例:
delivery-result-queue)を入力し、デフォルト設定のまま **[OK]** をクリックします。

トリガーイベントディストリビューション
DirectMail 経由でメールを送信後、EventBridge コンソールでイベントトレースを確認します。


イベントターゲットの結果
軽量メッセージキュー コンソールで、EventBridge ターゲットとして設定したキュー(delivery-result-queue)を選択し、**[メッセージの送受信]** をクリックします。

**[メッセージの受信]** をクリックしてイベントメッセージを表示し、**[詳細]** をクリックして全文を確認します。イベント ID が EventBridge のレコードと一致すれば、Message Service への配信が確認できます。


例:送信元アドレス別のイベント転送の設定
上記で設定したイベントディストリビューションは、DirectMail 内のすべての送信ドメインおよびアドレスに適用されます。イベントルールの JSON を変更することで、送信元アドレスなどの特定の条件に基づいてイベントをフィルターできます。
次の例では、送信元アドレスが test@hangzhou.dmtest.top の DirectMail イベントをイベントターゲットにルーティングするルールを設定します。
1. イベントルールを作成する際、フィールドに基づいてイベントをフィルターするイベントパターンを指定します。

この例では、以下のパターンを使用します。
{
"source": [
"acs.dm"
],
"type": [
"dm:Deliver:Fail",
"dm:Deliver:Succeed",
"dm:Trace:Click",
"dm:Trace:Open",
"dm:Feedback:FblReport"
],
"data": {
"from": [
"test@hangzhou.dmtest.top"
]
}
}
以下は完全なイベントメッセージ本文です。その内容と構造に基づいてイベントパターンを作成してください。
-
イベントパターン内のすべてのフィールド名は、イベント本文内に存在する必要があります。
-
イベントパターン内のフィールド名のネスト構造は、イベント本文の構造と一致している必要があります。
-
マッチングは文字単位で厳密に行われ、大文字・小文字が区別されます。文字列は正規化されません。
-
パターン内の値は JSON 規則に従う必要があります。文字列は引用符で囲み、数値はそのまま記述し、true、false、null のキーワードは引用符なしで記述します。
-
イベントパターンは AND および OR の両方のロジックをサポートします。パターン内の異なる キー 間では AND ロジックが適用され、キー に対する値の配列では OR ロジックが適用されます。
デフォルトのイベントメッセージ本文:
メール配信失敗
メールの配信に失敗した場合、EventBridge は次のようなイベントを受信します。
{
"data": {
"header": {
"X-Notify-Message-ID": "test******@******"
},
"env_id": "60000******",
"account": "batch******@top",
"from": "batch******@top",
"rcpt": "xxx******@aliyun.com",
"msg_id": "1df******@******",
"channel_name": "bg:vip_*",
"outbound_ip": "8.*.*.7",
"send_time": "2024-04-29T11:07:04",
"deliver_time": "2024-04-29T11:07:12",
"status": "2",
"event": "dm:Deliver:Fail",
"region": "cn-hangzhou",
"err_code": "554",
"err_msg": "554 RCPT xxx******@aliyun.com dosn't exist",
"failed_type": "SmtpNxBox",
"esp": "*mail.com",
"ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
"is_dedicated_ip": true,
"tag": "xxxxx"
},
"id": "8734hhidu983hi457",
"source": "acs:dm",
"specversion": "1.0",
"subject": "acs:dm:cn-hangzhou:{AccountId}:*",
"time": "2024-04-29T11:07:12+08:00",
"type": "dm:Deliver:Fail",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2024-04-29T11:07:13.179PRC",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX"
}data フィールド内のパラメーターの説明を次の表に示します。
パラメーター | タイプ | 例 | 説明 |
header | Object | メールに関連するヘッダー。 | |
X-Notify-Message-ID | String | test****@example.com | カスタムヘッダー X-Notify-Message-ID。 |
env_id | String | 60000**** | メール送信時にシステムから返されるメール ID。 |
account | String | batch****@top | 送信者のメールアドレス。 |
from | String | batch****@top | 送信者のメールアドレス。 |
rcpt | String | a****@aliyun.com | 受信者のメールアドレス。 |
msg_id | String | 1df****@example.com | メールの Message-ID フィールド。 |
channel_name | String | bg:vip_* | この配信に使用されたアウトバウンド IP アドレスが属するチャンネルの名前。 |
outbound_ip | String | 8.*.*.7 | この配信のアウトバウンド IP アドレス。 |
send_time | String | 2024-04-29T11:07:04 | メールが受理された時刻。 |
deliver_time | String | 2024-04-29T11:07:12 | メール配信が完了した時刻。 |
status | String | 2 | 配信ステータス。
|
event | String | dm:Deliver:Fail | イベントメッセージのタイプ。これは type パラメーターと同じです。 |
region | String | cn-hangzhou | イベントが発生したリージョン。 |
err_code | String | 554 | 配信完了時に受信者のメールサービスプロバイダー (ESP) から返されたコード。 |
err_msg | String | 554 RCPT a****@aliyun.com dosn't exist | 配信完了時に受信者の ESP から返されたメッセージ。 |
failed_type | String | SmtpNxBox | 配信結果の分類。 |
esp | String | *mail.com | 受信者のメールプロバイダーの分類。 |
ip_pool_id | String | 10306c37-****-****-a82f-1dafb56a9dd2 | メール送信に使用された IP プールの ID。 |
is_dedicated_ip | Boolean | true | 専用 IP アドレスが使用されたかどうかを示します。 |
tag | String | xxxxx | メール送信に使用されたタグ。 |
メール配信成功
メールが正常に配信された場合、EventBridge は次のようなイベントを受信します。
{
"data": {
"header": {
"X-Notify-Message-ID": "test******@******"
},
"env_id": "60000******",
"account": "batch******@top",
"from": "batch******@top",
"rcpt": "xxx******@aliyun.com",
"msg_id": "1df******@******",
"channel_name": "bg:vip_*",
"outbound_ip": "8.*.*.7",
"send_time": "2024-04-29T11:07:04",
"deliver_time": "2024-04-29T11:07:12",
"status": "0",
"event": "dm:Deliver:Succeed",
"region": "cn-hangzhou",
"err_code": "250",
"err_msg": "250 Send Mail OK",
"failed_type": "SendOk",
"esp": "*mail.com",
"ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
"is_dedicated_ip": true,
"tag": "xxxxx"
},
"id": "8734hhidu983hi457",
"source": "acs:dm",
"specversion": "1.0",
"subject": "acs:dm:cn-hangzhou:{AccountId}:*",
"time": "2024-04-29T11:07:12+08:00",
"type": "dm:Deliver:Succeed",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2024-04-29T11:07:13.179PRC",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX"
}data フィールド内のパラメーターの説明については、「パラメーターの説明」をご参照ください。
メール FBL レポートデータ
フィードバックループ (FBL) を通じてメールが報告された場合、EventBridge は次のようなイベントを受信します。
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Feedback:FblReport",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"send_time": "1726821644",
"send_email": "from@xxx.com",
"block_email": "to@yyy.com",
"subject": "Hello Mr.xxx",
"message_id": "<msgid***@xxx.com>",
"block_time": "1726821667",
"fbl_isp": "outlook**",
"fingerprint": "SMTPD_abc****"
}
}
data フィールド内のパラメーター:
|
パラメーター |
タイプ |
例 |
説明 |
|
send_time |
String |
1726821644 |
メール送信時刻。 |
|
send_email |
String |
from@xxx.com |
送信者のメールアドレス。 |
|
block_email |
String |
to@yyy.com |
ブロックされた受信者のメールアドレス。 |
|
subject |
String |
Hello Mr.xxx |
メールの件名。 |
|
message_id |
String |
<msgid***@xxx.com> |
メールの一意な識別子。 |
|
block_time |
String |
1726821667 |
メールがブロックされた時刻。 |
|
fbl_isp |
String |
outlook** |
送信者のインターネットサービスプロバイダー (ISP)。 |
|
fingerprint |
String |
SMTPD_abc**** |
メールの指紋。 |
メール再サブスクリプションデータ
受信者が再サブスクリプションした場合、EventBridge は次のようなイベントを受信します。
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Feedback:Subscribe",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"operate_time": "2024-04-29T11:25:48",
"envid": "6000*********",
"from": "from@xxx.com",
"rcpt": "to@yyy.com",
"client_ip": "102.**.**.1"
}
}
data フィールド内のパラメーター:
|
パラメーター |
タイプ |
例 |
説明 |
|
operate_time |
String |
2024-04-29T11:25:48 |
操作が発生した時刻。時刻は UTC です。 |
|
env_id |
String |
6000********* |
メール送信時にシステムから返されるメール ID。 |
|
from |
String |
from@xxx.com |
送信者のアドレス。 |
|
rcpt |
String |
to@yyy.com |
受信者の住所。 |
|
client_ip |
String |
102.**.**.1 |
開封イベントのクライアント IP アドレス |
メール登録解除データ
受信者が登録を解除した場合、EventBridge は次のようなイベントを受信します。
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Feedback:UnSubscribe",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"operate_time": "2024-04-29T11:25:48",
"envid": "6000*********",
"from": "from@xxx.com",
"rcpt": "to@yyy.com",
"client_ip": "102.**.**.1"
}
}
data フィールド内のパラメーター:
|
パラメーター |
タイプ |
例 |
説明 |
|
operate_time |
String |
2024-04-29T11:25:48 |
操作が発生した時刻。時刻は UTC です。 |
|
env_id |
String |
6000********* |
メール送信時にシステムから返されるメール ID。 |
|
from |
String |
from@xxx.com |
送信者のアドレス。 |
|
rcpt |
String |
to@yyy.com |
受信者の住所。 |
|
client_ip |
String |
102.**.**.1 |
イベントのソースクライアントの IP アドレス |
クリックイベント
受信者がメール内のリンクをクリックした場合、EventBridge は次のようなイベントを受信します。
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Trace:Click",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"operate_time": "2024-04-29T11:25:48",
"client_ip": "202.**.**.1",
"env_id": "60000******",
"from": "batch******@top",
"rcpt": "xxx******@aliyun.com",
"msg_id": "1df******@******",
"event": "dm:Trace:Click",
"region": "cn-hangzhou",
"url": "https://www.aliyun.com",
"outbound_ip": "102.**.**.1",
"esp": "*mail.com",
"ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
"is_dedicated_ip": true,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1",
"tag": "xxxxx"
}
}
data フィールド内のパラメーターの説明を次の表に示します。
パラメーター | タイプ | 例 | 説明 |
operate_time | String | 2024-04-29T11:25:48 | 操作が発生した時刻。 |
client_ip | String | 202.**.**.1 | リンクをクリックしたクライアントの IP アドレス。 |
env_id | String | 60000****** | メール送信時にシステムから返されるメール ID。 |
from | String | batch****@top | 送信者のアドレス。 |
rcpt | String | xxx******@aliyun.com | 受信者の住所。 |
msg_id | String | 1df******@****** | メール内の Message-ID フィールド。 |
event | String | dm:Trace:Click | イベントタイプ。 |
region | String | cn-hangzhou | イベントが発生したリージョン。 |
url | String | https://www.aliyun.com | クリックされた URL。 |
outbound_ip | String | 102.**.**.1 | メール送信に使用されたアウトバウンド IP アドレス。 |
esp | String | *mail.com | 受信者のメールプロバイダーの分類。 |
ip_pool_id | String | 10306c37-****-****-a82f-1dafb56a9dd2 | メール送信に使用された IP プールの ID。 |
is_dedicated_ip | Boolean | true | 専用 IP アドレスが使用されたかどうかを示します。 |
user_agent | String | Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 | クリックイベントのユーザーエージェント。 |
tag | String | xxxxx | メール送信に使用されたタグ。 |
イベントを開く
イベントが発生した場合、EventBridge は次のようなサンプルイベントを受信します。
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Trace:Open",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"operate_time": "2024-04-29T11:25:48",
"client_ip": "202.**.**.1",
"env_id": "60000******",
"from": "batch******@top",
"rcpt": "xxx******@aliyun.com",
"msg_id": "1df******@******",
"event": "dm:Trace:Open",
"region": "cn-hangzhou",
"outbound_ip": "102.**.**.1",
"esp": "*mail.com",
"ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
"is_dedicated_ip": true,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1",
"tag": "xxxxx"
}
}
data フィールド内のパラメーターの説明を次の表に示します。
パラメーター | タイプ | 例 | 説明 |
operate_time | String | 2024-04-29T11:25:48 | 操作が発生した時刻。 |
client_ip | String | 192.168.XX.XX | メールを開封したクライアントの IP アドレス。 |
env_id | String | 60000****** | メール送信時にシステムから返されるメール ID。 |
from | String | batch****@top | 送信者のアドレス。 |
rcpt | String | a****@aliyun.com | 受信者のアドレス。 |
msg_id | String | 1df****@example.com | メール内の Message-ID フィールド。 |
event | String | dm:Trace:Click | イベントタイプ。 |
region | String | cn-hangzhou | イベントが発生したリージョン。 |
outbound_ip | String | 102.**.**.1 | メール送信に使用されたアウトバウンド IP アドレス。 |
esp | String | *mail.com | 受信者のメールプロバイダーの分類。 |
ip_pool_id | String | 10306c37-****-****-a82f-1dafb56a9dd2 | メール送信に使用された IP プールの ID。 |
is_dedicated_ip | Boolean | true | 専用 IP アドレスが使用されたかどうかを示します。 |
user_agent | String | Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 | オープンイベントのユーザーエージェント。 |
tag | String | xxxxx | メール送信に使用されたタグ。 |
グレイリストアドレス検証の非同期結果
グレイリストアドレス検証の非同期結果が利用可能になると、EventBridge は次のようなイベントを受信します。
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Validator:GrayListResult",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"request_id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"submission_time": "1763541726",
"completion_time": "1763541793",
"email": "xxxxxx@yyy.com",
"status": "INVALID",
"sub_status": "MAILBOX_NOT_EXISTS",
"provider": "XXXX",
"is_free_mail": false,
"local_part": "xxxxxx",
"domain_part": "yyy.com"
}
}
data フィールド内のパラメーター:
|
パラメーター |
タイプ |
例 |
説明 |
|
request_id |
String |
45ef4dewdwe1-7c35-447a-bd93-fab**** |
リクエスト送信時に API から返されたリクエスト ID。 |
|
submission_time |
String |
1763541726 |
検証リクエストが送信された時刻。時刻は UTC です。 |
|
completion_time |
String |
1763541793 |
検証が完了した時刻。時刻は UTC です。 |
|
|
String |
xxxxxx@yyy.com |
検証されたメールアドレス。 |
|
status |
String |
INVALID |
検証後のメールアドレスのステータス。 |
|
sub_status |
String |
MAILBOX_NOT_EXISTS |
検証結果に関する追加情報を提供するサブステータス。 |
|
provider |
String |
XXXX |
アドレスのメールプロバイダーの分類。 |
|
is_free_mail |
Boolean |
false |
アドレスがフリーメールプロバイダーからのものかどうかを示します。 |
|
local_part |
String |
xxxxxx |
メールアドレスのローカル部。小文字に変換され、サブアドレッシングタグが削除されています。 |
|
domain_part |
String |
yyy.com |
メールアドレスのドメイン部。小文字に変換されています。 |
イベント詳細内のすべての時刻フィールドは、協定世界時 (UTC) です。
2. 送信元を検証するために、test@hangzhou.dmtest.top からメールを送信します。

3. Message Service (MNS) キューでメッセージを確認します。(この例では、イベントターゲットとして Message Service (MNS) を使用しています。別のターゲットを設定することも可能です。)

4. 別の送信元アドレスからメールを送信し、EventBridge > イベントトレースを確認します。イベントはトレースに表示されますが、Message Queue for Apache RocketMQ には配信されないため、指定された送信元アドレスからのみ通知がトリガーされることが確認できます。

