Receivedヘッダーは下から上へ|メール経路の読み順とfrom・byの意味

詳細ヘッダーにReceivedが何行も並んでいると、最上段を最初の配送記録だと思いがちです。通常のSMTP配送では、サーバーが受け取るたびに新しいReceivedを先頭へ追加するため、経路をたどるときは下から上へ読んでいきます。

この記事では、行の順序とfrom・by・時刻を対応させる読み方を説明します。ITtripが提供するメールみちでも同じ記録順を使って整理できます。ヘッダーの記載を整理するものであり、実際の経路の真偽を保証するサービスではありません。

目次

3行のReceivedを読み解く

smtp.sender.example、relay.partner.example、mx.company.exampleの順に並んだ記録
サンプルはヘッダー下側から上側へ、記録順で整理しています。

次は架空のヘッダーです。サーバー名は説明用で、すべて日本時間の記録になっています。

Received: from relay.partner.example by mx.company.example with ESMTP;
 Tue, 6 Oct 2026 09:16:42 +0900
Received: from smtp.sender.example by relay.partner.example with ESMTP;
 Tue, 6 Oct 2026 09:12:06 +0900
Received: from client.sender.example by smtp.sender.example with ESMTPSA;
 Tue, 6 Oct 2026 09:12:04 +0900

これを配送記録として並べると、次の対応になります。

読む順番fromに書かれた相手byに書かれたサーバー記録時刻
1:最下段client.sender.examplesmtp.sender.example09:12:04 JST
2:中段smtp.sender.examplerelay.partner.example09:12:06 JST
3:最上段relay.partner.examplemx.company.example09:16:42 JST

この例ではbyの並びがsmtp.sender.example → relay.partner.example → mx.company.exampleです。最後のサーバーの記録は、利用者が受信トレイを開いた時刻そのものではありません。Receivedの追加と記録順の仕様はRFC 5321のTrace Informationに記載されています。

from・by・withは、表示上の差出人とは別の情報

Receivedのfromは、その行に記録された送信側の相手です。byは、その行を付けた受け取り側のサーバーです。通常のメール画面に出る「差出人」と、Receivedのfromを同じものとして扱わないでください。

withは記録された通信方式の表記です。SMTP、ESMTP、ESMTPSなどの文字があっても、メールみちはそれを「安全なメール」の判定に使いません。さらに、idはサーバー側で付けた識別情報、forには宛先情報が記載される場合があります。問い合わせ先が原文を必要とする理由は、経路以外の照合情報も含まれ得るためです。

折り返し行は、前のReceivedの続きとして読む

例の日時行は先頭に空白があります。このような折り返しは、前のヘッダー項目の続きを表します。見た目の行数とReceivedの件数は一致しません。空白やTABから始まる行を切り離して日時だけを集めると、どのサーバーの記録かわからなくなります。RFC 5322のヘッダー折り返しの説明

手作業で整えるなら、Receivedを項目単位で区切り、続きの行をセットで残します。本文との間の空行より後を、経路の記録に混ぜないことも必要です。

時刻順に並べ替えると、確認したい矛盾が消えてしまう

下側の記録が09:12:04、次の記録が09:12:02だったとします。記録順では2秒の逆転です。これを09:12:02 → 09:12:04へ並べ替えると、逆転していた事実が見えなくなります。

逆転があるときは、時計のずれ、時差表記、記録の内容などを管理者に照合してもらいます。「メールが逆向きに流れた」「このサーバーが異常」といった結論にはしません。

メールみちでは順序と原文を一緒に確認する

Receivedのサーバー表示と対応する元の記録を展開した画面
展開した原文でfrom・by・日時を照合します。
  1. メールみちでReceivedを記録順に整理するを開きます。
  2. Receivedを含む詳細ヘッダーを貼り、「経路とメモを作成」を押します。
  3. 表示された各サーバーの「記録された受け渡し」を見ます。
  4. 気になる箇所の「元の記録を見る」を開き、原文のfrom・by・日時を確認します。
  5. 読み取れない記録や注意があれば、問い合わせメモから削除せず確認事項として残します。

Receivedが1件だけなら、複数の記録どうしの差は計算できません。fromやbyのない記録も、存在しなかったことにせず原文を残して確認します。メールみちの初版の入力上限は262,144文字、Receivedは1,000件です。上限を超える場合に必要な行を勝手に間引かず、元のヘッダーを管理者へ渡す方法を相談してください。

読み順を確認し終えたら、サーバーの記録と時刻が対応していること、不明な記録が残っていること、原文との対応が取れることをチェックします。その一覧が、ログ照合へ進むための材料になります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次