У меня есть правило сита:
if header :contains "subject" ["TOP-SECRET"] {
setflag "\\Seen";
fileinto :create "Hidden-Folder";
stop;
}
на основе которого все, что включает СОВЕРШЕННО СЕКРЕТНО
в теме, перемещается в ] скрытая папка
и установить как прочитанное.
Есть ли способ настроить эту скрытую папку
как неподписанную (скрытую из списка папок) через сито? Или как указать, какой файл подписок на учетную запись должен редактироваться скриптом?
После некоторого тестирования я получил желаемую функциональность для работы, подключив ее к внешнему скрипту.
Код Sieve выглядит так:
if envelope :matches "To" "*@*" {
set "recipient" "${0}";
}
if header :contains "subject" ["TOP-SECRET"] {
setflag "\\Seen";
fileinto :create "Hidden-Folder";
pipe "my-script" ["${recipient}"];
stop;
}
затем код sieve-pipe my-script
код выглядит как
#!/bin/bash
mbox=$1
result=`find /mnt/var/mailboxes -type d -name $mbox`
perl -pi -e 's/Hidden-Folder//g' $result/subscriptions
Side Примечание - убедитесь, что владельцем всех почтовых ящиков в / mnt / var / mailboxes
является Dovecot.
Я не думаю, что есть возможность настроить такое поведение - ни в Sieve, ни в конфигурации Pigeonhole или Dovecot.
Но я могу предложить обходной путь: создайте скрытую папку без подписки и поместите в нее подкаталоги.
Если вы создаете такую папку, как Hidden-Folder
, которую вы определяете как неподписанную (вручную или с помощью doveadm
), действие fileinto: create «Hidden-Folder. Foo "создаст папку
foo внутри
Hidden-Folder`, но не подпишется на нее автоматически.
Конечно, вы также можете использовать vnd.dovecot.execute
и запустить doveadm mailbox unsubscribe
, чтобы отменить подписку на почтовый ящик после запуска fileinto
, или даже создать почтовый ящик (без подписки) перед отправкой сообщения. Однако я не очень-то чувствую, что выполняю системные команды через Sieve; даже если это всего лишь предопределенная команда с хорошо проверенными параметрами.