分类: 系统运维
2014-06-28 11:00:27
利用check_client_access 规则,只允许它和指定的内部域名(用户)联系,对于发向任何外部邮件域,或任意外部邮件域发来的邮件,都是禁止的。
1、自定义限制类
在main.cf添加如下行:
smtpd_restriction_classes = local_out_only local_in_only
local_out_only = check_recipient_access hash:/etc/postfix/local_domains, reject
local_in_only = check_sender_access hash:/etc/postfix/local_domains, reject
2、对收件人地址进行过滤
在main.cf添加如下行:
smtpd_recipient_restrictions =
check_sender_access hash:/etc/postfix/local_out_senders,
check_recipient_access hash:/etc/postfix/local_in_senders,
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname
3、建立hash文件
# vi /etc/postfix/local_in_senders:
foo@ext.org local_in_only
bar@ext.org local_in_only
# vi /etc/postifx/local_out_senders:
foo@ext.org local_out_only
bar@ext.org local_out_only
# vi /etc/postfix/local_domains:
internal.foo.com OK
internal.bar.com OK
# postmap hash:/etc/postfix/local_in_senders
# postmap hash:/etc/postfix/local_out_senders
# postmap hash:/etc/postfix/local_domains
这样就定义了ext.org域名里两个用户foo和bar,只允许和internal.foo.com和internel.bar.com 两个内部域的用户来往邮件,对于外部的邮件则没有收或发的能力。如果外部邮件企图给这2个用户发送,则遇到如下错误:
554 5.7.1
如果这2个内部用户要给外部用户发e,将遇到如下错误:
554 5.7.1
目前这样的配置就可以比较完整的实现内部用户的功能需求了。其实这种配置的方法和之前的帖子道理一样,关键得分清楚什么阶段,调用什么restrictions即可。
文章来源: