← RFC Reference

メールヘッダーの構造

Email Concepts Encyclopedia Published March 2026
ELI5: メールヘッダーは封筒の外側の文字のようなもので、さらにそれに留められた詳細な移動記録です。`From:`と`To:`は誰から誰へかを示します。`Received:`ヘッダーはそれを扱ったすべての郵便局からのスタンプです。`DKIM-Signature:`は改ざん防止シールです。`Authentication-Results:`は最後の郵便局がそのメールが正当かどうかについての判定です。

メール メッセージ内のすべての重要なヘッダー フィールドについて説明します。その意味、設定者、重要な理由についても説明します。完全に注釈を付けた実際の例を含みます。

完全な例

受信者のメールボックスに表示される実際のメール ヘッダーは上から下までです。各ヘッダーについて詳しく説明します。

Return-Path: <bounces+alice=example.com@sender.mailertogo.com>
Delivered-To: bob@example.net
Received: from mx1.example.net (mx1.example.net [203.0.113.10])
by final-mda.example.net with LMTP id abc123
for <bob@example.net>; Tue, 11 Mar 2026 14:00:12 +0000
Received: from sender.mailertogo.com (sender.mailertogo.com [198.51.100.42])
by mx1.example.net (Postfix) with ESMTPS id 4F3A21C8
for <bob@example.net>; Tue, 11 Mar 2026 14:00:10 +0000
Authentication-Results: mx1.example.net;
spf=pass (sender SPF authorized) smtp.mailfrom=sender.mailertogo.com;
dkim=pass header.d=example.com header.s=mtg header.b=AuUoFE;
dmarc=pass (policy=reject) header.from=example.com
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mtg;
c=relaxed/relaxed; q=dns/txt;
h=from:to:subject:date:message-id:mime-version:content-type;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk...
From: Alice <alice@example.com>
To: Bob <bob@example.net>
Subject: Your March invoice is ready
Date: Tue, 11 Mar 2026 14:00:00 +0000
Message-ID: <inv-7842@example.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_Part_001"
List-Unsubscribe: <https://example.com/unsub?t=abc123>,
<mailto:unsub@example.com?subject=unsubscribe-abc123>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

それでは各ヘッダーを見ていきましょう。

ID ヘッダー

From

From: Alice <alice@example.com>

RFC 5322 で定義されたメッセージの作成者。これは受信者がメール クライアントで表示するもの。オプションの表示名 (Alice) とメールボックス アドレス (alice@example.com) で構成されます。DMARC アラインメント チェックはこのヘッダーのドメインに対して実行されます。

From はエンベロープ送信者と同じではありません。エンベロープ送信者 (SMTP の MAIL FROM) はまったく異なる場合があります。From: ヘッダーはメッセージ作成者によって設定されます。エンベロープ送信者は送信システムによって設定されます。

To、Cc、Bcc

To: Bob <bob@example.net>

To:Cc: は表示ヘッダーです。意図した受信者を示しますが、配信は制御しません。実際の受信者は SMTP RCPT TO コマンドで決定されます。これにはヘッダーにリストされていない Bcc 受信者が含まれる場合があります。メッセージには RCPT TO に含まれていないアドレスをリストする To: ヘッダーがある場合があり、その逆もあります (これが Bcc の仕組みです)。

Reply-To

この例には示されていませんが、一般的です。From: と異なる場合に返信を送信するべき場所を指定します。メッセージが no-reply アドレスから送信されているが、返信がサポート アドレスに送信される場合によく使用されます。

Reply-To: support@example.com

Sender

作成者と異なる送信責任者がいる場合に使用されます。アリスのアシスタントがアリスの代わりにメッセージを送信する場合、ヘッダーは From: AliceSender: Assistant と表示される場合があります。ほとんどのメッセージはこのヘッダーを省略します。

メッセージ識別

Message-ID

Message-ID: <inv-7842@example.com>

このメッセージのグローバルに一意の識別子で、送信者によって生成されます。形式は <unique-part@domain> です。これはスレッド化、重複排除、バウンス相関に不可欠です。すべてのメッセージにはこれが必要です。送信システムが設定しない場合、最初の MTA が生成します。ただしその場合、送信されたメッセージとバウンスを相関させる能力が失われます。

In-Reply-To および References

スレッド化に使用されます。In-Reply-To には返信されるメッセージの Message-ID が含まれます。References にはスレッド内の Message-ID 値の完全なチェーンが含まれます。メール クライアントはこれを使用して会話をグループ化します。

In-Reply-To: <inv-7842@example.com>
References: <inv-7842@example.com> <reply-001@example.net>

日付と件名

Date

Date: Tue, 11 Mar 2026 14:00:00 +0000

メッセージが作成された日時で、送信者によって設定されます。形式は RFC 5322 で指定されています。これは配信時刻ではありません。メッセージは配信前に数時間から数日間キューで停滞する場合があります。常にタイム ゾーン オフセットを含めてください。

Subject

Subject: Your March invoice is ready

メッセージを要約する自由形式のテキスト。仕様に長さ制限はありませんが、メール クライアントは様々な長さで切り詰めます。一貫した表示を見やすくするために 60 文字以下に保ってください。非 ASCII 文字は RFC 2047 エンコーディング (例: =?UTF-8?Q?...?=) を使用してエンコードする必要がありますが、ほとんどの最新メール システムは透過的に処理します。

Received チェーン

Received: from mx1.example.net (mx1.example.net [203.0.113.10])
by final-mda.example.net with LMTP id abc123
for <bob@example.net>; Tue, 11 Mar 2026 14:00:12 +0000
Received: from sender.mailertogo.com (sender.mailertogo.com [198.51.100.42])
by mx1.example.net (Postfix) with ESMTPS id 4F3A21C8
for <bob@example.net>; Tue, 11 Mar 2026 14:00:10 +0000

メッセージを処理する各サーバーは Received: ヘッダーを先頭に追加します。下から上へ 読まれます。最も古いホップが下部にあり、最新のホップが上部にあります。各ヘッダーは以下を記録します。

Received チェーンは配信遅延のデバッグに非常に役立ちます。ホップ間のタイムスタンプを比較して、時間が失われた場所を見つけます。注意: 送信者側からの Received: ヘッダーは偽造できます。自分のインフラストラクチャによって追加されたヘッダーだけを信頼してください。

Return-Path

Return-Path: <bounces+alice=example.com@sender.mailertogo.com>

最終配信 MTA によって設定され、SMTP エンベロープ送信者 (MAIL FROM) を記録します。これはバウンスが送信される場所です。この例では VERP エンコーディングが使用されています。元の受信者 (alice@example.com) がバウンス アドレスのローカル部分にエンコードされています。

Return-Path はメッセージ作成者によって設定されません。SMTP セッションから抽出され、配信サーバーによって追加されます。配信されたメッセージには正確に 1 つの Return-Path ヘッダーが必要です。

認証ヘッダー

DKIM-Signature

DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mtg;
c=relaxed/relaxed; q=dns/txt;
h=from:to:subject:date:message-id:mime-version:content-type;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk...

送信サーバーによって追加されます。d= フィールドは署名ドメイン (DMARC アラインメント用に使用) を識別します。s= フィールドは DNS で公開鍵を検索するために使用されるセレクターです。h= フィールドは署名されたヘッダーをリストします。完全な検証プロセスについては、メール認証について説明 を参照してください。

Authentication-Results

Authentication-Results: mx1.example.net;
spf=pass (sender SPF authorized) smtp.mailfrom=sender.mailertogo.com;
dkim=pass header.d=example.com header.s=mtg header.b=AuUoFE;
dmarc=pass (policy=reject) header.from=example.com

受信サーバー (RFC 8601) によって追加されます。これはこのホップでこのメッセージの認証チェックの権限ある記録です。authserv-id (mx1.example.net) はチェックを実行したサーバーを識別します。SPF、DKIM、DMARC の結果を記録します。チェックされた識別子を含みます。

セキュリティに関する注意: 外部ソースからの偽造 Authentication-Results ヘッダーは境界 MTA によってストリップされるべきです。自分のインフラストラクチャによって追加された場合のみ、このヘッダーを信頼してください。

MIME ヘッダー

MIME-Version

MIME-Version: 1.0

メッセージが MIME (RFC 2045) を使用することを示します。これは常に 1.0 であり、すべてのメッセージに存在する必要があります。なければメッセージはプレーン US-ASCII テキストとして解釈されます。

Content-Type

Content-Type: multipart/alternative; boundary="----=_Part_001"

メッセージ本文のメディア タイプについて説明します。一般的な値:

boundary パラメータは MIME パート間の区切り文字を定義します。詳細は RFC 2046 を参照してください。

Content-Transfer-Encoding

本文が安全な転送のためにどのようにエンコードされるか。一般的な値: 7bitquoted-printablebase64。添付ファイルは base64 を使用します。HTML メール本文は通常 quoted-printable を使用して、非 ASCII 文字を処理しながらほぼ読める状態に保ちます。

リスト管理ヘッダー

List-Unsubscribe: <https://example.com/unsub?t=abc123>,
<mailto:unsub@example.com?subject=unsubscribe-abc123>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

RFC 2369List-Unsubscribe を定義します。これはアンサブスクリプション用の URL および/またはメール アドレスを提供します。RFC 8058List-Unsubscribe-Post を追加します。メール クライアントの UI からワンクリック アンサブスクリプション機能を有効にします。ブラウザを開く必要はありません。Gmail および他の主要なプロバイダーは一括およびマーケティング メールの両方のヘッダーを必要とします。

表示されるべきではないヘッダー (表示される場合もあります)

X-Mailer / User-Agent

メール クライアントまたは送信ソフトウェアを識別します。スパム フィルターのシグナルとして使用されることもあります。最新の送信システムは、フィンガープリント表面を削減するためにこれを省略することがよくあります。

X-Priority / Importance

メッセージ優先度を設定しようとする非標準ヘッダー。ほとんどのメール クライアントはこれらを無視します。一部のスパム フィルターは優先度の高いマーキングを負のシグナルとして処理します。

X-Spam-Status / X-Spam-Score

スパム フィルター システム (SpamAssassin など) によって追加されます。標準化されていませんが、広く内部で使用されています。これらは発信メールに存在しません。受信インフラストラクチャによって追加されます。

問題が発生する可能性がある事項

Message-ID の欠落

Message-ID を設定しない場合、最初の MTA が設定します。ただし、送信されたメッセージとバウンスおよび配信通知を相関させる能力が失われます。送信前に常に自分の Message-ID を生成してください。

From とエンベロープ送信者の混乱

配信品質の問題の一般的な原因。From: ヘッダーは alice@example.com を表示していますが、エンベロープ送信者は bounce@esp.com です。SPF は ESP ドメインではなくあなたのドメインを検証します。DKIM 署名が d=esp.com も使用する場合、DMARC アラインメント両方のメカニズムに失敗します。修正: d=example.com で署名して DKIM をアラインさせてください。

重複または矛盾するヘッダー

RFC 5322 は、From:Date:Message-ID: などの一部のヘッダーがちょうど 1 回現れる必要があることを指定しています。重複はオブザーバー不可能な動作を引き起こす可能性があります。異なるメール クライアントが異なる値を選択する場合があります。一部のスパム フィルターは重複した From: ヘッダーを疑わしいものとして処理します。

Date ヘッダーの欠落

Date: ヘッダーがない場合、受信 MTA またはメール クライアントは独自のタイムスタンプに置き換えます。これは大幅に異なる場合があります。一部のスパム フィルターは Date ヘッダーのないメッセージにペナルティを与えます。

Received チェーン偽造

誰でも送信前にメッセージに偽造 Received: ヘッダーを追加できます。受信 MTA は自分で追加したヘッダーのみを信頼できます。デバッグするときは、上部 (最新) から開始して下へ進み、自分のインフラストラクチャと外部世界との間の境界に達したら信頼を停止してください。

重要なポイント

参考資料

Related RFCs