MASTER(8) MASTER(8)
名称
master - Postfix 主控进程
概述
master [-Dditvw] [-c config_dir] [-e exit_time]
描述
master(8) 守护进程是 Postfix 系统的核心进程,负责按需启动其他服务进程:
• 网络邮件收发进程
• 本地邮件投递进程
这些子进程会根据服务需求动态创建,每个服务类型都有可配置的最大进程数限制。
Postfix 子进程会在以下情况自动终止:
1. 空闲时间超过配置阈值
2. 完成指定数量的服务请求
例外情况:
• 常驻队列管理器
• 地址验证服务器
• TLS 会话缓存服务
• 伪随机数生成服务
master(8) 的行为由 master.cf 配置文件控制,具体配置语法详见 master(5)。
命令行选项:
-c config_dir
指定配置文件目录,替代默认配置目录。该设置会同时影响:
• main.cf
• master.cf
以及其他 Postfix 守护进程的配置文件
-D 初始化后启动调试器。调试命令由 main.cf 中的
debugger_command 参数定义
-d 调试模式:
• 保持标准输入/输出/错误流
• 保留控制终端
注意:仅限调试使用
-e exit_time
设置主进程生存时间(秒)。子进程会在完成当前任务后自动退出。
-i init 模式:
• 不作为会话或进程组领导
• 类似 -s 选项,保留标准输出
使 "maillog_file = /dev/stdout" 配置生效
注意:仅当进程 ID = 1 时可用
(Postfix 3.3+ 版本功能)
-s 保留标准输出,使 "maillog_file = /dev/stdout" 配置生效
(Postfix 3.4+ 版本功能)
-t 测试模式:
通过检查 master.pid 锁文件状态返回退出码:
• 0 - 主进程未运行
• 非0 - 主进程正在运行
-v 启用详细日志(调试用途)。可通过重复使用增加日志详细程度:
• -v 基本调试信息
• -vv 详细调试信息
• -vvv 最详细调试信息
-w 前台等待模式:
• 后台初始化主进程
• 前台虚拟进程监控初始化状态
返回码说明:
• 0 - 初始化成功
• 非0 - 初始化失败或超时
(Postfix 2.10+ 版本功能)
信号处理:
SIGHUP 重载配置(如执行 "postfix reload" 命令时):
1. 重新读取配置文件
2. 对服务变更的处理:
• 已移除服务 - 立即终止相关进程
• 现有服务 - 优雅终止(完成当前任务后退出)
注意:配置变更仅影响新请求
SIGTERM 终止信号(如执行 "postfix abort" 命令时):
1. 向所有子进程转发终止信号
2. 主进程立即退出
注意:正常关闭应使用 "postfix stop" 命令
诊断
• 日志输出:syslogd(8) 或 postlogd(8)
• 退出状态:
- 0 成功
- 非0 失败(包括后台初始化失败)
环境变量
MAIL_DEBUG
初始化后启动调试器,调试命令由
main.cf 中的 debugger_command 参数定义
MAIL_CONFIG
Postfix 配置文件目录
配置参数
注意:与其他 Postfix 守护进程不同,master(8) 服务:
1. 不会自动重载 main.cf 配置变更
2. 从不自动重载 master.cf 配置变更
配置更新后必须执行 "postfix reload" 命令
资源与速率控制
default_process_limit (默认值:100)
单服务的最大并发子进程数:
• 适用于所有未单独配置的服务
• 实际限制取决于服务类型
max_idle (默认值:100秒)
子进程空闲超时设置:
• 超过设定时间无新请求则自动终止
• 常驻服务不受此限制
max_use (默认值:100)
子进程生命周期控制:
• 处理指定数量请求后自动重启
• 防止内存泄漏等问题
service_throttle_time (默认值:60秒)
故障服务保护机制:
• 异常服务重启间隔
• 避免故障服务频繁重启
(Postfix 2.6+ 版本新增参数)
master_service_disable (默认值:空)
服务禁用功能:
• 按服务类型禁用(如:smtp)
• 按"服务名+类型"组合禁用(如:smtp/inet)
示例:
smtp/inet # 禁用SMTP网络服务
pickup/fifo # 禁用本地pickup服务
其他控制参数
config_directory (查看 'postconf -d' 输出)
配置文件默认存储路径:
• main.cf
• master.cf
daemon_directory (查看 'postconf -d' 输出)
可执行文件目录:
• 包含所有 Postfix 守护程序
• 存放支持工具
debugger_command (默认值:空)
调试器启动命令:
• 配合 -D 参数使用
• 示例:gdb -batch -x debug.cmd $daemon_directory/$process_name $process_id
inet_interfaces (默认值:all)
网络监听接口:
• all - 监听所有接口
• loopback-only - 仅本地回环
• 可指定具体IP地址
inet_protocols (查看 'postconf -d' 输出)
网络协议支持:
• ipv4 - 仅IPv4
• ipv6 - 仅IPv6
• all - 双栈支持
import_environment (查看 'postconf -d' 输出)
环境变量继承规则:
1. 从父进程继承的变量白名单
2. 格式:VARNAME 或 VARNAME=value
mail_owner (默认值:postfix)
运行身份:
• 邮件队列所有者
• 大多数守护进程的运行账户
process_id (只读)
进程标识:
• 获取当前 Postfix 进程的PID
• 常用于调试脚本
process_name (只读)
进程名称:
• 显示当前执行的程序名
• 如:qmgr、smtpd等
queue_directory (查看 'postconf -d' 输出)
邮件队列存储路径:
• 默认:/var/spool/postfix
• 包含各种队列子目录
syslog_facility (默认值:mail)
日志分类:
• 指定syslog设施
• 常用值:mail, local0等
syslog_name (查看 'postconf -d' 输出)
日志前缀:
• 修改进程名在日志中的显示
• 示例:postfix/smtpd
(Postfix 3.3+ 版本新增参数)
service_name (只读)
服务标识:
• 显示master.cf中定义的服务名
• 格式:transport/type(如:smtp/inet)
(Postfix 3.6+ 版本新增参数)
known_tcp_ports (默认值:lmtp=24, smtp=25, smtps=submissions=465, submission=587)
端口映射:
• 避免查询/etc/services
• 格式:service=port
• 支持别名(如:smtps=submissions)
文件
重要文件路径(可通过 "postconf" 命令查询实际值):
$config_directory/main.cf
• 主配置文件
• 包含全局参数设置
$config_directory/master.cf
• 服务配置文件
• 定义所有守护进程的运行参数
$queue_directory/pid/master.pid
• 主进程锁文件
• 存储主进程PID
$data_directory/master.lock
• 备用锁文件
• 确保单实例运行
参见
qmgr(8)
• 核心队列管理器
• 负责邮件投递调度
verify(8)
• 地址验证服务
• 校验收件人有效性
master(5)
• master.cf 配置文件语法详解
• 服务定义规范
postconf(5)
• main.cf 配置参考手册
• 所有参数说明
postlogd(8)
• Postfix 日志服务
• 替代传统syslog的方案
syslogd(8)
• 系统日志服务
• 传统日志记录方式
许可证
• 必须随软件分发 Secure Mailer 许可证
• 完整的许可条款包含在Postfix发行包中
作者
Wietse Venema
• 初始版本开发者
• IBM T.J. Watson 研究中心
通讯地址:
P.O. Box 704
Yorktown Heights, NY 10598, USA
• 当前维护者
• Google, Inc.
办公地址:
111 8th Avenue
New York, NY 10011, USA
MASTER(8)