In message <_A60@delegate-ja.ML_> on 05/25/07(02:44:44) you Katsuaki Shimadera <pe4aabrv6-mxhgu4zjih3w.ml@delegate.org> wrote: |今回のこととは別件で、以前気になっていた現象を思い出しましたのでこの機会 |にお聞きしておこうと思いました。 | |CFIスクリプトの動作なのですが、「MIME-Filter」ではなく「Mime-Filter」と |書かないと動作しないという現象がありました。 おっと。たしかに。同じように、HTTPでの "CGI: ..." も使えなくなってますね。 これは、9.2.4-pre14 で「環境変数によるフィルタの選択」を可能にした際の 手抜き実装のせいでした。先頭2文字が大文字だと、環境変数としてマッチング しようとしています(--; 同封のパッチのように修正します。 来週早々にリリース予定の 9.6.1 に適用します。 |DeleGateとSpamAssassinを連携して、スパムフィルタ付きのPOP3 Proxyを構築し |ています。 |設定は以下のような感じです。 |spamc(SpamAssasssinのクライアント)に受信メールのヘッダとボディを通すよう |にCFIスクリプトを書いています。 なるほど。 |ドキュメントの誤植かと思ったのですが、cfi.cを見ても「MIME-Filter」という |記述があったのでそこから調査していませんでした。 |「Mime-Filter」と書けば動作するので放置していたのですがドキュメントと動 |作が違うように思いますのでご確認いただけないでしょうか。 |この現象は、SolarisでもWindowsでも同様でした。 異常がありましたら、その事実だけでもなるべく早く知らせていただけると 助かります。 |なので、MacOSXはMacOS9の後継ということではなく新手のUnixということで注目 |してます。 もうデビューからだいぶ立つので新手ということもないかとは思いますがw あとはWindowsの遺産を抱えてる人達をどうやって救出するかだと思うのですが、 MacOSX上でVMWareで(ベータ版がとりあえず使えますし)Windowsが動かせますので、 いよいよ終りの始まりかなと期待しているのですがw |Cコンパイラ、ターミナル、エディタといったUnix的環境を整えてしまえばかな |り快適そうですね。 |Mac Miniなら家計にも環境にも優しそうなので検討してみましょうかね。 MacMiniも3箱持ってます(^^) スペースにも優しいです。 昨年はじめにIntel版のを導入したのですが、秋ごろまで月イチでpanicで おちてたりして不安だったのですが、その後の各種ファームウェアなどの更新 のおかげか、その問題もなくなりました。 9 9 ┌─┐┬┌──┬┐ //\^^ ( e ); {Do the more with the less -- B. Fuller} ├─┤│└─┐│ / 877m\_< >_ <URL:http://www.delegate.org/delegate/> ┴ └┴──┘┴────────────────────────────── 佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人) *** ../dist/src/delegate9.6.0/filters/cfi.c Sat Feb 17 19:53:47 2007 --- filters/cfi.c Fri May 25 10:16:16 2007 *************** *** 216,238 **** --- 216,250 ---- /* * matching with CGI environment as: * REQUEST_METHOD: POST * SERVER_NAME: xxx.yyy * PATH_INFO: /path/of/dir/ */ + static int isCGIENV(PCStr(name)){ + const char *np; + char ch; + int nus = 0; + for( np = name; ch = *np; np++ ){ + if( ch == '_' ) nus++; else + if( !isupper(ch) ) + return 0; + } + return nus; + } static int matchEnviron(PCStr(spec)){ const char *sp; char sc; const char *env; CStr(name,128); CStr(body,1024); for( sp = spec; sc = *sp; ){ fieldScan(sp,name,body); if( 'A' <= name[0] && name[0] <= 'Z' ) if( 'A' <= name[1] && name[1] <= 'Z' ) + if( isCGIENV(name) ) { env = getenv(name); if( env == 0 ) env = ""; if( matchFields(spec,name,env) == 0 ) return 0;