最近J-POPではVaundyが個人的には「沼」きてますね。Aimerとのコラボ曲『地球儀』で沼落ちしました。新曲『踊り子』は小松菜奈のMVがよくてヘビロテで観ちゃってます。
Vaundyといえば…ばうん…バウンスメールですね!
Adobe Campaign(以下「Campagin」)は主要なタッチチャネルのひとつとして電子メールを利用できます。ただメールは、届かないことがあるんですよね。その届かないという状態を、Campaignはどう認識し、対処しているんでしょうか。
「届かない」という結果が返ってくるのを「バウンス」と呼びます。Campaginではバウンスの処理の仕方が2通りあります。「同期」バウンスと「非同期」バウンスです。
同期バウンス
実際のクライアントコンソールで見てみましょう。ある配信の開始後約1時間経過した配信ログ画面です:
2カラムめが「ステータス」で、ここが「失敗」となっているのがバウンスです。たとえば「失敗」のいちばん下のものを見てください。3カラムめ「理由」が「無効なアカウント」、「テキスト」カラムが「El usuario esta en estado: inactivo」とかいって何語だかすらわかりませんが、要は「ユーザーステータス: 非アクティブ」ということらしいですよ。これが同期バウンスの典型例で、Campaignからの送信要求に対し、宛先メールサーバーが、そのアドレスは「無効なアカウント」だよ、と弾き返してきたのです。するとつまり――ここちょっと注意してほしいんですが――同期バウンスとは、CampaignからのSMTPリクエストに対するSMTPレスポンスがその実体である、ということ。同期バウンスでは、メールが返ってきてるわけではないのです。メール受信してないから、POP3関係ありません。実際この同期バウンスに対応するサーバーログは、メール送信プロセスであるmtachildが生成しています:
2022-01-05 18:07:38.733+09 000062D5 000062D5 1 warning log 550 Account disabled / El usuario esta en estado: inactivo
mtachildプロセスが発したSMTPコマンドに対し、宛先メールサーバーがレスポンスコード550で応答。その結果が上掲クライアントコンソール画面に反映されているのです。
非同期バウンス
Campaignで「バウンスしたEメールの管理」を設定するとinMailプロセスが起動するんですが、inMailはPOP3でバウンスメールを取得するためのものなので、じつはここまでの話とは関係ありません。「メールが返ってきてるわけではない」からPOP3いらないんですよ。
えっじゃあPOP3はどこで…とお思いでしょうか。そこで冒頭の話に戻ります。もうひとつのバウンス、「非同期」です。
同期バウンスは実体がSMTPレスポンスだとお話ししました。リクエストに対するレスポンスだから即座に返ってくる。だから同期なわけです。「非同期」はそれとは違い、宛先メールサーバーがいったんメールを受信しますが、それをわざわざバウンスメールとして突き返してきます。だから時間差が発生する。「非同期」たる所以です。
また画面で見てみましょう。別配信の配信ログです:
「ik1mwjonn5qy2」といういかにもあやしげなメールアドレスへ配信されたことになっていますね。宛先メールサーバーがCampaignからのSMTPリクエストをいったん受信したのです。しかしじつは、そんなメールアドレスは宛先ドメインにやっぱり存在しません。なので、宛先メールサーバーはバウンスメールを返送します。「非同期」バウンスです。
ユーザーが存在しないなどのエラーに対し、同期バウンスを返すか非同期バウンスを返すか、そのSMTPレスポンスの中身やバウンスメールの形式などは、相手側、宛先メールサーバーの設定しだいです。
返されたバウンスメールは、inMailプロセスがPOP3で受信します。その様子をinMailプロセスの冗長ログで見てみましょう:
17:24:10 > Connection opened for user 'POP3アカウント名' on server 'POP3サーバー名'
17:24:10 > POP3 Server: '+OK <1d5f.8adf3e.61f79caa.TIMG4aqizhSXNKDMbz+mdA==@mail02-md>'
17:24:10 > POP3 Client: 'USER POP3アカウント名'
17:24:10 > POP3 Server: '+OK'
17:24:10 > POP3 Client: 'PASS *******'
17:24:10 > POP3 Server: '+OK Logged in.'
17:24:10 > POP3 Client: 'STAT'
17:24:11 > POP3 Server: '+OK 1 110220'
17:24:11 > 1 message(s) (107.6 kB) for user 'POP3アカウント名' on server 'POP3サーバー名'.
17:24:11 > POP3 Client: 'RETR 1'
17:24:11 > MSG 1, 1429 byte(s) received (1.2965 %).
17:24:11 > MSG 1, 2877 byte(s) received (2.61023 %).
17:24:11 > MSG 1, 4325 byte(s) received (3.92397 %).
…中略…
17:24:12 > MSG 1, 107133 byte(s) received (97.1992 %).
17:24:12 > MSG 1, 108581 byte(s) received (98.513 %).
17:24:12 > MSG 1, 110220 byte(s) received (100 %).
17:24:12 > Receiving first message for user 'POP3アカウント名' on server 'POP3サーバー名'.
17:24:12 > Receiving last message for user 'POP3アカウント名' on server 'POP3サーバー名'.
17:24:12 > 「送信者アドレス」からのメッセージ : ルール「User_unknown」が一致しました。メッセージは削除されました。
17:24:12 > 「送信者アドレス」からのメッセージ : ルール「User_unknown」が一致しました。メッセージは削除されました。
17:24:13 > POP3 Client: 'DELE 1'
17:24:13 > POP3 Server: '+OK Marked to be deleted.'
17:24:14 > POP3 Client: 'QUIT'
17:24:14 > POP3 Server: '+OK Logging out, messages deleted.'
17:24:24 > Connection closed for user 'POP3アカウント名' on server 'POP3サーバー名'
煩雑なため詳細説明は割愛しますが、ここではとりあえずinMailがバウンスメールを受信したんだなというイメージだけつかんでください。で、このとき、inMailはデータベースの配信ログを更新します。するとさっきの画面がどうなるか:
はい、さっきは「送信済み」になっていた宛先が「失敗」になってますね。このように、あとからステータスが変化するのが非同期バウンスで、inMailがPOP3でバウンスメールを受信することで処理されています。
…いかがでしょうか。たかがこれしきのことと思いきや、違う意味でなかなか「沼」ですね。そんな、あなたの知らないCampaignバウンスの世界を、あと何回かに分けてご案内していきたいと思います。お付き合いいただければうれしいです。
以上、筆者・跡部官辺が…あとべかんぺん…Adobe Campaignについてお届けしました!
本稿の内容は筆者のオンプレミス型デモ環境(Adobe Campaign Classic 9032@3a9dc9c・レガシーMTA)上で実施した検証に基づきます。別環境における同様の動作を保証するものではありません。またデータは架空のものであり、既存の配信や実在の組織とはいっさい関係がありません。