|
re:楼上说的根据邮件内容来判断邮件是否为垃圾...
楼上说的根据邮件内容来判断邮件是否为垃圾邮件的确是很难很难很难, 所以我从来就不相信贝叶斯算法,还有那个Exchange的免费IMF, 客户告诉我这些类似算法很不准确,经常有误判。举个例子: 我们有几个客户向我投诉正常邮件怎么会被移到outlook2003的垃圾邮件文件夹,而我们的服务器反垃圾系统并没配置把垃圾邮件移到垃圾邮件夹里(也没这个功能), 后来查了才知道是Microsoft outlook2003客户端安装后垃圾邮件选项缺省是配置为“低:将明显的垃圾邮件移到垃圾邮件文件夹", 把它改为"无"就正常了。<br>
因此我们的软件连类似贝叶斯算法都去掉了,不是不会写,而是那玩意儿实在没什么意思.<br>
<br>
发送大量的NDR是有可能被对方服务器被列入黑名单, 假如垃圾发件人冒用他人名义(可能是随意捏造)发邮件,如用aaa@aaa.com, bbb@aaa.com,ccc@aaa.com, .....,而这些地址有些存在,有些不存在, 他把垃圾邮件发给bbb.com公司,假如被bbb.com公司的反垃圾系统先接收下再识别出是垃圾邮件,再发送大量的NDR给aaa.com公司, aaa.com公司可能有用户抱怨bbb.com公司邮件服务器发送大量的垃圾,aaa的笨网管可能把bbb的邮件服务器加入到黑名单里,如果aaa的邮件系统也装了一个笨的反垃圾系统,也可能把bbb的服务器加入自动加到黑名单里。我有个客户以前花了1万多元买了个叫GFI ME反垃圾系统,只能支持事后发送NDR,因垃圾邮件较多,时不时被对方或国外反垃圾邮件组织加入黑名单, 还有服务器堆了许多特发的NDR, 因大部分NDR的收件人和域名是无效的,发送特别慢, 在死信目录里堆了许多邮件,还得手工定期去删除, 还有NDR太多影响正常邮件的发送速度,客户实在受不了才转到我们的ORF.<br>
<br>
从SMTP段去判断和处理垃圾邮件其实是没什么精确不精确之分,看一下smtp会话的过程<br>helo<br>mail from:<br>rctp to:<br>data<br>.<br>quit<br>
许多反垃圾邮件系统是先完成以上操作,也就是说先把邮件接说下来(完成MTA过程),再判断邮件是否垃圾,如果不是,则把邮件保存到邮件数据库里(用户的邮箱), 如果判断为垃圾邮件,有些反垃圾系统把邮件加上标签再保存到用户的邮箱里,有些反垃圾系统直接把邮件删除掉,有些反垃圾系统在删除的同时发送NDR。<br>
这些方式的弊端我前面都已经讲过.<br>
<br>
再看看我们的ORF, 我们一般建议用户使用"Greylisting+spf+surbl+whitelist"方式, 让我们看看是如何在smtp会话里处理垃圾邮件<br>
假如垃圾邮件从1.2.3.4冒用aaa@sina.com发垃圾邮件,smtp会话过程如下:<br>
1. 对方说 : hahaha<br>
2. 我方回应: 250 emailservername Hello [1.2.3.4]<br>
3. 对方说 : mail from: <aaa@sina.com><br>
4. 我方回应: 550 5.7.1 SPF check failed: 222.76.153.57 is not authorized to send in the name of "sina.com". Please ask your email system administrator to resolve it, if you have any problem, you can also contact 我方的联系人几及邮件地址.<br>
5. 会话smtp结束<br>
可以看出在4我方发送550拒绝信息, 假如这份邮件万一是误判且对方是正常的邮件系统,则对方邮件系统收到我的拒绝信息时就结束smtp会话,并由对方服务器发送一封NDR给原始发件人,而我方邮件服务器不需要对此邮件做任何善后处理,如果NDR丢失,也是原始发件人邮件系统管理员的责任。而前面前面提到那种先接受再分析最后发送NDR的方式是由由原始收件人服务器发送NDR给原始发件人服务器,如果NDR丢失,则是原始收件人(我方)邮件系统管理员的责任。<br>
<br>
再看看对内容分析处理,我们是采用SURBL, 即分析邮件是否有网页连接且被列入国际反垃圾邮件组织www.subrl.org的黑名单.<br>
1. 对方说 : hahaha<br>
2. 我方回应: 250 emailservername Hello [2.2.3.4]<br>
3. 对方说 : mail from: <aaa@aaa.com><br>
4. 我方回应: 250 2.1.0 aaa@aaa.com .... Sender OK <br>
5. 对方说 : rcpt to: <bbb@bbb.com> (bbb@bbb.com是我方的一个存在邮件地址)<br>
6. 我方回应: 250 2.1.5 bbb@bbb.com (允许对方发送数据)<br>
7. 对方说 : data<br>
8. 我方回应: 354 Start mail input; end with <CRLF>.<CRLF> (告诉对方可以开始发送)<br>
9. 对方说 : 想发垃圾邮件请找<a target=_blank href=http://www.chicagobloom.com/>http://www.chicagobloom.com/</a>看看绝不后悔 (对方开始发数据)<br>
10.对方说 : . (对方最后一行发".", 告诉我方他发完了,这是他要等我的回复)<br>
11.我方回应: 550 5.7.1 Message rejected. If you have any problem, please contact help@bbb.com.<br>
12. 会话smtp结束<br>
<br>
可以看出在11我方判断邮件内容包含禁止信息"chicagobloom.com"而被我方拒绝, 这时我方只需发送550拒绝信息即可,而对方服务器是要负责处理善后的NDR,要分析的邮件内容为"想发垃圾邮件请找<a target=_blank href=http://www.chicagobloom.com/>http://www.chicagobloom.com/</a>看看绝不后悔",与前面前面提到那种"先接受再分析内容是否垃圾"的我实在看不出有什么区别, 是否精确要看软件的算法, SUBRL算法是找网页连接,它不关心其它文字,与关键词过滤方式不同。<br>
<br>
一般发垃圾邮件的服务器或群发垃圾软件都不想再处理NDR。<br>
<br>
欢迎大家一起讨论, 正确与否越辩越清楚 .<br>
|
|