跳转到主要内容

于 2025年04月22日 摘录自 Postfix SQLite Howto

简介

Postfix 的 SQLite 映射类型允许您将 Postfix 连接到 SQLite 数据库。此实现支持多个 SQLite 数据库:您可以使用一个用于 virtual(5) 表,一个用于 access(5) 表,另一个用于 aliases(5) 表。

构建支持 SQLite 的 Postfix

Postfix SQLite 客户端使用 sqlite3 库,可从以下地址获取:

http://www.sqlite.org/

为了构建支持 SQLite 映射的 Postfix,您需要在 CCARGS 中添加 -DHAS_SQLITE 和 -I 标志,并指定包含 SQLite 头文件的目录,同时在 AUXLIBS 中添加 SQLite3 库的目录和名称,以及标准 POSIX 线程库(pthread)的名称。例如:

make -f Makefile.init makefiles \
"CCARGS=-DHAS_SQLITE -I/usr/local/include" \
"AUXLIBS_SQLITE=-L/usr/local/lib -lsqlite3 -lpthread"

如果 SQLite 共享库位于运行时链接器未知目录中,请在 "-lsqlite3" 之后添加 "-Wl,-R,/path/to/directory" 选项。

Postfix 3.0 之前的版本使用 AUXLIBS 而不是 AUXLIBS_SQLITE。在 Postfix 3.0 及更高版本中,旧的 AUXLIBS 变量仍支持构建静态加载的 SQLite 数据库客户端,但只有新的 AUXLIBS_SQLITE 变量支持构建动态加载或静态加载的 SQLite 数据库客户端。

未使用 AUXLIBS_SQLITE 变量将导致动态数据库客户端加载功能失效。每个 Postfix 可执行文件都将包含 SQLITE 数据库库依赖项。而这正是动态数据库客户端加载功能旨在避免的情况。

然后,只需运行 'make'。

使用 SQLite 表

一旦 Postfix 带 SQLite 支持编译完成,您可以在 main.cf 中指定映射类型,例如:

alias_maps = sqlite:/etc/postfix/sqlite-aliases.cf

文件 /etc/postfix/sqlite-aliases.cf 指定了大量信息,用于告知 Postfix 如何引用 SQLite 数据库。如需完整说明,请参阅 sqlite_table(5) 手册页。

示例:本地别名

#
# sqlite 配置文件,用于 local(8) aliases(5) 查找
#
# 数据库路径
dbpath = /some/path/to/sqlite_database
# 详情请参阅 sqlite_table(5)。
query = SELECT forw_addr FROM mxaliases WHERE alias='%s' AND status='paid'

致谢

SQLite 支持在 Postfix 版本 2.8 中添加。

  • 实现者:Axel Steiner
  • 文档作者:Jesus Garcia Crespo