[mew-dist 26123] Re: 1000 Octetを超える行を含むメッセージの処理

Eisaku YAMAGUCHI eisaku at example.com
2005年 3月 14日 (月) 20:56:57 JST


山口です.

> 実装しました。

ありがとうございます.
試してみました.

早速ですが,気になった事が幾つかありました.

先ず,これが一番重要なのですが,
mew-encode-max-line-lengthを超える行が本文の最後の1行だけの
メイルではうまく機能しないようです.例えば

%%%%%%%%%% begin draft buffer
ヘッダ
----
foo<改行>
bar<改行>
C-u10000X<改行>
C-cC-c
%%%%%%%%%% end draft buffer

として,Internet Message Format的には 10000 Octet + CR + LF の行が
末尾の1行だけのメッセージを作って送信しても,何も聞かれません.;-)

> 変数は 3 つ。
> 
> * mew-encode-max-line-length (default 1000)

mew-encoding-max-line-length は,defaultで990程度に抑制しておくのが
良いかと思います.
sendmailは復帰改行を含めて,990 Octetでhard breakしてくれちゃいます.
Postfixは設定で制御可能ですが,defaultではsendmailに倣ってか990 Octet
となっているようです.
qmailはナニもしません.その他のMTAは未確認です.

少なくともMTAとして,sendmail/Postfixを使用している場合且つ,ISO 2022
等を使用しているユーザには,990までにしておくと,hard breakされて悲し
い思いをせずに済むかもしれません.

> * mew-ask-encoding (default t)
> * mew-default-encoding (default mew-b64)
> 
> アルゴリズム:
> 
> 本文の行が mew-encode-max-line-length を越える

mew-encode.el では,

                (when (>= (- (point) last) mew-encode-max-line-length) ;; including LF

ということですが,コメントは typo でしょうか?

--- mew-encode.el.orig	Mon Mar 14 18:57:31 2005
+++ mew-encode.el	Mon Mar 14 19:35:21 2005
@@ -598,7 +598,7 @@
 	    (forward-line)
 	    (catch 'long-line
 	      (while (not (eobp))
-		(when (>= (- (point) last) mew-encode-max-line-length) ;; including LF
+		(when (>= (- (point) last) mew-encode-max-line-length) ;; including CRLF
 		  (if (not mew-ask-encoding)
 		      (setq cte mew-default-encoding)
 		    (setq cte (mew-input-encoding)))

> 	mew-ask-encoding が t なら b64 か qp の内から選択
> 	そうでなければ、mew-default-encoding が選ばれる

Mew4.2.50> Lines are too long. Input encoding (base64):

には,"base64" または "quoted-printable" で答えるようになっていますが,
それ以外のもの(例えば"hogehoge")を指定すると,mew-default-encoding
で送信されます.

mew-minibuf.elの最後では,そう振る舞うように書いてあるわけですが,
敢えて(error "Unknown encoding")などとして,再入力を促さないようにした
のは,何か特別な理由があるのでしょうか?

-- EY



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