Хранение скриптов Dovecot Sieve с базой данных SQL

408
sebap123

Я не уверен, как настроить Dovecot для использования базы данных SQL для хранения сит. До сих пор я нашел Pigeonhole с этим руководством - https://wiki.dovecot.org/Pigeonhole/Sieve/Configuration/Dict

Из того, что я понимаю, идея заключается в том, чтобы использовать словарь со скриптами Sieve, хранящимися в базе данных SQL. Но одно предложение мне не понятно

Как и в случае с плоским файлом, запрос к базе данных должен будет возвращать сценарий Sieve в одну строку, в противном случае последующие строки будут игнорироваться.

Так в таком случае возможно ли получить только ситовые скрипты для данного письма? Я пытаюсь найти способ, позволяющий сказать 100 различных сценариев для 100 различных писем. Так что некоторые будут выглядеть так:

require ["envelope", "fileinto", "mailbox"]; if envelope "To" "personal@example.com" { fileinto :create "Personal"; } 

еще один такой

 require ["envelope", "fileinto", "mailbox"];  if envelope "To" "office@example.com"  { redirect :copy "office@example.net"; } 

Но всегда Toбудет по-другому.

1

1 ответ на вопрос

0
harrymc

У меня нет вашей среды, поэтому я постараюсь ответить на основе общих знаний базы данных. Вот как я понимаю документацию по вашей ссылке.

Я считаю, что документация относится к базе данных SQL (какой продукт?), Связанной со строкой подключения:

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

Это означает, что сервер базы данных должен быть запущен на том же компьютере, имя базы данных dovecotи иметь учетную запись пользователя dovecot с паролем password. Я предполагаю, что их можно изменить, так как connectстрока является обновляемым параметром скрипта.

База данных должна содержать таблицу с именем user_sieve_scripts, которая может быть параметром из файла конфигурации.

Таблица должна иметь два столбца (возможно, также параметры конфигурации):

  • username : The key to be searched, which in your case would be the to field,
  • id : The column which contains the script to use.

The script must be entirely contained within the id column, because only one database access will be done on the table, so this column must be large enough to contain your longest script.

The id column presumably includes line-feeds between lines, or none if the script language supports multi-command lines (I don't know this product well enough).

I hope that this can point you in the right direction.

Похожие вопросы