postfix 规则过滤:
标准响应代码:
5xx 永久性错误
4xx 暂时性错误
2xx 正确
2. 常用过滤规则类型:
smtpd_client_restrictions#客户端过滤
smtpd_helo_restrictions#helo指令过滤
smtpd_sender_restrictions#寄件人过滤
smtpd_recipient_restrictions #发件人过滤
smtpd_data_restrictions#内容过滤
smtpd_*_classes#自定义过滤
3.访问表类型:
参数 表类型 :查找路径表
check_client_access hash:/etc/postfix/maps/client_maps
check_helo_accesshash:/etc/postfix/maps/helo_maps
check_recipient_accesshash:/etc/postfix/maps/recipient_maps
check_sender_accesshash:/etc/postfix/maps/sender_maps
4.使用参数:
permit_mynetworks#批准mynetworks参数中的网段客户端请求;
permit_auth_destination#批准destination参数中的域用户请求;
reject_unauth_destination#拒绝不是destination参数中的域用户请求
reject_invalid_hostname#拒绝客户端在helo命令时提供的主机名为无效主机名
reject_non_fqdn_hostname#拒绝客户端在helo命令时提供的主机名称不是RFC要求的完整形式
reject_non_fqdn_recipient#拒绝客户端在RCPT TO命令时提供不完整的收件地址的网域部分
reject_non_fqdn_sender#拒绝客户端在MAIL FROM命令时提供不完整的寄件地址的网域部分
reject_unknown_client#拒绝查不出PTR记录的客户端
reject_unknown_hostname#拒绝查不出A,MX记录的主机名
reject_unknown_recipient_domain#拒绝查不出收件地址不是有效的A MX记录
reject_unknown_sender_domain#拒绝查不出寄件地址不是有效的A MX记录
5.通用限制条件:
permit #批准
reject #无条件拒绝
defer #婉拒请求
6.设定内容检查参数:
check_sender_access#针对发件人过滤
check_recipient_access#针对收件人过滤
check_client_access#针对客户端过滤
7.相关参数定义:
broken_sasl_auth_clients = yes 是否启用客户端sasl验证
permit_mynetworks 允许本地网络
permit_sasl_authenticated 允许sasl验证通过的用户
reject_invalid_hostname 拒绝主机名不合法的用户
reject_non_fqdn_hostname 拒绝主机名不是fqdn格式的用户
reject_unknown_sender_domain 拒绝无法识别的发件人域
reject_non_fqdn_sender 拒绝不是fqdn格式的发件人
reject_non_fqdn_recipient 拒绝没有fqdn格式的发件人
reject_unknown_recipient_domain 拒绝无法识别的收件人域
reject_unauth_pipelining 拒绝无法验证的管道
reject_unauth_destination 拒绝非本域的收件人
smtpd_sasl_auth_enable = yes 启用sasl认证功能
smtpd_sasl_security_options = noanonymous 拒绝匿名用户
smtpd_banner =显示定义的信息
8. 实例:
smtpd_sender_login_maps = hash:/etc/postfix/maps/sender_login_maps
#防止伪造发件人
smtpd_restriction_classes = local_only,testall_only #定义两个策略组
local_only =
check_recipient_access hash:/etc/postfix/maps/local_domains,reject,
check_sender_access hash:/etc/postfix/maps/local_domains,reject
#当用户应用此组策略时,只允许收发包含在local_domains文件里的用户账号或者域名(一般设置为 公司域名)
testall_only = #用户组权限控制
check_sender_access hash:/etc/postfix/maps/testall_sender,reject
smtpd_sender_restrictions = check_recipient_access hash:/etc/postfix/maps/testall_recipient
#1.当用户应用此策略后,只允许testall_sender文件里面的用户进行发送某个邮箱账号或者邮箱组
2.testall_recipient文件是用来定义某邮箱组或者某用户启用这个策略
例子:
需求:
创建一个公司所有人的组为:testall,并只允许某些人可以对这个组进行发送邮件;
实行:
首先创建一个所有人组,文件为testall,邮箱别名为test_all@test.com,在文件里面添加所有人的 邮件账号;
完成后,在testall_sender文件中添加允许对此组有发送权限的人员,
添加格式: 用户邮箱全称 OK (多人需要用逗号间隔区分)
123@test.com OK
启用组策略:
在testall_recipient文件中添加以下内容:
格式: 邮箱组全名 策略组名
test_all@test.com testall_only
smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/maps/local_sender,
check_recipient_access hash:/etc/postfix/maps/local_recipient,
permit_mynetworks,
permit_sasl_authenticated,
reject_sender_login_mismatch,
reject_authenticated_sender_login_mismatch
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unknown_sender_domain,
reject_invalid_hostname
#设置用户无外发权限,只允许发公司内部邮箱
在local_sender文件中。添加以下内容:
格式: 用户账号 策略组名
123@test.com local_only
#设置用户无外收权限,只允许收公司内部邮箱
在local_recipient文件中。添加以下内容:
格式: 用户账号 策略组名
123@test.com local_only
#####################################################################
masquerade_domains = $mydomain
masquerade_exceptions = root
hash_queue_depth = 2
double_bounce_sender = postmaster
ipc_timeout = 360s
hash_queue_names = deferred, defer
maximal_queue_lifetime = 500s
bounce_queue_lifetime = 500s
mynetworks_style = subnet
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
empty_address_recipient = postmaster
show_user_unknown_table_name = no
本文出自 “逆水行舟,不进则退” 博客,请务必保留此出处http://wangkj.blog.51cto.com/10292166/1955151
postfix邮箱搭建之策略限制(笔记-2.20170809)
原文地址:http://wangkj.blog.51cto.com/10292166/1955151