我不确定如何设置 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
列大概包含行之间的换行符,如果脚本语言支持多命令行,则不包含换行符(我不太了解这个产品)。
我希望这可以为您指明正确的方向。