PMail Server で示すベイジアンフィルタは、ベイズ理論を使った spam フィルターです。要約すると「spam メールに含まれる文字集合と
非spamメールに含まれる文字集合の確率を計算し、spam メールか否かを判断し、結果で更に確率の修正を行っていくフィルタ」です。
文字集合は複数の文字の集まりを指します。「単語」のように意味のある状態にはならないので、このような表現をしています。
Paul Graham 氏が書かれた「A Plan for Spam」及び
「Better Bayesian Filtering」
Copyright 2002-03 by Paul Graham
上記ページの日本語訳
Shiro Kawai氏が日本語に翻訳された「スパムへの対策」及び
「ベイジアンフィルタの改善」
Gary Robinson 氏が書かれた「Spam Detection」
Copyright 2004 Gary Robinson.
ベイズ理論やベイジアンフィルタに関しては上記のページや Web 上に多くの説明がありますので、ここでは省略し説明は致しません。
以降は PMail Server に実装されているベイジアンフィルタに関する固有の情報です。(上記理論やベイジアンフィルタの知識が必要となります)
文字コードや言語、区切りについてはどのように処理していますか?
文字コードは ASCII 及び S-JIS を対象として処理が行われます。JIS/EUC 等のデータは全て S-JIS に変換後に処理を行います。
英語(1byte code)
3byte以上の区切りを除いた文字集合を対象とします。区切りはスペースを含む記号25種です。改行コード(CR / LF) は区切りとして扱われません。
また完全に連続した状態で 78byte を超えた場合も区切りとして扱われます。
内部で予約された 49種類の単語(HTML タグを含む)は上記の条件を満たしている場合でも除外されます。
文字集合に連続した半角数値(又はこの逆)は対象として扱われますが、文字集合が全て半角数値の場合は除外されます。
日本語(2byte code)
3byte以上(ただし2byte code の場合は 2byte 単位で処理されるので実質 4byte)以上の区切りを除いた文字集合を対象とします。
漢字及びひらがな/カタカナを対象とします。ひらがな、カタカナの場合は長音記号を含む連続した文字集合、漢字については
漢字に連続してひらがなが繋がっている場合は、漢字+ひらがなとして処理します。
全角の数値(0−9)は文字集合として扱われます。
Bayesian.txt 及び Bayesian.ave は絶対に手動で編集を行わないでください。編集した場合の保証は一切ありません。
上記の方法は調整等でアルゴリズム的に変更される場合があります。
対象の抽出範囲は?
メールの件名(メールヘッダ内 Subject; 項目)及び、添付ファイルを除いたメール本文が対象となります。HTML メールは
対象として扱われますが、HTML メール内の画像等が埋め込まれている場合は対象外になります。
ベイジアンフィルタの確立計算アルゴリズムは?
Gary Robinson-Fisher 法を利用しています。ただし、同じ法を利用している場合でも、学習させるメールの内容や文字集合抽出アルゴリズム
の違いによって判定の確率は変わります。
データベースへの学習方法やメンテナンスは?
製品版付属の Webmail から操作を行います。従って Web 環境が必須となります。Web 環境が構築できない場合は、メールクライアント側で該当するソフトを使いベイジアンフィルタや spam 対策を行って下さい。(メールクライアント側でのベイジアンフィルタに関しては、将来的にメールクライアント側でも対応が行われていくと思われますし、また様々なソフトウェアが出てくる[出ている]為、PMail Server 側では対応致しません)
またメールに添付する形で更新できるように考えたのですが、それを逆手に取られセキュリティホールに成りかねない可能性がある
為、Web 環境が構築できない場合の学習方法はサポートいたしません。
フィルタされたメールは?
設定で「メールの件名に下一桁を 0 にした確率を追加」と「ゴミ箱へいれる」の2通りがあります。「ゴミ箱へいれる」場合は
確認に PMUM が必要となります。
フィルタをすり抜けてくるメールや誤認識されるメールがあります
ベイジアンフィルタは学習次第によって確率が変わってきます。過去に学習したメールから確率を算出し spam の判断を行うもので100% spam を防ぐ物ではありません。有名な SpamAssassin も判断材料無しでは判別はできません。
サーバ側の負担は?
シンプルなパターンマッチのフィルタと違い、メールの必要箇所をデコードし文字集合に分解して確率を計算しますのでそれなりにサーバの負荷はそれなりに上昇します。多くのユーザーがいる場合などはサーバ側で処理をせずにクライアント側で処理をする必要もでてくると思われます。
またサーバへの負荷軽減の為に、データベースに上限を設けてあります。デフォルトでデータベースに蓄積できる文字集合の数は50,000件、また未使用の文字集合は 90日経過した時点でデータベースから削除されていきます。蓄積できる上限を超えた場合は古い日付から削除されていきます(処理は1日単位です)。
上限を変更することにより認識率を高めることが出来ますが負荷は上がります。
上限を下げれば負荷は下がりますが認識率は落ちます。
利用者の数、メールの受信数、サーバのスペック等で最適な上限を調べ設定して下さい。
無理に認識率を上げようとし負荷が上昇しメールが受信できなくなるのでは意味がありませんのでご注意下さい。DNSBL や通常のフィルタなども組み合わせて処理を行ってください。またどんな上限でも(例えデフォルト値でも)サーバのスペックによっては正常に動作をする保証はできませんのでご了承下さい。
現在、上限は固定です。
サーバ全体への同一データベースによるフィルタの適用は出来ませんか?
PMail Server の開発ポリシーとして現時点での全体への適用は行いません。各ユーザーが受け取るメールには違いがあり、ユーザーAにとって spam でもユーザーBにとっては spam では無い可能性があります。また全体に適用した場合データベースが大きくなりサーバへの負荷が大きくなります。(spam 排除の為に正常なメールが受信できないようなことになるのは意味が無いと考えます)
この点については要望を出されても現時点では対応しませんのでご了承をお願い致します。(将来的にフィルタ速度や抽出精度が上がった場合は適用するかもしれません)