Client访问控制和Cyrus sasl认证.doc

六、实现postfix基于客户端的访问控制
注:目前的垃圾邮件过滤方法主要是采用文本挖掘技术(Text Mining)。作为数据挖掘技术的重要分支,文本挖掘在数据挖掘传统方法的基础上引入了语义处理等其他学科知识。在垃圾邮件过滤的分类技术中最常见的是贝叶斯分类方法。该方法主要是通过对邮件信封标题,主题和内容进行扫描和判别。近年来,因为垃圾邮件发送方式随着各家企业邮箱开发商的反垃圾技术的提升而变化,通过附件(PDF,图像)方式发送垃圾邮件的专业户也越来越多,所以扫描内容又增加了一项检查附件的工作。
1、基于客户端的访问控制概览
postfix内置了多种反垃圾邮件的机制,其中就包括“客户端”发送邮件限制。客户端判别机制可以设定一系列客户信息的判别条件:
下面的每一项参数分别用于检查SMTP会话过程中的特定阶段,即客户端提供相应信息的阶段,如当客户端发起连接请求时,
postfix就可以根据配置文件中定义的smtpd _client _restrictions参数来判别此客户端IP的访问权限。
相应地,smtpd_helo_restrictions则用于根据用户的helo信息判别客户端的访问能力等等。
如果DATA命令之前的所有内容都被接受,客户端接着就可以开始传送邮件内容了。邮件内容通常由两部分组成,前半部分是标题(header),
其可以由header_check过滤,后半部分是邮件正文(body),其可以由check_body过滤。这两项实现的是邮件“内容检查”。

smtpd_client_restrictions =
smtpd_data_restrictions =
smtpd_end_of_data_restrictions =
smtpd_etrn_restrictions =
smtpd_helo_restrictions =
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
smtpd_sender_restrictions =

这限制了只有mynetworks参数中定义的本地网络中的client才能通过postfix转发邮件,其它客户端则不被允许,从而关闭了开放式中继(open relay)功能。Postfix有多个内置的限制条件,如上面的permit_mynetworks和reject_unauth_destination,但管理员也可以使用访问表(access map)来自定义限制条件。自定义访问表的条件通常使用check_client_access, check_helo_access, check_sender_access, check_recipient_access进行,它们后面通常跟上type:mapname格式的访问表类型和名称。其中,check_sender_access和check_recipient_access用来检查客户端提供的邮件地址,因此,其访问表中可以使用完整的邮件地址,如[email protected];也可以只使用域名,如mail.com;还可以只有用户名的部分,如natasha@。
2、实现示例1
这里以禁止192.168.5.134这台主机通过工作在10.33.1.142上的postfix服务发送邮件为例演示说明其实现过程。访问表使用hash的格式。
(1)首先编辑/etc/postfix/access文件,做为客户端检查的控制文件,在里面定义如下一行:
Client访问控制和Cyrus sasl认证.doc_第1张图片
(2)将此文件转换为hash格式
这里写图片描述
(3)配置postfix使用此文件对客户端进行检查
编辑/etc/postfix/main.cf文件,添加如下参数:
这里写图片描述
(4)让postfix重新载入配置文件即可进行发信控制的效果测试了。
这里写图片描述
服务器拒绝接收邮件
Client访问控制和Cyrus sasl认证.doc_第2张图片
3、实现示例2
这里以禁止通过本服务器接收来自microsoft.com域的邮件为例演示其实现过程。访问表使用hash的格式。
(1)首先,建立/etc/postfix/denydstdomains文件(文件名任取),在里面定义如下一行:Client访问控制和Cyrus sasl认证.doc_第3张图片
(2)将此文件转换为hash格式
这里写图片描述
(3)配置postfix使用此文件对客户端进行检查
编辑/etc/postfix/main.cf文件,添加如下参数
这里写图片描述
(4)让postfix重新载入配置文件即可进行发信控制的效果测试了

[root@www postfix]# service postfix restart

Client访问控制和Cyrus sasl认证.doc_第4张图片
4、实例3不允许向post用户发送邮件
Client访问控制和Cyrus sasl认证.doc_第5张图片
Client访问控制和Cyrus sasl认证.doc_第6张图片
Client访问控制和Cyrus sasl认证.doc_第7张图片
5、检查表格式的说明
hash类的检查表都使用类似如下的格式:
pattern action
检查表文件中,空白行、仅包含空白字符的行和以#开头的行都会被忽略。
以空白字符开头后跟其它非空白字符的行会被认为是前一行的延续,是一行的组成部分。
(1)关于pattern
其pattern通常有两类地址:邮件地址和主机名称/地址。
邮件地址的pattern格式如下:
user@domain 用于匹配指定邮件地址;
domain.tld 用于匹配以此域名作为邮件地址中的域名部分的所有邮件地址;
user@ 用于匹配以此作为邮件地址中的用户名部分的所有邮件地址;

主机名称/地址的pattern格式如下:
domain.tld 用于匹配指定域及其子域内的所有主机;
.domain.tld 用于匹配指定域的子域内的所有主机;
net.work.addr.ess
net.work.addr
net.work
net 用于匹配特定的IP地址或网络内的所有主机;
network/mask CIDR格式,匹配指定网络内的所有主机;

(2)关于action
接受类的动作:
OK 接受其pattern匹配的邮件地址或主机名称/地址;
全部由数字组成的action 隐式表示OK;
拒绝类的动作(部分):
4NN text
5NN text
其中4NN类表示过一会儿重试;5NN类表示严重错误,将停止重试邮件发送;421和521对于postfix来说有特殊意义,尽量不要自定义这两个代码;
REJECT optional text… 拒绝;text为可选信息;
DEFER optional text… 拒绝;text为可选信息;
七、为postfix开启基于cyrus-sasl的认证功能
避免挂起导致系统时间与硬件时间不同步,设定自动同步时间任务
Client访问控制和Cyrus sasl认证.doc_第8张图片
这里写图片描述
1、启动saslauthd服务,并将其加入到自动启动队列:
Client访问控制和Cyrus sasl认证.doc_第9张图片
Client访问控制和Cyrus sasl认证.doc_第10张图片
使用以下命令验证postfix是否支持cyrus风格的sasl认证
这里写图片描述
配置/usr/lib/sasl2/smtpd.conf
这里写图片描述
添加log_level:3显示更详细的log信息以便排错,不用建议删除,避免存在安全隐患将 /usr/lib/sasl2/smtpd.conf复制一份到/etc/postfix/下
这里写图片描述

[root@www ~]# vim /etc/postfix/main.cf

添加以下内容:
Client访问控制和Cyrus sasl认证.doc_第11张图片
设置mynetworks要求所有用户必须通过认证才能发送邮件
这里写图片描述
让postfix重新加载配置文件
这里写图片描述
加密用户名跟密码以便认证
这里写图片描述
Client访问控制和Cyrus sasl认证.doc_第12张图片

[root@www ~]# tail /var/log/maillog

这里写图片描述
这里写图片描述
Outlook Express同样要求认证
Client访问控制和Cyrus sasl认证.doc_第13张图片
Client访问控制和Cyrus sasl认证.doc_第14张图片
Client访问控制和Cyrus sasl认证.doc_第15张图片
成功发送
Client访问控制和Cyrus sasl认证.doc_第16张图片
这里写图片描述
Client访问控制和Cyrus sasl认证.doc_第17张图片
Mail User Agent使用字符界面MUA:mutt接受邮件

[root@www ~]# man mutt
       -f mailbox    Specify which mailbox to load.

这里写图片描述
Client访问控制和Cyrus sasl认证.doc_第18张图片
Client访问控制和Cyrus sasl认证.doc_第19张图片
Client访问控制和Cyrus sasl认证.doc_第20张图片

你可能感兴趣的:(Servers,Framework)