HubSpotのSPF・DKIM・DMARC設定。
HubSpotは「送信ドメインの接続」によってドメインを認証します。その中心は、共有のSPFの行ではなくCNAMEによるDKIMです。Settings > Content > Domains & URLs > Email Sendingで、マーケティングメールのFromアドレスに使うドメインを接続します。するとHubSpotは、ローテーションするDKIM鍵をHubSpotに委任する、アカウント固有の2つのCNAMEレコード(hs1._domainkeyとhs2._domainkey)を生成します。あわせて、推奨されるSPFのincludeも生成されます。DMARCレコードは自分で追加します。CNAMEが解決されると、HubSpotはd=yourdomain.comとして署名し、DKIMのアライメントによってDMARCに成功します。認証していないHubSpotのメールにGmailが付ける「on behalf of」や「via hubspotemail.net」の表示も消えます。意外に見落とされるのが、共有送信ではHubSpotがHubSpot自身のReturn-Pathをhubspotemail.netに維持する点です。そのためデフォルトでは、SPFのアライメントが自社ドメインと一致することはなく、DMARCの成功を支えるのはDKIMです。
HubSpotを認証すべき理由
HubSpotの送信ドメインの認証は形式的な作業ではなく、受信トレイに届くか迷惑メールフォルダーに入るかを左右します。HubSpotも現在は事実上これを必須としています。2024年2月以降、GmailとYahooは、すべての大量送信者(個人向け受信トレイ宛てに1日あたり約5,000通以上)に対し、SPF、DKIM、DMARCにアライメントが一致した状態で成功することを義務付けています。Microsoftも2025年に、Outlook.com/Hotmail/Liveに同じルールを拡大しました。これを受けてHubSpotはドメイン接続を強く促しています。無料の公開Fromアドレス(gmail.com、yahoo.com)からのキャンペーンはブロックされ、接続していないドメインはHubSpot自身の名義で送信されます。その結果「via hubspotemail.net」の表示が付き、レピュテーションは認証していない他のHubSpot送信者全体と共有されます。さらに、2つのDKIM CNAMEを欠かせないものにしているHubSpot特有の事情があります。共有送信ではHubSpotがHubSpot自身のReturn-Path(hubspotemail.netのバウンス用ドメイン)でバウンスを処理するため、SPFは常にHubSpotのドメインに対してチェックされ、Fromドメインに対してはチェックされません。SPFのチェック自体には「成功」しても、アライメントは一致しません。そしてDMARCが評価するのは、アライメントが一致したSPFだけです。つまり、DMARCの成功を支える、アライメントの一致した唯一のメカニズムは、hs1/hs2セレクターによってd=yourdomain.comとして署名するDKIMです。CNAMEを省略するとアライメントの一致した認証がまったくなくなり、築いた送信レピュテーションも自社ドメインに蓄積されません。
HubSpotにおけるSPFの実情
HubSpotはアカウントごとに値が異なるサービスで、Google WorkspaceやMicrosoft 365のような単一の共有includeを使う送信者よりも、Amazon SESに近い仕組みです。全顧客が貼り付ける共通の「include:_spf.hubspotemail.net」は存在しません。送信ドメインを接続すると、HubSpotはアカウント固有の値を生成します。ポータル固有のセレクターバージョンをターゲットに含む2つのDKIM CNAME(yourdomain-com.hs01a.dkim.hubspotemail.net、hs01bなど)と、include:NNNNNN.spfNN.hubspotemail.netという形式のアカウント固有のSPFのinclude(NNNNNNはHub ID。例:include:123456.spf03.hubspotemail.net)です。HubSpotはこのSPFのincludeを、Fromアドレスが属するルートドメインのSPFレコードに追加するよう推奨しており、確かに有用です。ただし、古いチュートリアルのほとんどが誤解している点として、これだけではDMARCに成功しません。Return-PathはHubSpotが所有しており(共有送信者のバウンスはhubspotemail.netで処理されます)、SPFはHubSpotのバウンス用ドメインに対して評価されます。そのためhubspotemail.netに対するチェック自体には成功しますが、組織ドメインとアライメントは一致せず、DMARCが評価するのはアライメントの一致したSPFの結果だけです。HubSpotが2つのDKIM CNAMEを前面に出しているのはこのためです。アライメントが一致してDMARCの成功を支えるのはd=yourdomain.comとして署名するDKIMで、SPFのincludeは、SPFのチェック自体を成功させるための念のための保険です。ここから2つのルールが導かれます。1つ目に、アカウント固有のincludeはポータル(Domains & URLs > Advanced Options > Copy SPF record)から正確にコピーし、汎用の値を推測しないでください。NNNNNNとspfNNの部分はアカウント固有です。2つ目に、ドメインのSPF TXTレコードは1つだけにしてください。2つ目のSPFレコードを公開せず、HubSpotのincludeを既存のv=spf1の行にまとめます(2つあるとPermErrorになります)。またこのincludeは10回のルックアップの上限に含まれます。SPFのアライメントも一致させたい場合、HubSpotにはカスタムReturn-Pathがあります。ただしMarketing Hub Enterpriseの機能で、DMARCの厳格なアライメントでは、送信ドメインがサブドメイン(mail.company.com)の場合にのみ機能し、ルートドメインのcompany.comでは機能しません。
2つの設定方法
DKIMによるドメイン接続(必須、DMARCを支える)
- 2つのCNAME(hs1._domainkey、hs2._domainkey)で、ローテーションするDKIM鍵をHubSpotに委任
- d=yourdomain.comとして署名するためDKIMのアライメントが一致し、DKIMによってDMARCに成功
- ルートドメインのSPFレコードのルックアップを消費しない(CNAMEは専用のセレクター上に設定)
- セレクターの先の鍵はHubSpotがローテーションするため、DNSの再編集は不要
SPFのincludeとカスタムReturn-Path(補助)
- アカウント固有のinclude:NNNNNN.spfNN.hubspotemail.netでSPFのチェック自体は成功
- デフォルトではアライメントは一致しない(HubSpotのReturn-Pathはhubspotemail.net上)
- ルートドメインのレコードにまとめると、SPFの10回のルックアップのうち1回を消費
- SPFのアライメントが一致するのは、カスタムReturn-Path(Marketing Hub Enterprise)を有効にし、かつサブドメインから送信する場合のみ
設定手順
- 1
Email Sendingの設定を開く
設定の歯車アイコンをクリックし、左のサイドバーでContent > Domains & URLsに進み、Email Sendingタブを開きます(ポータルによってはWebsite > Domains & URLsにあります)。ここで接続済みの送信ドメインを管理します。SPFとDMARCの追加は、ここではなくDNSホストで行います。
- 2
送信ドメインを接続
Connect a sending domain(またはConnect a new domain)をクリックし、マーケティングメールのFromアドレスに使うドメインを入力します。ルートドメインとサブドメインのどちらにするか、ここで決めてください。最も簡単なのはyourdomain.comの接続です。SPFのアライメントも一致させるカスタムReturn-Path(Enterprise機能)の選択肢を残したい場合は、mail.yourdomain.comのようなサブドメインを接続します。
- 3
DNSの自動設定または手動設定を選択
対応するDNSホストではガイド付きの自動設定を利用でき、手動でレコードをコピーしてレジストラに貼り付けることもできます。どちらでも作成されるレコードは同じです。公開前に正確な値を確認したい場合は手動を選んでください。
- 4
アカウント固有のレコードをコピー
HubSpotに2つのDKIM CNAMEレコード(ホストはhs1._domainkeyとhs2._domainkeyで、それぞれhubspotemail.netのターゲットを指す)と、推奨のSPFのincludeが表示されます。これらの値はポータルごとに固有なので、それぞれのホストとターゲットを正確にコピーしてください。アカウントによっては、セレクターがhs1-<portalID>._domainkey / hs2-<portalID>._domainkeyと表示されます。
- 5
DKIM CNAMEを2つ追加
DNSホストで、両方のレコードをタイプCNAMEで作成します。ホストhs1._domainkey -> 値yourdomain-com.hs01a.dkim.hubspotemail.net、ホストhs2._domainkey -> 値...hs01b...です(HubSpotに表示される正確なターゲットを使ってください)。タイプはCNAMEのままにし、TXTに変更したり、2つの値を短縮、統合したりしないでください。
- 6
ホストのラベルとCloudflareのプロキシを修正
レジストラがドメインを自動で付加する場合は、二重にならないようラベルだけを入力します(hs1._domainkey.yourdomain.comではなくhs1._domainkey)。Cloudflareでは、各CNAMEをDNS only(グレーのクラウド)に設定します。オレンジのクラウドでプロキシが有効なCNAMEはhubspotemail.netに解決されず、ドメインを接続できません。
- 7
HubSpotのSPFのincludeを1つのSPFレコードにまとめる
HubSpotは、FromアドレスのドメインにSPFのincludeを追加するよう推奨しています。include:NNNNNN.spfNN.hubspotemail.net(アカウント固有の正確な値)を、既存のルートドメインのSPF TXTに追加します。例:v=spf1 include:_spf.google.com include:123456.spf03.hubspotemail.net ~all。2つ目のSPFレコードは絶対に作成せず、1つのv=spf1の行にまとめてください。これでSPFのチェック自体は成功しますが、アライメントは一致しない点に注意してください。
- 8
DMARCレコードを公開
HubSpotはDMARCを作成せず、サポートも支援できないため、このレコードは自分で管理します。ホスト_dmarcに、v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comのTXTレコードを追加します。p=noneは監視のみのため、HubSpotがアライメントの一致したDKIMに成功していることを確認している間、配信には影響しません。_dmarcレコードは1つだけにしてください。サブドメインはこれを継承します。
- 9
HubSpotでドメインを確認
Email Sendingタブに戻り、HubSpotにDNSを再チェックさせます(Continue setup、またはステータスの更新)。DNSの反映は通常数分ですが、最大24~48時間かかることがあります。両方のCNAMEが解決されると、ドメインがConnectedに変わります。進まない場合は、CNAMEターゲットが正確か、プロキシが有効になっていないかを再確認してください。
- 10
テストを送信してFromアドレスを設定
HubSpotからGmailアカウントにテストメールを送り、開いて3点メニュー > Show originalを選びます。DKIM: PASSでd=yourdomain.com、そしてDMARC: PASSと表示されていれば成功です(SPFにはhubspotemail.netが表示されることが多いですが想定どおりで、アライメントを担うのはDKIMです)。次に、マーケティングメールのFromアドレスとemail preference/subscriptionドメインを接続済みのドメインに設定し、メールが実際にそのドメインを使うようにします。
追加するレコード
正確な値はHubSpotのセットアップウィザードで生成されます。以下は、DNSホストに追加するレコードの形式を示したものです。
| タイプ | ホスト | 値 |
|---|---|---|
| CNAME | hs1._domainkey | yourdomain-com.hs01a.dkim.hubspotemail.netDKIM鍵1(アカウント固有)。例です。正確なターゲットはHubSpotポータルからコピーしてください(hs01aのセレクターバージョンの部分はアカウントによって異なります。ホストがhs1-<portalID>._domainkeyと表示されるアカウントもあります)。 |
| CNAME | hs2._domainkey | yourdomain-com.hs01b.dkim.hubspotemail.netDKIM鍵2。対になるセレクターにより、HubSpotが鍵をローテーションできます。例です。HubSpotに表示される正確なhs2のターゲットを使い、短縮したりhs1と統合したりしないでください。 |
| TXT | @ | v=spf1 include:123456.spf03.hubspotemail.net ~allSPFはアカウントごとに異なり(include:NNNNNN.spfNN.hubspotemail.net、NNNNNNはHub ID)、これは例です。Domains & URLs > Advanced Optionsからコピーしてください。推奨ですが補助的なもので、SPFのチェック自体は成功してもアライメントは一致しません(Return-PathはHubSpotが所有)。ルートドメインの1つのSPFレコードにまとめます。ルックアップを約1回消費します。 |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com自分で追加するレコードです。HubSpotは作成せず、サポートも支援できません。1つのドメインに1つだけです。HubSpotのメールがDMARCに成功するのは、DKIMのアライメントによるものです。p=noneから始め、その後引き上げます。 |
ルートドメインのSPF(v=spf1)のTXTレコードは1つだけにし、すべての送信元をこの1行にまとめてください。SPFレコードが2つあると、それ自体がエラーになります。
DNSルックアップの10回制限
SPFのDNSルックアップは10回までに厳格に制限されており、超えるとpermerrorを返して、どの受信側でも検証されなくなります。HubSpotの設定がこの上限のうち何回を消費するかは、次のとおりです。
HubSpotは10回のルックアップのうち1回を消費します。ip4:とip6:のメカニズムはルックアップを消費しません。
DKIM
DKIMはHubSpotの主要な、事実上必須の認証です。HubSpotのSPFはアライメントが一致しないため、DMARCに成功させるのはDKIMです。送信ドメインを接続すると、2つのCNAMEレコードが表示されます。ホストはhs1._domainkeyとhs2._domainkeyで、それぞれアカウント固有のhubspotemail.netのターゲット(yourdomain-com.hsNNa.dkim.hubspotemail.netと...hsNNb...の形式)を指します。ドメインをハイフンでつないだ接頭辞とhsNNのセレクターバージョンの部分はポータルごとに固有です。アカウントによっては、ホストがhs1-<portalID>._domainkeyとhs2-<portalID>._domainkeyと表示されます。これらは貼り付けるTXTレコードではなくHubSpotに委任するCNAMEなので、秘密鍵はHubSpotが保持し、2つのセレクターで自動的にローテーションします。最初の設定後にDNSを編集し直す必要はありません。両方を公開し(セレクターが1つでは不十分です)、タイプはCNAMEのままにして、2つの値を短縮、変形、統合しないでください。Cloudflareでは、hubspotemail.netに解決されるようDNS only(グレーのクラウド)に設定します。両方が解決されてHubSpotにドメインがConnectedと表示されると、送信メールはhs1/hs2セレクターによりd=yourdomain.comで署名されます。このアライメントの一致したDKIM署名こそがDMARCの成功を支えるメカニズムであり、ここでSPFだけに頼れない理由です。
DMARC
DMARCは別のポリシーTXTレコードで、HubSpotは作成しません。HubSpot SupportもDMARCの設定は支援できないと明言しているため、自分で対応する必要があります。_dmarc.yourdomain.comに、v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comで始まるTXTレコードを公開します。p=noneは監視のみのため、配信には影響しません。その間に集計レポート(rua)を確認し、自社ドメインとアライメントの一致したDKIMにHubSpotが成功していることを確かめます。HubSpotのSPFはHubSpot自身のhubspotemail.netのReturn-Pathに対してチェックされるためアライメントが一致せず、レポートにはHubSpotがDKIMでのみ成功していると表示されるはずです。これは正常で、DMARCに成功するにはそれで十分です。_dmarcレコードは組織ドメイン全体で1つだけにしてください。送信に使うサブドメイン(mail.yourdomain.comなど)は、DMARCの継承によりルートドメインのポリシーのもとで認証済みとみなされます。特定のサブドメインは、独自の_dmarcレコードまたはsp=タグで上書きすることもできます。HubSpotに加えてGoogle Workspace、Microsoft 365、トランザクションメールのリレーなど、正規の送信元すべてがアライメントの一致した状態で成功したら、ポリシーをp=quarantine、最終的にp=rejectへと引き上げ、実際になりすましをブロックします。
正しく設定できたか確認する
HubSpotの「Connected」のバッジだけで判断せず、実際のメールで確認してください。HubSpotからGmailアカウントにテストメールを送り、開いて3点メニュー > Show originalを選びます。DKIM: PASSでsigned-by / d=yourdomain.com、そしてDMARC: PASSと表示されていれば成功です。失敗の典型的な兆候はd=hubspotemail.netや「on behalf of」の行で、CNAMEが確認されていないか、Fromアドレスが接続済みのドメインのものではないことを意味します。SPFには通常、自社ドメインではなくhubspotemail.netが表示されます。Return-PathをHubSpotが所有し、アライメントを担うのはDKIMなので想定どおりです。ここではSPFが成功してアライメントが一致しなくても問題ありません。レコードそのものは、dig CNAME hs1._domainkey.yourdomain.comとdig TXT _dmarc.yourdomain.comで確認できます。最後に、Qualisendのドメイン診断でドメインをチェックし、両方のDKIM CNAME、まとめたSPF、DMARCレコードがすべて解決され、SPFが10回のルックアップの上限内に収まっていることを確認します。集計レポートが届き始めたら、DMARCレポート解析にレポートをドロップし、HubSpotが、DKIMのアライメントが一致して成功している送信元として表示されることを確かめます。
よくある注意点
- DNS設定
HubSpotではSPFのアライメントが一致しません。共有送信のデフォルトのReturn-Pathはhubspotemail.net上にあるため、SPFのチェック自体はHubSpotに対して成功しますが、自社ドメインに対しては成功しません。アライメントが一致する唯一のメカニズムは2つのDKIM CNAME(d=yourdomain.com)で、SPFのincludeを追加するだけではDMARCに成功しません。
- 適用範囲
アカウント固有の値を正確にコピーしてください。DKIMのターゲット(yourdomain-com.hsNNa/hsNNb.dkim.hubspotemail.net)とSPFのinclude(include:NNNNNN.spfNN.hubspotemail.net)はポータルごとに固有です。汎用のinclude:_spf.hubspotemail.netを推測したり、セレクターバージョンの部分を誤ったりすると、確認に失敗します。
- 適用範囲
カスタムReturn-PathはEnterprise限定で、サブドメイン限定です。SPFのアライメントを一致させるカスタムReturn-PathはMarketing Hub Enterpriseの機能で、DMARCの厳格なアライメントでは、mail.company.comのようなサブドメインから送信する場合にのみ対応しており、ルートドメインのcompany.comでは使えません。SPFのアライメントが重要なら、両方が必要です。
- DNS設定
HubSpotはDMARCの設定を支援しません。HubSpot Supportは_dmarcレコードについて支援できないと明言しており、HubSpotが作成することもありません。自分で公開し、p=noneから始めてください。
- DNS設定
Cloudflareのプロキシを有効にすると、CNAMEが機能しません。hs1._domainkeyとhs2._domainkeyの両方をDNS only(グレーのクラウド)に設定してください。オレンジのクラウドでプロキシが有効なCNAMEはhubspotemail.netに解決されず、ドメインを接続できません。
- DNS設定
ホスト欄でのドメインの重複:多くのレジストラはドメインを自動で付加するため、hs1._domainkey.yourdomain.comと入力するとhs1._domainkey.yourdomain.com.yourdomain.comになります。管理画面がドメインを付加する場合は、ラベル(hs1._domainkey、hs2._domainkey)だけを入力してください。
- 認証失敗の原因
SPF TXTレコードは1つだけにしてください。HubSpotのincludeは既存のv=spf1の行にまとめます。SPFレコードが2つあるとPermErrorになります。また、このincludeはRFC 7208のDNSルックアップの10回の上限に含まれる点にも注意してください。
- 適用範囲
ドメインの接続と利用は別です。DNSの確認後、マーケティングメールのFromアドレス(およびemail preference/subscriptionドメイン)を接続済みのドメインに設定してください。設定しないと、メールはアライメントが一致しないままHubSpotの名義で送信され続けます。
SPFレコードを作成
HubSpotでは、ルートドメインに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:はカウントされません。
送信ドメイン認証の設定が済んだら、次は検証済みのクリーンなリストへの配信です。
リストを検証HubSpotのSPFに関するよくある質問
関連記事
ヘルプデスク・CRMの他のサービス
すべてのSPFガイド公開したら、ドメイン診断ですべてのレコードが正しく解決されることを確認し、DMARCレポート解析で自社ドメインを名乗って送信している送信元を把握します。作成ツールではすべての送信元を確認できます。ただし、認証は到達率対策の半分にすぎません。送信IPやドメインがブラックリストに掲載されていると、SPFの設定がどれほど適切でも迷惑メールに振り分けられます。そのため、ブラックリスト監視で掲載状況を確認しておくことをおすすめします。
認証の次は、リストをクリーンに保つ
SPF、DKIM、DMARCに成功すれば受信トレイに届き、クリーンなリストならその状態を維持できます。お手持ちのリストも検証してクリーニングできます。100クレジット無料、クレジットカード登録不要で始められます。