[Mew-dist 08115] Re: B-encoded header routine

Shun-ichi GOTO gotoh at example.com
1999年 3月 16日 (火) 23:35:30 JST


後藤@太陽計測です

#Mewに直接関係無い話題に長文で返すのは少々気が引けるのですが...

出沢さん、こんにちは。以前ruby-listのほうでbase64.rb モジュールに難癖を
つけてしまった記憶が。。。(^_^;

rubyはめっきり触ってないし、ruby-listは読み流しです。。。あぁ

>>>>> at Tue, 16 Mar 1999 22:09:37 +0900
>>>>> 出沢 <dezawa at example.com> said,
出沢>    法律D:ASCII文字列(\sを含む)が続く場合は、改行を追加してはならない(4から)

なぜ?

ASCII文字列が「何に」続く場合のことか不明ですが、「4から」ということか
らすると、日本語(encoded-word)に空白またはASCIIが続く場合ということで
すよね?

空白が続く場合は 1つのLWSP-charは CRLF + LWSP-char に置き換えて保存す
ることが出来る(folding)はずですので問題はないですよね。

unfold時のルールは以下のように記述されています

[RFC822 3.1.1]
>             The process of moving  from  this  folded   multiple-line
>        representation  of a header field to its single line represen-
>        tation is called "unfolding".  Unfolding  is  accomplished  by
>        regarding   CRLF   immediately  followed  by  a  LWSP-char  as
>        equivalent to the LWSP-char.

encoded-word に空白ではなくASCIIが続く場合は、そもそも許されていません
からこれはまとめてencodeするケースにあたりますから、このばあいは改行は
別の個所になりますので問題とはならないのでは?


出沢> 3 しかし、2,3,4,A,B,C,D を守ると 1 を満たすことができなくなる場合がでてきます。
出沢>   このような場合どうすべきでしょう。
出沢>     53_bytes_ASCII_string_with/without_white_space あ
出沢>     あ 53_bytes_ASCII_string_with/without_white_space
出沢>     23_bytes_ASCII_string あ 30_bytes_ASCII_string_wi
出沢>     20_bytes_ASCII あ 10_bytes_ASCII あ 23_bytes_ASCII
    
出沢>     あ のencodeで 28 byte使いますから全体で 82 byte になります。
出沢>     でも この ASCII 文字列と あ のencode の間も、ASCII文字列の間も改行を
出沢>     追加できません。
    
出沢>     この様な問題は、ASCII文字列が 48 Byteから起きます。

上で述べた通り、改行は追加できます。

挙げていた例を mew-1.94b12で試してみると

X: 53_bytes_ASCII_string_with/without_white_space あ
X: あ 53_bytes_ASCII_string_with/without_white_space
X: 23_bytes_ASCII_string あ 30_bytes_ASCII_string_wi
X: 20_bytes_ASCII あ 10_bytes_ASCII あ 23_bytes_ASCII

というヘッダは

X: 53_bytes_ASCII_string_with/without_white_space
 =?iso-2022-jp?B?GyRCJCIbKEI=?=
X: =?iso-2022-jp?B?GyRCJCIbKEI=?=
 53_bytes_ASCII_string_with/without_white_space
X: 23_bytes_ASCII_string =?iso-2022-jp?B?GyRCJCIbKEI=?=
 30_bytes_ASCII_string_wi
X: 20_bytes_ASCII =?iso-2022-jp?B?GyRCJCIbKEI=?= 10_bytes_ASCII
 =?iso-2022-jp?B?GyRCJCIbKEI=?= 23_bytes_ASCII

とencode & folding されます。おかしいですか?

#mew-1.93b37での例を出していますが、その辺のバージョンってencode方法が
#一番変化していた時期だったような。。。


出沢> 4 over する文字列をできるだけ少なくして、と考えると encode後の行末に
出沢>   ダミーのencodeを入れる事できます。このような空のencodeの追加は許されるか。
出沢>   例えば  ......white_space =?ISO-2022-JP?B??=  <-- 改行escape のための空encode
出沢> 	    =?ISO-2022-JP?B?GyRCJCIbKEI=?       <-- あ をencode

これはencoded-textが 1* である(RFC2047)ため許されないでしょう。

[RFC2047 - 2. Syntax of encoded-words]
>   encoded-text = 1*<Any printable ASCII character other than "?"
>                     or SPACE>
>                  ; (but see "Use of encoded-words in message
>                  ; headers", section 5)


出沢> 5 ascii 文字列も encode してしまうことで、76byte に収める方が良いのか。

それしか方法が無ければ、それでよいのではないでしょうか。たとえば可読な
ASCII部分を出来るだけエンコードせずに、というのはRECOMENDEDのレベルで
あって、MUSTではないですよね。

というわけで、出沢さんのルールでは linear-white-spaceの扱い方が間違っ
ているように思うのですが。私が出沢さんのルールを理解し損ねているでしょ
うか。。。問題点をちょっと理解し損ねているかも>私


P.S.

「MIMEは欠陥規格だ」とよく聞くのですが、RFC-2045〜2049において、具体的
な問題例を「私は」知らないのですよね。

その例ってすぐ挙げられます? > どなたか

実装方法が難しいのは確かなのですが。。。

P.P.S.
アタマが眠くてオオボケしてるかも

--- Regards,
 Shun-ichi Goto  <gotoh at example.com>
   R&D Group, TAIYO Corp., Tokyo, JAPAN



Mew-dist メーリングリストの案内