RSpamdスパムフィルタリングシステム

Rspamdシステムは、Rambler Mailの主要なスパムフィルタリングシステムとして開発されています。 しかし、当初、私はSpamassassinに比べて機能、柔軟性、および作業の質に劣らないシステムを作成することを計画しましたが、その主な欠点はありません:正規表現の過剰な使用、最適化の不足、作業の一般的な思慮深さ、および比較的不正確な統計。 そのため、rspamdの概念は成熟しました。そのシステムは、簡単に拡張可能で、より高度な統計アルゴリズムを使用する、大量の文字のフィルタリングに最適化されるシステムです。 rspamdカーネルはCで記述されており、イベント駆動型のメッセージ処理モデル(libeventに基づく)を使用します。 プラグインとルールをluaで記述することにより、rspamdを拡張します。 プロジェクト自体は当初から(BSDライセンスの下で)オープンソースであり、現在はbitbucketにあります。



前文



nginx、crm114、そしてもちろん、spamassassinなどのプロジェクトは、rspamdに大きな影響を与えました。 nginxから、rspamdはデータ処理モデルとさまざまな情報を処理する原理を取り入れました-有限状態マシン、サフィックスツリーなどの最適なアルゴリズムが最大限に使用されます。 私の意見では、crm114はさまざまな統計アルゴリズムとアプローチの最大数を実装しており、それらは他のシステムに徐々に実装されています。 たとえば、メッセージの統計分析のためのrspamdは、SAや他の多くのスパムフィルターのようなユニグラムではなく、単語からバイグラムを分析するためのアルゴリズムを使用します。 これにより、単語だけでなく、単語の組み合わせのスペクトルの確率(または頻度)を推定できます。 一方では、これにより統計のサイズが大きくなり、他方では、その精度が向上します。 しかし、もちろん、rspamdは、SpamAssassinを最大限に活用しました。SpamAssassinは、プロジェクトを作成するためのプロトタイプおよびリファレンスポイントとして機能しました。 多くの要因(正規表現、DNSブロックリスト、さまざまなリスト、統計、署名、フィッシングなど)に基づいてメッセージを評価するイデオロギーは、SpamAssassinから取られています。 さらに、評価は「メトリック」の概念に拡張されました。これにより、さまざまなルールセットに従ってメッセージを評価できるようになります。



Rspamdの対象者



Rspamdは、大規模なメールシステムと1時間に数通の手紙を処理する小規模なシステムの両方のさまざまなサイズのシステムに適しています。 前者は、簡単な水平スケーリング、マスタースレーブ統計の同期、作業を監視するための組み込みコマンド、高速、ダウンロードの急激なバーストに耐える機能(複雑なチェックを無効にすることによる)、柔軟で拡張可能なアーキテクチャなどのrspamd機能を備えています。 小規模なシステムの場合、rspamdはすぐに使用できる設定に適しています。 また、ユーザーがrspamdをインストールし、スパムをフィルタリングするための既製のシステムを使用できるように、統計の配布を整理する予定です。 RspamdはさまざまなMTAに統合でき、SMTPプロキシモードで動作します(詳細については 、この記事のドキュメント参照してください )。



システムの受け取り、インストール、構成



Rspamdは現在、Unixライクシステムでのみ動作します(さまざまなタイプのLinux、FreeBSD、およびOpenSolarisでパフォーマンスがテストされました)。 FreeBSDでは、rspamdはポート(mail / rspamd)の形式であり、残念ながらシステムの残りの所有者はソースからrspamdを収集することを余儀なくされます。 このプロセスと初期設定については、「 クイックスタート 」で説明しています。 rspamdを構成するには、xmlファイルを使用する方法とluaを使用する方法の2つがあります。 最初の方法は、基本的なパラメータを設定するように設計されています。たとえば、これはメッセージのさまざまなアクションの重みとしきい値の設定方法です。

<!-- Metrics section --> <metric> <name>default</name> <required_score>14.0</required_score> <!-- Sample actions --> <action>reject</action> <action>greylist:4</action> <action>add_header:8</action> <!-- Weights for symbols --> <!-- Subject is missing inside message --> <symbol weight="2.00" description="Subject is missing inside message">MISSING_SUBJECT</symbol> ...
      
      





2番目の方法は、ルールとより細かく調整されたrspamdを記述するために使用されます。 たとえば、メッセージに「適切な」統計ファイルを選択する関数を作成できます(基本的な配信では、そのような関数はメッセージ言語の統計を選択するために提供されます)。 以下は、手紙の中に絵がある空の手紙の存在を判断する例です。

 reconf['R_EMPTY_IMAGE'] = function (task) parts = task:get_text_parts() if parts then for _,part in ipairs(parts) do if part:is_empty() then images = task:get_images() if images then return true end end end end return false end
      
      





rspamcコンソールクライアントを使用して、rspamdのトレーニング、チェック、および監視を行うことができます。



プロジェクトの現在の状況



少し前に、rspamdとSAのパフォーマンステストを少し行いました(ほぼ同じルールで30の同時接続のストリームでチェックしました)。 おおよその結果は次のとおりです。



Rspamd:

rspamd stat



SpamAssassin:

spamassassin stat

現在、Rspamdユーザーは、Rambler Mailに加えて、いくつかの大手プロバイダーです。 プロジェクトには1人の開発者しかいないため、プロジェクトの品質を向上させ、新しいアイデアを実装するために、新しいユーザーに興味があります。 さらに、最新バージョン(0.4.0)では、プロジェクトの品質の安定化、簡素化、改善に多大な努力を払っています。 したがって、rspamdのおかげで、だれかがより少ないスパムを受信する場合、コードとこの記事を故意に作成しました。



参照資料



  1. https://bitbucket.org/vstakhov/rspamd-プロジェクトのホームページ
  2. https://bitbucket.org/vstakhov/rspamd/wiki/Quick_Start-クイックスタート
  3. http://wiki.opennet.ru/Rspamd-ロシア語のクイックスタート
  4. https://bitbucket.org/vstakhov/rspamd/downloads/-ダウンロード
  5. https://bitbucket.org/vstakhov/rspamd/wiki/Documentation-主なドキュメント
  6. http://highsecure.ru/rspamd_statistics/-ロシア語の個別の統計の例



All Articles