Dovecot

如何在 Dovecot’s Sieve 中創建文件夾但不訂閱?

  • December 9, 2016

我有篩規則:

if header :contains "subject" ["TOP-SECRET"] {
   setflag "\\Seen";
   fileinto :create "Hidden-Folder";
   stop;
}

基於此TOP-SECRET,主題中包含的任何內容都被移動到hidden-folder並設置為已讀。

有沒有辦法Hidden-Folder通過篩子將其設置為未訂閱(從文件夾列表中隱藏)?或者如何“管道”哪個帳戶訂閱文件必須由腳本編輯?

經過一些測試後,我獲得了所需的功能,可以通過管道將其傳輸到外部腳本。

篩選程式碼如下所示:

if envelope :matches "To" "*@*" {
 set "recipient" "${0}";
}

    if header :contains "subject" ["TOP-SECRET"] {
       setflag "\\Seen";
       fileinto :create "Hidden-Folder";
       pipe "my-script" ["${recipient}"]; 
       stop;
   }

然後篩管my-script程式碼看起來像

#!/bin/bash

mbox=$1
result=`find /mnt/var/mailboxes -type d -name $mbox`
perl -pi -e 's/Hidden-Folder//g' $result/subscriptions

旁注 - 確保所有郵箱的所有者/mnt/var/mailboxes是 Dovecot。

我認為沒有配置這種行為的選項——無論是在 Sieve 中,還是在 Pigeonhole 或 Dovecot 配置中。

但我可以提出一個解決方法:創建一個未訂閱的隱藏文件夾並將子目錄放入其中。

如果您創建一個Hidden-Folder定義為取消訂閱的文件夾(手動或使用doveadm),則執行fileinto :create "Hidden-Folder.Foo" will create the folderfoo insideHidden-Folder` 操作,但不會自動訂閱它。

你當然也可以在執行後使用vnd.dovecot.execute和 rundoveadm mailbox unsubscribe取消訂閱郵箱fileinto,甚至在送出郵件之前創建郵箱(不訂閱它)。不過,我對通過 Sieve 執行系統命令的感覺並不好;即使它只是一個帶有經過良好檢查的參數的預定義命令。

引用自:https://serverfault.com/questions/819106