ASPに基づくスパム対策管理システムの設計と実現

インターネットの急速な普及に伴い、電子メールはその高速、便利、低コストという特徴から、人々が情報を交換するための主要なメディアの 1 つになりつつありますが、それに伴うスパムもますます横行しています。スパムは限られたストレージ、コンピューティング、およびネットワーク リソースを占有し、ユーザーの処理時間を大量に消費し、ユーザーの通常の仕事、生活、および学習に影響を与え、妨害します。スパムを効果的に制御する方法は、全世界が直面する困難な問題であり、インターネット上で解決すべき問題でもあります。この記事では、最初に人々の日常生活における電子メールの重要性を紹介し、次にスパム対策技術の開発の歴史を簡単に紹介します。スパムをフィルタリングする 3 つの方法、ブラック リストとホワイト リスト技術、サブジェクト キーワード フィルタリング技術、およびベイジアン ストラテジを学習し、これら 3 つの技術の設計方法について、ベイジアン フィルタリング技術の設計原理と実装手順に焦点を当てて説明します。最後に、これらのフィルタリング手法の欠点と、設計で遭遇する問題についてまとめます。

インターネットの極端な拡大に伴い、多くの情報が人々にもたらされました。電子メールは、人々に迅速かつ便利に感じさせ、最速かつ最も経済的な通信手段になりました。しかし、インターネットはアナーキーな世界です。 -メールは無差別にメール広告を配信し、多くの人のメールボックスにゴミがたまります.一部の人々は、電子メールを使用してメール爆弾を作成し、電子メール サーバーを麻痺させます.さらに、電子メールを使用してウイルスを拡散します. これらはすべて、多くのユーザーに際限のない問題をもたらしました。したがって、スパムの効果的なフィルタリングは重要な実用上の問題になっています。現在、私の国のスパムフィルタリング研究における意味分析とテキスト分類の技術はまだ比較的遅れており、その結果、多くの国内の大規模な電子メールシステムがタイムリーかつ効果的な方法でスパムを検出して拒否することができず、大きな問題を引き起こしています。ユーザーに危害を加えます。さらに深刻なのは、多くの外国のスパマーがこの欠陥を利用して中国のメール サーバー経由でスパムを送信し、多くの外国の ISP サービス プロバイダーが中国のメール サーバーの IP アドレスをブロックし、中国のユーザーに多くの精神的および経済的損失をもたらしていることです。中国経済と世界経済との関係がますます緊密になるにつれて、中国と外国との交流活動が徐々に増加し、外部からの電子メールの数も急激に増加しています。スパムの問題は、国内の企業や組織に深刻な損害を与えることは間違いなく、影響は甚大で、中国経済の発展に深刻な障害をもたらします。そのため、新しい信頼性の高いスパム フィルタリング技術の研究が急務となっています。

1 . 2 開発概要

1.2.1 電子メールの概要

電子メールとは、電子通信システムを介した通信の作成、送受信を指します。今日最も使用されている通信システムはインターネットであり、電子メールはインターネットで最も人気のある機能の 1 つです。電子メール システムを介して、非常に低価格で非常に高速な方法 (数秒以内に指定した世界中の任意の宛先に送信できます) を使用し、世界中のネットワーク ユーザーと通信できます。同時に、たくさんの無料ニュースやスペシャルメールを受け取ることができ、簡単な情報検索を実現します。これは、従来の方法では比類のないものです。電子メールが広く使用されているのは、まさにその使いやすさ、迅速な配信、低料金、簡単な保管、および妨げられないグローバル アクセスのためであり、人々の通信方法を大きく変えました。インターネット アカウントを申請するすべてのユーザーは、電子メール アドレスを持っています。これは、ユーザーの番地に非常によく似た郵便受けの住所です。より正確には、郵便局で郵便受けを借りることに相当します。従来の手紙は郵便配達員がドアに配達し、電子メールは自分でメールボックスをチェックする必要がありますが、家から出る必要はありません。電子メールは、独自の電子メール システムから発信されます。電子メールは、インターネットが普及するずっと前から存在し、ホスト-マルチ端末マスター-スレーブ システムで、あるコンピューター端末から別のコンピューター端末にテキスト メッセージを送信する比較的単純な方法として開発されました。

長いプロセスを経て、音声、写真、画像、ドキュメントなどのマルチメディア情報を送信できる、より複雑でより豊富なシステムに進化したため、データベースや会計レポートなどのより専門的なドキュメントが作成される可能性があります。電子メールの添付ファイルとしてオンラインで配布されます。

1.2.2 スパム対策の概要

 「スパム」とは主に未承諾の電子メールを指すか、メッセージの件名とは関係のないニュースグループまたはリスト サーバーに送信された同じメッセージの複製である可能性があります。国内外の技術専門家やスパム対策組織は、まったく同じ「スパム」の定義を持っています。つまり、電子メールは受信者の同意なしにまとめて送信されます。これらの各電子メールの情報量は必ずしも多くはありませんが、電子メールの内容は、ほとんどのユーザーが必要としているものではなく、ほとんどのユーザーが嫌うものでもありません。圧倒的なプロモーション メールは、ユーザーのプライベート スペースを侵害するだけでなく、ほとんどのユーザーのメール機能の通常の使用を妨害し、同時にユーザーにオンラインの時間と資金の浪費をもたらすため、「スパム」と呼ばれます。インターネット上の一般名詞 SPAM、UCE (Unsolicited Commercial Email)、および UBE (Unsolicited Bulk Email) は、一般にスパムと呼ばれるものと同じです。スパム対策技術の研究は、長期にわたる骨の折れる作業であり、次の時代を経てきました。

表 1-1 スパム対策の歴史

初代

第2世代

第三世代

第四世代

基本的な MTA コントロール

リアルタイムブラックリスト

ベイジアン フィルタリング

マルチテクノロジーの統合と階層フィルタリング

ホワイトリストとブラックリスト

電子署名

人工知能

簡単なキーワード検索

機械語学習

レターヘッダーテスト

タイトルフィルター

簡単な DNS テスト

現在のスパム対策技術は、フィルター (Filter)、逆引き (Reverse lookup)、チャレンジ (challenge)、暗号化 (cryptography) の 4 つのカテゴリに分類できますが、それぞれに限界があります。フィルタリングには、キーワード フィルタリング、ブラック リストとホワイト リスト、HASH テクノロジー、ルールベースのフィルタリング、インテリジェントおよび確率システム、およびベイジアン アルゴリズムが含まれます. 検証クエリ テクノロジーは、リバース クエリ テクノロジー、DKIM テクノロジー、SenderID テクノロジー、FairUCE テクノロジー、およびチャレンジ分析に分けられます.チャレンジ-レスポンス、計算課題用。

  1. 電子メールの仕組み

2 . 1 メールの構造

電子メールは、半構造化テキスト ファイルと考えることができます。RFC822 はメールを明確に 2 つの部分に分割します。最初の部分はメール ヘッダーと呼ばれ、いくつかのデータ フィールドを含み、送信者、受信者、件名、コメントなど、メールの重要な部分を識別するために使用されます。メールのヘッダー フィールドは、空白行で区切ってメール本文の前に表示する必要があります。2 番目の部分は、送信ユーザーが受信ユーザーに送信するメールの内容であるメール本文 (本文) です。

2 . 2 メールの送信

電子メールは通常の手紙と同じで、送信者は受信者の名前と住所 (つまり、電子メール アドレス) を示します. 送信者のサーバーは電子メールを受信者のサーバーに送信し、受信者のサーバーは電子メールを受信者に送信します. 個人のメールボックスでは、次の図に示すように:

電子メール システムは、主に次の 3 つの部分で構成されています: ユーザーが電子メールを読み書きするのを支援するメール ユーザー エージェントである MUA (Mail UserAgent); メールを 1 つのメールから転送する責任を負うメール転送エージェントである MTA (MailTransport Agent)。サーバーから別のサーバーへ; メール配信エージェントである MDA (MailDeliveryAgent) は、メールをユーザーのメールボックスに配信します。メール送信プロセス全体を次の図に示します。

 

  1. 需要分析

3 . 1 データベース要件の分析

このシステムは Microsoft SQL Server 2000 データベースを採用しており、データベースの名前は mail です。システム機能の分析は、図 3-1 に示すように、システムの全体的な ER ダイアグラムを描画します。

データの冗長性を排除するために、テーブルには主キーが採用されています。データベースのさまざまな機能モジュールに従って、さまざまな要件分析に従って次のテーブルが確立されます。

  1. メール情報をメール フォルダに保存するために使用されるデータ テーブル、具体的な設計を表 3-1 に示します。

表 3-1 メールデータテーブル

フィールド名

フィールドの説明

フィールドタイプ

主キー

メールを送ってください

メールID

整数

*

メールフロム

送信者アドレス

varchar

牛乳

受取人の住所

varchar

メールデート

送信日

日付時刻

メール件名

メールの件名

varchar

メール本文

メールの内容

varchar

  1. 追加されたブラック リストとホワイト リストの電子メール アドレスを保存するために使用されるデータ テーブル。具体的なデザインを表に示します。

表 3-2 black_mailadd データ テーブル

フィールド名

フィールドの説明

フィールドタイプ

主キー

ID

シリアルナンバー

整数

*

マイアド

メールアドレスをブラックリストに登録する

varchar

表 3-3 white_mailadd データ テーブル

フィールド名

フィールドの説明

フィールドタイプ

主キー

ID

シリアルナンバー

整数

*

マイアド

メールアドレスをホワイトリストに登録する

varchar

  1. ユーザーが追加したサブジェクト キーワードを保存するために使用される情報テーブル。具体的なデザインがテーブルに示されています。

表 3-4 key_word データ テーブル

フィールド名

フィールドの説明

フィールドタイプ

主キー

ID

シリアルナンバー

整数

*

言葉

フィルタされたキーワード

varchar

  1. ベイジアン フィルター処理に使用されるデータ テーブル、特定の設計を表に示します。

表 3-5 drop_word データ テーブル

フィールド名

フィールドの説明

フィールドタイプ

主キー

ID

シリアルナンバー

整数

*

言葉

分析なしの一般的な単語

varchar

表 3-6 bayes_field データ テーブル

フィールド名

フィールドの説明

フィールドタイプ

主キー

ID

シリアルナンバー

整数

*

価値

しきい値

整数

表 3-7 hash_all データ テーブル

フィールド名

フィールドの説明

フィールドタイプ

主キー

ID

シリアルナンバー

整数

*

トークン

独立した文字列

varchar

良い時間

正規のメールに表示される

整数

good_pro

正当なメールに現れる確率

浮く

悪い時間

スパムに表示される

整数

bad_pro

スパムに表示される確率

浮く

表 3-8 hash_pro データ テーブル

フィールド名

フィールドの説明

フィールドタイプ

主キー

ID

シリアルナンバー

整数

*

トークン

独立した文字列

varchar

token_pro

スパムの合計確率

浮く

3 . 2 開発環境要件

このシステムをインストールするために必要な基本的なソフトウェアおよびハードウェア環境は次のとおりです。

  1. Windows95、Windows98、WindowsNT/2000/XP。
  2. Microsoft SQL Server 2000 データベース
  3. Pentium100 以降の IBM PC およびその互換機。
  4. 128M 以上のメモリ。
  5. 5000M 以上の使用可能なハードディスク容量。
  6. 高密度フロッピー ドライブ。
  7. VGAモニター。
  8. CD-ROMドライブ。
  9. このプログラムは Windows2000 Professional オペレーティング システムの下にあり、中国語の Dreamweaver MX 2004 をフォアグラウンド開発ツールとして使用し、中国語版の Microsoft SQL Server 2000 データベースをバックグラウンド データベースとして使用します。

  1. システム機能と技術説明

4 . 1 システム機能モジュール設計

システムは 3 つの主要なモジュールに分割され、各主要モジュールには異なる機能区分があります. モジュール構造図を図 4-1 に示します:

 

  1. 日常業務モジュール

このモジュールは 2 つの部分に分かれています: 電子メールの受信と電子メールの書き込み. ユーザーは、このモジュールを介して電子メールを送受信して、通常の電子メールとスパム電子メールの受信を完了することができます. このシステムは、ローカルデータベースから読み取ったデータを使用して、アンチのテスト環境を提供します. -スパム技術の研究。

  1. メールフォルダ

このモジュールは、受信ボックスと迷惑メール フォルダの 2 つのフォルダを作成し、フィルタ処理された通常のメールは受信ボックス フォルダに表示され、フィルタ処理された迷惑メールはジャンク メール フォルダに表示されます。また、メールを削除して表示することもできます。

  1. スパムフィルタリング

此模块是本设计的核心部分,采用了黑名单、白名单、主题关键字、贝叶斯过滤技术来过滤垃圾邮件,用户可以通过过滤设置来启动和停止这些过滤规则。

4.2基本功能

通过黑名单、白名单、主题关键字、贝叶斯过滤技术完成客户端的垃圾邮件过滤,每个过滤规则在对邮件进行处理判断后,若可以确定邮件的属性,即为垃圾邮件或非垃圾邮件就可以直接把邮件显示在垃圾邮件夹和收件夹。客户端垃圾邮件过滤模型如下图所示:

4.3黑白名单技术

黑名单是一个简单有效最常用的过滤方法,它首先检查邮件头,如果发送者在黑名单内,就拒绝接收该邮件。黑名单可以是发送垃圾邮件的服务器、开放的代理、开放的中继以及发送者邮箱地址。现在有很多组织都在做*bl(block list),将那些经常发送垃圾邮件的IP地址(甚至IP地址范围)收集在一起,做成block list。

白名单过滤的方法是在邮件过滤系统中维持一张白名单表,其中收录了用户认可的邮件地址。当收到的邮件其发送者在用户的白名单中,该邮件就被判定为正常邮件。这种方法能100%的屏蔽垃圾邮件,但是同时也会过滤掉很多第一次与收件人通信的正常邮件,而这些用户不在收件人的白名单中。

目前很多邮件接收端都采用了黑白名单的方式来处理垃圾邮件,包括MUA和MTA,当然在MTA中使用得更广泛,这样可以有效地减少服务器的负担。本文中黑名单和白名单分别是已知的垃圾邮件发送者或可信任的邮件发送者的邮件地址,这种技术手段是最传统的方式,它通过黑名单技术对垃圾邮件进行屏蔽,通过白名单技术对允许的邮件进行放行。

4.4 关键字过滤技术

这种技术是根据在邮件头、邮件主题或者邮件正文中是否含有设定的关键字符来判断邮件是否为垃圾邮件,然后采取处理措施。这种技术非常简单易行,现在的邮件客户端一般都提供这种技术。根据调查显示,采用基于关键字符技术的邮件过滤器能够捕获到60%的垃圾邮件。但是这种当邮件中含有某类的关键字符时就判定邮件为垃圾邮件的技术缺点非常致命,它的误确认率特别高。例如将单词"free"设置为过滤关键字,那么所有包含有这个单词的邮件都会被过滤掉,不管这封邮件来自于你的朋友还是垃圾邮件制造者。本文中是设置要过滤的邮件标题关键字,对标题中含有这些关键字的邮件进行过滤。

4.5 贝叶斯过滤技术

4.5.1贝叶斯过滤算法的基本步骤

第一步:通过收集大量的邮件,按规则分为垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集,相当于两个数据库;

第二步:提取邮件主题和邮件正文中的独立字串,如商品、易趣等作为TOKEN串,并统计提取出的TOKEN串出现的次数,即字频,按照上述方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件;

第三步:每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。如下所示:

TOKEN串         出现次数

商品                N1

易趣                N2

法轮功              N3

色情                N4

第四步:计算每个哈希表中TOKEN串出现的概率 P={(某TOKEN串的字频)/(对应哈希表的长度)};

第五步:综合考虑hashtable_good和hashtable_bad,推断当新来的邮件中出现某个TOKEN串时,该邮件作为垃圾邮件的概率。存在事件S:该邮件为垃圾邮件,t1­­­ t2 …,tn代表TOKEN串,则P{S/ti}表示在邮件中出现TOKEN串ti时,该邮件为垃圾邮件的概率。

第六步:建立新的哈希表 hashtable_probability存储TOKEN串ti到P{S/ti}的映射,如下所示:

TOKEN串         垃圾邮件的概率

商品                P{S/t1}

易趣                P{S/t2}

法轮功              P{S/t3}

色情                P{S/t4}

重复此步骤直到得到出现某字串的邮件为垃圾邮件的概率,垃圾邮件集和非垃圾邮件集的学习过程就算结束了。根据建立的哈希表hashtable_probability可以估计一封新到的邮件为垃圾邮件的可能性,当新到一封邮件时,按照步骤生成新的TOKEN串,查询hashtable_probability得到该TOKEN串的键值。假设由该邮件共得到N个TOKEN串,t1t2t3…tn ,则hashtable_probability中对应的值为P1, P2, P3, …Pn, P{S/t1,t2,t3,…tn}表示在邮件同时出现多个TOKEN串t1,t2,t3,…tn时,该邮件为垃圾邮件的概率,由复合概率公式可得:

P{S/t1t2t3…tn}=(P1 * P2*…* Pn)/[P1 * P2*…* Pn + (1- P1 )*(1- P2)*…*(1- Pn)],当P{S/t1,t2,t3,…tn }超过预定阈值时,就可以判断该邮件为垃圾邮件。

4.5.2贝叶斯过滤算法举例

例如:一封含有“法轮功”字样的垃圾邮件 A和 一封含有“法律”字样的非垃圾邮件B。

根据邮件A生成hashtable_ bad,该哈希表中的记录为:

法:1次

轮:1次

功:1次

计算得在本表中:

法出现的概率为0.3

轮出现的概率为0.3

功出现的概率为0.3

根据邮件B生成hashtable_good,该哈希表中的记录为:

法:1

律:1

计算得在本表中:

法出现的概率为0.5

律出现的概率为0.5

综合考虑两个哈希表,共有四个TOKEN串: 法 轮 功 律

当邮件中出现“法”时,该邮件为垃圾邮件的概率为:

P=0.3/(0.3+0.5)=0.375

出现“轮”时:

P=0.3/(0.3+0)=1

出现“功“时:

P=0.3/(0.3+0)=1

出现“律”时

P=0/(0+0.5)=0;

由此可得第三个哈希表:hashtable_probability 其数据为:

法:0.375

轮:1

功:1

律:0

当新到一封含有“功律”的邮件时,我们可得到两个TOKEN串,功 律

查询哈希表hashtable_probability可得:

P(垃圾邮件|功)=1

P(垃圾邮件|律)=0

此时该邮件为垃圾邮件的可能性为:

P=(0*1)/[0*1+(1-0)*(1-1)]=0

由此可推出该邮件为非垃圾邮件。

4.5.3贝叶斯过滤模块划分

针对贝叶斯过滤的流程以及其所需要的功能,可以把整个过滤从功能上分为邮件预处理、贝叶斯算法实现、数据库访问、过滤主逻辑几个主要模块,系统结构如下图所示:

 

邮件预处理模块:这个模块主要负责读取邮件,对邮件进行编解码,去html的tag等;

贝叶斯算法模块:这个模块主要的功能是对邮件文本向量化,统计特征向量词出现的次数,分类器的训练、调整、更新,新邮件的过滤等;

数据库访问模块:在文本向量化,统计频率和计算概率时需要访问数据库,这个模块主要对数据库进行访问操作;

过滤主逻辑模块:这个模块负责调用其余各个模块的功能,实现垃圾邮件过滤处理的主逻辑。

  1. 系统工作流程和详细设计

5.1 系统工作流程图

系统服务工作流程图如图5-1所示:

5.2邮件统计设计

进入反垃圾邮件管理系统就可直观的显示收件夹和垃圾邮件夹中邮件的数目,并可点击进入浏览邮件,如果各种过滤策略启动,收到的邮件满足黑名单、关键字、贝叶斯过滤的条件,不满足白名单过滤的条件将会被显示在垃圾邮件夹里,正常邮件会被显示在垃圾邮件夹里,邮件统计界面如图5-2所示:

5.3收件夹设计

被过滤后的正常邮件被显示在收件夹内,显示了寄件人、日期和邮件主题,可对邮件进行删除和内容查看操作。如图5-3所示:

 

5.4反垃圾功能设计

5.4.1黑白名单过滤

此部分完成黑白名单的添加、修改、删除操作,如果收到黑名单中的地址发来的邮件就进行过滤显示在垃圾邮件夹里,如果收到白名单中的地址发来的邮件就直接显示在收件夹内,黑名单界面如下图所示:

 

黑名单过滤的代码如下:

rem 通过黑名单过滤

function black_leach(add)

sqlb = "select * from black_mailadd where mailadd= '"&add &"'"

set rsb = server.CreateObject("adodb.recordset")

rsb.open sqlb,conn,1

if rsb.eof then

black_leach="true" ' 不在黑名单里,不被过滤

else

black_leach="false"  '在黑名单里,被过滤

end if

rsb.close

set rsb=nothing

end function

5.4.2主题关键字过滤

主题关键字添加界面:

 

完成主题关键字的添加后,如果收到的邮件标题中含有要过滤的关键字就显示在垃圾邮件夹中,方便用户有选择的查看和删除,添加完成后出现以下界面,可以向数据库中添加、修改、删除主题关键字,如图所示:

 

 

主题关键字过滤核心代码如下:

rem 对标题进行分词,并查询单词中是否有被过滤的关键字:subjectleach

function sub_leach(strf)

dim strtemp

strf=Trim(strf)

strf=strf&" "

strtemp=""

for i =1 to len(strf)

if mid(strf,i,1)<>" " then

strtemp=strtemp&mid(strf,i,1)

else

sqls="select * from key_word where word= '"& strtemp &"'"

set rss = server.createobject("adodb.recordset")

rss.open sqls,conn,1,1

if not rss.eof then

sub_leach="false" '含有关键字,被过滤

exit function

else strtemp=""

end if

end if

next

sub_leach="true" '不含有关键字,不被过滤

end function

5.4.3贝叶斯过滤

此部分完成贝叶斯过滤阈值的设定、非垃圾邮件样本集和垃圾邮件样本集的学习,并生成哈希概率表,如果收到一封邮件,计算得到的垃圾邮件概率大于预先设定好的阈值,就把它显示在垃圾邮件夹中,阈值设置和非垃圾邮件样本集学习的界面如下:

 

  1. 对非垃圾邮件集进行分词,并进行词频计算的代码如下:

sqld="select * from drop_word where word= '"& strtemp &"'"

set rs = server.createobject("adodb.recordset")

rs.open sqld,conn,1,1

if rs.eof then '不在drop-word里

rs.close

sqlh="select token,good_time from hash_all where token= '"& strtemp &"'"

rs.open sqlh,conn,1,3

if rs.eof then'添加到hash表里,

conn.execute" insert into hash_all(token,good_time) values('"&strtemp&"','1')"

rs("good_time")=rs("good_time")+1 'rs(good_time)的值加1

  1. 计算非垃圾邮件集中各token串出现的概率的代码如下:

set rs = server.createobject("adodb.recordset")

sql="select good_time,good_pro from hash_all where good_time<>0"

rs.open sql,conn,1,3

r_t=rs.recordcount

do until rs.eof

i=rs("good_time")/r_t

i=int(i*1000)/1000

rs("good_pro")=i

rs.update

  1. 构造hash_pro表的代码如下:

function make_pro

set rss=server.CreateObject("adodb.recordset")

sqls="select token,good_pro,bad_pro from hash_all "

rss.open sqls,conn,1,3

do until rss.eof

str=rss("token")

i=rss("bad_pro")/(rss("bad_pro")+rss("good_pro"))

i=int(i*1000)/1000

conn.execute "insert into hash_pro values('"&str&"','"&i&"')"

rss.movenext

loop

rss.close

end function

5.4.4过滤参数设置

此模块可以启动和停止过滤策略,对四种过滤规则进行设定,界面如图5-14所示

 

  1. 测试与分析

6.1系统测试

  1. 黑白名单功能测试:在黑名单中加入要过滤的邮件地址,在白名单中加入允许放行的邮件地址,启动黑白名单功能,发送两封邮件,前一封邮件地址在黑名单中,后一封邮件地址在白名单中,发信人是前者的邮件被显示在垃圾邮件夹中,发信人是后者的邮件被显示在收件夹中,测试成功。
    1. 主题关键字过滤测试:添加要过滤的关键字,启动主题关键字过滤功能,发送一封标题中含有过滤关键字的邮件,该邮件被显示在垃圾邮件夹里,测试成功。
    2. 贝叶斯过滤测试:启动贝叶斯过滤功能,在文本1.txt中写入非垃圾邮件样本集,在文本2.txt中写入垃圾邮件样本集,对1.txt和2.txt进行学习,分析计算得到哈希概率表,发送一封含有这两个样本集字串的邮件,设定一个阈值,垃圾邮件概率超过这个阈值邮件被显示在垃圾邮件夹里,小于这个阈值邮件被显示在收件夹里,测试成功。测试中我在1.txt中写入了fa、lv两个字串,在2.txt中写入fa、lun、gong三个字串,经过学习得到下图所示的数据表:

 

 

当发送一封邮件内容是fa lun mail的邮件时,计算得到的垃圾邮件概率大于预先设定的阈值95,该邮件被显示在垃圾邮件夹中。点击邮件浏览界面中对邮件进行bayes分析的按钮可以显示bayes分析的各项指标,如下图所示:

 

6.2设计中的难点问题

1.对系统中需要使用的过滤参数进行集中的管理和配置。主要包括以下两个方面的内容:

(1)提供用户界面给用户修改相关参数,以完成个性化定制。

(2)在系统的使用过程中,考虑到用户的实际情况,应该方便的允许用户随时开启或关闭邮件过滤功能。

针对此问题我设计了一个参数设置模块来根据用户的需要开启关闭不同的过滤规则。

  1. 特征串的选取

特征串选取好坏将决定最终的过滤效果。特征串词库不是静态建立的,而是根据垃圾邮件集和非垃圾邮件集动态变化的,这样才能保证其一定的智能性和不断的学习能力。因此需要考虑多种情况,准确的提取垃圾邮件集合和非垃圾邮件集合中的特征信息,从而建立比较完善的特征串词库。对英文邮件,token串的选取不能仅简单的以单词为分解目标。而应该考虑到各种变化的情况,比如字母大小写 ,字母的异化。

6.3三种过滤技术分析

黑白名单技术占用较少的计算机资源,易于实施,但需要手动维护邮件地址清单,此方案在成熟的垃圾邮件解决方案中只起补充作用。

关键字过滤是一个简单但是有效的阻断绝大多数垃圾邮件的方法,其优点是简单易构造、易实现、可靠性高。而缺点是:必须经常对关键字进行更改和产生较多误报的情况。

贝叶斯算法在实际应用中需注意的方面:

  1. 纯粹的贝叶斯算法过滤只考虑了邮件正文的内容,而往往邮件头部的一

些信息是很重要的,因此必须把邮件头部的不同组成部分出现的TOKEN标识出来,且其权重设置为较大值。

  1. 在遇到某些特殊邮件时要根据这些网页的具体特征去判断这些邮件的合法性,例如在某个邮件中邮件正文很少,除此之外就只有一个网页的链接,那么这封邮件就很有可能是垃圾邮件。
  1. 由于正常邮件被误判断为垃圾邮件很有可能给用户带来极大的损失,因此必须采取方法降低正常邮件的误判。这里可以采取二级过滤规则的策略,即在一封邮件被判断为垃圾邮件以后还可以利用别的过滤规则对其再次进行判断,若符合某些条件则把其判为非垃圾邮件。
    1. 由于贝叶斯算法在电子邮件中的应用是由使用英语的人提出来并按照英语的语法习惯处理TOKEN串的,所以,当把他们应用到汉字处理或者其他并不和英语类似的语言时就会产生许多问题。这里也不具备对中文的识别,因为中文的分词算法比较复杂,准确率不高。

6.4通用模块分析

本系统中包括一些通用模块,这些模块以文件的形式保存,可以在其他文件中使用#include语句包含这些模块,使用其中定义的功能。比如:

conn.asp 实现到数据库的连接,代码如下:

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.createobject("adodb.recordset")

set subrs=server.createobject("adodb.recordset")

str="PROVIDER=SQLOLEDB;DATA SOURCE=127.0.0.1;UID=sa;

PWD=123;DATABASE=mail"

conn.open str

%>

结    论

在设计过程中,我深刻认识到了反垃圾邮件技术研究的重要性,它对我们的工作和生活都产生着巨大的影响。我也对目前所应用到的各种反垃圾技术做了全面的了解,最后选择了三种常见的技术进行了功能设计,它们分别是黑白名单技术、主题关键字过滤技术、贝叶斯过滤技术,本文就围绕这三种技术做了详细说明并阐述了开发过程,希望通过这三种技术提高垃圾邮件的过滤率。但是由于现在很多垃圾邮件发送者也在利用各种过滤技术的漏洞发送垃圾邮件,要想做到百分之百的过滤垃圾邮件是一件不可能的事,在设计中使用的三种过滤技术也存在着各自的缺陷,还有很多难点问题,比如黑白名单地址的选取,主题关键字的选取,贝叶斯垃圾邮件集和非垃圾邮件集的搜集。当然还有很多更高效的过滤技术有待我们去研究,控制和消除垃圾邮件也不是几个人或几个组织就可以完成的,它需要全社会的共同努力,来建立一个洁净的网络空间。

 

 

おすすめ

転載: blog.csdn.net/axingxiansen/article/details/129836341