是否可以对 Postfix 虚拟邮箱数据库进行分片?

是否可以对 Postfix 虚拟邮箱数据库进行分片?

我已经成功配置 Postfix 以从数据库中读取虚拟邮箱列表。但如果我的列表分布在多个数据库中怎么办?有没有办法根据传入电子邮件的目标域设置 Postfix 的数据库访问凭据?

我有多个客户共享一个 Web 服务器,每个客户都通过共享拥有自己的数据库。我想知道我是否也可以在他们之间共享一个 Postfix!?问题是他们的用户列表位于他们各自的数据库中,并且分片的数量会随着时间的推移而增长。我不想为每个新客户重新配置系统。

答案1

Postfix 数据库自述文件中指出,

所有 Postfix 查找表都以 (键,值) 对的形式存储信息。这个接口乍一看可能过于简单,但实际上却非常强大。(键,值) 查询接口完全隐藏了 Postfix 中的 LDAP 或 SQL 的复杂性。这是用简单接口连接复杂系统的一个很好的例子。

Postfix 只为您提供查找键,然后“您的表”必须返回相应的值。对于多个数据库,Postfix 也支持它。但它只有一种操作模式:依次逐个检查数据库,直到找到“键”。当您添加一些自定义逻辑时,例如根据收到的电子邮件的目标域设置 Postfix 的数据库访问凭据,那么postfix就没有这样的选项。


因此,你的问题的答案是:

是否可以对 Postfix 虚拟邮箱数据库进行分片?

是的,这是可能的。但您不能仅使用 postfix 来实现这一点。您需要额外的“工具”来帮助 postfix 从您的数据库中查找信息。Postfix

一些想法:

postconf -e virtual_mailbox_maps=$(for maps in /etc/postfix/mymaps/*; do printf "mysql:$maps "; done)

  • 使用传输控制协议/套接字映射表映射以添加其他脚本并执行逻辑。您可以使用 postfix产卵因此您的脚本不必监听 tcp/unix 套接字。您的 postfix 必须获取钥匙通过 stdin,你必须返回价值通过标准输出。这里是 中 tcp 表和 spawn 的一个实现transport_maps

答案2

如果您正在使用postfixmysql存储用户域和密码等,则您可以postfix在一个 mysql 服务器上拥有多个服务器,因为 postfixmysql仅用于使用读取 sql 查询检索信息。

如果您有一个集中式数据库,则每个客户端都可以指向该数据库。

相关内容