垃圾邮件过滤系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计
项目名称:垃圾邮件过滤系统设计
课程名称:计算机网络编程技术
信息工程学院计算机系
目录
一、设计题目---------------------------------------------------- 2
二、设计要求---------------------------------------------------- 2
三、小组分工---------------------------------------------------- 2
四、设计内容---------------------------------------------------- 2
4.1 设计原理------------------------------------------------- 2
4.2 设计协议------------------------------------------------- 3
4.3 设计流程------------------------------------------------- 3
4.3.1 ESMTP协议的工作流程-------------------------------- 3
4.3.2 POP3协议的工作流程--------------------------------- 4
4.4 运行环境------------------------------------------------- 5
五、功能模块分析----------------------------------------------- 5
5.1 发送功能模块--------------------------------------------- 5
5.2 接收功能模块--------------------------------------------- 7
六、界面设计---------------------------------------------------- 8
6.1 邮件发送界面--------------------------------------------- 8
6.2 邮件接收界面--------------------------------------------- 9
七、设计不足之处及遇到的问题----------------------------------- 10
6.1 设计不足之处-------------------------------------------- 10
6.2 遇到的问题---------------------------------------------- 11
八、心得体会--------------------------------------------------- 11
一、设计题目
垃圾邮件过滤系统设计
二、设计要求
①能够群发邮件,发送内容可以是广告等垃圾信息;
②接收方地址可以输入、从文件导入、从地址簿导入;
③接收方能够自动检测垃圾邮件。

判定对象可以依据IP地址、邮件主题、邮件内容等组合。

可以采用关键词的模糊匹配、或者邮件重复度比较、或者饱和攻击可能性,等等来设计判定规则。

三、小组分工
接收方地址可以输入、从文件导入、从地址簿导入。

接收方能够自动检测垃圾邮件。

判定对象可以依据IP地址、邮件主题、邮件内容
等组合。

能够群发邮件,发送内容可以是广告等垃圾信息。

四、设计内容
4.1 设计原理
邮件系统主要由服务器和客户端组成,服务器包括发送服务器和接收服务器。

系统构成
如图4.1所示。

邮件系统包括发送和接收两部分,图中实线部分表示的是客户A将邮件发送出去到客户B接收下来的过程,虚线部分则是客户A如何从客户B处接收邮件的过程。

图4.1 邮件系统的工作原理
4.2 设计协议
(1)简单邮件传送协议(SMTP协议),是Internet上传输邮件的标准协议,用于提交和传送邮件。

SMTP的目标是可靠、高效地传送邮件,它通常用于把邮件从客户端传输到服务器,以及从一台服务器传输到另一台服务器。

ESMTP(扩展SMTP)是对标准SMTP的扩展,它与SMTP的区别在于,ESMTP服务器会要求用户提供用户名和密码以便验证身份;而使用SMTP是不需要验证用户账户。

(2)邮局协议第三版(POP3协议),也是Internet上传输邮件的标准协议,它提供信息存储功能,为用户保存收到的邮件,且从邮件服务器上下载这些邮件。

4.3 设计流程
4.3.1 ESMTP协议的工作流程
ESMTP的工作流程主要包含建立连接、传送信封、传送数据和断开连接4个阶段,其
流程图如图4.2所示。

图4.2 ESMTP工作流程图
4.3.2POP3协议的工作流程
POP3的工作流程图如图4.3所示。

主要包括认证阶段、邮件接收阶段、更新阶段。

图4.3 POP3协议的工作流程
4.4 运行环境
Visual studio 2008/ Visual studio 2010、联网的PC机。

五、功能模块分析
5.1发送功能模块
通过.Mail的SmtpClient类实例化一个smtp客户端client,用MailAddress类生成邮件对象,通过client.send()方法发送邮件。

发送方能通过地址簿,导入等功能输入多个接收方邮箱,实现群发功能。

主要代码如下:
//确定smtp服务器地址。

实例化一个Smtp客户端
.Mail.SmtpClient client = new
.Mail.SmtpClient(cmbBoxSMTP.Text);
//生成一个发送地址
string strFrom = txtUserName.Text.Trim();
MailAddress from = new MailAddress(strFrom);
string[] rece = txtEmail.Text.Split(';');
for (int i = 0; i < rece.Length; i++)
{
MailAddress to = new MailAddress(rece[i]);
MailMessage message = new MailMessage(from, to);//实例化一个电子邮件
//为message 添加附件
foreach (TreeNode treeNode in treeViewFileList.Nodes)
{
//得到文件名
string fileName = treeNode.Text;
//判断文件是否存在
if (File.Exists(fileName))
{
//构造一个附件对象
Attachment attach = new Attachment(fileName);
//得到文件的信息
ContentDisposition disposition = attach.ContentDisposition;
disposition.CreationDate =
System.IO.File.GetCreationTime(fileName);
disposition.ModificationDate =
System.IO.File.GetLastWriteTime(fileName);
disposition.ReadDate =
System.IO.File.GetLastAccessTime(fileName);
//向邮件添加附件
message.Attachments.Add(attach);
}
else
{
MessageBox.Show("文件" + fileName + "未找到!");
}
}
message.Subject = txtSubject.Text;
message.SubjectEncoding = Encoding.UTF8;
message.Body = rtxtBody.Text;
message.BodyEncoding = Encoding.UTF8;
client.DeliveryMethod = work;
message.BodyEncoding = System.Text.Encoding.UTF8;
//message.IsBodyHtml = false;
//如果服务器支持安全连接,则将安全连接设为true。

163不支持
//client.EnableSsl = false;
//设置用户名和密码。

//string userState = message.Subject;
eDefaultCredentials = false;
string username = txtUserName.Text;//用户名
string passwd = txtPassword.Text;//密码
NetworkCredential myCredentials = new NetworkCredential(username,
passwd);
client.Credentials = myCredentials;
//发送邮件
client.Send(message);
//提示发送成功
MessageBox.Show("成功向"+rece[i]+"发送!");
5.2 接收功能模块
接收方根据POP3协议,向邮件服务器发送USER加用户名,PASS加密码登入
邮箱,登入成功后发送STAT得到邮件数量,再通过发送RETR加邮件下标(第几封)得到该邮件的内容。

内容中To:之后为收信人,From:之后为发信人,Subject:
之后为主题,全都获取后根据内容中提示的编码类型,对正文进行解码。

如Base64
编码采用如下方式解码:
private string DecodeBase64(string p_Text)
{
byte[] _ValueBytes = Convert.FromBase64String(p_Text);
return Encoding.UTF8.GetString(_ValueBytes);
}
关于垃圾邮件拦截,采取以下方案:
1.先扫描所有邮件获取所有邮件发送方,再根据黑名单中的邮件地址,挑选出
黑名单邮件,并在界面上提示用户该邮件为黑名单邮件。

2.对每一个发送方用一个字符串数组保存其所有发来的邮件时间,如时间相近
的情况下接收该发生方多封邮件(如20封),则认定为垃圾邮件,并在界面上提示
用户。

3.将垃圾邮件相关的敏感词存入字符串数组中,扫描所有邮件的正文,匹配敏
感词出现次数与个数,超过一定数量认定为垃圾邮件。

4.曾被认定为垃圾邮件的邮件发送方将自动加入黑名单,便于下次拦截。

六、界面设计
6.1 邮件发送界面
输入收件人邮箱,输入主题和内容,点击发送即可成功发送邮件,也可以添加附件列表(列表直接导入即可)。

图6.1 邮件发送及成功发送界面
在发送端的SMTP服务器有四个可选项,用户可以从新浪、163、QQ、端选择发送邮件类别,收件人地址可以自己手动输入,也可以将收件人的地址存入txt文档里边,然后导入进行实现群发功能。

图6.2 收件人导入功能图
6.2邮件接收界面
接收端首先建立连接后,接收界面会显示有多少封邮件,可以选择阅读第几封邮件,邮件内容会显示出来(如图6.4 所示),并且在接收人的邮箱里会收到邮件。

图6.3 邮件接受界面
图6.4 建立连接后的邮件接收界面
接收方能够自动检测垃圾邮件,根据添加的关键字自动判断是否为垃圾邮件。

图6.5 添加关键字过滤邮件
接收方根据添加或导入的黑名单能够自动判断是否为黑名单邮件。

图6.6 用黑名单判断垃圾邮件
七、设计不足之处及遇到的问题
6.1 设计不足之处
○1该设计在“接收方地址可以输入、从文件导入、从地址簿导入”的不足之处为:
1)地址只能从txt文档导入,不能从其他的文档导入,如word、pdf等文档或是压缩包;2)接收方地址在输入时不能自动保存在文本里,输入的地址也没有历史记录,下次输入同样的接收地址时需要重新输入。

○2该设计在“能够群发邮件,发送内容可以是广告等垃圾信息”的不足之处为:
1)群发邮件时没有计时功能,应该有群发邮件的计时时间,记录邮件从发送第一封到最后一封发完的的总共时间;
2)群发邮件时无法检测是否接收地址重复。

○3该设计在“接收方能够自动检测垃圾邮件”的不足之处为:
1)在通过关键字检测垃圾邮件时缺少导入关键字按钮;
2)在检测出垃圾邮件时,出现的“该邮件为垃圾邮件”的字出现在邮件内容的框体内,应该弹出一个对话框。

6.2遇到的问题
1)接收方获取邮件内容后由于编码方面知识的匮乏,难以对邮件进行解码;
2)各邮箱服务器编码不同,邮件内容格式不同,解码难度比较大;
3)由于设计之前未进行分析判断,导致后来的思路错乱,盲目编程。

八、心得体会
计算机网络编程旨在让学生根据自己的兴趣选择设计的题目,我们组选择了垃圾邮件过
滤系统,经过一段时间的学习,我们对邮件发送和接收过程有了大致了解,然后开始进行了编写代码,最后做出的程序并不是按照要求运行的,这就要求我们在进行代码编写之前首先要分析怎么写,要求是什么,最后出什么结果,而不是盲目编程;同时明白了编码知识的重要性,在以后的学习中要加强这方面的知识积累。

在以后的程序编写中,应该把程序做活,
1.rar
不能太死板。

程序:。

相关文档
最新文档