POSTMAP(1)                                                          POSTMAP(1)

名称
       postmap - Postfix 查找表管理工具

概要
       postmap [-bfFhimnNoprsuUvw] [-c config_dir] [-d key] [-q key]
               [file_type:]file_name ...

描述
       postmap(1) 命令用于创建、查询或更新一个或多个 Postfix 查找表。

       如果目标文件不存在,则会创建与源文件具有相同组权限和其他读取权限的新文件。

       在表更新过程中,系统会推迟信号传递,并对整个表施加独占的咨询锁,以避免其他进程访问时出现意外情况。

输入文件格式
       查找表输入文件的格式如下:

       o      表项格式为:
                   key 空格 value

       o      空行和仅包含空格的行会被忽略,以 "#" 开头的行也会被忽略。

       o      逻辑行以非空格文本开头。以空格开头的行视为逻辑行的续行。

       keyvalue 会按原样处理,但会去除首尾的空格。从 Postfix 3.2 开始,可以通过用双引号 `"' 包裹键名来支持查找键中的空格。在双引号内,可以使用反斜杠 `\' 来转义双引号 `"' 和反斜杠本身。

       使用 -F 选项时,value 必须指定一个或多个以逗号和/或空格分隔的文件名。postmap(1) 会将这些文件的内容连接起来(文件间插入换行符),并存储 base64 编码的结果而非原始值。

       当 key 包含电子邮件地址信息时,如果本地部分需要符合 RFC 5322 规范,则应使用双引号包裹。例如,包含 ";" 的本地部分,或以 "." 开头或结尾的本地部分。

       默认情况下,查找键会被转换为小写以实现不区分大小写的查找。从 Postfix 2.3 开始,这种大小写转换仅适用于键值为固定大小写字符串的表类型,如 btree:、dbm: 或 hash:。在早期版本中,即使是支持混合大小写匹配的表类型(如 regexp: 和 pcre:)也会进行大小写转换,这会导致 $number 替换时丢失信息。

命令行参数
       -b     启用消息正文查询模式。当使用 "-q -" 从标准输入读取查找键时,将输入视为 RFC 5322 格式的电子邮件。每行正文内容都会成为一个查找键。

              默认情况下,-b 选项从第一个非头部行开始生成查找键,直到消息结束。要模拟 body_checks(5) 处理,需配合 -m 选项启用 MIME 解析。这样 -b 选项就不会为附件 MIME 头和 message/* 头生成正文样式的查找键。

              注意:当 "smtputf8_enable = yes" 时,-b 选项会禁用查询键和查找结果的 UTF-8 语法检查。可使用 -U 选项强制进行 UTF-8 语法检查。

              此功能在 Postfix 2.6 及更高版本中可用。

       -c config_dir
              从指定目录而非默认配置目录读取 main.cf 配置文件。

       -d key
              在指定映射中搜索 key 并从每个映射中删除一个条目。找到请求的信息时退出状态为零。

              如果指定键值为 -,则从标准输入流读取键值。当至少找到一个请求的键时退出状态为零。

       -f     在创建或查询表时不将查找键转换为小写。

              在 Postfix 2.3 及更高版本中,此选项对正则表达式表无效,因为正则表达式表通过模式附加标志来控制大小写转换。

       -F     查询或列出映射表时,对每个值进行 base64 解码。从源文件创建映射表时,将每个值视为文件名列表,连接这些文件的内容,并存储 base64 编码的结果而非原始值(详见输入文件格式)。

              此功能在 Postfix 3.4 及更高版本中可用。

       -h     启用消息头查询模式。当使用 "-q -" 从标准输入读取查找键时,将输入视为 RFC 5322 格式的电子邮件。每个逻辑头行都会成为一个查找键,多行头则成为一个包含一个或多个换行符的查找键。

              默认情况下,-h 选项会生成查找键直到第一个非头部行。要模拟 header_checks(5) 处理,需配合 -m 选项启用 MIME 解析。这样 -h 选项也会为附件 MIME 头和 message/* 头生成头部样式的查找键。

              注意:当 "smtputf8_enable = yes" 时,-b 选项会禁用查询键和查找结果的 UTF-8 语法检查。可使用 -U 选项强制进行 UTF-8 语法检查。

              此功能在 Postfix 2.6 及更高版本中可用。

       -i     增量模式。从标准输入读取条目,不截断现有数据库。默认情况下,postmap(1) 会从 file_name 中的条目创建新数据库。

       -m     配合 "-b" 和 "-h" 选项启用 MIME 解析。

              此功能在 Postfix 2.6 及更高版本中可用。

       -N     包含终止查找键和值的空字符。默认情况下,postmap(1) 会遵循主机操作系统的默认行为。

       -n     不包含终止查找键和值的空字符。默认情况下,postmap(1) 会遵循主机操作系统的默认行为。

       -o     处理非 root 用户拥有的输入文件时不释放 root 权限。默认情况下,postmap(1) 会放弃 root 权限并以源文件所有者的身份运行。

       -p     创建新文件时不继承输入文件的访问权限,而是使用默认权限(模式 0644)创建。

       -q key
              在指定映射中搜索 key 并将找到的第一个值写入标准输出。找到请求的信息时退出状态为零。

              注意:此操作仅执行指定键的单一查询,不会像 access(5)canonical(5)transport(5)virtual(5) 等 Postfix 表驱动功能那样对键的子串进行迭代查询。

              如果指定键值为 -,则从标准输入流读取键值,并为每个找到的键输出一行 key value。当至少找到一个请求的键时退出状态为零。

       -r     更新表时不提示现有条目的更新尝试,直接执行更新。

       -s     检索所有数据库元素,并为每个元素输出一行 key value。元素按数据库顺序而非原始输入顺序显示。

              此功能在 Postfix 2.2 及更高版本中可用,但并非所有数据库类型都支持。

       -u     禁用 UTF-8 支持。当 "smtputf8_enable = yes" 时默认启用 UTF-8 支持,要求键和值都是有效的 UTF-8 字符串。

       -U     当 "smtputf8_enable = yes" 时,强制对 -b-h 选项进行 UTF-8 语法检查。

       -v     启用详细日志记录用于调试。多个 -v 选项会增加详细程度。

       -w     更新表时不提示现有条目的更新尝试,直接忽略这些尝试。

       参数:

       file_type
              数据库类型。使用 "postconf -m" 命令可查看支持的类型。

              postmap(1) 命令可查询任何支持的文件类型,但只能创建以下文件类型:

              btree  输出文件为 btree 文件,名为 file_name.db。适用于支持 db 数据库的系统。

              cdb    输出文件为单个文件,名为 file_name.cdb。适用于支持 cdb 数据库的系统。

              dbm    输出为两个文件,名为 file_name.pagfile_name.dir。适用于支持 dbm 数据库的系统。

              fail   始终返回失败的查找表。表名仅用于日志记录,此表用于简化 Postfix 错误测试。

              hash   输出文件为哈希文件,名为 file_name.db。适用于支持 db 数据库的系统。

              lmdb   输出为基于 btree 的文件,名为 file_name.lmdblmdb 支持不同进程的并发读写,与其他基于文件的表不同。适用于支持 lmdb 数据库的系统。

              sdbm   输出为两个文件,名为 file_name.pagfile_name.dir。适用于支持 sdbm 数据库的系统。

              未指定 file_type 时,使用 default_database_type 配置参数指定的数据库类型。

       file_name
              重建数据库时查找表源文件的名称。

诊断
       问题会记录到标准错误流和 syslogd(8) 或 postlogd(8)。无输出表示未发现问题。重复条目会被跳过并标记警告。

       postmap(1) 在成功时(包括成功的 "postmap -q" 查询)以零退出状态终止,失败时以非零退出状态终止。

环境
       MAIL_CONFIG
              包含 Postfix 配置文件的目录。

       MAIL_VERBOSE
              启用详细日志记录用于调试。

配置参数
       以下 main.cf 参数与此程序特别相关。下文仅提供参数摘要,详见 postconf(5)berkeley_db_create_buffer_size (16777216)
              创建 Berkeley DB 哈希或 btree 表的程序的每表 I/O 缓冲区大小。

       berkeley_db_read_buffer_size (131072)
              读取 Berkeley DB 哈希或 btree 表的程序的每表 I/O 缓冲区大小。

       config_directory (参见 'postconf -d' 输出)
              Postfix main.cfmaster.cf 配置文件的默认位置。

       default_database_type (参见 'postconf -d' 输出)
              newaliases(1)postalias(1)postmap(1) 命令使用的默认数据库类型。

       import_environment (参见 'postconf -d' 输出)
              特权 Postfix 进程从非 Postfix 父进程导入的环境变量列表,或 name=value 形式的环境覆盖。

       smtputf8_enable (yes)RFC 6531RFC 6532RFC 6533 描述的协议启用初步 SMTPUTF8 支持。

       syslog_facility (mail)
              Postfix 日志的 syslog 设施。

       syslog_name (参见 'postconf -d' 输出)
              在 syslog 记录中进程名前添加的前缀,例如 "smtpd" 变为 "prefix/smtpd"。

       Postfix 2.11 及更高版本可用:

       lmdb_map_size (16777216)
              OpenLDAP LMDB 数据库的初始大小限制(字节)。

参见
       postalias(1),创建/更新/查询别名数据库
       postconf(1),支持的数据库类型
       postconf(5),配置参数
       postlogd(8),Postfix 日志记录
       syslogd(8),系统日志记录

自述文件
       DATABASE_README,Postfix 查找表概述

许可
       本软件必须随附 Secure Mailer 许可证。

作者
       Wietse Venema
       IBM T.J. Watson 研究中心
       邮政信箱 704
       美国纽约州约克城高地,邮编 10598

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

                                                                    POSTMAP(1)