Namazu-devel-ja(旧)


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

Re: filter/apachcache.pl (Re: namazu-2.0.13pre4.tar.gz)



寺西です。

Tadamasa Teranishi wrote:
> 
> "Komai @home" wrote:
> >
> > >どのようなデータを処理した場合、Base64 の文字列が切り出されてしまって
> > >いるのでしょうか?
> > 例えば、以下のようなメールです。
> > もしかして、メーラの仕様の方が問題なのかもしれませんが。。
> 
> 提示されたデータでは、きれいさっぱり削除されましたが。
> # もっとも、テストにならないようなデータなので、再現性のあるデータ
> # を提示していただかないと何とも。

調査の結果、Base64 の文字列が残る理由は次のようなものでした。

マルチパートのデータではなくて、
Content-type が application/octet-stream のメールであることが
わかりました。Content-type のチェックは multipart 以外はしていない
ため、Base64 の内容をメール本文(plainテキスト)と誤認して処理して
いました。

Namazu(mknmz) で処理するのであれば、

1. Content-type の指定のない、本文が plain テキストのメール
2. Content-type が text/plain であるメール
3. Content-type が multipart の場合は、text/plain のパート

だけで良いと思われるので、Content-type が指定されており、text/plain、
multipart 以外はばっさりと削除するように以下のパッチを作りました。

--- mailnews.pl Mon Apr 23 18:09:38 2001
+++ /usr/local/share/namazu/filter/mailnews.pl  Sun Aug  3 13:25:02 2003
@@ -120,6 +120,9 @@
                # contributed by Hiroshi Kato
<tumibito@xxxxxxxxxxxxxxxxxxx>
                $partial = $1;
                util::dprint("((partial: $partial))\n");
+           } elsif ($line !~ m!text/plain!i) {
+               $$contref = '';
+               return;
            }
        } elsif ($line =~ /^(\S+):\s*(.*)/i) {
            my $name = $1;

小舞さんにテストしてもらった分には良好の結果となっています。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E