APP下载

Linux系统下postfix邮件系统反垃圾技术解析

2011-06-04李志东

一重技术 2011年3期
关键词:垃圾邮件邮件指令

李志东

随着信息技术的发展,电子邮件在企业内部文件沟通、外部业务往来中承担着越来越重要的角色。但是,垃圾邮件的泛滥及其带来的安全问题一直在困扰着广大用户,对于企业来讲影响更大。

垃圾邮件是指未经允许发送的出于商业宣传、政治和色情等非正常目的的邮件。某种程度上,对垃圾邮件的定义可以是:那些人们没有意愿去接收而收到的电子邮件都是垃圾邮件。

从邮件的发送和接收基本流程中可以看出,MAIL服务器上的反垃圾邮件过程是在发件人、收件人公司的MAIL服务器会话发起和接收过程阶段进行的(见图1),而postfix的反垃圾邮件功能,实际上就是在postfix处理过程中对会话进行过滤。该过滤不但能对发往自身的垃圾邮件进行过滤,而且还可防止自身被利用而外发垃圾邮件。因此,postfix能够实现目前所有主要的邮件传输代理(Mail Transfer Agent,简称MTA)的过滤技术。

图1 邮件发送和接收

1 技术解析

当前,运行在Linux环境下的免费MTA有若干种选择,比较常见的有 Sendmail、Qmail、postfix、exim及Zmailer等等。其中,因为postfix处理速度快、易管理、能提供尽可能的安全保障,同时和sendmail能保持最大兼容而被很多大中型邮件系统所采用。

postfix过滤分为邮件数据发送前过滤和邮件数据发送后过滤两种。

(1)数据前过滤

数据前过滤是指在SMTP会话中,在DATA指令发送前进行的过滤(见图2)。其过滤默认是在RCPT TO指令后生效的,但将smtpd_delay_reject设置为No可使其立刻生效;在默认状态下smtpd_delay_reject的值是Yes,其四个子阶段可以接受所有支持的规则,在RCPT TO指令后全部生效;当其为no时,只接受五个公共规则参数(见表1)、之前子阶段过滤规则参数及本阶段规则参数。此外,根据smtpd_delay_reject设置值的不同,又有多阶段过滤和单阶段过滤两种形式。

图2 数据前过滤流程图

表1 公共规则参数

SMTP连接时过滤(SMTP客户端限制)在接受客户端SMTP连接请求时进行过滤。通过postfix的smtpd_client_restrictions指令来指定本阶段过滤规则(见表2)。

HELO/EHLO指令过滤(HELO/EHLO主机名限制)是在接受SMTP连接后,对HELO或EHLO指令所发送的信息过滤检查。本阶段可用过滤规则有公共规则、SMTP连接过滤规则及HELO/EHLO指令过滤阶段规则(见表3)。

表2 SMTP连接时过滤阶段规则参数

表3 HELO/EHLO指令过滤阶段规则

MAIL FROM指令过滤(发送者地址限制)对通过MAIL FROM指令声明发送者的身份过滤检查。利用smtpd_sender_restrictions指令指定该阶段的过滤规则,即公共规则、之前两个子阶段规则及本阶段规则(见表4)。

表4 MAIL FROM指令过滤阶段规则

RCPT TO指令过滤(接收者地址限制)负责对接收者身份进行过滤检查。通过smtpd_recipient_restrictions指令指定过滤规则,具体包括公共规则、之前三个子阶段规则及本子阶段规则(见表5)。

多阶段过滤是指smtpd_delay_reject为Yes时,过滤分多阶段进行,无论其中某个子阶段的过滤结果如何,都不会影响其它子阶段过滤的进行。

而单阶段过滤是指当smtpd_delay_reject为No时,一旦某个规则匹配成功,则其后的所有过滤规则和子阶段都不再进行。

(2)数据后过滤

即对邮件数据中的信息进行过滤以判断其是否为垃圾邮件,通过该过滤可自动完成对垃圾邮件的判定和处理,降低病毒随邮件扩散的可能性。

表5 RCPT TO指令过滤阶段规则

数据后过滤一般分为信头过滤和信体过滤两种。

在SMTP会话中,DATA指令发送的数据以一个空行分隔开,前面的部分称为信头,后面的称为信体。邮件中通常有主信头、MIME头及附带邮件的信头。

信头过滤可以通过对各信头参数进行匹配来完成。

信体过滤只检查body_checks_max_size所指定字节的大小,对于超长的行,只检查line_length_limi所指定的长度(默认2048字节)。

2 具体应用

2.1 Relay控制

(1)允许Relay的Domain设置

编辑/etc/postfix/main.cf文件,使relay_domains=263.net…。

(2)允许接受的Domain设置

编辑/etc/postfix/main.cf文件,使mydestination=trendmicro.com.cn等。

(3)不受Relay限制的地址设置

编辑/etc/postfix/main.cf文件,使mynetworks=10.11.240.0/24,127.0.0.1等。

2.2 启用Web方式管理

在Web浏览器中输入:http∶//用户IP:8081/IMSS.html,点击“Policy Manager”选项后即可以按企业内部需求制定自己的邮件服务器邮件管理策略。

除了设置内部规则之外,SpamAssassin(邮件伺服主机上邮件过滤器)也可以访问其它外部垃圾邮件过滤规则集。其中Chinese_rules.cf是用于垃圾邮件过滤系统SpamAssassin的中文垃圾邮件过滤规则集。具体操作时把Chinese_rules.cf复制到/usr/share/spamassassin文件中即可。

2.3 其他措施

(1)隐藏邮件服务器IP地址

如果网络中有专门发送邮件的中央邮件服务器为许多主机提供访问,则必须隐藏邮件地址的主机名部分。具体操作时需在文件main.cf中加入两行:

masquerade_domain=$mydomian;masquerade_exceptions=root;

其中第一句负责通知postfix邮件服务器对所在的域允许地址进行化装,而第二句是将root用户排除,即不对root用户伪装。

(2)限制服务器使用的进程数目

指定/etc/postfix/main.cf文件的下列参数来控制使用的并发进程总量:

default_process_limit=50(3)控制最大邮件尺寸可修改/etc/postfix/main.cf文件中的如下参数来控制邮件尺寸:

message_size_limit=1073741824,即规定服务器处理最大邮件为10兆。

(4)控制同时发送邮件的数量

通过下面参数设定一个站点的最大并发连接数量:

default_destination_concurrency_limit=20,可使到达单一站点的并发连接数量不超过20个。

3 结语

利用postfix邮件系统的反垃圾邮件技术可以精确地设置规则参数,有效防止垃圾邮件的侵害,再加上其它专业软件的支持,就能够使企业的邮件系统达到更好的反垃圾邮件效果。

应该指出,垃圾邮件本质上是一个社会问题,需要通过完善相关法律法规减少垃圾邮件的传播,而仅靠技术手段是无法从根本上杜绝的。

猜你喜欢

垃圾邮件邮件指令
基于James的院内邮件管理系统的实现
从“scientist(科学家)”到“spam(垃圾邮件)”,英语单词的起源出人意料地有趣 精读
来自朋友的邮件
《单一形状固定循环指令G90车外圆仿真》教案设计
垃圾邮件会在2020年消失吗
新机研制中总装装配指令策划研究
关于ARM+FPGA组建PLC高速指令控制器的研究
一封邮件引发的梅赛德斯反弹
Outlook和Foxmail邮件互导
东方国家垃圾邮件输出日益严重