Campaign Classic - 技術的なレコメンデーション technical-recommendations
Adobe Campaign Classicを使用する際に、配信品質を向上させるために使用できるテクニック、設定およびツールを以下に示します。
設定 configuration
逆引き DNS reverse-dns
Adobe Campaign は、IP アドレスに対してリバース DNS が提供されているかどうか、そのリバース DNS が正しく IP を指しているかどうかを確認します。
ネットワーク設定で重要な点は、送信メッセージの IP アドレスごとに正しいリバース DNS が必ず定義されるようにすることです。つまり、特定の IP アドレスには、最初の IP アドレスにループバックする対応 DNS(A レコード)を記述したリバース DNS レコード(PTR レコード)があるということです。
特定の ISP を扱う場合には、リバース DNS のドメイン選択が影響を及ぼします。特に、AOL は、リバース DNS と同じドメインに属するアドレスのフィードバックループのみを受け付けます(フィードバックループを参照)。
MX ルール mx-rules
MX(Mail eXchanger)ルールは、送信サーバーと受信サーバーの間の通信を管理するルールです。
より正確には、Adobe Campaign MTA (Message Transfer Agent)が個々のメールドメインまたは ISP (例:hotmail.com、comcast.net)にメールを送信する速度を制御するために使用されます。 これらのルールは通常、ISP によって公開された制限に基づいています(例えば、各 SMTP 接続ごとに 20 を超えるメッセージを含めないようにします)。
TLS tls
TLS(トランスポート層セキュリティ)は、暗号化プロトコルで、2 つのメールサーバー間の接続を保護したり、メールのコンテンツを保護して意図された受信者以外によって読まれないようにするために使用できます。
送信者のドメイン sender-domain
HELO コマンドに使用するドメインを定義するには、インスタンスの設定ファイル(conf/config-instance.xml)を編集し、「localDomain」属性を次のように定義します。
<serverConf>
<shared>
<dnsConfig localDomain="mydomain.net"/>
</shared>
</serverConf>
MAIL FROM ドメインは、技術的なバウンスメッセージで使用されるドメインです。 このアドレスは、デプロイメントウィザードで、または NmsEmail_DefaultErrorAddr オプションを使用して定義します。
SPF レコード dns-configuration
SPF レコードは、現在、DNS サーバーで TXT タイプのレコード(コード 16)または SPF タイプのレコード(コード 99)として定義できます。 SPF レコードは、文字列の形式を取ります。 例:
v=spf1 ip4:12.34.56.78/32 ip4:12.34.56.79/32 ~all
ドメインのメールを送信するために許可される 2 つの IP アドレス(12.34.56.78 と 12.34.56.79)を定義します。 ~all は、その他のアドレスは SoftFail として解釈される必要があることを意味します。
SPF レコードを定義するためのRecommendations:
- 定義されたサーバー以外のすべてのサーバーを拒否するには、末尾に ~all (SoftFail)または -all (Fail)を追加します。 これがないと、サーバーはこのドメインを(中立的な評価で)偽造することができます。
- ptr を追加しないでください(openspf.orgでは、コストがかかり信頼性が低いとしてこれを推奨しています)。
認証
DKIM dkim-acc
Adobe Campaign Classicで DKIM を使用するには、次の前提条件が必要です。
Adobe Campaign オプション宣言: Adobe Campaignでは、DKIM 秘密鍵は DKIM セレクターおよびドメインに基づいています。 同じドメイン/サブドメインに対して、セレクターの異なる複数の秘密鍵を作成することは、現時点ではできません。プラットフォームでもメールでも、どのセレクタードメイン/サブドメインを認証に使用すべきかを定義することはできません。プラットフォームでは、その代わりに、秘密鍵のいずれか 1 つを選択します。つまり、認証は失敗する可能性が高くなります。
- お使いの Adobe Campaign インスタンスに DomainKeys を設定してある場合は、ドメイン管理ルールで dkim を選択するだけです。そうでない場合は、DomainKeys (DKIM の代わり)と同じ設定手順(秘密鍵/公開鍵)に従います。
- DKIM は DomainKeys の改良版なので、同じドメインに DomainKeys と DKIM の両方を有効にする必要はありません。
- 現在 DKIM が有効になっているドメインは、AOL および Gmail です。
フィードバックループ feedback-loop-acc
メッセージの送信に使用される IP アドレスの範囲に対して、特定のメールアドレスを ISP レベルで宣言することにより、フィードバックループが機能します。ISP では、受信者からスパムとして報告されたメッセージを、バウンスメッセージの場合と同様の方法で、このメールボックスに送信します。苦情を訴えたユーザーへの今後の配信をブロックするように、プラットフォームを設定する必要があります。これらのユーザーが正しいオプトアウトリンクを使用しなかったとしても、そうしたユーザーにはもう連絡しないことが重要です。ISP がブロックリストに IP アドレスを追加するのは、これらの苦情に基づいています。 ISP によっては、苦情率がおよそ 1%になると、IP アドレスがブロックリストに登録されます。
フィードバックループメッセージの形式を定義する標準 Abuse Feedback Reporting Format(ARF)が現在策定中です。
インスタンスのフィードバックループを実装するには、次が必要です。
- 対象インスタンス専用のメールボックス(バウンスメールボックスとなる場合があります)
- 対象インスタンス専用の IP 送信アドレス
Adobe Campaign でシンプルなフィードバックループを実装する場合は、バウンスメッセージ機能が使用されます。フィードバックループメールボックスは、バウンスメールボックスとして使用され、これらのメッセージを検出するためのルールが定義されます。メッセージをスパムとして報告した受信者のメールアドレスは、強制隔離リストに追加されます。
- 管理/キャンペーン管理/配信不能件数の管理/メールルールセット で、理由として「拒否」、タイプとして「ハード」を指定してバウンスメールルール Feedback_loop を作成または変更します。
- メールボックスが特にフィードバックループ用に定義されている場合は、管理/プラットフォーム/外部アカウント で新しい外部バウンスメールアカウントを作成することにより、メールボックスにアクセスするためのパラメーターを定義します。
苦情の通知を処理するメカニズムが直ちに有効になります。このルールが正しく機能していることを確認するには、これらのメッセージが収集されないようにアカウントを一時的に無効にした後、フィードバックループメールボックスの内容を手動で確認します。サーバー上で、次のコマンドを順に実行します。
nlserver stop inMail@instance,
nlserver inMail -instance:instance -verbose.
複数のインスタンスに単一のフィードバックループアドレスを使用せざるを得ない場合は、次をおこなう必要があります。
-
受信したメッセージをインスタンスと同数のメールボックス上に複製します。
-
インスタンスごとに各メールボックスが選択されるようにします。
-
関係するメッセージだけを処理するようにインスタンスを設定します。インスタンス情報は、Adobe Campaign から送信されるメッセージの Message-ID ヘッダーに含まれているので、フィードバックループメッセージにも含まれています。インスタンス設定ファイルの checkInstanceName パラメーターを指定するだけです(デフォルトでは、インスタンスは検証されず、その結果、特定のアドレスが誤って強制隔離される可能性があります)。
code language-none <serverConf> <inMail checkInstanceName="true"/> </serverConf>
Adobe Campaign の配信品質サービスは、以下の ISP のフィードバックループサービスへのサブスクリプションを管理します。AOL、BlueTie、Comcast、Cox、EarthLink、FastMail、Gmail、Hotmail、HostedEmail、Libero、Mail.ru、MailTrust、OpenSRS、QQ、RoadRunner、Synacor、Telenor、Terra、UnitedOnline、USA、XS4ALL、Yahoo、Yandex、Zoho。
List-Unsubscribe list-unsubscribe
配信品質の最適な管理を実現するには、List-Unsubscribe という SMTP ヘッダーを付けることが不可欠です。
このヘッダーは、「スパムとして報告」アイコンの代わりに使用できます。これは、ISP のメールインターフェイスに「購読解除」リンクとして表示されます。
この機能を使用すると、苦情の発生率が低下し、評判を保護するのに役立ちます。 フィードバックは、登録解除として実行されます。
Gmail、Outlook.com、Yahoo! Microsoft Outlook では、この方法をサポートしています。 「登録解除」リンクは、インターフェイスで直接使用できます。 例:
- 評判の良い
- ISP のスパム報告しきい値の下
- 完全認証済み
List-Unsubscribe ヘッダー機能には、次の 2 つのバージョンがあります。
「mailto」リスト – 購読解除 mailto-list-unsubscribe
このメソッドでは、「購読解除 リンクをクリックすると、メール ヘッダーで指定された購読解除アドレスに事前入力されたメールが送信されます。
「mailto」 List-Unsubscribe を使用するには、メールアドレスを指定するコマンドラインを入力する必要があります。例:List-Unsubscribe: <mailto:client@newsletter.example.com?subject=unsubscribe?body=unsubscribe>
List-Unsubscribe: <mailto:<%=errorAddress%>?subject=unsubscribe%=message.mimeMessageId%>
のようなコマンドラインを使用して、動的な「mailto」 List-Unsubscribe を作成することもできます。
Campaign に mailto」 List-Unsubscribe を実装するには、次のいずれかを実行します。
配信またはテンプレートへのコマンドラインの追加 adding-a-command-line-in-a-delivery-template
コマンドラインをメールの SMTP ヘッダーの 追加の SMTP ヘッダー セクションに追加する必要があります。
この追加はメールごとにおこなうこともできますし、既存の配信テンプレートでおこなうこともできます。また、この機能を組み込んだ配信テンプレートを新しく作成することもできます。
例えば、「追加の SMTP ヘッダー」フィールドに次のスクリプトを入力します。List-Unsubscribe: mailto:unsubscribe@domain.com
。 登録解除 リンクをクリックすると、unsubscribe@domain.com アドレスにメールが送信されます。
また、動的アドレスを使用することもできます。 例えば、プラットフォーム用に定義されたエラーアドレスにメールを送信するには、次のスクリプトを使用できます。List-Unsubscribe: <mailto:<%=errorAddress%>?subject=unsubscribe%=message.mimeMessageId%>
タイポロジルールの作成 creating-a-typology-rule
ルールには、コマンドラインを生成するスクリプトが含まれている必要があり、このルールをメールヘッダーに組み込む必要があります。
Adobe Campaign v7/v8 でタイポロジルールを作成する方法については、 この節を参照してください。
ワンクリックリスト – 登録解除 one-click-list-unsubscribe
このメソッドを使用すると、「購読解除 リンクをクリックすると、ユーザーの購読が直接解除され す。購読解除には 1 つのアクションのみが必要です。
2024 年 6 月 1 日(PT)以降、主要な ISP は、送信者に対して、ワンクリックリスト – 登録解除 に準拠するよう求めるようになります。
この要件に準拠するには、送信者は次の操作を行う必要があります。
- コマンドライン
List-Unsubscribe-Post: List-Unsubscribe=One-Click
を追加します。 - URI 登録解除リンクを含めます。
- Adobe Campaignがサポートする、受信者からの HTTP POST応答の受信をサポートします。 外部サービスを使用することもできます。
Adobe Campaign v7/v8 で直接ワンクリックリスト – 登録解除POST応答をサポートするには、「受信者の登録解除 – クリックなし」 web アプリケーションにを追加する必要があります。 それには、以下の手順を実行します。
-
リソース/オンライン/web アプリケーション に移動します。
-
「受信者の登録解除のクリックなし」 XML ファイルをアップロードします。
Campaign で ワンクリックリスト – 登録解除 を設定するには、次のいずれかを実行します。
配信またはテンプレートでのワンクリックリスト – 購読解除の設定 one-click-delivery-template
配信または配信テンプレートでワンクリックリスト – 購読解除を設定するには、次の手順に従います。
-
配信プロパティの「SMTP」セクションに移動します。
-
追加の SMTP ヘッダー の下に、次の例のようなコマンドラインを入力します。 各ヘッダーは、別々の行にする必要があります。
例:
List-Unsubscribe-Post: List-Unsubscribe=One-Click
List-Unsubscribe: <https://domain.com/webApp/unsubNoClick?id=<%= recipient.cryptedId %> >, < mailto:<%@ include option='NmsEmail_DefaultErrorAddr' %>?subject=unsubscribe<%=escape(message.mimeMessageId) %> >
上記の例では、ワンクリックをサポートしている ISP に対してワンクリックリスト – 登録解除を有効にしますが、「mailto」をサポートしていない受信者も、メールを介して登録解除を引き続きリクエストできます。
ワンクリックリスト – 購読解除をサポートするタイポロジルールの作成 one-click-typology-rule
タイポロジルールを使用してワンクリックリスト – 購読解除を設定するには、次の手順に従います。
-
ナビゲーションツリーで、タイポロジルール に移動し、新規 をクリックします。
-
次のような新しいタイポロジルールを設定します。
- ルールタイプ: コントロール
- フェーズ:ターゲティングの開始時
- チャネル: メール
- レベル:自分で選ぶ
- アクティブ
-
次の例のように、タイポロジルールの Javascript をコーディングします。
note note NOTE 以下で説明するコードは、例としてのみ参照してください。 この例では、次の方法を詳しく説明します。
- 「mailto」リストの購読解除を設定します。 ヘッダーを追加するか、既存の「mailto:」パラメーターを追加して、<mailto…に置き換えます。>、https://…
- ワンクリックリスト – 登録解除ヘッダーにを追加します。
var headerUnsubUrl = "https://campmomentumv7-mkt-prod3.campaign.adobe.com/webApp/unsubNoClick?id=<%= recipient.cryptedId %>"÷
を使用します
note note NOTE その他のパラメーター(例:&service =…)を追加できます。 code language-none // Function to add or replace a header in the provided headers function addHeader(headers, header, value) { // Create the new header line var headerLine = header + ": " + value; // Create a regular expression to find the specified header var regExp = new RegExp(header + ":(.*)$", "i") // Split the headers into individual lines var headerLines = headers.split("\n"); // Loop through each line for (var i=0; i < headerLines.length; i++) { // Check if the specified header exists var match = headerLines[i].match(regExp) // If it exists if ( match != null ) { // Replace the existing header line headerLines[i] = headerLine; // Return the modified headers return headerLines.join("\n"); } } // If the header does not exist, add the new header line headerLines.push(headerLine); // Return the modified headers return headerLines.join("\n"); } // Function to get the value of a specified header from the provided headers function getHeader(headers, header) { // Create a regular expression to find the specified header var regExp = new RegExp(header + ":(.*)$", "i") // Split the headers into individual lines var headerLines = headers.split("\n"); // Loop each line for each (line in headerLines) { // Check if the specified header exists var match = line.match(regExp); // If it exists if ( match != null ) { // Return the header value, removing leading whitespace return match[1].replace(/^\s*/, ""); } } // If the header does not exist, return an empty string return ""; } // Define the unsubscribe URL var headerUnsubUrl = "https://campmomentumv7-mkt-prod3.campaign.adobe.com/webApp/unsubNoClick?id=<%= recipient.cryptedId %>"; // Get the value of the List-Unsubscribe header var headerUnsub = getHeader(delivery.mailParameters.headers, "List-Unsubscribe"); // If the List-Unsubscribe header does not exist if ( headerUnsub === "" ) { // Add the List-Unsubscribe header delivery.mailParameters.headers = addHeader(delivery.mailParameters.headers, "List-Unsubscribe", "<"+headerUnsubUrl+">"); } // If the List-Unsubscribe header exists and contains 'mailto' else if(headerUnsub.search('mailto')){ // Replace the existing List-Unsubscribe header delivery.mailParameters.headers = addHeader(delivery.mailParameters.headers, "List-Unsubscribe", "<"+headerUnsubUrl+">"); } // Get the value of the List-Unsubscribe-Post header var headerUnsubPost = getHeader(delivery.mailParameters.headers, "List-Unsubscribe-Post"); // If the List-Unsubscribe-Post header does not exist if ( headerUnsubPost === "" ) { // Add the List-Unsubscribe-Post header delivery.mailParameters.headers = addHeader(delivery.mailParameters.headers, "List-Unsubscribe-Post", "List-Unsubscribe=One-Click"); } // Return true to indicate success return true;
-
メールに適用するタイポロジに新しいルールを追加します。
note note NOTE これをデフォルトのタイポロジに追加できます。 -
新しい配信を準備します。
note caution CAUTION 配信プロパティの 追加の SMTP ヘッダー フィールドが空であることを確認します。 -
配信準備中に、新しいタイポロジルールが適用されていることを確認します。
-
購読解除リンクが存在することを確認します。
メールの最適化 email-optimization
SMTP smtp
SMTP(Simple Mail Transfer Protoco)は、メール送信のインターネット標準です。
ルールでチェックされない SMTP エラーは、管理/キャンペーン管理/配信不能件数の管理/配信ログの検証 フォルダーにリスト表示されます。これらのエラーメッセージは、デフォルトでは到達不能ソフトエラーとして解釈されます。
SMTP サーバーからのフィードバックを正しく検証する場合は、最もよく起こるエラーを特定し、それに対応するルールを 管理/キャンペーン管理/配信不能件数の管理/メールルールセット に追加する必要があります。これをおこなわないと、プラットフォームは不要な再試行を実行したり(不明ユーザーの場合)、一定回数のテストの後に特定の受信者を誤って強制隔離したりすることになります。
専用 IP dedicated-ips
アドビは、高いレピュテーションを得て配信パフォーマンスを最適化するために、ランプアップ IP を持つ各顧客に専用の IP 戦略を提供します。