Dovecot
如何在 Dovecot’s Sieve 中創建文件夾但不訂閱?
我有篩規則:
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 folder
fooinside
Hidden-Folder` 操作,但不會自動訂閱它。你當然也可以在執行後使用
vnd.dovecot.execute
和 rundoveadm mailbox unsubscribe
取消訂閱郵箱fileinto
,甚至在送出郵件之前創建郵箱(不訂閱它)。不過,我對通過 Sieve 執行系統命令的感覺並不好;即使它只是一個帶有經過良好檢查的參數的預定義命令。