1、基于客户端的访问控制概览

postfix内置了多种反垃圾邮件的机制,其中就包括“客户端”发送邮件限制。客户端判别机制可以设定一系列客户信息的判别条件:

smtpd_client_restrictions    指明什么样的用户允许连接到服务器端

smtpd_data_restrictions    指明什么样的用户允许发送data指令

smtpd_helo_restrictions    指明什么样的用户允许发送helo指令

smtpd_recipient_restrictions    哪些用户可以发送rcpt to指令

smtpd_sender_restrictions    限定什么样的人可以发送mail from指令

如果DATA命令之前的所有内容都被接受,客户端接着就可以开始传送邮件内容了。邮件内容通常由两部分组成,前半部分是标题(header),其可以由header_check过滤,后半部分是邮件正文(body),其可以由check_body过滤。这两项实现的是邮件“内容检查”。

2.postfix的默认配置如下:

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参数中定义的本地网络中的客户端才能通过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用来检查客户端提供的邮件地址,因此,其访问表中可以使用完整的邮件地址,如admin@magedu.com;也可以只使用域名,如magedu.com;还可以只有用户名的部分,如marion@。

3.检查表格式的说明

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为可选信息;

4.实例1

说明:这里以禁止192.168.182.129这台主机通过工作在192.168.182.128上的postfix服务发送邮件为例说明其实现过程。访问表使用hash的格式。

(1)修改/etc/postfix/access

[root@mail ~]# vim /etc/postfix/access

添加:192.168.182.129         REJECT

(2)将此文件转换为hash格式

[root@mail ~]# postmap /etc/postfix/access

(3)配置postfix使用此文件对客户端进行检查

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

添加如下参数:

smtpd_client_restrictions = check_client_access hash:/etc/postfix/access

(4)让postfix重新载入配置文件即可进行发信控制的效果测试了

[root@mail ~]# service postfix restart

5.实例2

说明:这里以禁止来自whitehouse.com这一域的用户发送邮件。访问表使用hash的格式

(1)修改/etc/postfix/access

[root@mail ~]# vim /etc/postfix/access

添加:whitehouse.com        REJECT

(2)将此文件转换为hash格式

[root@mail ~]# postmap /etc/postfix/access

(3)配置postfix使用此文件对客户端进行检查

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

添加如下参数:

smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/access

(4)让postfix重新载入配置文件即可进行发信控制的效果测试了

[root@mail ~]# service postfix restart

6.实例3:限定向openstack这一用户发送邮件

(1)编辑/etc/postfix/recipent

[root@mail ~]# vim /etc/postfix/recipient

添加:openstack@ REJECT

(2)将此文件转换为hash格式

[root@mail ~]# postmap /etc/postfix/recipent

(3)配置postfix使用此文件对客户端进行检查

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

添加如下参数:

smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient permit_mynetworks, reject_unauth_destination

(4)让postfix重新载入配置文件即可进行发信控制的效果测试了

[root@mail ~]# service postfix restart

更多请参考: http://blog.chinaunix.net/uid-20639775-id-154609.html

postfix基于客户端的访问控制的更多相关文章

  1. Httpd服务入门知识-Httpd服务常见配置案例之基于客户端来源地址实现访问控制

    Httpd服务入门知识-Httpd服务常见配置案例之基于客户端来源地址实现访问控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Options  1>.OPTIONS指 ...

  2. YIi 权限管理和基于角色的访问控制

    验证和授权(Authentication and Authorization) 定义身份类 (Defining Identity Class) 登录和注销(Login and Logout) 访问控制 ...

  3. 移动服务和 Azure Active Directory 中基于角色的访问控制

    编辑人员注释:本文章由 Matthew Henderson撰写 去年 11月,我们发布了 Azure Active Directory (AAD) 预览版作为移动服务身份提供程序.此举旨在为企业开 ...

  4. MongoDB基础之 用户和数据库基于角色的访问控制

    mongod 关键字参数:--auth 默认值是不需要验证,即 --noauth,该参数启用用户访问权限控制:当mongod 使用该参数启动时,MongoDB会验证客户端连接的账户和密码,以确定其是否 ...

  5. 简述站点访问控制、基于用户的访问控制、httpd虚拟主机、持久链接等应用配置实例

    1 站点访问控制 可基于两种机制指明对哪些资源进行何种访问控制: 文件系统路径 URL路径 注意: 从上到下匹配,匹配到一个就立即执行 如果没有子目录的访问控制,但是有父目录的访问控制,则子目录继承父 ...

  6. ETCD:基于角色的访问控制

    原文地址:Role-based access control 总览 身份验证已添加到etcd 2.1中. etcd v3 API略微修改了身份验证功能的API和用户界面,以更好地适应新的数据模型.本指 ...

  7. Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

    Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.基于用户的访问控制概述 认证质询: WWW-Auth ...

  8. 基于Nginx实现访问控制、连接限制

    0 前言 Nginx自带的模块支持对并发请求数进行限制, 还有对请求来源进行限制.可以用来防止DDOS攻击.阅读本文须知道nginx的配置文件结构和语法. 1. 默认配置语法 nginx.conf作为 ...

  9. RBAC基于角色的访问控制

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...

随机推荐

  1. Yahoo网站性能优化的34条规则

    摘自:http://blog.chinaunix.net/uid/20714478/cid-74195-list-1.html Yahoo网站性能优化的34条规则 1.尽量减少HTTP请求次数 终端用 ...

  2. 20144303石宇森 《Java程序设计》第2周学习总结

    ---恢复内容开始--- 20144303 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型: 1.Java可以区分为基本类型和类类型.类类型也称作参考类型. 2.Java中 ...

  3. COJS:1829. [Tyvj 1728]普通平衡树

    ★★★   输入文件:phs.in   输出文件:phs.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需 ...

  4. swift学习笔记 - Range、ClosedRange、CountableClosedRange与CountableRange学习

    移动端访问不佳,请访问我的个人博客 在使用swift的过程中字符串操作的时候会用到Range,刚开始使用起来各种别扭,然后发现居然还有ClosedRange.CountableClosedRange和 ...

  5. java 反序列化 漏洞

        java在反序列化的时候会默认调用被重写的readObject(ObjectInputStream )方法. 在远程服务端一个需要反序列化的接口中,比如一个web服务,他那个接口调用链中有反序 ...

  6. 【编程小题目7】求s=a+aa+aaa+aaaa+aa...a的值

    题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制 #include <iostr ...

  7. POJ 1208 模拟

    2017-08-28 15:07:16 writer:pprp 好开心,这道题本来在集训的时候做了很长很长时间,但是还是没有做出来,但是这次的话,只花了两个小时就做出来了 好开心,这次采用的是仔细分析 ...

  8. 直播P2P技术2-低延迟模型

    低延迟模型 由上一篇文章我们知道:网状拓扑虽最大化利用了所有节点的资源却无法降低数据延迟,而树状拓扑尽管数据传输效率高,延迟低,但只利用了少部分节点的带宽资源,不适应高码率的直播P2P网络. 那么如何 ...

  9. Learning Perl 第九章习题第二题

    把输入文件中的所有Fred换成Larry, 不区分大小写. 知识点 1. 文本文件读写 2. 简单的正则替换 3. unless 的用法 4. $_ 的用法

  10. 如何制作自己的R包?

    摘自 方匡南 等编著<R数据分析-方法与案例详解>.电子工业出版社 R包简介 R包提供了一个加载所需代码.数据和文件的集合.R软件自身就包含大约30种不同功能的包,这些基本包提供了R软件的 ...