使用 SQL 数据库存储 Dovecot Sieve 脚本

使用 SQL 数据库存储 Dovecot Sieve 脚本

我不确定如何设置 Dovecot 以使用 SQL 数据库进行筛选存储。到目前为止,我通过本教程找到了 Pigeonhole -https://wiki.dovecot.org/Pigeonhole/Sieve/Configuration/Dict

据我所知,这里的想法是使用字典和存储在 SQL 数据库中的 Sieve 脚本。但有一句话我不太清楚

与平面文件一样,数据库查询需要在一行中返回全部 Sieve 脚本,否则后续行将被忽略。

那么在这种情况下,是否可以只检索给定电子邮件的筛选脚本?我正在尝试找到一种方法,让 100 个不同的电子邮件拥有 100 个不同的脚本。因此有些看起来像这样:

require ["envelope", "fileinto", "mailbox"];
if envelope "To" "[email protected]"
{
    fileinto :create "Personal";
}

另一个类似

 require ["envelope", "fileinto", "mailbox"]; 
 if envelope "To" "[email protected]" 
 {
     redirect :copy "[email protected]";
 }

但总是To会有所不同。

答案1

我没有您的环境,因此我将尝试根据一般的数据库知识来回答。以下是我对链接中文档的理解。

我相信该文档指的是与以下连接字符串连接的 SQL 数据库(哪种产品?):

host=localhost dbname=dovecot user=dovecot password=password

这意味着数据库服务器应该在同一台计算机上运行,​​数据库名为dovecot,并有一个名为 的用户帐户,dovecot 密码为password。我假设这些可以更改,因为connect字符串是脚本的可更新参数。

数据库应该包含一个名为的表user_sieve_scripts,该表可能是来自配置文件的参数。

该表应该有两列(也可能是配置参数):

  • username:要搜索的关键字,在你的情况下是to 字段,
  • id:包含要使用的脚本的列。

脚本必须完全包含在id列中,因为表上只会进行一次数据库访问,所以该列必须足够大以包含最长的脚本。

id列大概包含行之间的换行符,如果脚本语言支持多命令行,则不包含换行符(我不太了解这个产品)。

我希望这可以为您指明正确的方向。

相关内容