POSTFIX-TLS(1) POSTFIX-TLS(1)
名称
postfix-tls - Postfix TLS 管理工具
概述
postfix tls 子命令
描述
"postfix tls 子命令" 功能用于在 Postfix SMTP 客户端或服务器中启用机会性 TLS,
并管理 Postfix SMTP 服务器的私钥和证书。
支持以下子命令:
enable-client [-r 随机源]
当所有 SMTP 客户端 TLS 设置均为默认值时,启用 Postfix SMTP 客户端的机会性 TLS。
否则仅建议参数设置而不做实际修改。
通过 随机源 参数可更新 tls_random_source 配置参数值
(通常为 /dev/urandom)。设备路径需添加 dev: 前缀,
EGD 套接字路径需添加 egd: 前缀。
另请参阅 all-default-client 子命令。
enable-server [-r 随机源] [-a 算法] [-b 位数] [主机名...]
创建新的私钥和自签名服务器证书,
当所有 SMTP 服务器 TLS 设置均为默认值时,启用 Postfix SMTP 服务器的机会性 TLS。
否则仅建议参数设置而不做实际修改。
随机源 参数与 enable-client 相同,
其余选项与下文 new-server-key 一致。
另请参阅 all-default-server 子命令。
new-server-key [-a 算法] [-b 位数] [主机名...]
创建新的私钥和自签名服务器证书但不部署。
记录并显示部署新密钥和对应证书所需的命令,
同时输出获取 CA 证书或更新 DNS 所需的 CSR 或 TLSA 记录生成命令。
算法 默认为 rsa,位数 默认为 2048。
选择 ecdsa 算法 时,位数 应为 EC 曲线名称
(默认为 secp256r1,即 prime256v1)。
建议仅使用 secp256r1、secp384r1 或 secp521r1 曲线,
其他曲线可能缺乏广泛兼容性。DSA 密钥已过时且不受支持。
注意:ECDSA 需要 OpenSSL 1.0.0 或更高版本支持。
并非所有客户端都支持 ECDSA,建议同时部署 RSA 和 ECDSA 证书:
ECDSA 用于兼容客户端,RSA 用于其他情况。
如需部署包含中间 CA 的证书链,建议使用 OpenSSL 1.0.2 或更高版本,
早期版本可能无法正确处理多链文件。
首个 主机名 参数将作为自签名证书的主体和颁发者的 CommonName,
所有 主机名 都将列为证书的 DNS 备用名称。
未指定时默认使用 myhostname main.cf 参数值。
生成的 RSA 私钥和证书文件命名为:
key-年月日-时分秒.pem 和 cert-年月日-时分秒.pem
(UTC 时间)。ECDSA 文件则以 eckey- 和 eccert- 开头。
通过 DANE 部署新密钥前,请先更新 DNS 的 TLSA 记录,
等待次级域名服务器更新及远程 DNS 缓存过期。
部署 CA 证书前,请确保证书链文件包含所有必需的中间 CA 证书,
且服务器证书必须位于链文件首位。部署时需覆盖原始自签名证书文件。
new-server-cert [-a 算法] [-b 位数] [主机名...]
功能类似 new-server-key,但不生成新私钥,
而是复制当前部署的私钥到新密钥文件。
若已发布 DANE TLSA "3 1 1" 或 "3 1 2" 记录,则无需更新 DNS。
仅当无相同算法密钥配置时,才使用 算法 和 位数 参数。
此命令很少使用,因为生成的自签名证书有效期为 100 年,
实际可能因量子计算机发展而过时。
最可能的使用场景是系统主机名变更时,
使证书中的名称与新主机名匹配(DANE "3 1 1" 无需此操作,
但某些非 DANE 客户端可能因此产生警告或拒绝连接)。
deploy-server-cert 证书文件 密钥文件
部署指定证书和私钥(通常由上述命令生成,
相关命令会记录并显示完整部署指令)。
部署后可手动删除旧密钥和证书。
文件路径可相对于 Postfix 配置目录。
output-server-csr [-k 密钥文件] [主机名...]
向标准输出写入指定密钥文件的证书签名请求 (CSR)。
密钥文件 可以是绝对路径、相对于 $config_directory 的路径,
或支持的密钥算法名称(参见 "postconf -T public-key-algorithms")。
后者使用 main.cf 对应参数定位文件。
默认值为 rsa。
可指定零或多个 主机名,
默认为 myhostname main.cf 参数值。
output-server-tlsa [-h 主机名] [密钥文件...]
向标准输出写入适用于 25 端口 SMTP 服务器的
DANE TLSA 资源记录集,基于指定密钥文件。
默认 主机名 为 myhostname main.cf 参数值。
密钥文件 列表可为绝对路径、相对路径,
或支持的算法名称(参见 "postconf -T public-key-algorithms")。
后者使用对应 Postfix 服务器 TLS 密钥文件参数值。
参数值为空或 none 时不输出该算法记录。
默认包含 rsa 和 ecdsa 两种算法。
辅助命令
all-default-client
当所有 SMTP 客户端 TLS 设置为默认值时返回 0(成功),
否则返回非零值。典型用法:
postfix tls all-default-client &&
postfix tls enable-client
all-default-server
当所有 SMTP 服务器 TLS 设置为默认值时返回 0(成功),
否则返回非零值。典型用法:
postfix tls all-default-server &&
postfix tls enable-server
配置参数
"postfix tls 子命令" 功能会读取或更新以下配置参数。
command_directory (参见 'postconf -d' 输出)
Postfix 管理命令的安装目录。
config_directory (参见 'postconf -d' 输出)
Postfix main.cf 和 master.cf 配置文件的默认位置。
openssl_path (openssl)
OpenSSL 命令行工具 openssl(1) 的路径。
smtp_tls_loglevel (0)
启用 Postfix SMTP 客户端 TLS 活动的额外日志。
smtp_tls_security_level (空)
Postfix SMTP 客户端的默认 TLS 安全级别。
smtp_tls_session_cache_database (空)
可选 Postfix SMTP 客户端 TLS 会话缓存的文件路径。
smtpd_tls_cert_file (空)
Postfix SMTP 服务器 RSA 证书的 PEM 格式文件路径。
smtpd_tls_eccert_file (空)
Postfix SMTP 服务器 ECDSA 证书的 PEM 格式文件路径。
smtpd_tls_eckey_file ($smtpd_tls_eccert_file)
Postfix SMTP 服务器 ECDSA 私钥的 PEM 格式文件路径。
smtpd_tls_key_file ($smtpd_tls_cert_file)
Postfix SMTP 服务器 RSA 私钥的 PEM 格式文件路径。
smtpd_tls_loglevel (0)
启用 Postfix SMTP 服务器 TLS 活动的额外日志。
smtpd_tls_received_header (否)
要求 Postfix SMTP 服务器在 Received: 头中添加
协议、加密算法、客户端证书 CommonName 和颁发者信息。
smtpd_tls_security_level (空)
Postfix SMTP 服务器的 TLS 安全级别。
非空值将覆盖过时的 smtpd_use_tls 和 smtpd_enforce_tls 参数。
tls_random_source (参见 'postconf -d' 输出)
内存中 tlsmgr(8) 伪随机数生成器 (PRNG) 的外部熵源。
参见
master(8) Postfix 主控程序
postfix(1) Postfix 管理接口
参考文档
TLS_README, Postfix TLS 配置与操作指南
许可
本软件需随附 Secure Mailer 许可证。
历史
"postfix tls" 命令随 Postfix 3.1 版本引入。
作者
Viktor Dukhovni
POSTFIX-TLS(1)