小弟想做一个在客户端过滤邮件的简单系统,从POP3取邮件能做到,哪位大侠能指点如何实现过滤功能。
解决方案 »
- 色阶处理函数
- 怎么封装一个CDialog,封装CXXXDialog后,我新建对话框资源后,基类用封装过的CXXXDialog,用于实现对话框的重绘,而不是在每个对话框中绘.
- 请问在VC6.0英文版(OS: 英文winidows xp,但已安装中文字库)中如何实现中文字体?
- 怎么监测系统中哪些数据库文件被使用,并得到数据库文件路径和名称?
- 问一个简单的问题,如何Platform SDK在获得程序的主窗口(相对于MFC下的AfxGetMainWnd())?
- 在基于对话框的应用程序中,可不可以建立SDI窗口
- 如果使工具栏某按钮被点击后,弹出下拉式菜单?就像ie中的回退按钮
- DLL的问题(__stdcall),它是为了让别的开发工具调用的,但是假如我要用LOADLIB....在线,急
- 按钮的背景问题
- ★★★★★★一个特别简单的问题★★★★★★
- 求救:串口程序
- 用htmlworkshop制作帮助文件,html中的图片怎么显示不出来
这个网址我打不开?
1 什么是垃圾邮件?
垃圾邮件就是那些你并不希望收到,并且你也没有订阅过,但却被人利用电子邮件的特点强行塞入你的邮箱的商业广告,产品介绍,发财之道等内容的电子邮件。垃圾邮件一次发给很多人,在Internet 上同时传送很多副本。在英文中通常称为 spam, 也有的叫UCE 或 UBE.
包括下述属性的电子邮件称为垃圾邮件:
(一)收件人事先没有提出要求或者同意接收的广告、电子刊物、各种形式的宣传品等宣传性的电子邮件;
(二)收件人无法拒收的电子邮件;
(三)隐藏发件人身份、地址、标题等信息的电子邮件;
(四)含有虚假的信息源、发件人、路由等信息的电子邮件。
对于水平不高的伪造(幸运的是99%以上的垃圾邮件都属于此类),可以通过信头看出来。通常情况下,一封信从发件人的机器到收件人的机器,中间要经过若干台邮件服务器,例如许多组织使用的防火墙,mail server 可能有几台。邮件每经过一台服务器,服务器就会相应在信头的顶端加入一行 Received的信息。注意,按照邮件经过的先后顺序,由下向上,后经过的邮件服务器添加的信息在上面。尽管信体中(显示在您的应用程序中的)的From: To: 和信封中的From 地址都是由用户自己输入的,但在邮件的信头中,Received 起始的信息是由邮件服务器(MTA)加上去的,从这里的可以看出邮件的真实来源。例如: Received:from pku.edu.cn ([104.128.3.115])by mail.tsinghua.edu.cn (8.8.5)… 表明信件是从IP 地址 104.128.3.115 传递过来的,这是由接收信件的邮件服务器加上去的,不受发信人的控制。需要注意的是 pku.edu.cn 仍可能是伪造的,可以通过查询DNS 来确认域名。 关于更详细的解释需要比较长的篇幅,您可以参考这里。稍后我会专门整理一篇如何识别伪造的邮件。 10 如何找到某个IP的管理员?
您可以在下面的网页上输入你要查询的IP, http://www.ccert.edu.cn/spam/tools/tools.htm 查询。如果您不能确定是该IP属于哪里,选择whois.geektools.com服务器。它会自动找到相应的数据库。对于教育网内的IP, 您可以在这里查到比较准确的信息:http://www.cernic.edu.cn/DS/cindex.html
一封电子邮件,从邮件分析的角度可以大致分为以下五部分:邮件头、发件人、收件人、邮件主题、邮件内容。
刚才我们也说了,客户端是一个被动接收的角色,我们现在还没有足够的权利去做其它的事情。我们只能采用过滤技术来摆脱垃圾邮件,通过对电子邮件在五个部分比较明显的标志位我们还是可以基本上确认这封邮件是不是垃圾邮件的。
(1)对发件人地址的过滤
这项技术就是依据发件人地址进行判断是否是垃圾邮件,比如不合法的邮件地址会就会认为是垃圾邮件,如[email protected],和一些不合规范的邮件地址及空地址,如lakdjfhkiu@lkdfnehgugnuoi、lkjsfu#[email protected] 。对于这些邮件就会判断认为是垃圾邮件。
(2)对收件人地址的过滤
大家可能会说,收件地址不就我的邮箱地址吗?这还需要过滤?呵呵,当然,收件人地址也是可以用来发送垃圾邮件的。这种情况就是考虑到邮件列表了,因为邮件列表在发送的时候,收件人地址只是一个列表的名称,所以,虽然有些邮件收件人不是你,但是,是以邮件列表的形式发送的,所以,你还是会收到的。对于收件人地址的检查和过滤也是必要的。
(3)对邮件主题的过滤
这个应该算是比较重要的一个过滤了,一般一些垃圾邮件的主题还是有一些共同的特性的。比如前一段时间闹的比较凶的SoBig.F病毒,一共以9个题来发送病毒邮件,发件人和收件人地址都不确定,只要你过滤掉这9个主题,你就不会受到SoBig.F病毒所发送的垃圾邮件骚扰了。
(4)对邮件内容关键字的过滤
邮件内容的过滤一般以一个关键字词或多个关键字词为判断依据。根据关键字词的命中率来确认这封邮件是否是垃圾邮件。如果命中率超过了设置的阀值,就认为是垃圾邮件。同时关键字词还可以是短语和短句。
(5)对邮件头信息过滤
邮件头信息是记录邮件投递过程的原始信息,这一点对垃圾邮件有着非常重要的信息。虽然垃圾邮件发送者在发送垃圾邮件的时候,可以利用各种的工具随机伪造不同的收发件人、主题和内容,但是在邮件头信息中,这些邮件还是有一些共同的信息的,主要是IP、主机名、X-标识。通过对这些信息的过滤,就可以把由同一地址发出的但收发信地址和主题随机的垃圾邮件从众多的邮件找出来。
垃圾邮件一般采用了群发软件发送,发信人的地址是可以任意伪造的,查看信头可以让您找到真正的发件人。查看信头的方法是:
1)如果您是在web页面上看邮件的话,直接打开邮件,点击信件显示页面上方菜单中的“原文”,就可以看到信头。
2)如果是用Outlook
Express来收信的话,指向邮件,不要打开,点击鼠标右键,看信件的属性,再点击详细资料,就可以看到信头。如果有sender的话,sender后面就是真正的发件人;如果没有sender,最后一个received from就是发件人所用的SMTP服务器。
Receive语句的基本表达格式是:from Server A by Server B,Server A为发送服务器,Server B为接收服务器。例如:
ReturnPath: < [email protected] >
Received: from ns.enet.com.cn ([202.106.124.167])
by mail.777.net.cn (8.9.3/8.8.7)
with SMTP id TAA13043;
Thu, 28 Oct 1999 19:51:28 +0800
Received: (from list@localhost)
by ns.enet.com.cn (8.9.3/8.9.0) id RAA19714
for enewsdailylist; Thu,
28 Oct 1999 17:50:30 +0800
Received: from chinanetweek.com ([210.72.235.218])
by ns.enet.com.cn (8.9.3/8.9.0)
with ESMTP id RAA19690
for < [email protected] >; Thu,
28 Oct 1999 17:50:28 +0800
Received: from chinanetweek.com ([10.1.2.105])
by chinanetweek.com (8.9.3/8.9.0)
with ESMTP id RAA05935
for < [email protected] >;
Thu, 28 Oct 1999 17:49:26 +0800 (CST)
一般最后一句Receive中的Server A就是发信人的地址,Server B是他所用的发件服务器,是邮件的起点。而第一句Receive中的Server B就是你自己的邮件接收服务器。各种服务器在信头中所加的内容并不一样,有时你在一行Receive中找不到任何IP地址或域名,这种情况可以先不管它,继续往上找。
从上面的例子中不难看出,这封信是从10.1.2.105发出(动态地址),传递途径是:chinanetweek.com → ns.enet.com.cn → mail.777.net.cn