KlaviyoのSPF・DKIM・DMARC設定。
Klaviyoでは、SettingsのDomainsで設定するbranded sending domain(以前はdedicated sending domainと呼ばれていたものの現在の名称)を通じてドメインを認証します。共有のSPFレコードを1行貼り付ける方式ではありません。送信用サブドメイン(Klaviyoが提案するのはsend.yourdomain.com)を選び、4つのNSレコード(Dynamic routing、推奨)または3つのCNAMEレコード(Static routing)でKlaviyoに委任します。この委任によって、SPFと自動ローテーションのDKIMがまかなわれるため、レコードの確認が済んでActivateをクリックすれば、メールは自社ドメインとして送信されます。「via klaviyomail.com」の表示が消え、SPFとDKIMのアライメントが一致し、DMARCにも成功できるようになります。
Klaviyoを認証すべき理由
Klaviyoでのbranded sending domainの設定は、見た目だけの問題ではなく、キャンペーンが受信トレイに届くかどうかを左右します。初期状態のKlaviyoでは共有IPと共有のklaviyomail.comドメインが使われるため、Gmailの受信者には送信者名の横に文字どおり「via klaviyomail.com」と表示されます。Fromアドレスのアライメントが一致せず、DMARCにも成功できません。レピュテーションも、その共有インフラを使う他の未認証の送信者全員とひとまとめになります。2024年2月以降、GmailとYahooは、すべての大量送信者(1日あたり約5,000通以上)に対し、SPF、DKIM、DMARCにアライメントが一致した状態で成功することを義務付けています。Microsoftも2025年にOutlook/Hotmailのドメインで同じ要件の適用を始め、要件を満たさない大量メールを、まず迷惑メールに振り分け、その後は拒否するようになりました。branded sending domainなら、これらを一度に解決できます。SPFとDKIMはどちらも自社ドメインとアライメントが一致し、「via」の表示が消え、DMARCに成功します。積み上げた送信レピュテーションも、Klaviyoの共有プールではなく自社ドメインに蓄積されます。Klaviyo自身も、まさにこの理由から、現在ほとんどのアカウントに追加を促しています。
KlaviyoにおけるSPFの実情
Klaviyoは委任方式(CNAME/NS)のドメイン認証サービスです。そのため、ルートドメインのSPFレコードに追加すべき「include:klaviyo...」は、どのアカウントにもありません。branded sending domainを設定すると、Klaviyoは専用の送信用サブドメイン(提案はsend.yourdomain.com)で認証を行います。SPFの満たし方は、選択するルーティング方式によって異なります。Dynamic routing(推奨)では、4つのNSレコードを公開し、send.yourdomain.comのサブドメイン全体をKlaviyoのネームサーバー(ns1~ns4.klaviyo.com)に引き渡します。すると、Klaviyoが委任されたゾーン内にSPFとDKIMのレコードを自ら公開するため、他に追加するものはありません。自分でDNSを操作しなくても、Klaviyoが鍵のローテーションや送信IPの切り替えを行えます。Static routingでは、代わりにCNAME(send.yourdomain.comから1.klaviyodns.comへ)を追加します。これがエンベロープ/Return-Pathのホストになり、Klaviyo自身のSPFで許可された範囲に解決されるため、サブドメイン上でSPFが満たされます。この場合もルートドメインへのincludeは不要です。Klaviyoがルートドメイン用のv=spf1の行を案内することはありません。案内される唯一のTXTレコード(klaviyo-site-verification=your-public-API-key)はドメインの所有権確認用で、SPFではありません。DMARCには、緩和されたアライメントによって引き続き成功します。送信用サブドメインは組織ドメインを共有しているためSPFのアライメントが一致し、DKIMは自社ドメインで署名します(kmセレクターはkm1._domainkey.yourdomain.comにあります)。結論として、共有のSPFのincludeはなく、ルートドメインのSPFレコードに追加されるDNSルックアップは0回です。SPFとDKIMはどちらもNSレコードによる委任またはCNAMEによる委任で、送信用サブドメイン上に設定されます。
2つの設定方法
Dynamic routing:NSレコードによる委任(推奨)
- 4つのNSレコードでsend.yourdomain.comのサブドメインをKlaviyo(ns1~ns4.klaviyo.com)に引き渡します。委任されたゾーン内では、SPFとDKIMはどちらもKlaviyoが公開します
- Klaviyoがメッセージごとに最適な送信サービスとIPを動的に選びます。Klaviyoによれば、これが最も高い到達率につながります
- DNSを編集し直すことなく、鍵のローテーションや送信インフラの変更が行われます
- ルートドメインのSPFレコードでルックアップを消費しません。まとめるものが何もないためです
Static routing:CNAME(フォールバック)
- 3つのCNAME(sendを1.klaviyodns.comへ、km1とkm2._domainkeyをkm1/km2.domainkey.1.klaviyodns.comへ)で、Klaviyoの固定の送信ホスト1つに紐付けます
- DNSホストがNSレコードでサブドメインをうまく委任できない場合に使います。代表的なのはCloudflareとBigCommerceです
- この方式のServiceドメイン(ヘルプデスク)では、受信のルーティング用にMXレコードも必要です
- これもCNAMEによるドメイン認証です。ルートドメインへのSPFのincludeは不要で、DKIMも2つのCNAMEを通じて自動でローテーションされます
設定手順
- 1
Domainsの設定を開く
左下の会社名をクリックしてSettingsを選び、Domainsタブを開いて、Add Domainをクリックします。
- 2
送信タイプを選択
Marketing(デフォルト。キャンペーンとフロー)、Transactional(領収書、パスワードリセット)、Service(ヘルプデスクの返信)から選びます。これによってDKIMセレクターが決まります。Marketingはkm1/km2、Transactionalはkt1/kt2、Serviceはks1/ks2です。
- 3
送信用サブドメインを設定
ブランド化するサブドメインを入力します。Klaviyoが提案するのは「send」で、この場合はsend.yourdomain.comになります。ルートドメインそのものではなく、サブドメインにしてください。
- 4
ルーティング方式を選択
到達率を最優先するならDynamic(NSレコード、推奨)、DNSホストがNSでサブドメインを委任できないならStatic(CNAMEレコード)を選びます。選択に応じた正確なレコードがKlaviyoに表示されます。
- 5
Klaviyoに表示されたレコードを追加
Dynamic routingの場合:send.yourdomain.comに、ns1~ns4.klaviyo.comを指す4つのNSレコードを追加します。Static routingの場合:1.klaviyodns.comを指すsendのCNAMEレコードと、km1._domainkeyおよびkm2._domainkeyの2つのDKIM用CNAMEレコードを追加します。値はアカウントごとに異なるので、Klaviyoの表示どおり正確にコピーしてください。
- 6
確認用のTXTレコードを追加
ルートドメインにTXTレコード(klaviyo-site-verification=your-public-API-key)を追加し、ドメインの所有権をKlaviyoが確認できるようにします。これはどちらのルーティング方式でも必要で、SPFレコードではありません。
- 7
Cloudflareのプロキシをオフにする
DNSがCloudflare上にある場合(またはプロキシ機能のあるホストの場合)は、すべてのレコードを「DNS only」(グレーのクラウド)に設定します。プロキシが有効なレコードはKlaviyoに解決されず、確認に失敗します。その後もプロキシなしのままにしないと、継続的な認証が機能しなくなります。
- 8
MXレコードを追加(Serviceタイプのみ)
Static routingでServiceタイプを選択した場合は、ヘルプデスクのアドレスへの返信が正しくルーティングされるよう、Klaviyoに表示されるMXレコードも追加します。
- 9
Verifyをクリック
SettingsのDomainsに戻り、Verifyをクリックします。「Verification success」、「Verification error」(レコードの誤り)、または競合の通知のいずれかが表示されます。DNSの反映は通常数分ですが、最大48時間かかることがあります。
- 10
ドメインを有効化
確認が済んだらActivateをクリックします。これでKlaviyoがbranded domainからの送信を開始します。新しいドメインやIPでは、フルボリュームに達するまで短いウォームアップ期間が必要な場合があります。
- 11
Fromアドレスをルートドメインに設定
送信用サブドメインではなく、ルートドメインのアドレス(you@yourdomain.com)から送信してください。返信は表示上のFromに届きますが、@send.yourdomain.comは実在するメールボックスではありません。ルートドメインから送信しても、サブドメインは組織ドメインの配下にあるため、DMARCのアライメントは一致します。
追加するレコード
正確な値はKlaviyoのセットアップウィザードで生成されます。以下は、DNSホストに追加するレコードの形式を示したものです。
| タイプ | ホスト | 値 |
|---|---|---|
| CNAME | send | 1.klaviyodns.comStatic routing:送信用サブドメイン(エンベロープ/Return-Path)です。これによってSPFが満たされ、ルートドメインへのincludeは不要です。Dynamic routingでは、この1つのCNAMEレコードの代わりに、send.yourdomain.comをns1~ns4.klaviyo.comに委任する4つのNSレコードを使います。先頭の「1」は、アカウントごとの送信ホスト番号です。 |
| CNAME | km1._domainkey | km1.domainkey.1.klaviyodns.comDKIM鍵1(自動ローテーション)。セレクターはMarketingがkm1/km2、Transactionalがkt1/kt2、Serviceがks1/ks2です。Static routingのみで使います。Dynamicでは、委任されたサブドメインのゾーン内に公開されます。 |
| CNAME | km2._domainkey | km2.domainkey.1.klaviyodns.comDKIM鍵2(自動ローテーション)。同じドメインの2つ目のセレクターです。 |
| TXT | @ | klaviyo-site-verification=your-public-API-keyルートドメインでのドメイン所有権の確認用で、SPFレコードではありません。どちらのルーティング方式でも追加します。 |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comDMARCポリシーです。ドメインごとに1つ、ルートドメインに設定します。Klaviyoのフローでは、DMARCレコードの有無を知らせ、最小限のv=DMARC1; p=none;を提案してくれますが、Klaviyoが公開することはできないため、ここで自分で追加します。レポートを実際に収集できるようruaを含めてください。 |
ルートドメインのSPF(v=spf1)のTXTレコードは1つだけにし、すべての送信元をこの1行にまとめてください。SPFレコードが2つあると、それ自体がエラーになります。
DNSルックアップの10回制限
SPFのDNSルックアップは10回までに厳格に制限されており、超えるとpermerrorを返して、どの受信側でも検証されなくなります。Klaviyoの設定がこの上限のうち何回を消費するかは、次のとおりです。
Klaviyoの推奨設定はルックアップを消費しません。10回すべてを、includeが必要な他の送信元に使えます。
DKIM
DKIMは、鍵を貼り付けるのではなくKlaviyoに委任します。Static routingでは2つのCNAMEレコードを使います。km1._domainkey.yourdomain.comとkm2._domainkey.yourdomain.comが、それぞれkm1.domainkey.N.klaviyodns.comとkm2.domainkey.N.klaviyodns.comを指します(Nはアカウントごとの送信ホスト番号です)。セレクターは選択した送信タイプによって変わり、Marketingドメインはkm1/km2、Transactionalはkt1/kt2、Serviceはks1/ks2です。同じタイプの2つ目のドメインには、次のペア(km3/km4など)が割り当てられます。Dynamic routingでは、DKIMレコードを追加する必要はまったくありません。NSレコードで委任したsend.yourdomain.comのゾーン内に、Klaviyoが公開します。どちらの場合も秘密鍵はKlaviyoが保持し、これらのセレクターの背後で公開するDKIM鍵をローテーションするため、DNSを編集し直す必要はなく、コピーするTXTの鍵もありません。DKIMは自社ドメインで署名するので、DMARCのアライメントも一致します。1つ注意点があります。_domainkeyのホストに含まれるアンダースコアを、CNAMEレコードで受け付けないDNS管理画面が一部にあります。アンダースコアは必須なので、許可しているホストを使うか、Klaviyoサポートに問い合わせてください。
DMARC
DMARCは、_dmarc.yourdomain.comに設定する別のポリシー用TXTレコードで、CNAMEレコードの1つではありません。ルートドメイン(組織ドメイン)に置くものなので、Klaviyoが管理する送信用サブドメインの外にあり、Dynamic routingでもKlaviyoが代わりに公開することはできません。Klaviyoの設定フローでは、DMARCレコードの有無を知らせて値を提案してくれますが、レコードはDNSホストで自分で追加します。まずは監視のみのv=DMARC1; p=none;から始めます。これで、配信に影響を与えずにGmailとYahooのDMARCレコード要件を満たせます。集計レポートを実際に受け取れるようruaも追加してください(例:v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com)。1~2週間レポートを確認し、Klaviyoから送信したメールが、SPFとDKIMのどちらも自社ドメインとアライメントが一致した状態で成功していることを確かめたら、p=quarantine、最終的にp=rejectへと段階的に引き上げます。送信者がいくつあっても、_dmarcレコードはドメイン全体で1つだけにしてください。このレコードはすべての送信元に適用されるので、Klaviyo専用に2つ目を追加しないでください。
正しく設定できたか確認する
緑のチェックマークだけで判断せず、実際のメールで確認してください。branded domainのアドレスから自分宛てにキャンペーンまたはフローのテストを送り、Gmailで開いて3点メニューからShow originalを選びます。SPF: PASSとDKIM: PASSがどちらも自社ドメインを示し(「via klaviyomail.com」の表示も消え)、さらにDMARC: PASSと表示されていれば成功です。Klaviyoでは、SettingsのDomainsでドメインがVerifiedかつActiveと表示されるはずです。Qualisendのドメイン診断でドメインをチェックすれば、送信用サブドメイン(NSまたはCNAME)、km/kt/ksのDKIMセレクター、DMARCレコードがすべて解決されるか確認できます。集計レポートが届き始めたら、DMARCレポート解析にレポートをドロップします。Klaviyoが、アライメントが一致し、認証に成功している送信元として表示されるはずです。個々のレコードは送信ドメイン認証チェックでも確認できます。
よくある注意点
- DNS設定
Cloudflareのプロキシで機能しなくなります:Klaviyoのレコードはすべて「DNS only」(グレーのクラウド)に設定し、プロキシなしのままにしてください。プロキシが有効なレコードはKlaviyoに解決されないため、確認と継続的な認証のどちらも失敗します。
- DNS設定
Cloudflare(および一部のレジストラ、BigCommerce)は、NSレコードでサブドメインをうまく委任できません。そのためDynamic routingは失敗することが多く、これらのホストではStatic routing(CNAME)を使ってください。
- 適用範囲
送信用サブドメインから送信しないでください:表示上のFromはルートドメイン(you@yourdomain.com)のままにします。@send.yourdomain.comはメールボックスではないため、返信はバウンスします。ルートドメインから送信しても、サブドメインは組織ドメインの配下にあるので、DMARCのアライメントは一致します。
- DNS設定
ホスト欄の二重化:多くのレジストラはドメインを自動で付加するため、send.yourdomain.comと入力するとsend.yourdomain.com.yourdomain.comになります。管理画面がドメインを付加する場合は、ラベル(send、km1._domainkey、km2._domainkey)だけを入力してください。
- DNS設定
CNAMEレコードのアンダースコア:km1._domainkey、km2._domainkeyのホストに含まれるアンダースコアを、CNAMEレコードで受け付けないDNS管理画面がごく一部にあります。アンダースコアは必須なので、許可しているホストを使うか、Klaviyoに問い合わせてください。
- 認証失敗の原因
追加すべきSPFのincludeはありません。klaviyo-site-verificationのTXTレコードは所有権の確認用で、SPFではありません。ルートドメインにinclude:klaviyo...を自作しても意味がなく、10回のルックアップのうち1回を無駄に消費するだけです。
- 適用範囲
送信タイプは最初に決めてください:Marketing、Transactional、ServiceではDKIMセレクター(km/kt/ks)が異なり、ServiceドメインにはMXレコードも必要です。レコードをやり直さずに、MarketingドメインをそのままServiceドメインに転用することはできません。
- 認証失敗の原因
ルートドメインのTXTレコードは、SPFとDMARCをそれぞれ1つだけにしてください。KlaviyoはルートドメインのSPFレコードに何も追加しませんが、他のサービスからも送信している場合は、1つにまとめたSPFレコードを維持します。SPFレコードが2つあると、それ自体がPermErrorになります。
SPFレコードを作成
Klaviyoでは、ルートドメインにSPFのinclude:を追加する必要はありません。作成ツールを使って他の送信元用のクリーンなレコードを1つ組み立て、1行に収めてください。
送信元
メールの送信に使っているサービスを検索して、それぞれチェックを入れてください。
上の検索欄で利用中のメールサービスを検索するか、してください。
このドメイン自身のサーバー
ドメインが(上記のサービスを経由せず)直接メールを送信する場合は、ドメイン自体を許可します。
その他の送信元・IP
リストにないもの(別のサービスのSPFホストや特定のIPアドレス)を追加します。
接頭辞のinclude:は自動で付加されます。サービスのドキュメントに記載されているホスト名を入力してください。
その他すべての送信元へのポリシー
上記に記載されていないサーバーからのメールを、受信側がどう処理すべきかを指定します(allメカニズム)。
送信元がまだないため、すべてのメッセージに~allポリシーが適用されます。ステップ1で利用中のサービスを追加してください。
- ルートドメインにTXTレコードとして公開します。ホストは@(ドメインそのもの)、値は上記の文字列全体です。
- SPFレコードは1つのドメインにつき1つだけにします。すべての送信元をこの1行にまとめてください。v=spf1で始まるTXTレコードが2つあると、両方とも無効になります。
- DNSルックアップは10回以内に収めてください。include:、a、mxはそれぞれ1回とカウントされ、includeは内部でさらにルックアップを発生させることがあります。ip4:とip6:はカウントされません。
送信ドメイン認証の設定が済んだら、次は検証済みのクリーンなリストへの配信です。
リストを検証KlaviyoのSPFに関するよくある質問
関連記事
マーケティング・ESPの他のサービス
すべてのSPFガイド公開したら、ドメイン診断ですべてのレコードが正しく解決されることを確認し、DMARCレポート解析で自社ドメインを名乗って送信している送信元を把握します。作成ツールではすべての送信元を確認できます。ただし、認証は到達率対策の半分にすぎません。送信IPやドメインがブラックリストに掲載されていると、SPFの設定がどれほど適切でも迷惑メールに振り分けられます。そのため、ブラックリスト監視で掲載状況を確認しておくことをおすすめします。
認証の次は、リストをクリーンに保つ
SPF、DKIM、DMARCに成功すれば受信トレイに届き、クリーンなリストならその状態を維持できます。お手持ちのリストも検証してクリーニングできます。100クレジット無料、クレジットカード登録不要で始められます。