パスワードを忘れた? アカウント作成
9904959 story
spam

スパムフィルターを高速化するには? 83

ストーリー by headless
低速 部門より
本家/.「Ask Slashdot: Speeding Up Personal Anti-Spam Filters?」より

私は着信するメールを振り分けるためにProcmailを数年間使っているが、使っているうちにスパムのパターンリストが長くなってきた。パターンを使用する利点としては、実質的に間違いがないということだ。新しいスパムを2回以上見ることはなく、必要なメールが失われることもない。処理は1行に1つのパターンを含むスパムパターンファイルを使い、「egrep -F」を実行することで実現している。シンプルな処理ではあるが、パターンリストが長くなるにつれて処理に時間がかかるようになり、CPUパワーの消費も増えてきた。現在のところ平均的なメールを処理するのに15秒程度要する。つまり、次第に使いにくくなっており、もっと効率の良い方法に切り替えたいと思う。今のところ考えているのは小さなインデックス化されたデータベースを使うといったような方法だ。皆さんが自分で使うとしたらどのような方法を選ぶだろう。SQLiteは目的にあっているだろうか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • egrep -F は fgrep と同じで、固定文字列を検索する。それで実用的なスパムフィルターを作れるって、すごいことじゃね?

    …と思ったら、本家のタレコミ主である hmilz さんが重要なところを間違えている。 hmilz さんのコメント [slashdot.org]によれば、各メールについて「egrep -i -o -f」を実行しているのであって、固定文字列を検索する「egrep -F」は全然関係ない。

    -f はパターンが 1 行に 1 個ずつ書かれたファイルを読み込んで、全パターンを検索するためのオプション。大量の正規表現パターンをコンパイルすることもなく何度も繰り返し使うなんて、そりゃ遅いに決まっている。

    少なくとも、メールごとにパターンをコンパイルしないで済む仕組みが必要。既存のスパムフィルターならそういうことは当然しているけれど、他の処理もいろいろくっついてくるから運用を変える必要がある。「余計な処理は要らないから、 egrep -f を同じパターンファイルで何度も実行するのを高速化したい」というのがやりたいことだとすると、どういうツールがあるのかわからない。

  • by Ryo.F (3896) on 2013年09月01日 16時11分 (#2451915) 日記

    もっと早いマシンを買え。

    そうでなければ、パターン(正規表現)をコンパイルして待機するデーモンでも作ればいいんじゃない? 原理的には、テキストの長さnに対してO(n)の走査時間で済むだろ。

  • 公開用とDM用に専用メールアドレス使うだけでだいぶspamは減らせる感じ。
    spam来るようになったらそのメールアドレスだけ捨てればいいので。
    あと公開用はgmailかgoogle apps使うと楽。
    # でも今はもう無料のgoogle appsないんだっけ

  • by jizou (5538) on 2013年09月01日 19時55分 (#2451978) 日記

    thunderbird の迷惑メールフィルターで、十分間に合ってます...
    # procmailがthunderbirdより重いってことはないよね?

  • by Anonymous Coward on 2013年09月01日 16時23分 (#2451920)

    そんなことに手間隙費やすくらいなら、メールアドレスを変更すればよいのではないだろうか。どうせいずれまた重くなって、うまい方法がないものだろうかと相談するのが落ち。周知や登録しなおしの手間もあるけど、これを機会に不要な登録を消すというのにも良いと思う。

    対策に自分の時間と労力と金を取られることも、迷惑メールに負けたような気がするからいやなんだよね。

    気持ち的にもすっきりするよ。

    • スパムの相手をするのが嫌!というならこれでいいかなーと思う。
      最初は「だれがこのアドレス知ってたっけ?」という点で苦労するけど、二回目以降は段々慣れる。

      スパムフィルタ自体については他の方々が言及されているので割愛。
      アドレス変更と併用するなら手のかからない子がいいんじゃないかな。

      # 個人的には誤判定しにくい(と思う)URI BLが好き。軽くはないけど。
      --
      にゃー。
      親コメント
    • by Anonymous Coward

      そもそもメールなんて(ry

      • なるほど、メールアドレスをもっていらっしゃらない [atmarkit.co.jp]わけですね。

        秘書も雇えず、E-mailも使わない、としたら、私は何を使えばよいのかな。

        Facebook, Twitter, Line, ... 何かいや。
        知り合いや業務連絡なら、Groupwareかな。

        それ以外、となると、自分のhome pageに連絡用入力formを用意する、とか。入力項目に特定のページを読んで理解しないと分からないような内容を入れさせるようにすれば、spamも来なくなるんじゃないかな。入学試験みたいなもので。

        親コメント
    • by Anonymous Coward

      メールアドレスを変更したって、スパムメールが届かなくなるとは限らないし、メールアドレスの変更をするにも、周知などに多大な時間と労力が掛かると思うんだけど。
      しかも、その多大な時間と労力を掛けても、一部の相手から連絡が来なくなるリスクが無くなる訳ではない。
      スパムが届かないだけじゃなくて、必要なメールも確実に逃さないことも大事なんだよね。

    • by Anonymous Coward

      spamごときのためにメールアドレスを変えさせられることのほうがよっぽど迷惑メールに負けている気がするのだが。

    • by Anonymous Coward

      キミ、学校とかで友達から相談を受けることないでしょ。
      何でだと思う?

      • by Anonymous Coward

        高度なスパムフィルターを装備しているから

  • by Anonymous Coward on 2013年09月01日 16時35分 (#2451925)

    よく楽天とかニコニコのDMが入ってるけど、解除が面倒で迷惑メールの指定をする人がいて、それでそういう学習するのかね。

    • どんなスパムフィルタにも一定の誤認識はあります。

      「楽天とかニコニコのDM」が百パーセントスパムフォルダに入ってるなら話は別だけど。

      親コメント
    • by Anonymous Coward

      私も前にそう思って、戻したらホントにフィッシングメールだった、ってこともあるので、よくソースやヘッダを調べた方が良いよ。

    • by Anonymous Coward

      今はどうか判らないけど、前に楽天の解除しようとした時は「ログインして解除にチェックいれてOK」じゃ駄目だったからなぁ
      具体的には「ログインした時点で別のメールの送信に同意したものと見なされて別のが届くようになる」とか「OKの後、隅っこにある確定ボタンを押さなきゃいけない」とかあった。
      少なくともリテラシーあまり高くない人が楽天で買い物しちゃって、解除のやりかたが判らなくて仕方なくスパム学習させた、ってことはあると思う。

      • by Anonymous Coward

        リテラシ高い人で、メルマガ類の解除は時間コストがかかるからspamフィルタに登録してるという人を知ってる。

  • by Anonymous Coward on 2013年09月01日 17時07分 (#2451937)

    spamassassinのようなフィルタプログラムでスパムにマークして、それのマークをprocmailで振り分ければいいだけでは?
    たまに誤判定もするけど、それは学習させればいいし。定期的に自動学習するようにcronでも設定しておけば、誤判定したメールをspamフォルダに移すだけでよいし。

    まず、自分でスパムのどの部分のパターンを取り出してprocmailのレシピにするのかが手間だし、そのパターンもランダムに変わらないところを選ばないと行けないし、あまり一般化すると必要なメールも引っかかるしで、面倒ばかりでいいことあるとは思えないけど。それから、procmailのレシピが肥大化して15秒とか、いったい何件ルールを書いているのだか。ちょっと古めのCPUでも、1000件の処理なんて一瞬でしょう?

    自分でルールを厳密に決めて、完璧にスパムをはじきたいなら、もうルールをひたすら書き続ければいいと思う。

    • by Anonymous Coward

      たまにある誤判定が業務用には厳しい。

      • たまに迷惑メールフォルダをチェックする必要はあるだろうね。
        どんな方法でも誤検出をゼロにすることはできない。従って、どんな方法であろうと、たまには迷惑メールフォルダをチェックする必要はある。例外は、本人チェックのみ。
        すべて本人チェックする業務負荷と、たまに迷惑メールフォルダをチェックする業務負荷のどちらが大きいかを勘案して決めなよ。

        親コメント
      • まずは、あんたのいう「業務用」を定義しろ。
        話はそれからだ。

        親コメント
        • by Anonymous Coward

          どっちかって言うと、「たまに」の定義をまず知りたい。
          仕事用だろうが私用だろうが、誤判定が致命的なミスにつながる可能性はある。

      • by Anonymous Coward

        誤判定をスパムフォルダに移動させる手間と、すり抜けてきたスパムの内容から、ランダムに変わりそうになく特徴的な部分を分析してprocmailのレシピに書き込むのと、どちらが手間でしょうか?
        大人数を抱える業務システムを運用したことがないので、ストーリーの方法と比較してどれくらい厳し野かがちょっと見当つきません。

        • 私は、SpamAssassinを使い始める前は、procmailで頑張っていた時期がありました。
          はっきり言って、破綻します。
          procmailのレシピは書きにくく、記述できる内容も貧弱で、お話になりません。
          procmailでレシピをゴリゴリ書く位なら、SAのルールをいじる方が遥かに楽です。

          spamフィルタの精度にもよりますが、一般的に、誤判定はfalse negativeの方が処理は楽です。
          false positiveが面倒。

          親コメント
      • by Anonymous Coward

        この人間様は誤判定をすることなどないという妄信はいったいどこから来るのだろうか。
        飛行機だってオートパイロットは信用できないから最初から最後まで人間が張り付いて操作すべきだよね。

      • by Anonymous Coward

        内容によるけど業務用には厳しいね。納期変更とかフィルタリングされたら泣くに泣けない。
        「フィルタリングされてました」なんて言ったら信用がた落ちだし。

        • by Anonymous Coward

          自分で設定したprocmailのレシピでも同じ事が起こる可能性もあるよね?
          ホワイトリスト作っておけばいいのか?

          • by Anonymous Coward

            どう判定するか予測できるか出来ないかの違いかな。

  • by Anonymous Coward on 2013年09月01日 17時34分 (#2451948)

     焦らない、焦らない。
     お湯を沸かして、お茶なりコーヒーなり準備して、甘いものをつまみながら一息つく。
     そうするといつの間にか処理が終わってます。

  • by Anonymous Coward on 2013年09月01日 17時50分 (#2451956)

    「えーマジprocmail?」「キモーイ」「procmailが許されるのは20世紀までだよねー」「キャハハハハ」
    とか言われて、やれdropmailだのslocalに移行しろだの言われてたのが2007年くらいまで。
    今はもうMDAつったらSieve一択だろ? 常識的に考えて。
    どんだけ時代に取り残されてんだ…
    ルールのコンパイルひとつできないMDAなんて窓から放り投げろ。

    そもそもスパムフィルターなんてのは、MDAに落ちてくる前にMilterの段階でマークするなり落とすなりしとくものだろ?
    さあ振り分けって段階になって初めてスパムフィルターかけてるのがそもそもイカレてるんだよ。
    ベイズが信用ならんって場合でも、それならそれで自分でパターン書いといてsa-compile的なことして常駐させとけよ。

    だいたいからしてprocmailから更にegrepとかもうな…
    sieve使うようになってもrequire "regex"せずに、毎回毎回-exec egrepしてそうだわ…

  • by Anonymous Coward on 2013年09月01日 19時17分 (#2451972)

    Apple Mail標準の迷惑メールフィルタで特に困ってない。
    誤判定は学習させればいいだけだし。

    いちいち手動で特徴抜き出してリスト作成してって、すげえ面倒くさい。
    間に他のプログラムを噛ませるのも(管理や連携が)面倒くさい。

    Thunderbirdとかにも似たような機能あるんだろうし、移行しても標準機能で満足すると思う。

    • by Anonymous Coward

      いまんとこThunderbird利用中
      Yahooと楽天の不要なサービスのメールは登録後には迷惑メールに弾くようになっているなぁ

  • by Anonymous Coward on 2013年09月01日 19時55分 (#2451976)

    スパムフィルタを使わないのが一番いいな

    • by Anonymous Coward

      ルールに
      ・IPアドレス逆引きができない物は基本不許可(ホワイトリスト外を除く)
      ・逆引きしたドメイン名が特定ルール(mail-b??.netとか)だとはじく
      だけでそこそこはじける気もしますが。

typodupeerror

Stableって古いって意味だっけ? -- Debian初級

読み込み中...