Date: Thu, 19 Feb 1998 00:00:00 +0900
Document-Version: 1.5a
Distribute-URL: http://www02.so-net.ne.jp/~hat/mailer/ms.txt
Keywords: Microsoft Internet Mail

                 【とあるメールソフトが原因の文字化け】
                 --- Microsoft Internet Mail の問題 ---

Microsoft Internet Mail というフリーソフトで書かれたメールの文章が
次の2つの例の様になって届くことがあります。

例1

  =1B$B$3$s$K$A$O!#=1B(B
  =1B$B$*$2$s$-$G$9$+!)=1B(B
  =1B$BMh=3D5!"0)$$$^$;$s$+!)=1B(B

例2

  GyRCJDMkcyRLJEEkTyEjGyhCDQobJEIkKiQyJHMkLSRHJDkkKyEpGyhCDQobJEJNaD01ISIw
  KSQkJF4kOyRzJCshKRsoQg0K

これら2つは、もともと

  こんにちは。
  おげんきですか?
  来週、逢いませんか?

という普通の文章だったのです。
きちんと設定して書いたはずの文章が、このように化けるのです。
このMicrosoft Internet Mailは、他に類を見ないほど、大変多くの問題を
持っており、多くの方々が「使わないように」と警告を発しています。
使用禁止にしている企業、教育機関、メーリングリストが存在することも
確認しています。

また、極力問題を減らすための設定方法を書いたページもあります。

    「Microsoft Internet Mail & News の設定」
            http://www.nurs.or.jp/~asada/msin/index.html
このページに従って設定すると、ある程度問題は減ります。
しかし残念なことに、上記の2つの例の問題は解決しません。

結論を先に書いてしまうと、

「原因は、送信側のMicrosoft Internet Mailに存在する」
「色々な設定を試しても、全て無駄に終わる」
「根本的に解決するにはMicrosoft Internet Mailの使用を止めるしかない」

ということです。悲しいことですが、明らかな事実です。
ただし、これは同ソフトのWindows版の話であり、Mac版は事情が違う
ようです。Mac版については、この文書の一番下をご覧ください。

上記2つの文字化けが起こる原因が複雑であるためか、うまく説明した
文書が見当たりません。
そこで、私がこの文書で説明します。ある程度専門知識がなければ理解
しにくいと思いますが、なるべく分かりやすいように努めます。


【インターネットでメールが届く仕組み】

まず最初に、メールが届く仕組みを説明をしなければなりません。
次の図は、[A]というコンピュータのMicrosoft Internet Mailで書いて、
[B]で受け取ったことを示しています。


                                    +-----+
                            +------>|  V  |-------+
   Microsoft                |       +-----+       |
   Internet                 |        ESMTP        |
     Mail                   |                     V
   +-----+    +-----+    +-----+    +-----+    +-----+    +-----+
   |  A  |--->|  W  |--->|  X  |--->|  Y  |--->|  Z  |--->|  B  |
   +-----+    +-----+    +-----+    +-----+    +-----+    +-----+
               ESMTP      ESMTP       SMTP      ESMTP

インターネットのメールは、沢山のコンピュータを経由して届きます。
経路が2つに別れているのは、「どっちを通るのかわからん」という
意味です。事実、送信する時点ではわからないのです。
たまたま[Y]の調子が悪かったら、[V]を通るかもしれません。

メールを送受信する方法は色々あるのですが、SMTPかESMTPのどちらかの方法
を使っている場合が多いでしょう。
上の図の場合は、[X]はESMTP対応ですが、[Y]はSMTPしか使えません。

  SMTP ---- 結構昔からある方法で、7ビットの文字しか通さない場合がある
  ESMTP --- 8ビットを通せるものがあり、その場合ちゃんと宣言するようにした

[X]が[Y]にメールを渡すとき、まず[Y]の様子を調べます。
手元にあるメールが7ビットならそのまま渡してしまうのですが、もし
8ビットだと[X]は悩みます。悩んだ結果、

    諦めて、エラーメールを送信者に返す
    quoted-printableという方法で7ビットに変換してから[Y]に渡す
    base64という方法で7ビットに変換してから[Y]に渡す

の、どれかを選びます。ESMTP対応のコンピュータに課せられた使命です。

もし[Y]じゃなくて[V]にメールを渡したらどうでしょう。[V]の様子を調べて
8ビットが通ることが判明すれば、このような事は起こらず、8ビットの
まま[B]に届くでしょう。


【日本語のメールは通常7ビットだ】

日本語のメールをインターネットで送る場合、ISO-2022-JPという文字セット
を使います。これはJISと呼ばれることもあります。
ISO-2022-JPは7ビットの文字セットですからSMTPでもESMTPでも、ちゃんと
通ります。


【本文とは別のヘッダ】

メールには普通の文章を書いた本文とは別に、ヘッダと呼ばれる部分が
あります。
このヘッダの部分はソフトによって見えたり見えなかったりします。
送信者や受信者のアドレス等、色々な情報が書かれています。
場合によっては本文で使っている文字セットを示すヘッダが付きます。

日本語(ISO-2022-JP)であることを示すならば、

    Content-Type: text/plain; charset=ISO-2022-JP

というヘッダが付きます。
また、本文がどんな形式なのかを示すヘッダが付くことがあります。

    Content-Transfer-Encoding: 7bit

これは、「本文が7bitだよ」という意味です。
このヘッダが無い場合は7ビットであると決まっているので、わざわざ
付けなくてもいいです。


【Microsoft Internet Mailが自動で付けるヘッダ】

Microsoft Internet Mailで極力正しく動作するように設定を行なうと、
自動的に次の様なヘッダが付きます。

    Content-Type: text/plain; charset=ISO-2022-JP
    Content-Transfer-Encoding: 8bit

これは明らかに変です。
ISO-2022-JPは7ビットですから、Content-Transfer-Encoding: 8bitは、
誰がどう見ても変です。
ISO-2022-JPという文字セットを決めた文書(rfc1468)を読んでみると、
この様に書かれています。

   The ISO-2022-JP encoding is already in 7-bit form, so it is not
   necessary to use a Content-Transfer-Encoding header.

これを私が翻訳すると、次のような感じですね。

   ISO-2022-JPってのは、最初っから7ビットだから、わざわざ
   Content-Transfer-Encodingなんてヘッダは必要ないっす。

もし、わざわざ付けたとしても、Content-Transfer-Encoding: 7bitに
すべきです。

Microsoft Internet Mailは、どんなに頑張って正常に近い設定にしても、
結局Content-Transfer-Encoding: 8bitを付けるという問題が残ります。
なんとかする方法も無いわけではありませんが、他の弊害が発生するので
お勧め出来ません。


【そして発生する問題】

Microsoft Internet Mailで極力正しく設定したメールが[X]に届き、次に
[Y]に渡そうとしたとします。
そのとき、ヘッダを確認したら、

    Content-Type: text/plain; charset=ISO-2022-JP
    Content-Transfer-Encoding: 8bit

なんてことが書いてあります。[X]は、
「これ、8ビットだから、7ビットに直さなきゃ」
と思います。正直者です。

もし[X]が、quoted-printableで7ビットに変換すると、例1のようになります。
このときヘッダは、

    Content-Type: text/plain; charset=ISO-2022-JP
    Content-Transfer-Encoding: quoted-printable

に書き換えられます。

もし[X]が、base64で7ビットに変換すると、例2のようになります。
このときヘッダは、

    Content-Type: text/plain; charset=ISO-2022-JP
    Content-Transfer-Encoding: base64

に書き換えられます。

つまり、途中のコンピュータ[X]が[Y]にメールを渡すとき、ESMTPの決まりに
従って親切に変換を行なってくれたのです。
もし[V]を通っていれば、この現象は発生しません。
しかし、インターネットのメールは、どのコンピュータを経由するのか分かり
ませんから、常に [X] -> [Y] を通る可能性があるのです。

一般的なメールソフトは、日本語のメールがquoted-printableやbase64になる事
など想定していません。ですから、「そのまんま」表示してしまいます。つまり
文字化けです。

しかし、元に戻してから表示するソフトもあります。
実はMicrosoft Internet Mail自身にこの機能があるため、送受信の双方がこの
ソフトを使っている場合、異常に気付かないかもしれません。


【結論】

そもそもの原因は、送信側のMicrosoft Internet Mailが妙なヘッダを付ける
からであり、色々と設定を変えたところで、これが改善されることはない。
運が良ければ送信時と同じまま届くが、場合によっては途中のコンピュータが
変換を行なう。この途中のコンピュータの動作は間違っていない。
従って、この問題を解決する為には送信側がMicrosoft Internet Mailの
使用を止めるしかない。


【おまけ】

もし、これらの文字化けメールを受け取ったときは、どうしたら良いので
しょうか?
「Microsoft Internet Mailは問題だらけだから、他に変えたほうがいいよ」
と教えてあげるのもひとつの手です。
しかし、人間関係とは難しいもので、それが出来ない場合も多々あります。
せっかく説明しても判ってもらえない場合も多いですし、そういうことを
私は何度も体験してきました。
そんなときは、この文書を「証拠」として見せてあげてください。
それでも判ってもらえなかったら、我慢して自分で解読してください。
解読するためのツールは、

  「インターネットメールの注意点」
    http://www02.so-net.ne.jp/~hat/imail/cover.html

から入手できるかもしれません。他にも色々と探せば見つかるかもしれ
ません。
「quoted-printableやbase64のデコーダ」みたいな説明があるソフトを
入手してください。「MIMEのデコーダ」と書いてあるかもしれません。
もしかすると、「漢字コード変換ソフト」も必要かもしれません。


【参考文献】

rfc821  SIMPLE MAIL TRANSFER PROTOCOL
rfc1428 Transition of Internet Mail from Just-Send-8 to 8bit-SMTP/MIME
rfc1468 Japanese Character Encoding for Internet Messages
rfc1652 SMTP Service Extension for 8bit-MIMEtransport
rfc1869 SMTP Service Extensions
rfc2045 Multipurpose Internet Mail Extensions (MIME)
                    Part One: Format of Internet Message Bodies
rfc2046 Multipurpose Internet Mail Extensions (MIME)
                    Part Two: Media Types

これらの文書は、
  「RFCJ -- RFC ならびに Internet Draft の 日本語化文書集積/提供のページ」
      http://www.barrier-free.co.jp/homes/RFCJ/
からのリンクを辿ることで入手出来ます。


【参考ページ】

「Microsoft Internet Mail & Newsについての私見」
    http://www.niji.or.jp/home/metu/msin.html
なんと、このページから入手出来るソフトを使えば、この文書で指摘した
問題は解決出来ます。しかし、使い方を誤ると何の効果もないので、自信の
ある方だけが充分に注意して使ってください。


【この文書について】

この文書は再配布自由です。
改変を加えない限り、メールで友人に送ってもいいし、印刷して配っても
いいし、フロッピー等に収めて配ってもいいです。

この文書の最新版は、
    http://www02.so-net.ne.jp/~hat/mailer/ms.txt
にて公開しています。リンクも自由です。

この文書は、多くのMicrosoft Internet Mailユーザが読みやすいように
Shift_JISで書きました。再配布の段階でISO-2022-JPやEUC-JP等に変換しても
問題無いと思います。

この文書の著者は、
  「インターネットメールの注意点」
    http://www02.so-net.ne.jp/~hat/imail/cover.html
と同一です。著者のメールアドレスも、このページから調べることが
可能です。

もしこの文書の最新版に間違い等を発見された場合は、是非著者までメールを
ください。即刻修正したバージョンを公開します。

著者がこの目でContent-Transfer-Encoding: 8bitと書いてあるのを確認した
バージョンは、
    4.70.1132   4.70.1155   4.70.1157   4.70.1160   4.70.1161
です。恐らく、全てのWindowsバージョンで同様だと思います。
正常な設定のMicrosoft Outlook Expressだと8bit問題は発生しません。

よく、「良いソフトと悪いソフトを教えてくれ」と尋ねられますが、お答え
出来ません。ソフトの好みは人それぞれだと思います。
不具合がゼロというソフトも考えにくいし、あまり悪口も言いたくありません。
ただ、人様に全く迷惑をかけずにMicrosoft Internet Mailを使い続けるのは
どう考えても不可能であり、あまりにも多くの人に同じことを尋ねられるので、
この文書を書かないといけないところまで追い詰められたというのが実情です。

Mac版の場合はここで解説した現象は発生しませんが、半角カタカナを
使うことが出来てしまうので注意してください。
メールで使う日本語(ISO-2022-JP)では、半角カタカナは禁止です。
更に「初期設定: メッセージ: メッセージの作成: 最初に書式バーを表示する」
のチェックボックスを外しておくことです。これをしておかないと、メールが
html形式になり、受信側で妙な形で見えることがあります。

以上。