频道栏目
首页 > 资讯 > 工具软件 > 正文

如何利用qmail防止垃圾邮件

04-10-03        来源:[db:作者]  
收藏   我要投稿

 
原文:qmail Anti-Spam HOWTO
翻译:iamafan
来源:LinuxAid


如何利用qmail防止垃圾邮件


I. 简介
II. 本文对象
III. 防垃圾邮件策略的一般问题
IV. 防垃圾邮件的特殊问题
V. 必备的基础
VI. 一般观点
"垃圾邮件无法阻止"
"防垃圾邮件是用户的责任"
"防垃圾邮件是系统管理员的责任"
其他
VII. 用户的选择
使用第三方实时的黑名单列表
使用自己建立的黑名单列表
使用标记的邮件
VIII.系统管理员的选择
从网络层考虑,拒绝可疑的主机通过你的SMTP服务发送邮件
利用SMTP进程拒绝已知的垃圾邮件发件人
使用qmail-smtpd 拒绝信头或信封有问题的邮件

IX. Other Resources
X. History
XI. Comments/Feedback


I. 简介


本文从多种角度阐述了防垃圾邮件的意义,并提出一些可行的方法防止在您的网络中出现大量的垃圾邮件。


II.阅读对象


本文适用于:


UNIX 系统管理员
qmail管理员
系统设计人员
偶尔关心垃圾邮件问题的用户


III. 一般问题

一般来说,我们把垃圾邮件定义为那些不经允许就擅自发送的大量的商业邮件,也就是电子邮件宣传品。垃圾邮件一般很难防范,因为发送者们总是有许多好用的工具来发送他们的垃圾邮件,轻而易举,而你往往可能很难找到那些发送者。另一方面,垃圾邮件总是伪装成普通邮件的样子,除非你打开它知道他的内容,否则光从邮件头短短的信息里,很难知道它是否是垃圾邮件。没有什么技术可以完全自动的检测一份邮件是否是你所要的,还是垃圾邮件。但是,我们可以用一些方法,来尽可能的减少你邮件系统的垃圾邮件。


关于上述问题的精确详尽的解释,建议你阅读 IETF Anti Spam Recomendations 。 David E. Sorkin 先生撰写了一份文档,名叫" Technical and Legal Approaches to Unsolicited Electronic Mail",不妨一读.


IV. 特殊问题


任何处理过或正在处理防垃圾邮件工作的人,都会对以下几个问题印象深刻:


有必要为了减少垃圾邮件的数量而耗费大量的时间和资源吗?
防止垃圾邮件是系统管理员的责任还是最终用户的责任?
对一封可能的垃圾邮件,是应该立即丢弃呢还是作上标记继续转发?
如果你或你的系统管理员配置系统时出现错误,导致垃圾邮件的问题,作为管理员是否要为此负责?
你是否因该接受那些看上去内容合法,但是发件人出现在黑名单的那些邮件?
你是否因该接受那些回复地址、信封、发信地址不合法的邮件?

V. 减少垃圾邮件的必备基础


不正确的使用.qmail-default文件往往导致垃圾邮件的问题。


不要因为偷懒而仅仅使用 .qmail-default 的缺省设置,它会认为qmail系统的所有mailbox名都是合法的,而不管该mailbox是否真的存在。这一点可能被人利用,导致垃圾邮件的增加。典型的如:"sales@domain.com" "webmaster@domain.com"等相似的邮件地址。


注意,你的 .qmail-default是一把双刃剑,正确的设置也可以用来有效的防御垃圾邮件--拒绝那些无效的邮件地址。

 

及时报告收到垃圾邮件的情况。

类似SpamCOP这样的服务能使事情更有效率。具体请看资源列表。

 

培训教育


培训你的用户、朋友和所有关心垃圾邮件问题的人,告诉他们为什么要防止垃圾邮件,他们必须做什么。垃圾邮件发送者之所以会成功,有部分原因就是最终用户不重视也不知道如何防范垃圾邮件。


确认你的邮件系统设置正确

你的所有的邮件系统都要有合法的主机名和ip地址(最好是这样)。使得其他的系统能够正常解析你的主机名和地址。这样,你的邮件收发器能够得到标准的信息,包括错误消息。这样你就可以根据你收到的消息来判断系统设置是否合意,是否有必要对某些地址做防范。总之,使一切标准化是件好事。


VI.关于处理垃圾邮件的一般观点。


一下是一些关于处理垃圾邮件的一般观点。我们在这里抛出这些观点,是为了让读者注意到防止垃圾邮件时需要深思的问题。你可以注意到,在这些截然不同的观点中,寻找一个皆大欢喜的解决垃圾邮件的方案是非常困难的。


观点一:垃圾邮件永远无法禁止


持有这种观点的人认为:要想精确地鉴别一封email是否是垃圾邮件是几乎不可能的,即使你知道谁是垃圾邮件的制造者,你也很难追究他的法律责任。防止垃圾邮件是一件耗时耗力的事,而且可能导致正常邮件的丢失。


这一类用户通常无法忍受因为拒绝垃圾邮件而导致正常邮件丢失的事情发生。


观点二:防止垃圾邮件是最终用户的责任。


这种观点的持有者往往是系统管理员。他们认为既然鉴别垃圾邮件是如此之困难,就应该由最终用户来决定是否拒绝某些可疑的垃圾邮件。由于在邮件系统范畴下拒绝一封邮件可能会导致用户的信赖危机,因此系统管理员理所当然的把拒绝垃圾邮件的任务交给最终用户。让他们来决定什么地方的邮件应该被退回,什么邮件应该接受。而且,他们觉得有的用户可能乐意收到某些商业邮件列表,那么决定邮件生死的大事还是有别人来完成吧。


这一类用户认为,用户有责任为拒绝垃圾邮件的行为负责,即便因此丢失邮件,也纯粹是用户的个人行为。


观点三:“拒绝垃圾邮件是系统管理员的责任”


持有这种观点的人认为:既然垃圾邮件先要经过邮件系统,又有那么多得现成工具来防止垃圾邮件,那么,这么重要的事情理所当然应该由我们的邮件系统管理员来负责。往往许多执行系统管理行为的用户(不是指邮件系统管理员)和终用户在经历了无休止的垃圾邮件骚扰后,对这样的事情已经无能为力,特别是那些极讨厌垃圾邮件的系统管理员来说,他们已经忍无可忍,在经历了长期的痛苦后,开始抱怨起他们的邮件系统管理员来。


对于那些粗心大意的系统管理员(他们因不正确配置系统导致很容易被用来发送垃圾邮件),这样的观点显然有作用。最常见得就是:“open relay”问题,这种不负责任的设置可以使任何人轻易使用你的邮件系统来发送垃圾邮件,这种配置不当的管理有时导致垃圾邮件泛滥,因而,系统管理员显然有责任修改配置以使系统能够抵御垃圾邮件。


持有这种观点得人为了降低垃圾邮件的数量,甚至可以忍受部分正常邮件的丢失。对于系统管理员的小错误引起的正常邮件拒绝接受,他们还是能够接受。


其他观点


除了上述的几类观点之外,还有一些特殊的观点:


有的人认为,应该拒绝所有出现在各种黑名单列表里的发信人的邮件。但有另外一些人则认为,这些黑名单也未必总是准确公平,因为他们内含了各自的评判标准,完全依赖第三方的黑名单可能导致大量的合法邮件被拒绝接收。甚至更极端的用户则彻底反对第三方的黑名单列表,因为他们认为制造和维护黑名单列表的人在观点上有偏见,不公平。


还有的人认为,如果一封邮件没有的包含合法的格式,都应该被视作垃圾邮件,或者至少把它当作潜在的垃圾邮件来处理。常见的情况是,邮件没有合法的“From”地址或者信封格式有问题。如果对这种信件做回复的话会导致回复被退回。因为种种原因,许多垃圾信件都会有这种情况,因此,他们认为应该把这类的信件都按照垃圾邮件处理。而反对者认为,往往有很多原因导致正常邮件的格式有问题,因而不能一概而论。


VII. 用户的选择


这个部分主要讨论最终用户在防治垃圾邮件时的选择。阅读这段文章的前提是,用户具备邮件客户软件的配置知识(比如outlook)并且有修改软件配置的需要。如果对任何一点感到疑惑的话,请询问你的系统管理员以寻求帮助。


从防治垃圾邮件的观点看来,最终用户的选择是有限的。比如,当一封邮件到达客户端时,通常认为邮件投递系统已经接受这个地址的邮件了,因此这时就需要最终用户来过滤这个邮件。可别小看过滤邮件的功能(有的时候又叫做基于规则的投递策略),它可是一个很强大的工具,不仅在防治垃圾邮件上有很大用处,在其他许多领域也有用武之地。比如我们在outlook中用到的“邮件规则”,可以实现指定邮件的转移、转发等自动化工作。在多数情况下,这是最终用户的最好选择。


UNIX平台下最广为人之的过滤工具就是procmail,看过《大教堂与集市》一文的人都知道,该文的作者就是procmail的作者。这个软件确实不错,它使用一种基于“处方”的脚本来处理邮件的转发、路由、拒绝等工作,具体的标准可以由你自己制定,非常灵活方便。其他平台下也有大量的邮件工具,并提供丰富的过滤功能,具体的使用依赖于你的操作系统和使用习惯。比较优秀的有:最新版本的Eudora Outlook Netscape Mail等等。


使用第三方的黑名单列表


procmail可以方便的让你使用第三方的黑名单列表。通过设置你的 .procmailrc 文件,使用 tblcheck和origip.pl程序,你可以对你任何想要处理的邮件做操作。以下是一个 .procmailrc 文件的简单范本,我们也把它称为“处方”。

 

MAILDIR=$HOME/mail
SPAMFOLDER=$MAILDIR/junkmail
LOGFILE=$MAILDIR/log


:0h
TCPREMOTEIP=| origip.pl
LOG="Remote IP: "$TCPREMOTEIP""


:0
* !^From.*myfriend@domain.com
* ! ? if [ -n "$TCPREMOTEIP" ];
then /usr/local/bin/rblcheck -q "$TCPREMOTEIP"; fi
{
LOGABSTRACT=all

相关TAG标签
上一篇:用CleanReg软件将注册表垃圾扫地出门
下一篇:利用嗅探器之TcpDump分析网络安全
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站