メールと送信ドメイン認証とは ── 実機を触ったことがない人のための SMTP・SPF・DKIM・DMARC の説明

メールは「差出人を名乗り放題」の仕組みです。SMTP は 1980 年代の設計で、送信者が書いた From をそのまま信じます。だから取引先や上司を装った標的型メールが成立します。 これを受信側で見破るのが送信ドメイン認証(SPF・DKIM・DMARC)で、午後では「どのサーバの IP を DNS に登録するか」「どの From を検査するか」「委託先に送らせるとどう崩れるか」という形で出ます。 令和6年 午後Ⅱ問2 が丸ごとこのテーマでした。

1. 送信ドメイン認証が解いている問題

攻撃者は自分のサーバから「From: 社長 <president@y-sha.com>」と書いたメールを y-sha.com の社員に送れます。SMTP にはこれを止める仕組みがなく、受信サーバは書いてある通りに受け取ります。 標的型メール攻撃はこのなりすましに、添付ファイルやリンク先のマルウェアを組み合わせたものです(平成26年 午後Ⅱ問1)。

基本的な考え方 「このドメインのメールを送ってよいサーバはこれだ」とドメインの持ち主が DNS に宣言しておき、受信側がDNS を引いて照合する。 DNS はドメインの持ち主しか書き換えられないので、これが「本物かどうか」の根拠になります。SPF は送信元 IP で、DKIM は電子署名で照合し、DMARC がその結果の扱い方を決めます。

2. 配送の流れ

送信側 x-sha.com 受信側 y-sha.com MUA(メーラ) MTA送信メールサーバ MTA(MX)受信メールサーバ MUA(メーラ) ① 587 SMTP-AUTH で 利用者を認証 ③ 25 ② MX を引いて 相手サーバを知る ④ POP/IMAP 受信側は ③の時点で検査 送信ドメイン認証(SPF・DKIM・DMARC)は、③ で受信側 MTA が「本当に x-sha.com から来たか」を調べる仕組み ① が 25 番ではなく 587 番なのは、ISP が 25 番の外向き通信を止めている(OP25B)ため
図1 メールは MUA → 自社 MTA → 相手 MTA → 相手 MUA と渡る。検査は相手 MTA が受け取る瞬間

利用者のメーラが自社のメールサーバへ渡す(サブミッション)

MUA(メーラ)は自社の MTA(メールサーバ)に SMTP で渡します。このとき使うのがサブミッションポート 587 番で、SMTP-AUTH で利用者を認証してから受け付けます。 25 番ではなく 587 番を使うのは、ISP が迷惑メール対策として動的 IP から外向きの 25 番を止めている(OP25B、Outbound Port 25 Blocking)からです。認証付きの 587 番ならどこからでも自社サーバに渡せます(平成28年 午後Ⅰ問1 設問2(4)(5))。

自社 MTA が相手ドメインの MX を引いて 25 番で送る

MTA は宛先アドレスのドメイン(y-sha.com)の MX レコードを DNS で引き、受取サーバの名前と優先度(Preference、小さいほど優先)を得て、そのサーバの 25 番に SMTP で接続します。 MTA 同士の 25 番は認証がありません。だからこそ送信ドメイン認証が要ります。

相手 MTA が受け取り、利用者が POP/IMAP で取り出す

受信側 MTA は受け取ったメールをメールボックスに入れ、利用者は POP3(110) か IMAP(143)で取り出します。送信ドメイン認証はこの受け取る瞬間に MTA が行います。

中継の条件(踏み台にされない) MTA は「自ドメイン宛てのメール」と「認証済みの利用者からのメール」だけ中継します。誰からのメールでもどこへでも中継する設定(オープンリレー)は、迷惑メールの踏み台にされます (平成28年 午後Ⅰ問1 設問2(1)「不正メールの踏み台にされるリスク」、令和元年 午後Ⅱ問2 設問4(4)「自社宛て以外は中継しない」)。 受信側 FW は、インターネットからの 25 番をMX に登録したサーバ(メール中継サーバ)だけに許可します。

3. 2 つの From(ここが全ての鍵)

封筒(エンベロープ) MAIL FROM: bounce@x-sha.com RCPT TO: taro@y-sha.com SMTP のコマンドで渡す 配送(宛先・エラー返送先)に使う 受信者のメーラには表示されない SPF が検査するのはこちら 便箋(ヘッダー+本文) From: 営業部 <sales@x-sha.com> To: taro@y-sha.com Subject: 請求書の件 DATA コマンドの中身 受信者のメーラに表示されるのはこちら DKIM の署名対象・DMARC の照合対象 封筒と便箋の差出人は別物で、どちらも送信者が自由に書ける。だから「なりすまし」ができる
図2 封筒の差出人(エンベロープ From)と便箋の差出人(ヘッダー From)は別物

SMTP のやり取りは、まず MAIL FROM と RCPT TO コマンドで「差出人と宛先」を伝え、次に DATA コマンドでヘッダーと本文を送ります。 MAIL FROM で渡す差出人がエンベロープ From(封筒の差出人、Return-Path)、DATA の中の From: 行がヘッダー From(便箋の差出人)です。

S: 220 mail.y-sha.com ESMTP
C: EHLO mail.x-sha.com
C: MAIL FROM:<bounce@x-sha.com>          ← エンベロープ From(SPF が見る)
C: RCPT TO:<taro@y-sha.com>
C: DATA
C: From: 営業部 <sales@x-sha.com>        ← ヘッダー From(受信者に見える。DMARC が見る)
C: To: taro@y-sha.com
C: Subject: 請求書の件
C: (本文)
C: .

4. SPF・DKIM・DMARC の仕組み

送信側 MTAIP 200.a.b.1 受信側 MTAここで検査 x-sha.com の権威 DNSTXT レコード メール DNS で問合せ SPF エンベロープ From のドメインの TXT「v=spf1 ip4:200.a.b.1 -all」に送信元 IP があるか DKIM DKIM-Signature(署名)を selector._domainkey.x-sha.com の TXT の公開鍵で検証 DMARC SPF か DKIM が通り、その認証ドメインがヘッダー From と一致(アライメント)するか      不一致なら _dmarc.x-sha.com の TXT のポリシー(none / quarantine / reject)に従う
図3 受信側 MTA が送信側ドメインの DNS を引いて照合する

SPF(Sender Policy Framework)

ドメインの持ち主が「このドメインを名乗ってメールを送るサーバの IP アドレスはこれ」を DNS の TXT レコードに書きます。

x-sha.com.   IN TXT  "v=spf1 ip4:200.a.b.1 ip4:200.a.b.2 include:_spf.saas.example -all"
  ip4:       送信を許可するサーバの IP アドレス(グローバル側。NAT 後の IP)
  include:   他社(メール配信サービス等)の SPF をまとめて許可
  -all       上記以外は失敗(hardfail)。~all なら softfail(疑わしいが受け取る)

受信側 MTA は、エンベロープ From のドメインの TXT を引き、SMTP 接続の送信元 IP アドレスがその中にあるかを調べます。合っていれば pass です(令和6年 午後Ⅱ問2 設問2(3)、平成28年 午後Ⅰ問1 設問3)。

SPF の 2 つの弱点 ①転送で壊れる。受信側がメールを別のアドレスに転送すると、送信元 IP が転送サーバの IP になり、元のドメインの SPF に載っていないので fail になります。 ②ヘッダー From を見ていない。攻撃者がエンベロープ From を自分のドメイン(SPF が通る)にし、ヘッダー From だけを y-sha.com にすれば SPF は pass します。この穴を塞ぐのが DMARC のアライメントです。

DKIM(DomainKeys Identified Mail)

送信側 MTA が秘密鍵でヘッダーの一部と本文のハッシュに署名し、DKIM-Signature ヘッダーとして付けます。受信側は署名に書かれたセレクタとドメインから selector._domainkey.x-sha.com の TXT を引いて公開鍵を得、署名を検証します。

DKIM-Signature: v=1; a=rsa-sha256; d=x-sha.com; s=sel2024;
                h=from:to:subject:date; bh=...; b=...
  d=  署名したドメイン s=  セレクタ(鍵を切り替えられるよう名前を付ける)
  h=  署名対象のヘッダー bh= 本文のハッシュ b= 署名

sel2024._domainkey.x-sha.com.  IN TXT  "v=DKIM1; k=rsa; p=MIIBIjANBg..."   ← 公開鍵

DMARC(Domain-based Message Authentication, Reporting and Conformance)

SPF と DKIM はそれぞれ「通った/通らない」しか出しません。DMARC はヘッダー From のドメインを軸に、次の 2 つを決めます。

_dmarc.x-sha.com.  IN TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-rep@x-sha.com"
  rua=  集計レポートの送り先。どの IP から自ドメインを名乗るメールが出ているかが分かる

導入は p=none でレポートを集め、正規の送信経路(SaaS やメール配信サービスを含む)が全部 SPF/DKIM を通ることを確認してから quarantine → reject に上げるのが定石です。いきなり reject にすると、SPF/DKIM を設定し忘れた正規サーバのメールが届かなくなります。

5. 設計と落とし穴(午後の本文はここで作られる)

SPF に書く IP アドレスは「相手から見える IP」

送信メールサーバがプライベートアドレスで、FW で NAT されて出ていくなら、SPF に書くのはNAT 後のグローバル IP です。受信側が見るのは SMTP 接続の送信元 IP だからです。 平成26年 午後Ⅱ問1 設問2(3)「社外に送信されるメールの送信元 IP アドレスになるから」、令和6年 午後Ⅱ問2 設問2(1) の「ウ・エ = 200.a.b.1 と 200.a.b.2」がこれです。

業務を委託先に任せると SPF/DKIM がどう崩れるか(令和6年 午後Ⅱ問2 の筋)

Y 社が y-sha.com を名乗るメールの送信をサポート会社 Z に委託すると、Z のサーバから y-sha.com のメールが出ます。

逆引きと MX

受信側の MTA は、送信元 IP の逆引き(PTR)が引けるか、その名前が送信元の名乗る名前と合うかも見ます。逆引きが無いと迷惑メール扱いされやすいので、送信サーバのグローバル IP には PTR を登録します(令和6年 午後Ⅱ問2 設問1(3) の「逆引き」)。 MX は複数登録でき、Preference が小さいサーバが優先、停止時は次のサーバへ配送されます。切替作業の前には MX の TTL を短くしておきます(同 設問1(2))。

内部メールサーバと中継サーバの分離

社内のメールボックスを持つサーバを直接インターネットに晒さず、DMZ にメール中継サーバを置いて MX にはそれを登録します。中継サーバが SPF/DKIM 検査・ウイルス検査・スパム判定を行い、合格したものだけを内部に渡します (平成26年 午後Ⅱ問1 設問2(4)「メール中継サーバ。社外から Y 社宛てのメールを直接受信するから」)。

6. 受信側の対策と暗号化

標的型メール対策(送信ドメイン認証で止まらないもの)

暗号化

方式守る区間備考
STARTTLS(SMTP over TLS)MTA 間、MUA と MTA 間の通信路サーバに届けば平文。相手が非対応なら平文に落ちる(日和見)
SMTPS(465)/ POP3S(995)/ IMAPS(993)MUA と MTA 間の通信路最初から TLS
S/MIME / PGPメール本文そのもの(端から端まで)サーバ上でも暗号化されたまま。送信者の署名で差出人の証明にもなる。証明書配布が手間

7. 用語集(午後で出る順)

用語意味午後でのポイント
MUA / MTAメーラ / メールサーバ(転送エージェント)MUA → MTA が 587、MTA → MTA が 25
サブミッションポート(587)利用者が自社 MTA に渡す専用ポートSMTP-AUTH とセット。OP25B を回避
SMTP-AUTH送信時の利用者認証認証済み利用者だけ中継する
OP25BISP が動的 IP からの外向き 25 番を遮断迷惑メール送信 PC 対策
MX / Preference受取サーバ / 優先度(小さいほど優先)FW は MX のサーバだけに 25 番を許可
エンベロープ From(MAIL FROM)封筒の差出人。エラー返送先SPF の検査対象。受信者に見えない
ヘッダー From便箋の差出人。受信者に見えるなりすましの対象。DMARC の照合対象
SPF送信元 IP を DNS の TXT で宣言NAT 後のグローバル IP を書く。転送で壊れる
DKIM秘密鍵で署名、公開鍵を DNS にセレクタで鍵を分ける。転送に強い。改ざん検知
DMARCヘッダー From とのアライメントとポリシーnone → quarantine → reject。レポート(rua)
オープンリレー誰からでもどこへでも中継する MTA踏み台。自ドメイン宛てと認証済みだけ中継
逆引き(PTR)IP → 名前送信サーバの IP に必ず登録
メール中継サーバDMZ で外部と直接 SMTP する MTAMX はこれ。検査はここで
STARTTLS / S/MIME通信路の暗号化 / 本文の暗号化と署名守る範囲が違う

8. 午後での問われ方と答え方の型

設問の型答え方出た年度
空欄「MX」「SMTP-AUTH」「サブミッションポート」「MAIL FROM」配送の流れの用語。SPF が見るのは MAIL FROM(エンベロープ From)H28 午後Ⅰ問1、R6 午後Ⅱ問2
SPF の検査内容送信元メールサーバの IP アドレスが、エンベロープ From のドメインの SPF レコードに登録されていることR6 午後Ⅱ問2、H28 午後Ⅰ問1、H26 午後Ⅱ問1
SPF に登録する IP アドレスとその理由FW で NAT された後のグローバル IP。社外に送信されるメールの送信元 IP になるからR6 午後Ⅱ問2、H26 午後Ⅱ問1
DKIM の鍵と DNS に置くものRSA、DNS に登録するのは公開鍵。署名は送信側の秘密鍵R6 午後Ⅱ問2
DKIM で分かること受信したメールが正規のメールサーバから送信されたものか(改ざんされていないか)R6 午後Ⅱ問2
委託先にも送らせるときの DNS 設定委託先サーバの IP を自ドメインの SPF に追加。DKIM は別セレクタの公開鍵を登録R6 午後Ⅱ問2
委託先用に別の鍵ペアを作る利点委託先から鍵が漏えいしても自社の DKIM は影響を受けないR6 午後Ⅱ問2
委託先経由で残る問題なりすましメールも委託先サーバから社外に転送されてしまうR6 午後Ⅱ問2
MX の TTL を短くしている理由切替時にキャッシュ DNS が古い MX を保持する時間を短くするためR6 午後Ⅱ問2
インターネットからの SMTP を受けるサーバと理由メール中継サーバ。社外から自社宛てのメールを直接受信するからH26 午後Ⅱ問1
中継しない条件自社宛て以外のメールは中継しない(踏み台防止)R1 午後Ⅱ問2、H28 午後Ⅰ問1
利用者がすべき標的型メール対策添付を開かない、リンクにアクセスしない、差出人を確認、不審メールを報告・共有H26 午後Ⅱ問1
書き方の型 SPF の説明では「送信元メールサーバの IP アドレスがSPF レコードに登録されている」の 2 要素を必ず入れる。「ドメインが正しい」だけでは誤り。 From を書くときはエンベロープ From か ヘッダー From かを明示する。鍵は「秘密鍵で署名、公開鍵を DNS に」の向きを間違えない。 IP アドレスを書く設問は、図のFW の外側(NAT 後)のアドレスを拾う。

9. ミニ確認問題

クリックで答えが開きます。

Q1 MUA → 自社 MTA、MTA → 相手 MTA、MUA がメールを取り出す、それぞれのプロトコルとポートSMTP 587(サブミッション、SMTP-AUTH)、SMTP 25、POP3 110 / IMAP 143(TLS なら 995 / 993)。
Q2 サブミッションポートを使う理由ISP が動的 IP からの外向き 25 番を遮断している(OP25B)ため。587 番は SMTP-AUTH で利用者を認証してから受け付けるので、どこからでも自社サーバに渡せる。
Q3 エンベロープ From とヘッダー From の違い。SPF と DMARC はそれぞれどちらを見るかエンベロープ From は MAIL FROM で渡す封筒の差出人(エラー返送先、受信者に見えない)。ヘッダー From は DATA 内の From: 行(受信者に見える)。SPF はエンベロープ From、DMARC はヘッダー From。
Q4 SPF の検査内容を 1 文でSMTP 接続の送信元 IP アドレスが、エンベロープ From のドメインの SPF(TXT)レコードに登録されていることを確認する。
Q5 送信メールサーバがプライベート IP で FW で NAT されている。SPF に書く IP はNAT 後のグローバル IP アドレス。受信側が見るのは社外に出たときの送信元 IP だから。
Q6 SPF が転送で壊れる理由と、DKIM が壊れない理由転送すると送信元 IP が転送サーバになり、元ドメインの SPF に載っていないから。DKIM の署名はメール自体に付いて運ばれ、公開鍵は DNS にあるので転送後も検証できる。
Q7 DKIM の秘密鍵と公開鍵はどこに置くか。セレクタとは秘密鍵は送信メールサーバ、公開鍵は DNS の selector._domainkey.ドメイン の TXT。セレクタは鍵に付ける名前で、複数の鍵(委託先用、更新用)を使い分けるためのもの。
Q8 DMARC のアライメントとは。何を防ぐかSPF または DKIM で認証されたドメインがヘッダー From のドメインと一致することの確認。エンベロープ From を自分のドメインにして SPF を通し、ヘッダー From だけを他社に偽る手口を防ぐ。
Q9 委託先にも自社ドメインでメールを送らせる。SPF と DKIM で必要な設定と、別鍵にする利点SPF に委託先サーバの IP を追加。DKIM は委託先用に別セレクタの鍵ペアを作り公開鍵を自社 DNS に登録。委託先から鍵が漏えいしても自社の DKIM 運用に影響しない。
Q10 STARTTLS と S/MIME の守る範囲の違いSTARTTLS はサーバ間・クライアントとサーバ間の通信路だけ(サーバ上では平文、相手非対応なら平文)。S/MIME は本文そのものを端から端まで暗号化し、署名で差出人も証明する。

10. 実機で見るなら(任意)

DNS で各レコードを確認する(nslookup)
  nslookup -type=MX  example.com                受取サーバと Preference
  nslookup -type=TXT example.com                "v=spf1 ..." が SPF
  nslookup -type=TXT _dmarc.example.com         "v=DMARC1; p=..." が DMARC
  nslookup -type=TXT selector._domainkey.example.com   DKIM 公開鍵(セレクタはヘッダーの s= を見る)
  nslookup 200.a.b.1                            逆引き(PTR)

受信したメールの「ソースを表示」で見るヘッダー
  Return-Path:            エンベロープ From(MAIL FROM の値)
  Received:               通った MTA の記録(下から上へ)。送信元 IP が分かる
  Authentication-Results: spf=pass / dkim=pass / dmarc=pass と受信側の判定結果
  DKIM-Signature:         d= s= h= bh= b=

用語の振り返り

このページの用語集(14 語)から作った確認問題です。「意味 → 用語」は意味の説明(用語そのものは__で伏せてある)を読んで用語を入力し、Enter で答え合わせします。 表記ゆれで × になったときは「合っていた」で直せます。「用語 → 意味」は口で説明してから答えを開いて自己採点します。結果はこのブラウザに保存され、「×だけ」で間違えた語だけを解き直せます。

← DNSトップ(目次)へL2冗長化 →

作成 2026-10-28。ネットワークスペシャリスト 科目B(午後)対策。出典の年度・設問番号は IPA 公開の解答例で確認したもの(平成26年秋 午後Ⅱ問1、平成28年秋 午後Ⅰ問1、令和元年秋 午後Ⅱ問2、令和6年春 午後Ⅱ問2)。 関連: DNS とは、プロキシと SWG とは、午後 解答用紙 令和6年。