POSTMULTI(1)                                                      POSTMULTI(1)

名称
       postmulti - Postfix 多实例管理器

概述
   启用多实例管理:

       postmulti -e init [-v]

   迭代模式:

       postmulti -l [-aRv] [-g 组名] [-i 实例名]

       postmulti -p [-av] [-g 组名] [-i 实例名] postfix 命令...

       postmulti -x [-aRv] [-g 组名] [-i 实例名] Unix 命令...

   生命周期管理:

       postmulti -e create [-av] [-g 组名] [-i 实例名] [-G 新组名] [-I 新实例名]
       [参数=值 ...]

       postmulti -e import [-av] [-g 组名] [-i 实例名] [-G 新组名] [-I 新实例名]
       [config_directory=/路径]

       postmulti -e destroy [-v] -i 实例名

       postmulti -e deport [-v] -i 实例名

       postmulti -e enable [-v] -i 实例名

       postmulti -e disable [-v] -i 实例名

       postmulti -e assign [-v] -i 实例名 [-I 新实例名] [-G 新组名]

描述
       通过 postmulti(1) 命令,管理员可以在单台主机上管理多个 Postfix 实例。

       该命令提供两种基本操作模式:在迭代模式下,可为多个实例执行相同命令;在生命周期管理模式下,可添加/删除实例或修改实例的多实例状态。

       由于每种模式都有独立的命令语法,下文将分别说明。

背景知识
       多实例配置包含一个主 Postfix 实例和若干辅助实例,其中辅助实例的配置目录路径记录在主实例的 main.cf 文件中。所有实例共享程序文件和文档,但各自拥有独立的配置、队列和数据目录。

       当前仅默认 Postfix 实例可作为多实例配置中的主实例。若 MAIL_CONFIG 环境变量指向非默认配置目录,postmulti(1) 命令会报错退出(暂不支持通过 -c 选项选择其他主实例)。

       更多细节请参考 MULTI_INSTANCE_README 教程。

迭代模式
       此模式下,postmulti 会依次对所有 Postfix 实例执行相同操作。若未启用多实例支持,则仅对主实例执行命令。

       支持以下命令选项:

实例选择
       -a     对所有实例执行操作(默认行为)

       -g 组名
              仅对指定组的成员执行操作

       -i 实例名
              仅对指定实例执行操作(可接受实例名称或配置目录绝对路径)。使用 "-" 表示主实例

       -R     反转迭代顺序(适用于更新多实例系统时,"接收"实例应先于"发送"实例启动)
              (不可与 -p 同时使用)

列表模式
       -l     列出所有 Postfix 实例,显示实例名称、所属组、启用状态和配置目录

Postfix 封装模式
       -p postfix 命令
              通过 postfix(1) 执行命令,实现 postfix-wrapper(5) 接口:
              
              o  对"启动类"命令(由 postmulti_start_commands 参数定义),会为禁用实例执行"postfix check"
              
              o  对"停止类"命令(由 postmulti_stop_commands 定义),会反转迭代顺序并跳过禁用实例
              
              o  对"reload"等需要运行实例的命令(由 postmulti_control_commands 定义),会跳过禁用实例
              
              o  对"status"等无需运行实例的命令,会执行所有实例

              也可交互式操作特定实例/组,例如启动"msa"组的所有实例:
              
                     # postmulti -g msa -p start

命令模式
       -x Unix 命令
              为所有实例执行指定命令,并自动设置以下环境变量:
              MAIL_CONFIG, command_directory, daemon_directory, 
              config_directory, queue_directory, data_directory, 
              multi_instance_name, multi_instance_groupmulti_instance_enable

其他选项
       -v     启用详细日志(可重复使用提高详细程度)

生命周期管理模式
       通过 -e 选项可添加/删除实例,或修改现有实例的多实例状态。

       支持以下选项:

现有实例选择
       -a     创建/导入时,将新实例置于辅助实例列表首位

       -g 组名
              创建/导入时,将新实例置于指定组的首个成员之前

       -i 实例名
              创建/导入时,将新实例置于指定实例之前
              其他操作中,指定目标实例("-"表示主实例)

名称分配
       -I 实例名
              为实例分配新名称(必须以"postfix-"开头)
              ("-"表示无名实例)

       -G 组名
              为实例分配新组名

实例操作
       -e 操作
              支持以下操作:

              init   初始化多实例管理(必需步骤),会更新主实例的 main.cfmulti_instance_wrapper = ${command_directory}/postmulti -p --
                     multi_instance_enable = yes

              create 创建新实例并添加到主实例的 multi_instance_directories 参数
                     建议通过 -I 指定实例名(用于生成默认目录路径),-G 指定组名
                     新实例的 main.cf 会继承主实例的共享文件位置参数
                     对无名实例需手动设置 syslog_name 以生成唯一日志标识
                     可通过参数指定目录路径:
                     # postmulti -I postfix-mumble -G mygroup -e create \
                             config_directory=/my/config/dir \
                             queue_directory=/my/queue/dir \
                             data_directory=/my/data/dir
                     若目录已存在且包含 main.cfmaster.cf,则自动转为导入操作

              import 将现有实例纳入多实例管理(添加到主实例的 multi_instance_directories 列表)
                     可通过 -I 指定新名称(用于生成默认配置目录路径),-G 指定组名
                     用 config_directory=/路径 覆盖默认路径

              destroy 销毁辅助实例(需先禁用且队列为空)
                     会从主实例配置中移除该实例,并清理其数据/队列/配置目录
                     (主实例的 main.cfmaster.cf 会被强制删除)
                     若目录包含其他文件可能无法完全删除(会发出警告)
                     注意:此操作会永久删除文件,请确认目录设置正确

              deport 将实例移出多实例管理(仅从主实例的 multi_instance_directories 列表移除)
                     不删除任何文件

              assign 重命名实例或修改组名
                     用 -G - 清除组名,-I - 清除实例名
                     无名实例需手动设置合适的 syslog_name

              enable 启用实例(设置实例的 main.cfmulti_instance_enable = yes)

              disable 禁用实例(该实例不会被"postfix start"等命令操作)
                     但仍可通过"postfix -c config-directory start"单独启动

其他选项
       -v     启用详细日志(可重复使用提高详细程度)

环境变量
       执行命令时,postmulti(1) 会设置以下变量:

       MAIL_VERBOSE
              当存在 -v 选项时设置

       MAIL_CONFIG
              实例配置目录路径

配置参数
       config_directory (参见 'postconf -d' 输出)
              Postfix 配置文件的默认位置(main.cfmaster.cfdaemon_directory (参见 'postconf -d' 输出)
              包含 Postfix 守护程序和支持程序的目录

       import_environment (参见 'postconf -d' 输出)
              特权 Postfix 进程从非 Postfix 父进程继承的环境变量列表

       multi_instance_directories (空)
              非默认 Postfix 配置目录列表(这些目录属于与主实例共享程序文件的附加实例)

       multi_instance_group (空)
              实例所属组名

       multi_instance_name (空)
              实例名称

       multi_instance_enable (否)
              是否允许通过多实例管理器启停该实例

       postmulti_start_commands (start)
              被视作"启动"命令的 postfix(1) 命令列表

       postmulti_stop_commands (参见 'postconf -d' 输出)
              被视作"停止"命令的 postfix(1) 命令列表

       postmulti_control_commands (reload flush)
              被视作"控制"命令的 postfix(1) 命令列表(作用于运行中的实例)

       syslog_facility (mail)
              Postfix 日志的 syslog 设施

       syslog_name (参见 'postconf -d' 输出)
              日志中进程名的前缀(如"smtpd"会变为"prefix/smtpd")

       Postfix 3.0 及以上版本支持:

       meta_directory (参见 'postconf -d' 输出)
              多实例共享的非可执行文件位置(如 postfix-files、dynamicmaps.cf 等)

       shlib_directory (参见 'postconf -d' 输出)
              Postfix 动态链接库位置(libpostfix-*.so)
相关文件
       $meta_directory/main.cf.proto - 标准配置文件模板
       $meta_directory/master.cf.proto - 标准配置文件模板  
       $daemon_directory/postmulti-script - 生命周期管理辅助脚本

参见
       postfix(1) - Postfix 控制程序
       postfix-wrapper(5) - Postfix 多实例 API 规范
       MULTI_INSTANCE_README - 多实例管理指南

历史版本
       postmulti(1) 命令随 Postfix 2.6 版本引入

授权条款
       使用本软件需遵循 Secure Mailer 授权协议

作者信息
       Victor Duchovni
       Morgan Stanley(摩根士丹利)

       Wietse Venema
       IBM T.J. Watson 研究中心
       美国纽约州约克镇高地 704 号信箱(邮编:10598)

       Wietse Venema
       Google 公司
       美国纽约州纽约市第八大道 111 号(邮编:10011)

                                                                  POSTMULTI(1)