ITPub博客

首页 > Linux操作系统 > Linux操作系统 > postfix 配置(1)

postfix 配置(1)

原创 Linux操作系统 作者:bontonpan 时间:2009-02-16 12:14:39 0 删除 编辑
4.1 postfix的配置文件结构
      postfix的配置文件位于/etc/postfix下,安装完postfix以后,我们可以通过ls命令查看postfix的配置文件:
      [root@mail postfix]# ls
  install.cf main.cf master.cf postfix-script.

      这四个文件就是postfix最基本的配置文件,它们的区别在于:
      mail.cf:是postfix主要的配置文件。
      Install.cf:包含安装过程中安装程序产生的postfix初始化设置。
  master.cf:是postfix的master进程的配置文件,该文件中的每一行都是用来配置postfix的组件进程的运行方式。
  postfix-script:包装了一些postfix命令,以便我们在linux环境中安全地执行这些postfix命令。

  4.2 postfix的基本配置
  postfix大约有100个配置参数,这些参数都可以通过main.cf 指定。配置的格式是这样的,用等号连接参数和参数的值。如:
  myhostname = mail.mydomain.com
  等号的左边是参数的名称,等号的右边是参数的值; 当然,我们也可以在参数的前面加上$来引用该参数,如:
  myorigin = $myhostname
   虽然postfix有100个左右的参数,但是postfix为大多数的参数都设置了缺省值,所以在让postfix正常为你服务之前,你只需要配置为 数不多的几个参数。下面我们一起来看一看这些基本的postfix参数。需要注意的是,一旦你更改了main.cf文件的内容,则必须运行postfix reload命令使其生效。

  1. myorigin
  myorigin参数指明发件人所在的域名。如果你的用户的邮件地址为user@domain.com, 则该参数指定@后面的域名。缺省地,postfix使用本地主机名作为myorigin,但是建议你最好使用你的域名,因为这样更具有可读性。比如:安装 postfix的主机为mail.domain.com则我们可以这样指定myorigin:
  myorigin = domain.com
  当然我们也可以引用其他参数,如:
      myorigin = $mydomain 
     
  2. mydestination
  mydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就
   是你的postfix系统要接收什么样的邮件。比如:你的用户的邮件地址为user@domain.com, 也就是你的域为domain.com, 则你就需要接收所有收件人为user_name@domain.com的邮件。与myorigin一样,缺省地,postfix使用本地主机名作为 mydestination。如:
        mydestination = $mydomain
        mydestination = domain.com
     
  3. notify_classes
  在postfix系统中,必须指定一个postfix系统管理员的别名指向一个用户,
  只有这样,在用户遇到问题时才有报告的对象,postfix也才能将系统的问题报告给管理员。notify_classes参数就是用来指定向postfix管理员报告错误时的信息级别。共有以下几种级别: 

  bounce:将不可以投递的邮件的拷贝发送给postfix管理员。出于个人隐私的缘故,该邮件的拷贝不包含信头。 

  2bounce:将两次不可投递的邮件拷贝发送给postfix管理员。

  delay:将邮件的投递延迟信息发送给管理员,仅仅包含信头。

  policy:将由于UCE规则限制而被拒绝的用户请求发送给postfix管理员,包含整个SMTP会话的内容。

  protocol:将协议的错误信息或用户企图执行不支持的命令的记录发送给postfix管理员。同样包含整个SMTP会话的内容。

  resource:将由于资源错误而不可投递的错误信息发送给postfix管理员,比如:队列文件写错误等等。 

  software:将由于软件错误而导致不可投递的错误信息发送给postfix管理员。

  缺省值为:
  notify_classes = resource, software

      4.myhostname
  myhostname 参数指定运行postfix邮件系统的主机的主机名。缺省地,该值被设定为本地机器名。你也可以指定该值,需要注意的是,要指定完整的主机名。如:
      myhostname = mail.domain.com 

      5.mydomain
  mydomain参数指定你的域名,缺省地,postfix将myhostname的第一部分删除而作为mydomain的值。你也可以自己指定该值,如:
  mydomain = domain.com

  6.mynetworks
  mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问。你可以用标准的A、B、C类网络地址,也可以用CIDR(无类域间路由)地址来表示,如:
  192.168.1.0/24
  192.168.1.0/26
   
   7.inet_interfaces
   inet_interfaces 参数指定postfix系统监听的网络接口。缺省地,postfix监听
  所有的网络接口。如果你的postfix运行在一个虚拟的ip地址上,则必须指定其监听的地址。如:
     inet_interfaces = all
     inet_interface = 192.168.1.1

  4.3 postfix的UCE(unsolicited commercial email)控制
  所谓UCE控制就是指控制postfix接收或转发来自于什么地方的邮件。

  缺省地,postfix转发符合以下条件的邮件:
  * 来自客户端ip地址符合$mynetworks的邮件。
  * 来自客户端主机名符合$relay_domains及其子域的邮件。
  * 目的地为$relay_domains及其子域的邮件。

  缺省地,postfix接受符合以下条件的邮件:
  * 目的地为$inet_interfaces的邮件。
  * 目的地为$mydestination的邮件。
  * 目的地为$virtual_maps的邮件。
  但是我们也可以通过下面的规则来实现更强大的控制功能。

  1. 信头过滤
  通过header_checks参数限制接收邮件的信头的格式,如果符合指定的格式,则拒绝接收该邮件。可以指定一个或多个查询列表,如果新邮件的信头符合列表中的某一项则拒绝该接收邮件。如:
  header_checks = regexp:/etc/postfix/header_checks 
  header_checks = pcre:/etc/postfix/header_checks
  缺省地,postfix不进行信头过滤。

  2.客户端主机名/地址限制
  通过smtpd_client_restrictions参数限制可以向postfix发起SMTP 连接的客户端的主机名或ip地址。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:

  reject_unknown_client:如果客户端的ip地址在DNS中没有PTR记录则拒绝转发该客户端的连接请求。可以用 unknown_client_reject_code参数指定返回给客户机的错误代码(缺省为450)。如果你有用户没有作DNS记录则不要启用该选 项。

  permit_mynetworks:如果客户端的ip地址符合$mynetworks参数定义的范围则接受该客户端的连接请求,并转发该邮件。

  check_client_access  maptype:mapname:根据客户端的主机名、父域名、ip地址或属于的网络搜索access数据库。如果搜索的结果为REJECT 或者 "[45]XX text" 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY 或数字则接受该客户端的连接请求,并转发该邮件。。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为 554)。

  reject_maps_rbl:如果客户端的网络地址符合$maps_rbl_domains参数的值则拒绝该客户端的连接请求。可以用maps_rbl_reject_code参数指定返回给客户机的错误代码(缺省为554)。

  示例:
      smtpd_client_restrictions = hash:/etc/postfix/access, reject_maps_rbl 
          smtpd_client_restrictions = permit_mynetworks, reject_unknown_client
     该参数的缺省值为:
     smtpd_client_restrictions =
     也即接收来自任何客户端的SMTP连接。

  3. 是否请求HELO命令
  可以通过smtpd_helo_required参数指定客户端在SMTP会话的开始是否发
  送一个HELO命令。你可以指定该参数的值为yes或no。缺省值为:
      smtpd_helo_required = no
  
  4. HELO主机名限制
  可以通过smtpd_helo_restrictions参数指定客户端在执行HELO命令时发送
  给postfix的主机名。缺省地,postfix接收客户端发送的任意形式的主机名。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:
  reject_invalid_hostname:如果HELO命令所带的主机名参数不符合语法规范则拒绝客户机的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为501)。

  permit_naked_ip_address:RFC要求客户端的HELO命令包含的ip地址放在方括号内,你可以用permit_naked_ip_address参数取消该限制。因为有的mail客户端不遵守该RFC的规定。

  reject_unknown_hostname:如果客户端执行HELO命令时的主机名在DNS中没有相应的A 或 MX 记录则拒绝该客户端的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为450)。

  reject_non_fqdn_hostname:如果客户端执行HELO命令时的主机名不是RFC规定的完整的域名则拒绝客户端的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为504)。

  check_helo_access  maptype:mapname:根据客户端HELO的主机名、父域名搜索access数据库。如果搜索的结果为REJECT 或者 "[45]XX text" 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY 或数字则接受该客户端的连接请求。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。

  示例:
  smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname

  5. RFC 821信头限制
  RFC 821对邮件的信头做了严格的规定,但是广泛使用的sendmail并不支
  持该规定,所以对于该参数我们只能说不,即:
      strict_rfc821_envelopes = no

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11754813/viewspace-553416/,如需转载,请注明出处,否则将追究法律责任。

上一篇: vpn配置 二
下一篇: postfix 配置(2)
请登录后发表评论 登录
全部评论

注册时间:2009-01-30

  • 博文量
    51
  • 访问量
    37107