EmailOctopusのSPF・DKIM・DMARC設定。
EmailOctopusのドメイン認証は、共通のSPF行を貼り付ける方式ではなく、「Verify domain」フローで行います。EmailOctopusは裏側でAmazon SESを使って送信しているため、確認を実行すると4つのCNAMEレコードと、DMARCのTXTレコード1つが生成されます。CNAMEのうち3つはSESのEasy-DKIMセレクターで、ローテーション式のDKIM鍵をAmazonに委任します。4つ目はmail-fromサブドメイン(eom.yourdomain.com)で、Return-Pathとなり、SPFのアライメントを自社ドメインとさりげなく一致させます。これらが解決され、Complete verificationをクリックすると、メールは自社ドメインとして署名され、SPFとDKIMの両方でDMARCに成功し、未認証メールにGmailが付ける「via」の表記も消えます。ルートドメインのSPFレコードに追加すべきinclude:amazonses.comはありません。SPFはEmailOctopusがeomサブドメインの裏側で処理します。
EmailOctopusを認証すべき理由
EmailOctopusでのドメイン確認は、受信トレイへの到達に最も大きく効く手段であり、本格的な送信には今や事実上必須です。2024年2月以降、GmailとYahooは、すべての大量送信者(1日あたり約5,000通以上)に対し、SPF、DKIM、DMARCにアライメントが一致した状態で成功することを義務付けています。Microsoftも2025年にOutlook/Hotmail/Liveへ同じルールを拡大し、EmailOctopus自身もgmail.comやyahoo.comのような無料の公開Fromアドレスからのキャンペーンをブロックしています。ドメインを確認するまで、EmailOctopusはブランドのない共有の送信元として送信します。メールが暗号学的に自社から送られたものであることを受信者に示せず、Fromアドレスのアライメントは一致せず、DMARCに成功できず、送信者レピュテーションは共有インフラ上の他の未認証の送信者すべてと共有されます。ドメイン確認は、これらを1つのフローですべて解決します。Easy DKIMがd=yourdomain.comで署名し、eomのmail-fromサブドメインにより、緩和されたアライメントで組織ドメインと一致するSPFの成功が得られ、両方の仕組みでDMARCに成功し、築いたレピュテーションは共有プールではなく自社ドメインに蓄積されます。
EmailOctopusにおけるSPFの実情
EmailOctopusはAmazon SES上で動く、CNAMEで認証するサービスです。そのため、ルートドメインに追加すべきinclude:amazonses.comはありません。古いチュートリアルのほとんどが誤っている点です。確認を行うと、EmailOctopusはeom.yourdomain.comという形式のmail-fromサブドメインを用意し、Amazon SESインフラを指す1つのCNAMEレコードとして公開するよう求めます。このサブドメインがキャンペーンのエンベロープ送信者/Return-Pathになり、その裏側のSPFレコードはEmailOctopusが公開します。これが「SPFレコードは当社側で対応します」という説明の意味です。エンベロープのドメイン(eom.yourdomain.com)は組織ドメインのサブドメインなので、DMARCのデフォルトである緩和されたアライメントでSPFに成功し、アライメントも一致します。つまり、Return-Pathがアライメントの決して一致しないmcsv.netドメインにあるMailchimpとは異なり、EmailOctopusではDKIMに加えて、アライメントの一致したSPFの成功も得られます。注意点は、SPFのアライメントが緩和のみであることです。エンベロープは素のyourdomain.comではなくeom.yourdomain.comのため、DMARCポリシーを厳格なSPF(aspf=s)に設定すると、SPFのアライメントの経路が失われます。実際に何かが壊れるわけではなく、Easy DKIMは引き続き厳格にアライメントが一致し、それだけでDMARCの成功を担えます。ただ、得るものはなく、2つ目の成功経路を失うだけなので、aspfは緩和(デフォルト)のままにしてください。ネイティブのEmailOctopusでは、ルートドメインのSPFレコードにinclude:amazonses.comを貼り付けないでください。10回のSPFルックアップのうち1回を消費するだけで、DMARCのアライメントには何の効果もありません。include:amazonses.comメカニズムが関係するのは、別の「EmailOctopus Connect」の経路だけです。そこでは自社のAmazon SESアカウント経由で送信し、SESのSPF、Easy DKIM、カスタムのMAIL FROMを自分で管理します。ルートドメインのSPFレコードは、Return-Pathに素のドメインを実際に使う送信者(Google Workspace、Microsoft 365、トランザクションメールのリレー)のために残し、EmailOctopusについてはeomサブドメインとDKIMに任せてください。
2つの設定方法
ネイティブのEmailOctopus:Verify domain(推奨)
- EmailOctopusがeomのmail-fromサブドメインの裏側でSPFを管理し、CNAMEを通じてEasy DKIMの鍵をローテーションするため、DNSの再編集は不要です
- ルートドメインのSPFレコードのDNSルックアップを1回も消費しません。既存のv=spf1の行にまとめるものはありません
- 4つのCNAMEと、生成されたDMARCのTXTレコード1つが、すべてコピーできる状態でアカウントに表示されます
- アライメントが一致したSPF(緩和)とDKIM(厳格)が得られるため、両方の仕組みでDMARCに成功します
EmailOctopus Connect:ご自身のAmazon SESアカウント
- 自社のAWS/SESアカウント経由で送信し、認証はAWSコンソールで自分で管理します
- SESのEasy DKIM用CNAMEとカスタムのMAIL FROMサブドメインを追加し、そのドメインのSPFレコードにinclude:amazonses.comを追加します
- SES送信ドメインごとに、DMARCポリシーの公開と引き上げを自分で行います
- すでにAmazon SESを運用していて、EmailOctopusをキャンペーンのUIとしてのみ使いたい場合にだけ価値があります
設定手順
- 1
Senders画面を開く
ログインしてアカウントのSenders画面(Settings → Senders)を開きます。単一のメールアドレスとドメイン全体の両方を含め、すべてのFromアイデンティティをここで管理します。Verify new senderをクリックして開始します。
- 2
「Verify domain (recommended)」を選択
単一のメールアドレスの確認と、ドメインの確認の2つの選択肢が表示されます。Verify domain (recommended)を選んでください。DKIM、SPF、DMARCを設定し、そのドメインの任意のアドレスから送信できるようになるのはドメインの確認だけです。メールアドレスだけの確認では1つのFromアドレスが承認されるだけで、ドメインレベルの認証もアライメントも得られません。
- 3
ドメインを入力してStart verificationをクリック
送信ドメイン(例:yourdomain.com)を入力し、Start verificationをクリックします。EmailOctopusがアカウント用のレコードを生成します。内訳はCNAMEレコードが4つ、TXTレコードが1つです。mail-fromサブドメインeom.yourdomain.comも用意されます。これがReturn-PathになるCNAMEです。正確な名前と値をここからコピーするので、この画面は開いたままにしてください。
- 4
eomのmail-from用CNAMEレコードを追加
DNSを管理しているホスト(通常はレジストラ)で、eomサブドメインのCNAMEレコードをEmailOctopusの表示どおりに作成します。このサブドメインはエンベロープ/Return-Pathで、SPFのアライメントを一致させるものです。SPFはEmailOctopusが裏側で公開するため、include:amazonses.comを自分で追加することはありません。レコードのタイプはCNAMEのままにし、AやTXTに変更しないでください。
- 5
DKIMのCNAMEレコードを3つ追加
3つのDKIMセレクターのCNAMEを作成します。EmailOctopusはAmazon SES上で動いているため、これらはSESのEasy-DKIMレコードです。各ホストは._domainkeyで終わる長いトークン、各値は.dkim.amazonses.comで終わります。トークンとターゲットの組を表示どおりに正確にコピーしてください。3つのセレクターがあるので、以後DNSに触れなくても、SESが鍵をローテーションできます。
- 6
DMARCのTXTレコードを追加
EmailOctopusはDMARCポリシーレコードも生成します。ホスト_dmarcにTXTレコードとして追加し、値はv=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comのようにします。_dmarcレコードがすでにある場合は2つ目を作成しないでください。ドメインに置けるのは必ず1つだけです。このレコードがないと、EmailOctopusはドメインを「Partially verified」のままにします。
- 7
ホストの二重化とCloudflareのプロキシを修正
レジストラがドメインを自動で付加する場合は、完全なeom.yourdomain.comではなくラベル(eom、またはtoken._domainkeyのセレクター)だけを入力してください。そうしないとeom.yourdomain.com.yourdomain.comになります。確認が止まったときは.yourdomain.comを取り除くよう、EmailOctopus自身も案内しています。Cloudflareでは、すべてのCNAMEレコードを「DNS only」(グレーのクラウド)に設定します。オレンジのクラウドでプロキシ有効のCNAMEはamazonses.comに解決されず、確認に失敗します。
- 8
Complete verificationをクリック
EmailOctopusに戻り、Complete verification(右上)をクリックします。DNSの反映には数時間かかることがあります。4つのCNAMEとDMARCのTXTレコードがすべて解決されると、ステータスがPartially verifiedからVerifiedに変わります。止まった場合は、正確な名前と値、プロキシ有効のレコードがないことを再確認してください。
- 9
確認済みドメインから送信してヘッダーを読む
キャンペーンとオーディエンスのFromアドレスを確認済みドメインのもの(例:news@yourdomain.com)に設定します。DNSを確認しても、別のFromが設定済みのキャンペーンは変わりません。その後、自分宛てにテストを送り、Gmailで開いて⋮ → Show originalを選びます。SPF: PASS、DKIM: PASSでd=yourdomain.com、DMARC: PASSと表示され、すべて自社ドメインとアライメントが一致していれば成功です。
追加するレコード
正確な値はEmailOctopusのセットアップウィザードで生成されます。以下は、DNSホストに追加するレコードの形式を示したものです。
| タイプ | ホスト | 値 |
|---|---|---|
| CNAME | eom | 1a2b3c4d.eom.emailoctopus-sends.com例です。mail-from / Return-Path用のサブドメインで、その裏側のSPFレコードはEmailOctopus/Amazon SESが公開します。SPFのアライメントが一致するのはこのためです。正確なターゲットをアカウントからコピーし、恒久的に残してください。 |
| CNAME | abcdef1234567890._domainkey | abcdef1234567890.dkim.amazonses.com例です。DKIMセレクター1(Amazon SESのEasy DKIM、自動ローテーション)です。EmailOctopusに表示された正確なトークンとターゲットを使ってください。 |
| CNAME | ghijkl0987654321._domainkey | ghijkl0987654321.dkim.amazonses.com例です。DKIMセレクター2です。3つのセレクターがあるので、DNSを再編集しなくても、SESが鍵をローテーションできます。 |
| CNAME | mnopqr1122334455._domainkey | mnopqr1122334455.dkim.amazonses.com例です。DKIMセレクター3です。3つすべてをアカウントの表示どおりに公開してください。 |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comEmailOctopusが生成します。完全な「Verified」ステータスに必須です(ないと「Partially verified」になります)。DMARCレコードはドメインごとに1つで、p=noneから始めて、その後引き上げます。 |
ルートドメインのSPF(v=spf1)のTXTレコードは1つだけにし、すべての送信元をこの1行にまとめてください。SPFレコードが2つあると、それ自体がエラーになります。
DNSルックアップの10回制限
SPFのDNSルックアップは10回までに厳格に制限されており、超えるとpermerrorを返して、どの受信側でも検証されなくなります。EmailOctopusの設定がこの上限のうち何回を消費するかは、次のとおりです。
EmailOctopusの推奨設定はルックアップを消費しません。10回すべてを、includeが必要な他の送信元に使えます。
DKIM
EmailOctopusのDKIMはAmazon SESのEasy DKIMで、貼り付けるTXTの鍵ではなく、3つのCNAMEレコードとして提供されます。各CNAMEのホストは._domainkey.yourdomain.comで終わる長いランダムトークン、値は.dkim.amazonses.comで終わります(例:<token>._domainkey.yourdomain.com → <token>.dkim.amazonses.com)。これらはAmazonに委任されたCNAMEなので、秘密鍵はSESが保持し、3つのセレクターを使って公開鍵を自動でローテーションします。鍵の生成も公開値のコピーも、DNSの再編集も不要です。3つすべてが解決され、Complete verificationをクリックすると、EmailOctopusはすべてのキャンペーンにd=yourdomain.comで署名します。そのためDKIMは組織ドメインと厳格にアライメントが一致し、単独でDMARCの成功を担えます。DKIMは、SPFと異なり、メーリングリストや.forwardルールを通じた転送にも耐えるため、これは重要です。実務上の注意点が2つあります。レコードのタイプはCNAMEのままにしてください。セレクターの代わりにTXTを置くと確認に失敗します。DNSがCloudflareにある場合は、各セレクターを「DNS only」(グレーのクラウド)に設定し、amazonses.comのホストに解決されるようにしてください。鍵長やローテーションの管理は不要で、SES側で処理されます。(これはネイティブの経路です。EmailOctopus Connectでは、自社のAWS/SESコンソールでEasy DKIMを有効にし、それらのCNAMEを自分で公開します。)
DMARC
DMARCは、ドメインの_dmarcに公開するポリシー用のTXTレコードです。EmailOctopusはこの点で特に親切で、確認フローがレコードを生成し、必須として扱います。4つのCNAMEを公開してもDMARCのTXTを省くと、ドメインは「Partially verified」と表示されます。DKIMとSPFは有効でも、ドメインは完全には認証されておらず、厳格な受信側ではメールがブロックされる可能性があります。_dmarc.yourdomain.comに、v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comで始まるTXTを追加します。p=noneは監視のみのため配信には影響せず、その間に集計レポート(rua)で、EmailOctopusのメールがSPFとDKIMで自社ドメインとアライメントが一致した状態で成功していることを確認できます。ネイティブのEmailOctopusでは、緩和されたSPFアライメント(eomのmail-fromサブドメイン経由)と、厳格にアライメントが一致するEasy DKIMの両方が得られるため、両方の仕組みですぐに問題なく成功するはずです。送信者がいくつあっても、_dmarcレコードはドメイン全体で1つだけにしてください。EmailOctopus専用に2つ目を追加してはいけません。アライメントが安定したら、p=noneからp=quarantine、最終的にp=rejectへと段階的に引き上げます。アライメントに関する注意点が1つあります。aspfは緩和(デフォルト)のままにしてください。aspf=s(厳格なSPF)に設定すると、eomのエンベロープのアライメントが一致しなくなります。エンベロープのドメインは素のyourdomain.comではなくeom.yourdomain.comだからです。その場合、SPFの経路を捨ててDKIMだけに頼ることになります。DMARCには引き続き成功しますが、利点はありません。署名に使われるのは自社ドメインそのものなので、adkim=s(厳格なDKIM)は安全です。
正しく設定できたか確認する
「Verified」バッジだけで判断せず、実際のメールで確認してください。テストキャンペーン(または確認済みFromアドレスからのテスト)を自分宛てに送り、Gmailで開いて⋮ → Show originalを選びます。確認する項目は次のとおりです。SPF: PASS、DKIM: PASSでsigned-by / d=yourdomain.com(amazonses.comやemailoctopus.comではない)、DMARC: PASSで、すべて自社ドメインが表示されていること。EmailOctopusのSenders画面には、Partially verifiedではなくVerifiedと表示されるはずです(Partially verifiedはDMARCのTXTがまだないことを意味します)。レコード自体はdig CNAME eom.yourdomain.com、dig CNAME <token>._domainkey.yourdomain.com、dig TXT _dmarc.yourdomain.comで確認できます。最後に、Qualisendのドメイン診断でドメインをチェックし、eomのCNAME、3つのDKIMセレクター、DMARCレコードがすべて正しく解決され、ルートドメインのSPFレコードが10回制限に収まっていることを確かめます。DMARCの集計レポートが届き始めたら、DMARCレポート解析にレポートをドロップします。EmailOctopus(Amazon SES経由)が、アライメントの一致した、完全に成功している送信元として表示されるはずです。
よくある注意点
- 適用範囲
「Verify email address」はドメイン確認ではありません。1つのFromアドレスを承認するだけで、DKIMもSPFのアライメントもDMARCも得られません。SendGridのSingle Senderに相当します。実際に認証するには、Verify domain (recommended)を選ぶ必要があります。
- DNS設定
「Partially verified」は、ほとんどの場合DMARCのTXTレコードがないことを意味します。4つのCNAMEを追加して止まってしまう人が多く、生成された_dmarcのTXTレコードも公開してComplete verificationをクリックするまで、ドメインは完全なVerifiedになりません。
- 認証失敗の原因
ネイティブのEmailOctopusでは、ルートドメインのSPFレコードにinclude:amazonses.comを追加しないでください。SPFはeomのmail-fromサブドメインの裏側で処理されるため、このincludeは不要で、10回のSPFルックアップのうち1回を消費し、DMARCのアライメントにも効果はありません。このincludeが該当するのはEmailOctopus Connect/自社のSESだけです。
- DNS設定
eomのCNAMEは永久に残してください。Return-Pathであり、SPFのアライメントとバウンス処理の源です。後から(DNSの整理中に)削除すると、DKIMには成功し続けても、SPFとバウンス処理が気づかないうちに機能しなくなります。
- DNS設定
CloudflareのプロキシはCNAMEレコードを壊します。eomのレコードと3つのDKIMセレクターをすべて「DNS only」(グレーのクラウド)に設定してください。オレンジのクラウドでプロキシ有効のCNAMEはamazonses.comに解決されず、確認に失敗します。
- DNS設定
ホスト欄の二重化:多くのレジストラはドメインを自動で付加するため、eom.yourdomain.comと入力するとeom.yourdomain.com.yourdomain.comになります。ラベル(eom、またはtoken._domainkeyのセレクター)だけを入力してください。確認が止まったら.yourdomain.comを取り除く、というのがEmailOctopus自身のトラブルシューティングのヒントです。
- 適用範囲
SPFのアライメントは緩和のみ可能です。エンベロープのドメインは素のルートドメインではなくeom.yourdomain.comなので、aspf=s(厳格なSPF)を設定したDMARCレコードでは、SPFのアライメントが失敗します。DKIMがDMARCの成功を担うので何も壊れませんが、2つ目の成功経路を無駄に失います。aspfは緩和(デフォルト)のままにしてください。厳格なDKIMアライメント(adkim=s)は問題ありません。
- DNS設定
ネイティブのEmailOctopusとEmailOctopus Connectは別の設定です。ネイティブでは上記のCNAMEフローを使います。Connectでは自社のAmazon SESアカウント経由で送信し、Easy DKIMの有効化、カスタムのMAIL FROMの設定、そのドメインのSPFレコードへのinclude:amazonses.comの追加、DMARCの公開をAWS上で自分で行います。
SPFレコードを作成
EmailOctopusでは、ルートドメインに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:はカウントされません。
送信ドメイン認証の設定が済んだら、次は検証済みのクリーンなリストへの配信です。
リストを検証EmailOctopusのSPFに関するよくある質問
関連記事
マーケティング・ESPの他のサービス
すべてのSPFガイド公開したら、ドメイン診断ですべてのレコードが正しく解決されることを確認し、DMARCレポート解析で自社ドメインを名乗って送信している送信元を把握します。作成ツールではすべての送信元を確認できます。ただし、認証は到達率対策の半分にすぎません。送信IPやドメインがブラックリストに掲載されていると、SPFの設定がどれほど適切でも迷惑メールに振り分けられます。そのため、ブラックリスト監視で掲載状況を確認しておくことをおすすめします。
認証の次は、リストをクリーンに保つ
SPF、DKIM、DMARCに成功すれば受信トレイに届き、クリーンなリストならその状態を維持できます。お手持ちのリストも検証してクリーニングできます。100クレジット無料、クレジットカード登録不要で始められます。