邮件过滤按照邮件系统的角色结构可以分为三类:
- MTA(邮件传输代理)过滤
- MDA(邮件递交代理)过滤
- MUA(邮件用户代理)过滤
MTA过滤是指MTA在会话过程中对会话的数据进行检查,对于符合过滤条件的邮件进行过滤处理。邮件会话过程中有两个阶段可以进行过滤:
- 邮件发送邮件数据前,即在发送DATA指令前的过滤。在发送DATA指令前,邮件对话可以在SMTP连接开始、HELO/EHLO指令、MAIL FROM指令和RCPT TO指令中对会话数据进行检查。
- SMTP连接时,可以检查客户端IP地址是不是特定不允许连接的地址,如被列入黑名单IP就会被立刻拒绝连接。
- 对HELO/EHLO指令所提供的身份,可以检查是不是FDQN(完全限定域名,包括完整的主机名、域名的地址)、是不是要求的身份等
- 对MAIL FROM指令所提供的邮件来源,可以检查是不是有效域(可以通过DNS反向查询检查)、是不是FDQN、是不是符合RFC822格式等
- 对RCPT TO指令所提供邮件接收者,可以检查是不是属于允许转发的域、是不是符合RFC822格式、是不是通过认证的发信人等
如果在检查中该会话符合过滤的条件,就可以按照规则采取相应的动作,如直接在会话阶段断开连接、发出警告代码等。
邮件发送邮件数据前的检查也叫做信封检查。
- 邮件发送邮件数据后,即在发送DATA指令后的过滤。在通过一个点的单行结束DATA指令后,可以对DATA指令接收到的数据进行检查,这包括信头检查和信体检查。在DATA指令所传送的数据中,信头和信体是通过一个空行分隔开的。
- 信头检查。通常垃圾邮件在信头中都有一定的特征可供识别。通过这些特定信头字段可以很快地识别为垃圾邮件。
- 信体检查。有时候通过信头检查还不足以判断一封邮件是否是垃圾邮件,往往还要针对情况进行信体检查。
信头一般都比较小,通常在1KB-10KB之间,检查信头也比较快。而信体检查就要检查大量的数据,会给邮件服务器带来很大的负载。所以通常不做信体检查。
邮件发送邮件数据后的检查实际上是在邮件数据传输基本完毕后进行的,因此并不能节省下被垃圾邮件占用的带宽和处理能力,只是可以让用户不再收到这些已被过滤的垃圾邮件。
MDA过滤是指MDA在从MTA中接收到信件,在本地或远程进行递交时进行检查,对于符合过滤条件的邮件进行过滤处理。
很多的MDA都支持在这个过程进行过滤,如、和等,甚至它们本身就是作为过滤器使用的。这些过滤器使用过滤语言(如来制订过滤规则,因此配置比较灵活、功能强大。但是由于是在邮件递交阶段进行过滤,同MTA的邮件发送邮件数据后的检查一样,并不能节省下被垃圾邮件占用的带宽和处理能力,只是可以让用户不再收到这些已被过滤的垃圾邮件。
MTA和MDA过滤都是邮件服务器端的过滤,而MUA过滤是邮件用户的客户端的过滤。多数流行的邮件客户端,如Outlook、Outlook Express、Netscape Mail、 Foxmail等都支持MUA过滤。
邮件过滤技术作为一个有效的对抗垃圾邮件的手段,就如同杀毒软件对病毒的查杀一样,也是需要不断根据情况更新邮件过滤规则的。通常都是管理员自行根据垃圾邮件监测情况来更新过滤规则。不过本站即将推出一个推荐的信头过滤规则和信体过滤规则,并不断根据情况进行更新。用户可以订阅这些规则并参考应用到自己的邮件系统中。
邮件过滤是一项应用的相当早的技术,因而也发展的比较完善。已经有很多主流的邮件系统支持邮件过滤,一些不直接支持该功能的邮件系统也可以通过补丁或外置的邮件过滤器来实现邮件过滤。有关各种邮件系统如何使用邮件过滤技术的细节请参见相关文章.
文章来源于领测软件测试网 https://www.ltesting.net/