チュートリアル · 12 分で読了

セルフホストメール送信者に必要な 7 つの DNS レコード

著者:AcelleMail Team May 8, 2026 読了時間 12 分
tutorial deliverability

コピペ用 DNS リファレンス:SPF、DKIM、DMARC、MX、BIMI、MTA-STS、トラッキングドメインの CNAME。Cloudflare と Route53 用の具体的な構文、公開順、各レコードが実際に何をするか。

§1

7 つのレコード、公開順

メールはやや特殊です — 完全な送信者セットアップには 3〜4 のレコードタイプにまたがる別個の DNS レコードが 7 つあります。1 つでも欠ければ配線自体はメッセージを動かしますが、メールボックスプロバイダーは静かに spam フォルダへ降格させます。7 つすべてを公開すれば、/guide/email-deliverability の「Google が要求するすべて」の基準を越えられます。

順序が重要です。SPF と DKIM は DMARC がアラインメントを強制し始める前に着地させましょう、さもないと正当なメールが quarantine 行きになります。各ベンダー共通の標準ルールも「DNS の伝搬を待つ」ことです — レコードを公開してからメールボックスプロバイダーに再チェックを求めるまでに最低 30 分は空けてください。

#レコード目的仕様
1MXこのドメイン宛の受信メールの行き先RFC 1035 §3.3.9
2SPF (TXT)許可された送信 IPRFC 7208
3DKIM (TXT)公開署名鍵RFC 6376
4DMARC (TXT)認証失敗時のポリシー + レポートRFC 7489
5トラッキング (CNAME)クリック/開封トラッカーを自ドメイン下にRFC 1035
6MTA-STS受信メールに TLS を強制RFC 8461
7BIMI (TXT)受信箱メッセージ横にブランドロゴdraft-blank-ietf-bimi

§2

1) MX — 受信メールが少なくても必要

MX レコード(RFC 1035 §3.3.9)はドメイン宛受信メールの配送先を世界に伝えます。送信ドメインが「outbound only」で返信を読まないとしても、MX レコードは依然として必要です — 多くのメールボックスプロバイダーは MX がないドメインのレピュテーションを下げます。正当な送信者は返信を受け付ける、という前提に基づいています。到達可能な任意のメールサーバーを指す 1 つのレコードで十分で、そのサーバーが postmaster の受信箱にしか配送しなくても構いません。

; Cloudflare DNS UI
Type: MX  Name: @  Mail server: mail.yourcompany.com  Priority: 10
# Route53 JSON
{ "Type": "MX", "Name": "yourcompany.com.", "TTL": 3600,
  "ResourceRecords": [{ "Value": "10 mail.yourcompany.com." }] }

§3

2) SPF — TXT 1 つ、ルックアップ数に注意

SPF(RFC 7208)は、ドメインの送信を許可する IP を列挙する単一の TXT レコードです。鉄則:再帰 DNS ルックアップの合計は 10 未満に保つこと(RFC 7208 §4.6.4)。各 include: は 1 つ消費し、ネストされた include は累積でカウントされます。ip4: / ip6: メカニズムはルックアップ 0 なので、カウントが増えてきたら古い include を明示的な IP レンジに畳んでください。

# For Amazon SES (recommended pairing)
Type: TXT  Name: @  Value: v=spf1 include:amazonses.com -all
# For self-hosted Postal/Postfix on a single IP
Type: TXT  Name: @  Value: v=spf1 ip4:1.2.3.4 -all

正当な送信元がすべてカバーされていることを確認できたら -all(hard-fail)で終端します。まだ確信が持てなければ ~all(soft-fail)で始め、DMARC レポートが 2 週間クリーンになったら -all に締めます。

§4

3) DKIM — SES はベンダー管理、Postal は自前

DKIM(RFC 6376) は、署名鍵ペアの公開部分を {selector}._domainkey.{domain} の TXT レコードとして公開します。「selector」は自分で選ぶ識別子で、ベンダー固有または任意です。SES の場合、AWS は AWS が管理する TXT レコードへ解決される CNAME を 3 つ提供します(これにより AWS は DNS に触れずに鍵をローテーションできます)。

# SES Easy DKIM — 3 CNAMEs (AWS rotates keys via these)
Type: CNAME  Name: token1._domainkey  Value: token1.dkim.amazonses.com
Type: CNAME  Name: token2._domainkey  Value: token2.dkim.amazonses.com
Type: CNAME  Name: token3._domainkey  Value: token3.dkim.amazonses.com

セルフホストの Postal や Postfix+OpenDKIM では、鍵ペアをローカルで生成し、MTA を署名するよう構成、公開部分を TXT として公開します。

# Generate via openssl, then publish the .txt half
Type: TXT  Name: s1._domainkey  Value: v=DKIM1; k=rsa; p=MIGfMA0G…

どちらの経路を取るにせよ、DKIM を完了とする前に dig TXT {selector}._domainkey.{domain} で検証してください。

§5

4) DMARC — p=none で始め、p=reject で終わる

DMARC(RFC 7489)_dmarc.{domain} に置きます。p=none のランプをスキップするのが最もありがちな間違いです — まだメールフローを完全に把握していないドメインに対していきなり p=reject へ飛ぶと、正当なメール(転送者、メーリングリスト、サードパーティ CRM 送信者)が静かにバウンスします。

# Stage 1 (weeks 1-3) — monitor only
Type: TXT  Name: _dmarc  Value: v=DMARC1; p=none; rua=mailto:dmarc@yourcompany.com; pct=100; adkim=r; aspf=r
# Stage 2 (weeks 4-5) — partial enforcement
Type: TXT  Name: _dmarc  Value: v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc@yourcompany.com
# Stage 3 (week 6+) — full enforcement
Type: TXT  Name: _dmarc  Value: v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@yourcompany.com

段階の間は、rua メールボックスに届く日次集計 XML レポートを読んでください。Postmark の DMARC analyzer やセルフホストの Parsedmarc のようなツールが可視化してくれます。生 XML も密ですが読めます。

§6

5) トラッキングドメイン CNAME — 信頼を維持する

デフォルトでは AcelleMail の開封ピクセルとクリックトラッキング URL はインストールのプライマリドメインから配信されます。メールボックスプロバイダーは From、リンククリック、配信停止 URL のルートドメインが一貫していること — すべて同じ登録ドメイン上 — を好みます。ブランディング面でも、tracker.yourcompany.com を指すリンクは links.acellemail.com を指すリンクよりも信頼シグナルが強くなります。

# Tracking subdomain CNAME → AcelleMail install
Type: CNAME  Name: track  Value: app.yourcompany.com

# Then in AcelleMail admin: Settings → Tracking domain
# Set: track.yourcompany.com

CNAME が解決されると、AcelleMail は送信メッセージ内のクリックトラッキング URL をすべてそれを使うように書き換えます。配信停止リンクのドメインも同じルール(同じ CNAME)に従います。

§7

6) MTA-STS — 受信時の TLS を強制

MTA-STS(RFC 8461)は他の送信者に「私の MX に配送するときは常に TLS を要求してください」と伝えます。これがないと、経路上の攻撃者は TLS 対応のハンドシェイクを平文にダウングレードできます。これがあれば、TLS が確立できなければ送信側サーバーは配送を拒否します。実装はホストされたポリシーファイルを指す TXT レコード 1 つです。

# DNS record
Type: TXT  Name: _mta-sts  Value: v=STSv1; id=20260508T120000;

# Hosted policy file at https://mta-sts.yourcompany.com/.well-known/mta-sts.txt
version: STSv1
mode: enforce
mx: mail.yourcompany.com
max_age: 604800

最初の 1 週間はポリシーを mode: testing で運用し、その後 mode: enforce に切り替えます。多くの bulk sender が MTA-STS をスキップしています — デプロイすれば無料の信頼シグナルになります。

§8

7) BIMI — 受信箱メッセージ横にブランドロゴ

BIMI(Brand Indicators for Message Identification)は 7 つの中で最も新しく、唯一まだ確定 RFC ではありませんが、Gmail、Yahoo、Apple Mail、Fastmail その他のクライアントで本番運用中です。仕組みはこうです — SVG ロゴと(オプションで)Verified Mark Certificate(VMC)を指す TXT レコードを公開すれば、対応クライアントが受信箱リスト上のメッセージ横にロゴを表示します。

# Without VMC (free, lower coverage)
Type: TXT  Name: default._bimi  Value: v=BIMI1; l=https://yourcompany.com/bimi-logo.svg

# With VMC (paid, full Gmail coverage)
Type: TXT  Name: default._bimi  Value: v=BIMI1; l=https://yourcompany.com/bimi-logo.svg; a=https://yourcompany.com/bimi-cert.pem

前提条件:DMARC ポリシーが最低 p=quarantine であること(BIMI は p=none では尊重されません)、SVG は SVG Tiny Portable / Secure(SVG-PS)であること。受け入れ状況には差があります — Gmail は受信箱リスト表示に有料 VMC(DigiCert / Entrust 経由で年 $1,500)が必要、Yahoo と Apple は VMC なしでも BIMI を受け入れます。公開ケーススタディでは開封率の 5〜20% 押し上げがよく報告されています。

§9

30 秒でチェーン全体を検証

公開後、自分宛にテストメッセージを送りヘッダを確認します。Gmail web:メッセージを開き、3 点メニュー → 「メッセージのソースを表示」。以下を確認:

Authentication-Results: mx.google.com;
  dkim=pass header.i=@yourcompany.com header.s=token1
  spf=pass smtp.mailfrom=yourcompany.com
  dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=yourcompany.com

3 つの pass 判定が基準です。それ以下 — failsoftfailneutral — は、レコードが間違っているか、DNS がまだ伝搬していないか、メール本文が経路上で改変されている(稀)かを意味します。判定が曖昧な場合は正典の Authentication-Results ヘッダ(RFC 8601) 仕様と突き合わせてください。

お客様のインフラで運用してください。

AcelleMail は買い切りライセンスのセルフホスト型メールプラットフォームです。完全なソースコード、配信者ごとの料金なし。

ライブデモを試す