[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: RFC and articles generated by Shimbun



>> On Thu, 05 Jun 2003 20:59:26 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:

山> 非常に現実的なことを言うと、長い一つのヘッダを正しいエンコーダにか
山> けると、改行と複数の encoded word を含む結果が得られるので、そこか
山> ら改行コードを取り去ったものを NOV の一つのスロットに収めておけば、
山> 後で正しい形のメッセージヘッダに戻すことは困難ではありません。

ああ,そうか.

あんまり綺麗でもないし,頑健でもないのですが,添付のパッチのように 
shimbun-header-insert() が From: / Subject: を 76 桁で fold するように
すれば,とりあえず shimbun-header の方を改造せずとも,問題(1)は解決す
るわけですね.

うーん,しかし,以前からの懸案の
[emacs-w3m:00999] Constraint of shimbun header values の解決についても
考えると,きちんと shimbun-header-set-{subject,from} で対策を入れるべ
きでしょうねえ….

ちょっと悩んでみます.

山> ぼくは asahi などで @ の代わりに % を使っていました。これってマズ
山> いですかね?

土> この問題も自然に「良くない」という答えが出ます.

山> ここからは個人的な感想を書きます。ぼくはそういう技術的な厳密さはか
山> なり好きです。しかしその一方で、@xxx.asahi.com みたいな現実にFQDN 
山> として存在するかもしれないものを外部の者が使うのには引け目を感じま
山> す。それは From: のアドレスもそうなんですけれど、悪意を持って流用
山> されたときに被害を被るのがだれか、ということです。心配し過ぎでしょ
山> うか?

From: のアドレスにしても,message-id にしても,shimbun ライブラリを利
用する個人しか目にしないはずです.もしも,その個人が,shimbun ライブラ
リを利用して生成した記事を,spammar などの悪意を持った第3者が利用可能
な状態に置いた場合は,その利用者個人の責任になると思います.

というわけで,「あまり気にしても仕方がないのでは?」という意見です.

しかし,どうしても気になるのでしたら,この際,各バックエンドの 
message-id にも規約を設定するという解は有り得ると思います.例えば,

    <unique string>@<group>.<server>.shimbun.namazu.org

みたいに.これなら,現実に存在する FQDN とぶつかることは有り得ないこと
が保証できるのではないでしょうか.

土> さて,そうすると,影響範囲が広くて困ったなあ…,果たして変更しきれ
土> るものでしょうか? 読売新聞とかも引っ掛かりそうです.

山> え?、単に sed 's/%/@/g' に近いことをやるだけでは。

% は,format string で多々出現しますから,それでは無理でしょう.

山> もう一つの問題は、切り換え時に 2回同じ内容の記事を読まされること
山> ですね。(って、何度もやってますけれどね。)

実は,これが以前からずーっと気になっていて,何とか回避する方法はないも
のかなあ,と思っているのですが….何か良い方法はないでしょうかねえ.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )

Index: shimbun.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/shimbun/shimbun.el,v
retrieving revision 1.61
diff -u -u -r1.61 shimbun.el
--- shimbun.el	3 Jun 2003 09:31:37 -0000	1.61
+++ shimbun.el	6 Jun 2003 06:38:58 -0000
@@ -328,14 +328,27 @@
 		 (const :tag "Use BBDB" t)
 		 (const :tag "No use BBDB" never)))
 
+(defun shimbun-fold-preceding-header ()
+  (save-excursion
+    (forward-line -1)
+    (let ((start (line-beginning-position)))
+      (while (progn
+	       (move-to-column 76)
+	       (not (eolp)))
+	(search-backward " " start)
+	(insert "\n")
+	(setq start (point))))))
+
 (defun shimbun-header-insert (shimbun header)
   (let ((from (shimbun-header-from header))
 	(refs (shimbun-header-references header))
 	(reply-to (shimbun-reply-to shimbun))
 	x-face)
-    (insert "Subject: " (or (shimbun-header-subject header) "(none)") "\n"
-	    "From: " (or from "(nobody)") "\n"
-	    "Date: " (or (shimbun-header-date header) "") "\n"
+    (insert "Subject: " (or (shimbun-header-subject header) "(none)") "\n")
+    (shimbun-fold-preceding-header)
+    (insert "From: " (or from "(nobody)") "\n")
+    (shimbun-fold-preceding-header)
+    (insert "Date: " (or (shimbun-header-date header) "") "\n"
 	    "Message-ID: " (shimbun-header-id header) "\n")
     (when reply-to
       (insert "Reply-To: " reply-to "\n"))
@@ -481,11 +494,12 @@
   "Make a From address like \"SERVER (GROUP) <ADDRESS>\".")
 
 (luna-define-method shimbun-from-address ((shimbun shimbun))
-  (format "%s (%s) <%s>"
-	  (shimbun-mime-encode-string (shimbun-server-name shimbun))
-	  (shimbun-mime-encode-string (shimbun-current-group-name shimbun))
+  (shimbun-mime-encode-string
+   (format "%s (%s) <%s>"
+	  (shimbun-server-name shimbun)
+	  (shimbun-current-group-name shimbun)
 	  (or (shimbun-from-address-internal shimbun)
-	      (shimbun-reply-to shimbun))))
+	      (shimbun-reply-to shimbun)))))
 
 (luna-define-generic shimbun-article (shimbun header &optional outbuf)
   "Retrieve a SHIMBUN article which corresponds to HEADER to the OUTBUF.