4.1.1 master.c:master模块主程序--master.cf配置文件

来源:互联网 发布:ubuntu 16.04安装 分区 编辑:程序博客网 时间:2024/04/30 01:15

postfix使用master.cf文件配置模块信息。下面是一个典型的master.cf文件:

 

#==========================================================================

# service type  private unpriv  chroot wakeup  maxproc command + args

#               (yes)   (yes)  (yes)   (never) (100)

#==========================================================================

smtp     inet  n       -      n       -       -      smtpd

pickup   fifo  n      -       n       60     1       pickup

cleanup  unix  n       -      n       -       0      cleanup

qmgr     fifo  n       -      n       300     1      qmgr

smtp     unix  -       -      n       -       -      smtp

rewrite  unix  -       -      n       -       -      trivial-rewrite

local    unix  -       n      n       -       -      local

anvil    unix  -       -      n       -       1      anvil

error    unix  -       -      n       -       -      error

retry    unix  -       -      n       -       -      error

bounce   unix  -       -      n       -       0      bounce

defer    unix  -       -      n       -       0      bounce

 

该文件每一行代表一个模块的配置。“-”符号表示使用默认配置,各列含义如下:

 

service:服务名称。

 

type:监听类型:有inet(即socket)、fifo、unix(unix域协议)三种。对于需要进行网络服务的模块,比如用作smtp协议解析的smtpd模块,使用inet协议。不需要提供网络解析的,使用fifo进程间通信或Unix域协议。postfix在父子进程内部通信中使用管道。对于pickup和qmgr这两种使用trigger_server.c做执行模板的模块,通信方式为fifo,其他均为unix。在我们讨论到的模块中,会使用所有这三种通信方式。

 

private:模块是否允许外界访问。

 

unpriv:是否使用非特权账户。

 

chroot:是否改变组件根目录。

 

wakeup:唤醒间隔。以上服务中只有pickup和qmgr模块需要定时唤醒。

 

maxproc:进程数上限。默认为100,0代表无限制。在上面的配置中,smtpd模块(即smtp服务器)和smtp模块(smtp MDA)的默认进程上限都是100。pickup和qmgr都只会有1个进程在运行。

 

command + args:运行服务的命令。这里我们可以将参数传递给各个模块。因为postfix的内部模块用户一般是不直接启动的。比如用户会运行service postfix start或postfix start,但不会直接运行./master。这里便可以设置启动参数。

 

关于该文件要说明以下3点:

 

1 模块定义的顺序就是其挂载服务回调函数的顺序。因为文件中默认的模块定义顺序是smtpd->pickup->cleanup->qmgr,所以模块挂载服务回调函数的顺序也是这个。详情见4.1.3.1节

 

2 程序中一个模块的名称是由模块名和服务类型共同确定的。比如上面例子中,有两个名为smtp的模块,inet类型的是smtpd模块,unix类型的是smtp模块。

 

3 master.cf中服务名称的方式:

 

(1)直接指定名称

如smtpd模块的名称smtp。

 

(2)ip地址:端口号方式,如:

xxx.xxx.xxx.xxx:3000

表示在本地ip地址为xxx.xxx.xxx.xxx的网卡的3000端口上提供服务。

1.9中为postfix配置ClamAV杀毒程序时就采用了这样的配置:

127.0.0.1:10026 inet n - n - 16 smtpd

 

(3)直接给出端口号,表示本机所有接口(各个网卡上配置的所有ip地址)的该端口的服务组件。如直接将服务名写为3000。

0 0
原创粉丝点击