我设法configurationPostfix从数据库中读取虚拟邮箱列表。 但是,如果我的列表分布在多个数据库中呢? 有没有办法根据传入电子邮件的目标域设置Postfix的数据库访问凭据?
我有多个客户共享一个Web服务器,每个人都有自己的数据库通过共享。 我想知道如果我也可以共享一个Postfix! 问题是他们的用户列表驻留在他们各自的数据库中,并且随着时间的推移,碎片的数量可能会增加。 我不想每个新客户重新configuration系统。
从Postfix数据库自述,它说
所有Postfix查找表将信息存储为(键,值)对。 这个界面起初可能看起来很简单,但事实certificate它非常强大。 (key,value)查询接口完全隐藏了Postfix的LDAP或SQL的复杂性。 这是连接复杂系统和简单界面的一个很好的例子。
Postfix只提供一个查找键,那么“你的表”必须返回适当的值。 关于多个数据库,postfix也支持它。 但是它只有一个单一的操作模式:逐个检查数据库,直到find“key”。 当您根据传入电子邮件的目标域添加一些自定义逻辑(如设置Postfix的数据库访问凭据)时 ,postfix就没有这样的选项。
所以,你的问题的答案是:
是否有可能碎片后缀虚拟邮箱数据库?
对的,这是可能的。 但是你不能单独使用postfix。 您需要额外的“工具”来帮助您的数据库中的后缀查找信息。 后缀
一些想法:
使用MySQL存储过程来填充所有数据库,然后在数据库中运行查询,例如: https : //stackoverflow.com/questions/2132654/querying-multiple-databases-at-once 。 你需要单一的主凭证连接到MySQL。
将多个postfix-mysql-maps文件放在一个文件夹中,并设置cron以定期重新填充postfix main.cf的所有文件。 下面的命令应该是足够的。
postconf -e virtual_mailbox_maps=$(for maps in /etc/postfix/mymaps/*; do printf "mysql:$maps "; done)
transport_maps产生。 如果你使用postfix和mysql来存储用户的域名和密码等等,你可以使用一个mysql服务器来安装许多postfix服务器,因为postfix只使用mysql来检索使用read sql查询的信息。
如果你有一个集中的数据库,每个客户端都可以指向这个数据库。