SQLITE_TABLE(5)                                                SQLITE_TABLE(5)

名称
       sqlite_table - Postfix SQLite 配置模块

概述
       postmap -q "字符串" sqlite:/etc/postfix/文件名

       postmap -q - sqlite:/etc/postfix/文件名 <输入文件

描述
       Postfix 邮件系统使用可选表进行地址重写或邮件路由。这些表通常采用 dbmdb 格式。

       也可以将查找表指定为 SQLite 数据库。要使用 SQLite 查找功能,需在 main.cf 中将 SQLite 源定义为查找表,例如:
           alias_maps = sqlite:/etc/postfix/sqlite-aliases.cf

       文件 /etc/postfix/sqlite-aliases.cf 的格式与 Postfix main.cf 文件相同,可指定下文描述的参数。

列表成员资格
       当使用 SQL 存储诸如 $mynetworks、$mydestination、$relay_domains、$local_recipient_maps 等列表时,必须注意:
       
       1. 表中必须将每个列表成员存储为单独的键
       2. 表查找仅验证键的*存在性*
       
       详细讨论请参阅 DATABASE_README 文档中的"Postfix 列表与表"章节。

       禁止创建返回 $mydestination 或 $relay_domains 中完整域名列表的表,或返回 $mynetworks 中所有 IP 地址的表。

       应该创建以每个匹配项为键、任意值为内容的表。在 SQL 数据库中,通常做法是返回键本身或固定值。

SQLite 参数
       dbpath SQLite 数据库文件路径。例如:
                  dbpath = customer_database

       query  用于搜索数据库的 SQL 查询模板,其中 %s 会被替换为 Postfix 尝试解析的地址。例如:
                  query = SELECT replacement FROM aliases WHERE mailbox = '%s'

              本参数支持以下 '%' 通配符:

              %%     替换为字面 '%' 字符
              %s     替换为输入键(使用 SQL 引号确保输入键不包含意外元字符)
              %u     当输入键是 user@domain 格式时,替换为地址本地部分的 SQL 引号内容;否则替换整个搜索字符串。若本地部分为空,则跳过查询
              %d     当输入键是 user@domain 格式时,替换为地址域部分的 SQL 引号内容;否则跳过查询
              %[SUD] 大写版本的行为与小写版本相同。与 result_format 参数配合使用时,它们扩展的是输入键而非结果值
              %[1-9] 替换为输入键域名的各级组件(如 [email protected] 中 %1=com,%2=example,%3=mail)。若输入键未限定或域组件不足,则跳过查询

              当配置了非空的 domain 参数时,系统会限制只处理匹配域中的地址。对未限定地址或非匹配域地址的查询将被跳过。

              本参数自 Postfix 2.2 起可用。早期版本需使用以下独立参数构建查询:
                  SELECT [select_field]
                  FROM [table]
                  WHERE [where_field] = '%s'
                        [additional_conditions]

              注意:不要在 query 参数外加引号。

       result_format (默认值: %s)
              应用于结果属性的格式模板,常用于在结果前后添加文本。支持的通配符:

              %%     字面 '%' 字符
              %s     结果属性值(空值跳过)
              %u     结果属性值中地址的本地部分(空值跳过)
              %d     结果属性值中地址的域部分(非限定值跳过)
              %[SUD1-9] 扩展输入键而非结果值(行为与 query 参数相同)

              示例:"result_format = smtp:[%s]" 可将 mailHost 属性用作 transport(5) 表的基础。多个结果值会以逗号分隔。expansion_limit 参数可限制返回值的数量。

              默认值 %s 表示直接使用结果值。

              本参数自 Postfix 2.2 起可用。

              注意:不要在 result_format 外加引号。

       domain (默认值: 无)
              指定域名列表(可包含文件路径或 type:table 数据库)。配置后,系统只处理具有非空本地部分且域名匹配的全限定搜索键:
                  domain = postfix.org, hash:/etc/postfix/searchdomains

              建议不要使用 SQL 存储允许 SQL 查找的域名列表。

              本参数自 Postfix 2.2 起可用。

              注意:不要为 local(8) 别名配置此参数,因为其输入键总是未限定的。

       expansion_limit (默认值: 0)
              限制查找返回的结果项总数(以逗号分隔)。设为 0 表示无限制。若超出限制,查找将返回临时错误。设为 1 可确保不返回多个值。

过时的 MAIN.CF 参数
       为兼容其他 Postfix 查找表,SQLite 参数也可在 main.cf 中定义。方法:使用不以斜杠或点开头的 SQLite 源名称,参数命名格式为"源名_参数名"。例如:
           "sqlite:sqlitename" 对应的 query 参数应定义为 sqlitename_query

过时的查询接口
       (自 Postfix 2.2 起废弃,被更通用的 query 接口取代。若定义了 query 参数,下列传统参数将被忽略)

       下列参数用于构建 SELECT 模板语句:
           SELECT [select_field]
           FROM [table]
           WHERE [where_field] = '%s'
                 [additional_conditions]

       select_field
              SQL 选择字段。例如:
                  select_field = forw_addr

       table  SQL 表名。例如:
                  table = mxaliases

       where_field
              SQL 条件字段。例如:
                  where_field = alias

       additional_conditions
              附加查询条件。例如:
                  additional_conditions = AND status = 'paid'

参见
       postmap(1), Postfix 查找表维护
       postconf(5), 配置参数
       ldap_table(5), LDAP 查找表
       mysql_table(5), MySQL 查找表
       pgsql_table(5), PostgreSQL 查找表

参考文档
       DATABASE_README, Postfix 查找表概述
       SQLITE_README, Postfix SQLite 使用指南

许可
       本软件需随附 Secure Mailer 许可证。

历史
       SQLite 支持自 Postfix 2.8 版本引入。

作者
       原始实现:
       Axel Steiner

                                                               SQLITE_TABLE(5)