SQLITE_TABLE(5) SQLITE_TABLE(5)
名称
sqlite_table - Postfix SQLite 配置模块
概述
postmap -q "字符串" sqlite:/etc/postfix/文件名
postmap -q - sqlite:/etc/postfix/文件名 <输入文件
描述
Postfix 邮件系统使用可选表进行地址重写或邮件路由。这些表通常采用 dbm 或 db 格式。
也可以将查找表指定为 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)