zoukankan      html  css  js  c++  java
  • 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用来检查客户端提供的邮件地址,因此,其访问表中可以使用完整的邮件地址,如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

  • 相关阅读:
    Path类
    C#集合
    阿里巴巴2013年实习生笔试题B
    阿里巴巴2013年实习生笔试题A
    腾讯2014年校园招聘笔试试题
    腾讯技术类校园招聘笔试试题
    腾讯2013年实习生笔试题
    腾讯2012年实习生笔试题
    hdu1505
    hdu1506
  • 原文地址:https://www.cnblogs.com/fklin/p/6673569.html
Copyright © 2011-2022 走看看