ShopifyのSPF・DKIM・DMARC設定。
Shopifyで「自社ドメインからメールを送信する」といえば、ほとんどの場合、ストアの自動送信メールを指します。注文確認、配送状況の通知、カゴ落ち通知、Shopify Emailアプリから送るマーケティングキャンペーンを、汎用的なShopifyのアドレスではなく、orders@yourstore.comのようなブランド独自のFromアドレスで送信するということです。Shopifyはこの送信経路に対して、CNAMEによるドメイン認証を行います。DKIMは一連のCNAMEレコード(正確な数はストアによって異なります)で設定し、SPFはShopify自身の送信基盤側で処理されます。これに加えて、DMARCのTXTレコードを1つ自分で追加します。ルートドメインのレコードに貼り付ける共有のSPFのincludeはありません。また、ドメインをShopify経由で購入した場合は、これらの設定の大半がすでに完了しています。
Shopifyを認証すべき理由
2024年2月1日以降、GmailとYahooは、両社宛てにメールを送信するすべてのドメインに対し、SPF、DKIM、DMARCレコードによる認証を義務付けています。Shopifyはこれをプラットフォームレベルで適用しています。送信ドメインが認証されていない場合、ShopifyはFromアドレスに「via shopifyemail.com」を付加します。認証もDMARCレコードもない場合はさらに踏み込み、メールが顧客に届くよう、Fromアドレス全体を汎用のstore+123@shopifyemail.com(番号はストアごとに固有)に書き換えます。これで配信は維持されますが、ブランドは失われます。顧客には自社ではなくShopifyのアドレスが表示され、返信が正しく届かないことがあり、メールの信頼性も低く見えます。CNAMEによる認証とDMARCレコードの追加を完了すると書き換えが止まり、注文メールやマーケティングメールを実際のアドレスで送信できるようになります。さらに、自社ドメインとアライメントが一致したDKIMで署名され、GoogleとYahooの大量送信者向けガイドラインも満たせます。また、顧客が実際に待っているトランザクションメールが受信トレイに届きやすくなるという直接の効果もあります。
ShopifyにおけるSPFの実情
Shopifyには、ルートドメインのTXTレコードに追加するSPFのincludeがありません。貼り付ける「include:shopify...」は存在せず、公開すべきSPFメカニズムも一切ありません。ShopifyはCNAMEについて「SPFを自動的に処理する」と説明しています。実際には、SPFはShopify自身の送信基盤側で満たされるという意味です。ストアのメールはshopifyemail.com上のReturn-Path(envelope-from)で送信され、このドメインにはShopify自身のSPFレコードがあるため、DNSに何も追加しなくてもSPFチェックはそこで成功します。このReturn-Pathは自社のサブドメインではなくShopifyのドメインなので、ストアのメールと自社ドメインのアライメントを一致させるのはSPFではなく、あくまでDKIMです。追加するCNAMEは_domainkey配下のDKIMセレクターのレコードで、その署名のd=の値は自社ドメインになります。これによりDMARCに成功します(dmarcianとShopifyはいずれも、これをDKIM優先の構成として扱っています)。実務上のポイントは2つあります。1つ目は、良かれと思ってルートドメインのレコードにShopifyのSPFメカニズムを追加しないことです。そのようなものは存在せず、独自に作っても効果はありません。2つ目は、you@yourstore.comを使うために、個人のメールボックス(Google Workspace、Microsoft 365、Zoho)向けのSPFレコードをルートドメインにすでに公開している場合、そのまま変更しないことです。Shopifyのストアメールは独自のCNAMEで認証される別の送信経路であり、個人として送るメールはメールプロバイダーのSPF/DKIMが担います。両者は重複せず、Shopifyの認証がルートドメインのSPFレコードでルックアップを消費することもありません。
2つの設定方法
Domain Connectによる自動設定
- DNSをCloudflare、GoDaddy、IONOSのいずれかでホストしている場合にのみ利用できます
- アカウントを接続すると、ShopifyがDKIM/SPFのCNAMEレコードを書き込みます
- 最も早く設定でき、ストアごとのトークンの入力ミスも起こりにくい方法です
- この方法でもDMARCレコードは追加されません。_dmarcのTXTレコードは自分で追加する必要があります
CNAMEの手動入力(その他すべてのDNSホスト)
- Namecheap、Route 53、Porkbun、Squarespace DNSなど、ほとんどのサービスで必要です
- Authenticate your domainモーダルから、各CNAMEレコードのホストとターゲットをDNSエディターにコピーします
- 各ホストのプレフィックスはストアごとのランダムなトークンです。そのままコピーしないとレコードが機能しません
- この場合もDMARCのTXTレコードは自分で追加します
設定手順
- 1
Shopifyがすでにドメインを管理しているか確認
ドメインをShopify経由で登録または移管した場合(Shopify管理のドメイン)、DKIM、SPF、DMARCの送信ドメイン認証は自動的に設定されるため、追加するものはありません。確認の手順まで進んでください。以降の手動作業が必要なのは、Namecheap、GoDaddy、Cloudflare、Route 53、Porkbunなどで登録した外部ドメインだけです。
- 2
Sender emailの認証モーダルを開く
Sender emailセクションで、ストアの送信に使うブランド独自のFromアドレス(orders@yourstore.comやhello@yourstore.comなど)を確認して、Authenticate your domain(ストアによっては「Email domain authentication」という表示)をクリックします。Shopifyがストア固有のCNAMEレコード一式を生成し、各レコードのホスト名とターゲット値を一覧にしたモーダルを開きます。レコード数は一定ではないので、モーダルに表示されたものをすべて追加するつもりで進めてください。
- 3
DNSの自動設定か手動設定かを選択
DNSをCloudflare、GoDaddy、IONOSのいずれかでホストしている場合は、ShopifyがDomain Connect経由でCNAMEレコードを書き込めます。アカウントを接続すると、自動的に公開されます。重要な点として、自動設定ではDMARCレコードは追加されないため、DMARCの手順は引き続き手動で完了する必要があります。その他のDNSホストでは手動設定を使います。モーダルを開いたまま、別のタブでDNSエディターにレコードをコピーしてください。
- 4
Shopifyに表示されたCNAMEレコードを追加
Shopifyに表示された各レコードをCNAMEとして作成します。ホスト名には、表示されたプレフィックスをそのまま入力します。DNSホストがドメインを付加するので、入力するのは相対的なプレフィックス(xk1._domainkeyなど)のみです。値(points-to)にはShopifyのターゲットを貼り付けます。これらのレコードはDKIMを設定するものです(SPFもShopifyのReturn-Pathでカバーされます)。そのため、Shopify用のSPFのTXTレコードを別途追加しないでください。各プレフィックスにはストアごとのランダムなトークンが含まれるため、すべての値をそのままコピーしてください。1文字でも変わるとレコードが機能しません。
- 5
DMARCレコードを公開
ShopifyがFromアドレスの書き換えを止めるには、DMARCレコードが必要です。これはDMARCを追加しないDomain Connectの自動設定を使った場合でも同じです。ホスト_dmarcにTXTレコードを追加し、少なくともv=DMARC1; p=none;を指定します。集計レポートを受け取れるよう、rua=のレポート先アドレスも含めるのが理想です。DMARCレコードは1つだけ公開し、厳格なアライメントのタグ(adkim=sまたはaspf=s)は使わないでください。厳格なアライメントでは、ShopifyがFromアドレスの書き換えを続けます。
- 6
メールプロバイダーのレコードは変更しない
ShopifyのCNAMEが認証するのは、ストアの送信メール(通知とShopify Emailマーケティングアプリ)だけです。Google Workspace、Microsoft 365、Zohoなどを通じて個人として送受信するメールは別の送信経路で、独自のSPFレコードとDKIMレコードを持ちます。これらを削除したり1つにまとめたりしないでください。両方の送信経路は1つのドメインの下で共存できます。
- 7
反映を待ってShopify内で確認
DNSの変更が完全に反映されるまで最大48時間かかることがありますが、1~2時間以内に有効になることも多くあります。Sender emailセクションに戻ってください。Shopifyがレコードを検出するとドメインがAuthenticatedと表示され、Fromアドレスの書き換えが止まり、ストアのメールがブランド独自の実際のアドレスで送信されます。
- 8
外部で確認してからDMARCポリシーを引き上げる
公開のレコードチェックツールを使って、Shopifyの外部から、ドメインのDKIMレコードとDMARCレコードが解決されること、および送信経路でSPFに成功することを確認します。さらに、自分宛てにテスト注文またはShopify Emailを送信して、正しく署名されていることを確認してください。その後、DMARCの導入を段階的に進めます。集計レポートを読む間はp=noneのままにし、Shopifyとメールボックスサービスを含むすべての正規の送信経路が成功してアライメントが一致してから、p=quarantine、最終的にp=rejectへと引き上げます。
追加するレコード
正確な値はShopifyのセットアップウィザードで生成されます。以下は、DNSホストに追加するレコードの形式を示したものです。
| タイプ | ホスト | 値 |
|---|---|---|
| CNAME | xk1._domainkey | dkim1.xk1.shopifyemail.comDKIMセレクターの例です。実際のホストプレフィックスはストアごとのランダムなトークンで(実際のストアではerr._domainkeyのような表示になります)、プレフィックスとターゲットはどちらもAuthenticate your domainモーダルに表示されたものです。そのままコピーしてください。 |
| CNAME | xk2._domainkey | dkim2.xk1.shopifyemail.com2つ目のDKIMセレクターの例です。Shopifyは鍵をローテーションできるよう複数のセレクターを公開します。正確なレコード数はストアによって異なるため、モーダルに表示されたものをすべて追加してください。 |
| CNAME | xk3._domainkey | dkim3.xk1.shopifyemail.com3つ目のDKIMセレクターの例です。SPFレコードやバウンス用レコードを別途追加する必要はありません。SPFはShopifyのReturn-Path(shopifyemail.com)で処理されるため、ルートドメインのSPFのincludeは不要です。 |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@yourstore.comこのレコードは自分で追加します。Shopifyが作成することはなく、Domain Connectの自動設定でも作成されません。DMARCレコードは1つだけ公開し、adkim=s / aspf=sは避けてください。そうしないと、ShopifyがFromアドレスの書き換えを続けます。 |
ルートドメインのSPF(v=spf1)のTXTレコードは1つだけにし、すべての送信元をこの1行にまとめてください。SPFレコードが2つあると、それ自体がエラーになります。
DNSルックアップの10回制限
SPFのDNSルックアップは10回までに厳格に制限されており、超えるとpermerrorを返して、どの受信側でも検証されなくなります。Shopifyの設定がこの上限のうち何回を消費するかは、次のとおりです。
Shopifyの推奨設定はルックアップを消費しません。10回すべてを、includeが必要な他の送信元に使えます。
DKIM
ShopifyのDKIMはCNAMEによる委任で、公開鍵を貼り付ける方式ではありません。認証を行うと、Shopifyは_domainkey配下のセレクター形式のホストに複数のDKIMレコードをCNAMEとして公開します。数はストアによって異なり、各ホストのプレフィックスはストアごとのランダムなトークンです(実際のストアでは、整ったshopify1/shopify2のような名前ではなく、err._domainkey、err2._domainkey、mailererr._domainkeyのようなプレフィックスになります)。それぞれがshopifyemail.com上でShopifyがホストする鍵を指しています。実際の鍵はShopify側にあるため、DNSを再度変更しなくてもShopifyが鍵をローテーションできます。v=DKIM1; p=...の文字列を自分で扱うことはありません。これらのセレクターがストアの送信メールに署名します。CNAMEは自社ドメイン上にあるため、DKIM署名のd=の値は自社ドメインとアライメントが一致します。Shopifyの構成でDMARCが実際に頼りにしているのはこのアライメントです(SPFはShopify自身のReturn-Pathで成功しますが、自社ドメインとはアライメントが一致しません)。正確に行う必要があるのは、モーダルに表示された各ホストのプレフィックスとターゲットをそのままコピーすることだけです。ストアごとのトークンは、どの例とも一致しません。
DMARC
DMARCは、Shopifyが作成しない唯一のレコードです。Domain Connectによる自動設定でも作成されません。そして必須のレコードで、これがないとCNAMEを設定済みでもFromアドレスが書き換えられます。_dmarcにTXTレコードを1つ追加してください。Shopifyが受け付ける最小の内容はv=DMARC1; p=none;ですが、どの送信経路が成功しているかがわかる集計レポートを実際に受け取れるよう、rua=mailto:のアドレスも含めてください。Shopify固有のルールは2つあります。DMARCレコードは1つだけ公開すること(_dmarcに2つ目のTXTがあると検証に失敗し、Fromアドレスの書き換えが再び発生します)、そして厳格なアライメントを設定しないことです。adkim=sやaspf=sを指定すると、Shopifyはアドレスの書き換えを続けます。ストアのメールは、DKIM(d=は組織ドメイン)と、厳格なアライメントでは一致し得ないshopifyemail.com上のSPF用Return-Pathで認証されるためです。まずp=noneで始め、Shopifyとメールプロバイダーの両方で認証が問題なく成功するまでレポートを確認してから、p=quarantine、最終的にp=rejectへと段階的に引き上げます。いきなりポリシー適用に進むと、正規の注文メールやマーケティングメールが届かなくなるおそれがあります。
正しく設定できたか確認する
Shopifyの画面だけで判断せず、公開インターネット上でレコードが解決されることを確認してください。反映を待ったうえで(最大48時間)、外部のSPF/DKIM/DMARCチェックツールでドメインをチェックします。ShopifyのセレクターでDKIM鍵が見つかり、送信経路でSPFに成功し、有効なDMARCレコードが1つだけ表示されるはずです。Shopify内では、Sender emailセクションにAuthenticatedと表示されているはずです。また、テスト通知(テスト注文を行うか、自分宛てにShopify Emailを送信)が、store+123@shopifyemail.comへの書き換えや「via shopifyemail.com」の表示なしに、ブランド独自のアドレスから届くはずです。まだ書き換えられている場合、よくある原因は、レコードがまだ反映されていない、DMARCレコードがない、または重複している、DMARCのアライメントが厳格になっている、のいずれかです。DMARCレポートが届き始めたら、ポリシーを引き上げる前に、すべての正規の送信元でアライメントが一致していることをレポートで確認してください。
よくある注意点
- DNS設定
設定のどちらか一方を省くと、Fromアドレスがstore+123@shopifyemail.comに書き換えられます。CNAMEレコードとDMARCレコードは両方とも必要で、ドメインを認証してもDMARCを忘れると、書き換えられたままになります。
- DNS設定
自動設定(Domain Connect)では、DMARCレコードが追加されません。DNSがCloudflare、GoDaddy、IONOSのいずれかにあり、ShopifyにCNAMEの書き込みを任せた場合でも、_dmarcレコードは追加されません。手動で追加しないと書き換えが続きます。
- 認証失敗の原因
ルートドメインのレコードに追加するShopifyのSPFのincludeはありません。SPFはShopify自身のReturn-Path(shopifyemail.com)で処理されます。独自に作ったinclude:shopify...をルートドメインのSPFレコードに貼り付けても効果はありません。
- 適用範囲
DMARCの厳格なアライメントは問題の原因になります。DMARCレコードにadkim=sまたはaspf=sが含まれていると、ShopifyがFromアドレスの書き換えを続けます。緩和されたアライメント(デフォルト)を使ってください。
- DNS設定
DMARCレコードは1つしか認められません。_dmarcに2つ目のTXTレコード(別のツールや以前のホストが残したものなど)があると検証に失敗し、書き換えが再び発生します。
- 適用範囲
見慣れない3文字のホストプレフィックスは正常です。Shopifyはerr._domainkeyやmailererr._domainkeyのようなランダムなトークンでセレクターを生成します。「err」はエラーではなく、ストアごとのプレフィックスにすぎません。表示どおりに追加してください。
- 適用範囲
入力するのはホストのプレフィックスのみで、完全なドメインは不要です。ほとんどのDNSエディターはドメインを自動的に付加するため、err._domainkeyではなくerr._domainkey.yourstore.comと入力するとレコードが正しく機能しません。
- DNS設定
ストアのメールとメールボックスを混同しないでください。ShopifyのCNAMEが対象とするのは、ストアの通知とShopify Emailアプリだけです。you@yourstore.comから個人として送るメールには、Google Workspace、Microsoft 365、またはZohoの独自のSPF/DKIMが引き続き必要です。
- 適用範囲
DNSの反映には最大48時間かかることがあります。Shopifyはレコードを検出するまでドメインをAuthenticatedに切り替えないため、未完了に見える設定も、再確認まで時間を置くだけでよい場合があります。
SPFレコードを作成
Shopifyでは、ルートドメインに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:はカウントされません。
送信ドメイン認証の設定が済んだら、次は検証済みのクリーンなリストへの配信です。
リストを検証ShopifyのSPFに関するよくある質問
関連記事
ホスティング・Webサイトの他のサービス
すべてのSPFガイド公開したら、ドメイン診断ですべてのレコードが正しく解決されることを確認し、DMARCレポート解析で自社ドメインを名乗って送信している送信元を把握します。作成ツールではすべての送信元を確認できます。ただし、認証は到達率対策の半分にすぎません。送信IPやドメインがブラックリストに掲載されていると、SPFの設定がどれほど適切でも迷惑メールに振り分けられます。そのため、ブラックリスト監視で掲載状況を確認しておくことをおすすめします。
認証の次は、リストをクリーンに保つ
SPF、DKIM、DMARCに成功すれば受信トレイに届き、クリーンなリストならその状態を維持できます。お手持ちのリストも検証してクリーニングできます。100クレジット無料、クレジットカード登録不要で始められます。