パスワードを忘れた? アカウント作成
496286 journal

twadaの日記: NNIPF0.06-releaseを作りました. 10

日記 by twada
NNIPFのリリース版ができました.

* MTAOBの評価方法を変え,by偽造の影響を受けないようにした.
* マスターBIP,GIPを導入し,ユーザは個人のBIP/GIPが持てるようにした.これで,大規模ユーザを対象とした運用が行なえる筈です.
* MTAOBやBIP,GIPの登録や削除,IPアドレスの弁別度計算,などがWEB上で行なえるようにした.
* WEB経由でメイルの内容を表示する際にMTAOBや識別に用いたIPアドレスが分かるようにした.また,そこからIPアドレスのチェックや,MTAOBの変更などが行なえるようにした.

NNIPFのWEBページにアクセスしたIPアドレスをhttpdのログから拾い,弁別度を計算したところ,少なくとも約4%がほぼ確実にスパマーという結果でした.ある意味で,大変感心しました.
既に使われている人は分かっていると思いますが,このスパムフィルタはちょっとトレーニン グするだけで,絶大な効果を発揮し,あとは放っておいてもフィルタリングをしながら自動的に ある程度の学習もします. ですが,より精度を高めるには1日に1度以上WEB経由でチェックをして下さい. よろしくお願いします.
追伸:23日の23時以前にダウンロードされた1名の方,Makefileに問題のあるバージョンでした.もう一度ダウンロードして下さい.

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by gnaka (17369) on 2007年04月25日 0時21分 (#1147751) 日記
     こんばんは。release版ということで早速ダウンロードしてインストールさせて頂きました。
     …が、こちらの環境では正常に動作させることができませんでした。当方はpostfix + Courier-IMAPの組み合わせです。

    1. chk.cgiでdecode('Guess',$Sfrm{$i})での判別がうまく行かずshiftjis or euc-jpといったメッセージを吐いて止まってしまいます。これは
    sub to_sjis {
     
            my($l) = @_;
     
            my $decoder = Encode::Guess->guess($l);
     
            return encode('shiftjis', $decoder->decode($l)) if ref($decoder);
            return encode('shiftjis', decode('shiftjis', $l)) if $decoder =~ /shiftjis/;
            return "(removed because the encoding could not be identified)";
    }
     のようなものを付け加え、Guessしているところは全てこれを使うように変更してとりあえず凌ぎました。

    2. Maildirはそのユーザからしか読めないため、おそらくhttpdにmod_suexecを組み込まないとパーミッションの関係でうまく動かないものと思われます。あるいは別の方法があるのかもしれませんが、いずれにせよそのあたりの記載がほしいところです。なおsuexecを使う場合chmod go-w . *.cgiなどをしておかないと動きません(makeしたときのumask次第)。

    3. .htpasswdはデフォルトのパーミッションのままだとhttpdが読めないものと思われます。chmod 604 .htpasswdが必要です。

    4. とりあえず.forwardの設定などは後回しにしてchk.cgiにアクセスしてみると一応正常に表示されました。しかし、そこでAddGIPなどの選択を行って実行ボタンをクリックするとInternal Server Errorとなります。error_logを見ると

    /home/username/Maildir/trash/1177386685.11538_0.mail.example.jp:2,S: No such file or dir
    ectory at PERL/header.pl line 157., referer: http://mail.example.jp/~username/NNIPF/chk.cgi [example.jp]

     といった記録がありました。

     このあたりで今日はリタイアしました。
    • by twada (33858) on 2007年04月25日 18時27分 (#1148179) 日記
      ご連絡ありがとうございます.下記の点以外は修正したものを用意してます.
      /home/username/Maildir/trash/1177386685.11538_0.mail.example.jp:2,S: No such file or dir
      ectory at PERL/header.pl line 157., referer: http://mail.example.jp/~username/NNIPF/chk.cgi
      これは,そのファイルが実際にないか,パーミッションがおかしいか,変な文字列がくっついているか,ですが最後のパターンはなさそうです.また,詳しいことが分かったら教えてください.
      和田
      親コメント
      • by gnaka (17369) on 2007年04月25日 23時26分 (#1148368) 日記
         お世話様です。再度ダウンロードさせて頂きました。結構直ってきていますね。

         最後の点はやはり直っていませんでしたが、若干ソースを眺め、chk.cgiの99行目付近の
        $RCV=HEADER::rvf("$TRASH/$name");
        $RCV=HEADER::rvf("$MAILDIR/$dir/$name");
        に書き換えると一応それらしい動きをするようになった気がします。しかし正しいかわかりません。
        親コメント
        • by kicchy (4711) on 2007年04月25日 23時59分 (#1148394)
          >$RCV=HEADER::rvf("$TRASH/$name");
          ですが、うちでは
          $RCV=HEADER::rvf("$CUR/$name");
          に書き換えました。
          画面上の、curの処理から来ているようでしたので。

          あと、IPv6のIPv4マッピング対応に
          PERL/header.pl
          の112~113行を
              if ($str =~ /.*\[(::ffff:)?([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\].*/) {
                  $OIP =$2;
          に変えてみました。
          正式には、これで良いのかどうかは分かりませんが・・・
          本当にIPv6で運用してたらアウトなんでしょうけどウチではこれで動いているようです。
          親コメント
  • by gnaka (17369) on 2007年04月26日 4時12分 (#1148461) 日記
     度々恐れ入ります。
     マスターBIP(のみ)に入っているIPアドレスに対してCONSOLEからAddGIPするとエラーが発生します(IpDictAddExclusiveから呼ばれるIpDictRemoveでエラーになっているものと思われます)。マスターGIP/BIPと矛盾する登録でもできるようにするのが理想的かと思われますが、ややこしくなりそうなので、差し当たりマスターBIPに入っているものはcurの一覧に出さず、AddGIPできないようにする等の対処も考えられます。
  • by gnaka (17369) on 2007年04月30日 4時11分 (#1150473) 日記
     0.08を使ってみました。これまでの問題点は直っているようです。
     改めて使ってみたところ、以下の点に気づきました。

    1. Boundary記載のアドレスがSPAM CONSOLE画面でAddGIP/SPAM選択の対象として検出されてくることがあります。Boundaryに記載されているアドレスは常に弁別度0%と扱った方がいいのではないでしょうか。

    2. SPAM CONSOLE画面ではSubject行の漢字が全然うまく表示されないが、SHOW MAIL画面では全部又は先頭部分の一部がうまく表示されるメールがあります。以下のようにMIMEエンコードが文字列の途中から始まっている場合にこうなるようです。
    Subject: FROM JPRS =?ISO-2022-JP?B?GyRCQX00KRsoQg==?= [vol.71 -2007.04.11-]
            =?ISO-2022-JP?B?SUNBTk4bJEIlaiU5JVwlczJxOWdKczlwIUobKEI=?=
            =?ISO-2022-JP?B?GyRCQmgbKEIyGyRCMnMhSxsoQg==?=
     当方では、chk.cgiの436行目などで、Subjectの先頭が=?だった場合にのみMIMEエンコードからの変換を掛けるようにしているif文を削除してみました。ただ、これだけだとSHOW MAIL画面の方ではSubject行が上の例のように複数行になっている場合に先頭行の分しか漢字で表示されないという問題が残ります。

    3. SPAM CONSOLE画面は180秒でRefreshするようになっているようですが、私の環境では、当初1000通近くのメールを分類しなければならないので、若干気が焦ります。Refreshがかかったときに、ラジオボタンの状態もリセットされてしまうとは限らないようですが、状態が保存されるのが保証されているというわけでもなかろうかと思いますので、自動ではRefreshしない方がいいかもしれません。
     なお、本当は少しずつ分けて登録できるようだといいのですが。

     本業の方もお忙しいかと思いますので、あまり負担にならない程度に進めていっていただければと思います。
  • by Anonymous Coward on 2007年04月24日 12時06分 (#1147363)
    betaを使ってみた感想です。
    releaseはこれから使わせてもらいます。

    初めから同梱されてきているCONF/conf.plなのですが
    main'T2の設定が恐らくミスっています・・・
    T1を2回設定しています。

    あと、効果がないという人はBoundaryの設定を
    間違っている可能性があるのではないでしょうか。
    Boundaryが間違っていると、
    OIPが取れなくてGood判定になってしまうことがありました。

    procmailとの相性では、
    フィルタ動作にして、ヘッダに結果を埋め込めば便利なので
    私の所では、filter.plを改造してヘッダに
    X-NNIPF-Status: (Bad|Maybe Bad|Unknown|Almost Known|Good)
    X-NNIPF-Ratio: 0~100
    X-NNIPF-IP: OIP
    を埋め込むようにしました。
    • by twada (33858) on 2007年04月24日 23時53分 (#1147738) 日記
      すみません.私はずっと前のバージョンを使っていて,せっかくリリースしたのだから使おうとしてみて,今気がつきました.今後ダウンロードされる方はリリース内のconf.plも正常です. お騒がせしました. 和田
      親コメント
typodupeerror

人生unstable -- あるハッカー

読み込み中...