南 昌 航 空 大 学
课
程
设
计
说
明
书
课题名称:利用Sendmail 实现垃圾邮件的过滤的软件编程 姓名:
学号:
同组人:
指导老师:
一、 课设目的
电子邮件服务是Internet应用最广泛的服务类型之一,它的出现极大的改变了人们的门交流方式。得用电子邮件,用户之间不但能够以非常低廉价的费用快速传递文本信息,而且能够快速传递图像,音频和视频等多媒体信息。但是,随着电子邮件应用的深入,垃圾邮件日趋泛滥。大量垃圾邮件不仅增加了网络的负担,更为诈骗,病毒攻击等行为提供了方便条件。因此掌握电子邮件相关的软件编程技术的基本的垃圾邮件过滤技术,对于软件编程人员至关重要。
本次课设将帮助更好的理解电子邮件服务的工作流程;
掌握电子邮件的体系结构,SMTP协议及相关协议的基本原理。
二、 课设要求
利用Sendmail邮件服务器的Milter接口实现所需要的回调函数,具体要求如下:
黑名单功能:如果邮件发送方在黑名单内,则拒绝接收或转发该邮件;
白名单功能:如果邮件发送方在白名单内,则允许接收或转发该邮件;
关键字过滤:如果邮件发送方既不在黑名单内也不在白名单内,则检查邮件内的内容是否包含被过滤的关键字,如果含有这些信息,则认为该邮件是非法的,拒绝接收;否则,允许接收或转发。
三、 实验环境
原本要求是在Linux下完成该软件的编程,但由于一些原因不得不改变实验环境,所以我们选择在VC++6.0下进行课设。
四、 课设任务分析
在此次课设中,我负责的任务是主函数部分example.cpp及几个头文件的注释
该部分的流程示意图如下:
在主函数中有用到以下功能:
memset(temp,0,40):这个函数的功能是将较大数组清零,是vc++里已经定义了的,
所以我们只需调用就可以了。在这里它的作用是把temp这个数组(包含了40个元素)里的每个元素赋值为0。
strcpy(temp,Path):字符串复制函数,被包含在string.h中,相当于“=”,只是运算对象类型不同,strcpy是直接给一个对象赋一串字符。这里的意义是把Path这个变量复制到temp中
strcat(temp,\"Junk1\"):字符串连接函数,被包含在string.h中,它是将后面的参数的值加在前面参数值的后面,在这里,它执行完后,temp的值为 路径地址Path后接上Junk1。
CBrowseDir statdir:构造类对象,CBrowerDir是一个自定义的类,里面有很多功能函数,定义了一个对象stadir则也有这些功能。
SetInitDir(RoughSet[i]):这个就是CBrowerDir类里的一个函数,用于初始化路径变量,将其路径变量转化为绝对路径。
CEvaluate c:CEvaluate也是自定义的一个。
还有很多函数在代码中有详细分析在此也就不缀述了。
五、 课设步骤及相关代码注释
//--------------------------example.cpp------------------------------------//
六、课设结果
七、课设心得
为期一周的网络安全课程设计结束了,在课程设计的过程中,我学到了不少的东西。
网络安全是一门将数网络原理和编程程序相结合的科目,在如今信息化的社会中这是一门非常重要的基础学科。经过一个学期的学习,我对网络安全的思想以及相关的知识原理有了一定的了解和掌握。
本次课程设计是利用sendmai实现垃圾邮件过滤的一次综合性的考验,让我们在对编
程语言的熟练掌握的基础上,与网络通信原理相结合,锻炼分析问题和解决问题的能力。在程序的编写中的确遇到了不少的困难和错误。在其过程中,我巩固了原来学习的知识,也对正在学习的知识有了更深入的理解。编程中最难的步骤就是找错误,比如有时分号少一个,大括号少一个,有哪个变量没有定义,变量的类型定义错误等等,还有就是数据库中定义的每个码的值能否为空与程序编写过程中的值相互矛盾,导致程序无法运行。还有的错误是程序可以运行但达不到预期的效果,等等。哪怕是很小很小的错误都要花费很多时间来找出。
在此过程中,大多数情况下是同学们相互探讨解决的,不过也有同学无法解决的错误,幸好有老师的指导和帮助才能使我的程序得以完成和完善。在程序的编写和运行中,调试是不可缺少的步骤,制作这个程序让我学会了如何运用调试功能发现程序中出现的错误,也让我知道了如何通过调试功能把所做的程序一步步的完善。所以,这次实践对我的影响颇深。
因篇幅问题不能全部显示,请点此查看更多更全内容