MailerSendのSPF・DKIM・DMARC設定。
MailerSendでは、ダッシュボードからコピーする少数の決まったDNSレコードで送信ドメインを認証します。内容は、_spf.mailersend.netをincludeするルートドメインのSPFのTXTレコード、CNAMEで委任するDKIM鍵、mtaサブドメインのカスタムReturn-PathのCNAMEです。CNAMEだけで認証するサービスとは異なり、MailerSendはルートドメインへのSPFのincludeを実際に必要とします。ただし、DMARC向けにSPFのアライメントを一致させるのはReturn-PathのCNAMEです。3つすべて(と自社のDMARCレコード)を追加すれば、MailerSendから自社ドメインとして送信でき、SPF、DKIM、DMARCのすべてに、アライメントが一致した状態で成功します。
MailerSendを認証すべき理由
MailerSendのドメイン認証は、トランザクションメールやマーケティングメールが受信トレイに届くかどうかを左右します。2024年2月以降、GmailとYahooは、すべての大量送信者(1日あたり約5,000通以上)に対し、SPF、DKIM、DMARCにアライメントが一致した状態で成功することを義務付けています。Microsoftも2025年に、要件を満たさないメールの拒否を始めました。ドメインを確認するまで、MailerSendからはそのドメインで一切送信できません。トライアルのサンドボックスでも、送信先は自分の確認済みテスト受信者に限られます。SPFのinclude、DKIMのCNAME、Return-PathのCNAMEが有効になると、SPF(mtaサブドメイン経由)とDKIM(mlsendセレクター経由)はどちらも組織ドメインとアライメントが一致し、DMARCに成功して、築いた送信レピュテーションは共有プールではなく自社ドメインに蓄積されます。パスワードリセット、領収書、キャンペーンをMailerSendで送るなら、これが受信トレイと迷惑メールフォルダーの分かれ目です。
MailerSendにおけるSPFの実情
MailerSendは正真正銘のinclude型サービスです。ルートドメインに、共有のSPFのincludeを含むv=spf1 include:_spf.mailersend.net ~allを追加します。現在、このincludeは単一のレコード(v=spf1 ip4:212.11.79.0/24 ~all)に展開されるため、SPFのDNSルックアップの10回制限のうちちょうど1回を消費します。ネストされたincludeを気にする必要はありません。ただし、DMARCのSPFチェックをアライメントが一致した状態で成功させるのは、カスタムのReturn-PathのCNAMEです。MailerSendはエンベロープのMAIL FROMをmta.yourdomain.comに設定するため、SPFはこのサブドメインに対して評価されます。このサブドメインはCNAMEでMailerSendのSPF許可済みの領域を指し、かつ自社ドメインのサブドメインなので、緩和されたアライメントでFrom:アドレスと一致します。つまり、ルートドメインのincludeが組織ドメインでMailerSendを許可し、mtaのReturn-PathのCNAMEがDMARC向けにSPFのアライメントを一致させます。両方を公開してください。Return-PathのCNAMEを省くと、MailerSendは独自のバウンス用ドメインにフォールバックし、SPFのアライメントが自社ドメインと一致しなくなります。mailersend.netでSPFのチェック自体には成功していても、DMARCのSPF側のチェックに失敗することがあります。なお、DKIMのアライメントでDMARCに成功することは可能ですが、2つあるアライメントの経路の1つを捨てることになります。
設定手順
- 1
MailerSendに送信ドメインを追加
MailerSendのダッシュボードでEmail > Domainsを開き、Add domainをクリックします。ドメイン(できれば送信用サブドメイン、後述)を入力します。MailerSendがすぐにそのドメイン用の正確なSPF、DKIM、Return-Pathの値を生成し、プロバイダー別のDNS設定画面を表示します。ここからコピーするので、このページは開いたままにしてください。
- 2
送信用サブドメインを優先
MailerSendは、mail.yourdomain.comやnews.yourdomain.comのようなサブドメインからの送信をサポートし、推奨しています。サブドメインを使うと、MailerSendの送信レピュテーションを主要なメールボックスのドメイン(Google Workspace / Microsoft 365)から切り離せ、送信ストリームごとのDNSも整理された状態に保てます。サブドメインを使う場合は、以下のレコードをすべてそのサブドメインを基準にDNSへ公開します。
- 3
ルートドメイン(または送信ドメイン)にSPFのTXTレコードを公開
@(または送信用サブドメイン)に、MailerSendに表示される値v=spf1 include:_spf.mailersend.net ~allでTXTレコードを追加します。そのドメインから他のサービスでもすでに送信している場合は、2つ目のSPFレコードを作らないでください。include:_spf.mailersend.netを既存のv=spf1の1行にまとめ、末尾の~allも1つだけにします。
- 4
DKIMのCNAMEを追加
CNAMEレコードの欄で、MailerSendの指定どおりにDKIMレコードを追加します。ホストはmlsend2._domainkeyのような形で、mlsend2._domainkey.mailersend.netを指します。これはCNAMEで、TXTの公開鍵ではありません。鍵そのものはMailerSend側にあります。ホストと参照先はそのままコピーし、セレクターを打ち直さないでください。
- 5
Return-PathのCNAMEを追加
ホストがmtaで、mailersend.netを指すCNAMEを追加します。これによりカスタムのReturn-Path(バウンス/エンベロープドメイン)がmta.yourdomain.comに設定されます。これで、DMARC向けにSPFのアライメントが自社ドメインと一致し、バウンスとフィードバックのイベントもMailerSendを経由して戻ります。
- 6
(任意)トラッキング用とインバウンド用のレコードを追加
MailerSendでカスタムトラッキングドメインを有効にする場合は、表示されたCNAME(ホストemail、参照先links.mailersend.net)を追加すると、開封・クリックのリンクにmailersend.netではなく自社ドメインが使われます。インバウンドルーティングで返信を受信する場合は、MailerSendが提供するMXレコードを追加します(ホストはinboundのような形、値はinbound.mailersend.net、優先度10)。どちらも任意で、その機能を使わないなら不要です。
- 7
DMARCレコードを公開
MailerSendはDMARCレコードを作成しません。_dmarcに、値v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comのTXTレコードを追加します。p=noneで始めてレポートを収集し、MailerSendのメールがアライメントの一致した状態で成功していることを確認してから、quarantine、rejectへと引き上げます。
- 8
MailerSendでドメインを確認
ドメインのDNSページに戻り、「I have added DNS records」にチェックを入れてVerify domain(旧UI:Finish verification)をクリックします。レコードは通常数分で解決されますが、反映に最大48時間かかることがあります。MailerSendは、SPF、DKIM、Return-Pathを再チェックし、解決されたものを緑で示します。
- 9
実際のメールで確認し、送信の承認を受ける
Gmailアドレス宛てにテストを送り、Show originalを開いて、SPF: PASS、DKIM: PASS、DMARC: PASSであること、署名ドメインとReturn-Pathドメインが自社のものであることを確認します。なお、DNSの確認は必要条件ですが、十分条件ではありません。新規のMailerSendアカウントは、テスト受信者以外に送信する前に手動の承認も必要なので、求められたら承認リクエストを提出してください。
追加するレコード
正確な値はMailerSendのセットアップウィザードで生成されます。以下は、DNSホストに追加するレコードの形式を示したものです。
| タイプ | ホスト | 値 |
|---|---|---|
| TXT | @ | v=spf1 include:_spf.mailersend.net ~all例です。SPFレコードはドメインごとに1つだけにしてください。すでにv=spf1の行がある場合は、2つ目のレコードを追加せず、include:_spf.mailersend.netをそこにまとめます。送信用サブドメインの場合は、@ではなくそのサブドメインに公開します。 |
| CNAME | mlsend2._domainkey | mlsend2._domainkey.mailersend.netセレクターは例です。MailerSendはドメインごとにmlsendまたはmlsend2を割り当てます。Domainsページから正確なホストと参照先をコピーしてください。DKIMはCNAMEによる委任なので、貼り付けるTXTの公開鍵はありません。 |
| CNAME | mta | mailersend.netカスタムのReturn-Pathです。エンベロープのMAIL FROMをmta.yourdomain.comに設定し、DMARC向けにSPFのアライメントを一致させ、バウンスをMailerSendに戻します。省略しないでください。 |
| CNAME | links.mailersend.net任意です。MailerSendでカスタムトラッキングドメインを有効にする場合にのみ追加します。開封・クリックのリンクに自社ドメインが使われます。サブドメイン(email)は変更できます。 | |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com自分で公開するレコードです。DMARCレコードはドメインごとに1つです。p=noneで始め、レポートに問題がなければquarantine、rejectへ移行します。 |
ルートドメインのSPF(v=spf1)のTXTレコードは1つだけにし、すべての送信元をこの1行にまとめてください。SPFレコードが2つあると、それ自体がエラーになります。
DNSルックアップの10回制限
SPFのDNSルックアップは10回までに厳格に制限されており、超えるとpermerrorを返して、どの受信側でも検証されなくなります。MailerSendの設定がこの上限のうち何回を消費するかは、次のとおりです。
MailerSendは10回のルックアップのうち1回を消費します。ip4:とip6:のメカニズムはルックアップを消費しません。
DKIM
MailerSendは、DKIMを、貼り付けるTXTの公開鍵ではなくCNAMEレコードで委任します。レコードのホストはmlsend2._domainkey.yourdomain.comのような形で、mlsend2._domainkey.mailersend.netを指します。実際のRSA公開鍵はMailerSend側にあるため、鍵がローテーションされてもDNSを編集する必要はありません。セレクターは、ドメインに応じてmlsendまたはmlsend2が割り当てられます。セレクターと参照先は、Domainsページから正確にコピーしてください。打ち直したり推測したりしないでください。CNAMEなので、TXTでよくある255文字の分割問題は起きませんが、DNS管理画面の癖が2つあります。1つ目に、DNSエディターによってはCNAMEの参照先にドメインを自動で付加し、mlsend2._domainkey.mailersend.net.yourdomain.comという壊れた値になります。末尾にドットを付けるか、DNSホストが求める形式で参照先を入力し、MailerSendに解決されるようにしてください。2つ目に、DNSをCloudflareでプロキシしている場合は、このCNAMEを「DNS only」(グレーのクラウド)に設定します。プロキシが有効なDKIMのCNAMEレコードはMailerSendの鍵ではなくCloudflareのエッジに解決されるため、DKIMの確認が完了しません。
DMARC
DMARCは、自分で公開する別のポリシーレコードです。MailerSendは確認の過程で作成しませんが、ダッシュボードでは有料プランでDMARC監視を利用できます(Starterでは30日間無料)。_dmarc.yourdomain.comに、値v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comのTXTレコードを追加します。p=noneは監視のみで、配信には何も影響しませんが、受信側に集計レポートの送信を求めます。これにより、MailerSendのメールがSPFとDKIMに、自社ドメインとアライメントが一致した状態で成功していることを確認できます。MailerSendを使うと両方のメカニズムのアライメントが一致するので(SPFはmtaのReturn-Pathサブドメイン、DKIMは自社ドメインのmlsendセレクター)、すぐに問題のない成功結果を確認できるはずです。1~2週間、集計レポート(rua)を確認し、正当な送信者(MailerSendとドメイン上の他のツール)すべてが認証されていることを確かめてから、p=quarantine、最終的にp=rejectへと段階的に引き上げます。送信者がいくつあっても、_dmarcレコードはドメイン全体で1つだけにしてください。GmailとYahooの大量送信者ルールは少なくともp=noneを求めますが、なりすましを実際に防ぐのはp=rejectです。
正しく設定できたか確認する
緑のバッジだけで判断しないでください。MailerSendはDNSの反映を遅れて検知することがあり、レコードが有効になった後でも「up to 48 hours」と表示され続けることがあります。実際のメールで確認しましょう。MailerSendに追加した自社ドメインからGmailアドレス宛てにテストを送り、開いてShow originalを選びます。SPF: PASS、DKIM: PASS、DMARC: PASSと表示され、DKIMの署名ドメインとReturn-Path(mailed-by / SPF)のドメインがどちらもmailersend.netではなくyourdomain.comになっていれば成功です。コマンドラインでは次のとおりです:dig TXT yourdomain.com(SPFのincludeがあること)、dig CNAME mlsend2._domainkey.yourdomain.com(mlsend2._domainkey.mailersend.netに解決されること)、dig CNAME mta.yourdomain.com(mailersend.netに解決されること)、dig TXT _dmarc.yourdomain.com。続いて、Qualisendのドメイン診断でドメインをチェックし、すべてのレコードが解決され、SPFがルックアップの10回制限に収まっていることを確認します。最初のDMARC集計レポートが届いたら、DMARCレポート解析にドロップしてください。MailerSendが、アライメントが完全に一致した、成功している送信元として表示されるはずです。なお、DNSの確認によってMailerSendから自社ドメインとして送信できるようになりますが、トライアルアカウントがテスト受信者以外に送信するには、手動の承認が別途必要です。
よくある注意点
- 認証失敗の原因
ドメインのSPFのTXTレコードは必ず1つだけにしてください。すでにGoogle Workspace、Microsoft 365、または他のメール配信サービス(ESP)から送信している場合は、include:_spf.mailersend.netをその1つのv=spf1の行にまとめます。SPFレコードを2つに分けるとPermErrorになり、SPF全体が機能しなくなります。
- DNS設定
Return-PathのCNAME(mta → mailersend.net)を省かないでください。エンベロープドメインがmta.yourdomain.comに設定され、これによって、DMARC向けにSPFのアライメントが自社ドメインと一致します。これがないと、mailersend.net上ではSPFの「成功」となっても、アライメントが一致せず、DMARCのSPF側が失敗する場合があります。
- DNS設定
DKIMはCNAMEで設定し、TXTの公開鍵は使いません。DNS管理画面で「_domainkey」のレコードにTXTの欄しか表示されないなら、レコードのタイプが間違っています。mlsend2._domainkey.mailersend.netを指すCNAMEを使い、セレクターは正確にコピーしてください(mlsendかmlsend2かはドメインごとに割り当てられます)。
- DNS設定
DNSエディターによっては、CNAMEの参照先にドメインを自動で付加し、mlsend2._domainkey.mailersend.net.yourdomain.comやmailersend.net.yourdomain.comのような壊れた値になります。末尾にドットを付けるか、DNSホストが求める形式で参照先を入力し、MailerSendに解決されるようにしてください。
- DNS設定
DNSをCloudflareでプロキシしている場合は、DKIMとReturn-PathのCNAME、およびトラッキング用CNAME(ある場合)を「DNS only」(グレーのクラウド)に設定してください。オレンジのクラウドでプロキシが有効なCNAMEはMailerSendではなくCloudflareのエッジに解決され、確認に失敗します。
- 適用範囲
DNSの確認と送信の許可は別物です。新規のMailerSendアカウントはトライアル状態で、MailerSendが手動で承認するまでは、自分の確認済みテスト受信者にしか届きません。承認リクエストは別途提出してください。
- DNS設定
トラッキング用CNAME(email → links.mailersend.net)は、カスタムトラッキングドメインを実際に有効にする場合にだけ追加してください。インバウンドのMXレコードも、インバウンドルーティングを使う場合だけで十分です。使わない機能のレコードを追加しても、DNSが煩雑になるだけです。
- 適用範囲
送信ドメインやサブドメインごとに、独自のSPF、DKIM、Return-Pathのレコードが必要です。yourdomain.comを認証してもmail.yourdomain.comはカバーされません。実際に送信するドメインをMailerSendで確認してください。
SPFレコードを作成
以下ではMailerSendがあらかじめ選択されています。他に利用している送信プラットフォームを追加し、1つにまとめたレコードを公開してください。
このドメイン自身のサーバー
ドメインが(上記のサービスを経由せず)直接メールを送信する場合は、ドメイン自体を許可します。
その他の送信元・IP
リストにないもの(別のサービスのSPFホストや特定のIPアドレス)を追加します。
接頭辞のinclude:は自動で付加されます。サービスのドキュメントに記載されているホスト名を入力してください。
その他すべての送信元へのポリシー
上記に記載されていないサーバーからのメールを、受信側がどう処理すべきかを指定します(allメカニズム)。
- ルートドメインにTXTレコードとして公開します。ホストは@(ドメインそのもの)、値は上記の文字列全体です。
- SPFレコードは1つのドメインにつき1つだけにします。すべての送信元をこの1行にまとめてください。v=spf1で始まるTXTレコードが2つあると、両方とも無効になります。
- DNSルックアップは10回以内に収めてください。include:、a、mxはそれぞれ1回とカウントされ、includeは内部でさらにルックアップを発生させることがあります。ip4:とip6:はカウントされません。
送信ドメイン認証の設定が済んだら、次は検証済みのクリーンなリストへの配信です。
リストを検証MailerSendのSPFに関するよくある質問
関連記事
トランザクションメール・APIの他のサービス
- Mailgun
- Mailjet
- Mailtrap
- Mandrill (Mailchimp Transactional)
- Postmark
- Resend
- Scaleway Transactional Email
- SendGrid
公開したら、ドメイン診断ですべてのレコードが正しく解決されることを確認し、DMARCレポート解析で自社ドメインを名乗って送信している送信元を把握します。作成ツールではすべての送信元を確認できます。ただし、認証は到達率対策の半分にすぎません。送信IPやドメインがブラックリストに掲載されていると、SPFの設定がどれほど適切でも迷惑メールに振り分けられます。そのため、ブラックリスト監視で掲載状況を確認しておくことをおすすめします。
認証の次は、リストをクリーンに保つ
SPF、DKIM、DMARCに成功すれば受信トレイに届き、クリーンなリストならその状態を維持できます。お手持ちのリストも検証してクリーニングできます。100クレジット無料、クレジットカード登録不要で始められます。