このページの本文へ

電子メールプロトコル再入門 第2回

メールヘッダの標準フィールドを学ぶ

メールの宛名はどこにある?ヘッダを理解する

2011年02月10日 06時00分更新

文● 遠藤哲

  • この記事をはてなブックマークに追加
  • 本文印刷

メールには、宛先や送信元、件名といった情報が付けられる。またそれだけではなく、本文がどのような言語で書かれているか、添付ファイルはあるのかといったものも必要になる。そうした情報はヘッダという部分に書かれている。


メッセージ形式を定義するRFC

 電子メールのプロトコルを解説する前に電子メールのメッセージ形式(書式)を解説しておこう。基本的なメッセージ形式はRFC2822(Internet Message Format、2001)で仕様が定められている。このRFCはそれまでメール形式を定義していたRFC822(Standard for the format of ARPA Internet text message,1982)を置き換えたものだ。基本的な内容はそのまま継承されており、使われていない機能を削除し、仕様のあいまいな部分を明確にするといった改善が行なわれている。

 まずRFC2822で定義されているメッセージ形式について見てみよう。

メッセージのヘッダとボディ

 メールのメッセージは、「ヘッダ」と「ボディ」から成り立っている(図1)。ヘッダとボディは境界を空白行で示すという、とてもシンプルな構造である。

図1●メールのメッセージ形式

 メッセージを構成するヘッダとボディは一連のテキスト行でできていて、各行の終端は一組のCR(復帰)とLF(改行)の2文字によって示される。メッセージの記述に使われる文字は、1から127の数値(7ビット長)で表わされるUS-ASCIIが標準となっている。

 RFC2822では1行の文字数について、SMTP標準仕様の制限から「1行はCRLFを除く998文字以内でなければならない(MUST)」と規定するとともに、コンソール画面に読みやすく表示するため1行を78文字で設計しているアプリケーションへの配慮から「1行はCRLFを除く78文字以内とすべき(SHOULD)」との勧告も併せて行なっている。

画面1 ●Outlook Expressでは、メールを表示している画面で「ファイル」─「プロパティ」を選択し、詳細タブを選択すると当該メールのヘッダを参照することができる

 また、メッセージの各パートに記述される内容は、メールを作成する際に宛先やメールの表題を付けるが、これらの情報はRFCで定義されている「ヘッダフィールド」という仕様に従ってメッセージのヘッダ情報として記述される。メールの本文はメッセージのボディとなる。

 図1をみると、ヘッダの部分に多くのヘッダフィールドが記述されていることがわかる。

ヘッダの要素<br /> ヘッダフィールド

 RFC2822はメッセージの構造のほか、ヘッダに記述するヘッダフィールドも定義している。RFC2822に定義されているヘッダは表1に示すように23種類ある。この中には旧版(RFC822)で定義されていた「extension-field」や「X-」から始まる「user-defined-field」は含まれておらず、optional-fieldの扱いとなる。

表1●メールのメッセージ形式

 ヘッダフィールドは、「<フィールド名>:<フィールドボディ>」という共通のフォーマットが定義されている。フィールド名とフィールドボディは「:」(コロン)でその境界が示され、フィールドボディはフィールド名ごとに記述される内容が定義されている。

 それでは図1のヘッダに見られる標準ヘッダフィールドを見てみよう。

 「From」フィールドはメッセージの作成者を示すフィールドである。このフィールドのフォーマットは、[display-name]<addr-spec> となっている。displaynameは省略可能なパラメータで、メーラのFrom欄に表示する文字列を指定するものだ。その後ろに続くaddr-specはメールアドレスのことで省略できない。Fromフィールドには通常1人のメールアドレスしか設定しないが、RFCの定義では「,」で区切ることで複数のメールアドレスを作成者として記述することが可能だ。

 「To」フィールドはメッセージのアドレスを示すフィールドである。フォーマットはFromフィールドと同じで、メッセージのTo欄に表示する文字列を指定できる。メールアドレスは省略できず、「,」で区切ることで複数の宛先を指定可能である。CcやBccも同様の書式となる。

 「Subject」はメッセージの「件名」である。このフィールドは、本来US-ASCIIで記述しなければならないフィールドだ。次回以降で解説するが、インターネット標準であるMIME(Multipurpose Internet Mail Extensions)の拡張によりUS-ASCII以外の文字を使えるようになっている。その場合、「=?iso-2022-jp?B?~?=」のように件名に文字セットを示す情報が挿入される。

 「Date」フィールドはメッセージの作成日を示す。RFC2822では年の表記が改善され、旧版では2桁で表示されていたものが4桁表示に改められている。このフィールドはメーラによって設定されるフィールドで、「Send( 送信)」または「Submit(投函)」ボタンが押された時刻が設定されるものとしている。

 「Message-ID」フィールドはメッセージを一意に識別するための情報が記述されている。

 Message-IDはホストによって生成されるユニークなIDである。図1 の中ではMessage-IDの下にいくつかのヘッダフィールドが記述されている。その中でも「MIME-Version」「Content-Type」「Content-Transfer-Encoding」の3つのフィールドは、メッセージの日本語での記述や添付ファイルなどを利用することを可能にしている、MIMEで定義されているヘッダフィールドである。

 さらに続くフィールド(X-Mailer、XMimeOLEなど)はメーラの情報などを記述している。このフィールドはRFC822で定義されていたユーザー定義フィールドである。

 ●

 代表的な標準フィールドの説明はここまでとし、次回はUS-ASCII以外の文字を使えるようにするMIMEの説明に移ろう。

カテゴリートップへ

この連載の記事
  • 角川アスキー総合研究所
  • アスキーカード