MIMEとは
さて、ヘッダ情報を見ると、すべてアルファベットや数字、記号で記述されている点に気がついただろう。現在のメールシステムは英語圏で生まれたため、記述に使用できるのはASCII文字(アルファベット、数字、記号)だけである。しかし、メールクライアント上ではヘッダにある件名は日本語で表示されている。それはなぜなのだろうか。
その答えが“MIME(Multipurpose Internet Mail Extension)”というヘッダフィールドだ。これは、RFC 2822から独立して定義されたオプションのヘッダフィールドである。MIMEに関するRFCはPart 1~5に分冊して発行されており、このうちRFC 2045 MIME Part 1でMIMEのメッセージ形式とヘッダフィールドを定義している。
ここではMIMEの代表的な3つのヘッダフィールドについて説明しよう(図2)。“MIME-Version”フィールドはMIME仕様のバージョンを示す。MIMEの現在バージョンは1.0である。将来の仕様変更にも柔軟に対応し、互換性の問題を生じさせないようにするために用意されたフィールドだ。
次は“Content-Type”フィールドである。このフィールドはMIMEで扱うコンテンツのメディアタイプとパラメータを定義するフィールドだ。フォーマットは図2に示されているように“type”“subtype”と“parameter”の3つで成り立っている。“type/subtype”に指定できるメディアタイプの種類は多く、設定できる値はIANA(Internet Assigned Numbers Authority)で管理されている。
そして、3つ目が “Content-Transfer-Encoding”フィールドだ。このフィールドは情報の符号化形式を示すフィールドである。
理解を深めるためにMIMEヘッダの具体例を挙げてみよう。まずはテキスト形式のメールメッセージを日本語で書いた場合だ。この場合はプレーンテキストなのでContent-Typeを「text/plain」、パラメータとして日本語の記述に使う文字コードの「charset=iso-2022-jp」が設定される。これは2バイトで表現される日本語の文字を7ビットで表わすための符号化形式である。
次に添付ファイルで画像などを送った場合は、画像データもASCIIの文字列に変換される。たとえばビットマップ形式の画像を添付するとContent-Typeは“image/bmp”、パラメータにはそのファイル名が設定される。画像はバイナリのデータであるため、ASCII文字を前提としているメールシステムでは不具合を起こす可能性がある。そのため画像情報を3バイト単位で切り出し、ASCIIの4文字に変換する「BASE64」という符号化が用いられる。
(次ページ、「文章と画像を送る仕組み」に続く)
この連載の記事
-
第6回
ネットワーク
メールシステムの脆弱性とその回避策 -
第5回
ネットワーク
メールを受け取る仕組みはどうなっていますか?? -
第4回
ネットワーク
メールを送受信する仕組みとは? -
第2回
ネットワーク
メールを支えるドメイン名とDNSの仕組み -
第1回
ネットワーク
メールが届く仕組みを知っていますか? -
ネットワーク
電子メールの秘密 - この連載の一覧へ