实现postfix基于客户端的访问控制

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用来检查客户端提供的邮件地址,因此,其访问表中可以使用完整的邮件地址,如[email protected];也可以只使用域名,如magedu.com;还可以只有用户名的部分,如[email protected]。

3.检查表格式的说明

hash类的检查表都使用类似如下的格式:

pattern   action

检查表文件中,空白行、仅包含空白字符的行和以#开头的行都会被忽略。以空白字符开头后跟其它非空白字符的行会被认为是前一行的延续,是一行的组成部分。

(1)关于pattern

其pattern通常有两类地址:邮件地址和主机名称/地址。

邮件地址的pattern格式如下:

[email protected]  用于匹配指定邮件地址;

domain.tld   用于匹配以此域名作为邮件地址中的域名部分的所有邮件地址;

[email protected]  用于匹配以此作为邮件地址中的用户名部分的所有邮件地址;

主机名称/地址的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

[[email protected] ~]# vim /etc/postfix/access

添加:192.168.182.129         REJECT

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

[[email protected] ~]# postmap /etc/postfix/access

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

[[email protected] ~]# vim /etc/postfix/main.cf

添加如下参数:

smtpd_client_restrictions = check_client_access hash:/etc/postfix/access

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

[[email protected] ~]# service postfix restart

5.实例2

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

(1)修改/etc/postfix/access

[[email protected] ~]# vim /etc/postfix/access

添加:whitehouse.com        REJECT

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

[[email protected] ~]# postmap /etc/postfix/access

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

[[email protected] ~]# vim /etc/postfix/main.cf

添加如下参数:

smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/access

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

[[email protected] ~]# service postfix restart

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

(1)编辑/etc/postfix/recipent

[[email protected] ~]# vim /etc/postfix/recipient

添加:[email protected] REJECT

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

[[email protected] ~]# postmap /etc/postfix/recipent

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

[[email protected] ~]# vim /etc/postfix/main.cf

添加如下参数:

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

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

[[email protected] ~]# service postfix restart

时间: 2024-11-04 19:38:34

实现postfix基于客户端的访问控制的相关文章

postfix基于客户端的访问控制

1.基于客户端的访问控制概览 postfix内置了多种反垃圾邮件的机制,其中就包括“客户端”发送邮件限制.客户端判别机制可以设定一系列客户信息的判别条件: smtpd_client_restrictions    指明什么样的用户允许连接到服务器端 smtpd_data_restrictions    指明什么样的用户允许发送data指令 smtpd_helo_restrictions    指明什么样的用户允许发送helo指令 smtpd_recipient_restrictions    哪

FTP服务器配置和FTP基于MariaDB实现访问控制

FTP服务器简介 FTP服务器是提供文件存储和访问服务的服务器,通过ftp(文件传输协议)实现数据传输,而且FTP是仅基于TCP的服务,不支持UDP.FTP应用是一种C/S架构的应用,客户端和服务器端都需要安装相关的软件才能实现相互之间的数据传输.常见的软件套件有FileZilla,Server-U,VsFTP,Pure-FTPd ,ProFTPD等,其中VsFTP,Pure-FTPd ,ProFTPD是单纯的服务器程序,常见客户端程序有ftp,lftp.本文实验环境中采用的服务器程序是vsft

tcp_wrapper:简单的基于主机的访问控制工具

一.常用的主机访问控制工具 独立(stand alone)守护进程(httpd,vsftpd).瞬时(transient)守护进程(rsync,tftp,telnet), 这两类守护进程都支持基于iptables进行控制.哪一端口运行客户端访问,哪一端口不允许客户端访问,基于主机做防火墙时,都能进行控制. 做主机防火墙时,有些瞬时守护进程,甚至是某些独立独立守护进程,还能够接受另一种方式,tcp_wrapper,来控制. 在众多的基于主机的安全访问控制中,tcp-wrapper是简单而易于配置的

httpd 基于用户的访问控制的配置

当我们在网站的某些特定目录放置了比较私密的信息,而又只想提供给我们信任的指定用户访问,这时就需要使用httpd的基于用户访问控制,其能帮你实现只有通过认证的用户才能被允许访问特定的资源,从而大大提高了网站的安全性. 一.httpd基于用户的访问控制简介 基于用户的访问控制包含认证和授权两个过程:        认证(Authentication)是指识别用户身份的过程        授权(Authorization)是允许特定用户访问特定区域信息的过程. Apache的认证包含基本认证(Basi

ETCD:基于角色的访问控制

原文地址:Role-based access control 总览 身份验证已添加到etcd 2.1中. etcd v3 API略微修改了身份验证功能的API和用户界面,以更好地适应新的数据模型.本指南旨在帮助用户在etcd v3中设置基本身份验证和基于角色的访问控制. 特殊用户和角色 有一个特殊用户root,一个特殊角色root. 用户root 在激活身份验证之前,必须创建对etcd具有完全访问权限的root用户. root用户的想法是出于管理目的:管理角色和普通用户. root用户必须具有r

httpd虚拟主机配置及基于用户的访问控制

本文旨在实践httpd虚拟主机及基于用户的访问控制 知识储备 虚拟主机有三种实现方案: 基于ip: 为每个虚拟主机准备至少一个独有ip地址: 基于port: 为每个虚拟主机使用至少一个独有的port: 基于FQDN: 为每个虚拟主机使用至少一个FQDN: 注意:一般虚拟机不要与中心主机混用:因此,要使用虚拟主机,得先禁用'main'主机: 禁用方法:注释中心主机的DocumentRoot指令即可: 基于用户的访问控制: http协议认证方式2种 basic:明文 digest:消息摘要认证 本次

基于角色的访问控制RBAC

------------------------------------------------------------------------------------------------------- RBAC(Role Based Access Control),意为基于角色的访问控制,这里用户不再拥有单独权限,而是与角色相关联,通过赋予角色权限,那么该用户也就拥有了这个角色的权限; 这里的角色可以也理解为用户组. 权限控制位置:在公共的控制器类的构造方法内,这样子类均需进行权限验证; 

RBAC 基于角色的访问控制

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用户-角色-权限"的授权模型.在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系.(如下图) 角色是什么?可以理解为一定数量的权限的集合,权限的载体.例如:一个论坛系统,"超级管理员"."版主"都是角色.版主可管理版内的帖子.可管理版内的用户等,

Yii2.0中文开发向导——RBAC(基于角色的访问控制权限)表结构原理分析

这里有几个概念很重要,我简单用大白话说一下;权限:就是指用户是否可以执行哪些操作.如:小张可以发帖.回帖.浏览,小红只能回帖.浏览角色:就是上面说的一组操作的集合.如:高级会员有发帖.回帖.删贴.浏览的权限,普通会员只有回帖.浏览的权限.比如小张是高级会员,那么他就可以执行发帖.回帖.删贴.浏览.而小红是普通会员,所以它就只能回帖.浏览.另外角色还可以继承,中级会员除了普通会员的回帖.浏览功能外,还可以发帖.也就是说在普通会员的基础上又增加了一个发帖的权限.在Yii2.0中 yii\rbac: