我需要為外發郵件建立一個過濾器。如果「to」包含給定的電子郵件地址,則複製郵件。
# rule:[Copy to slack]
if address :contains "to" "[email protected]"
{
redirect :copy "[email protected]";
}
我嘗試
# rule:[Copy to slack]
if address :contains "to" "[email protected]"
{
redirect :copy "[email protected]";
}
或者
# rule:[Copy to ]
if address :contains "to" "[email protected]"
{
fileinto "INBOX.Redmine";
}
但每次過濾器都不起作用。
只有當我從「收件者」或其他本地郵件中的地址發送郵件時,此功能才有效。
有任何想法嗎?
答案1
它不起作用,因為它不能以這種方式工作:如果您要傳送郵件,則將其直接傳送至連接埠 465 到 Postfix - 不會執行 Sieve 腳本。
如果你想使用 sieve 語言來處理外發郵件,你將不得不付出更多的努力,因為它沒有很好地整合到通用軟體中,至少遠不如 Dovecot 中的 Pigeonhole Sieve 整合那麼好,後者只會在兩個特定用例中觸發:
- 收到郵件時,又名最終交付Dovecot 管理的寄往信箱的郵件階段,或
- 關於管理郵箱,特別是本地或 IMAP 連線的用戶端對 Dovecot 管理的郵箱的操作。
值得注意的是,該整合不會處理郵件提交的情況:雖然 Dovecot 確實包含提交代理,但它通常根本不涉及該方向,並且在極少數使用此代理的情況下,仍然不處理 Sieve。
您現在有幾個選擇:
- 在儲存至「已傳送」郵件匣的郵件上觸發腳本(但不會對未儲存在該郵件匣中的郵件運作)
- 用 Postfix 的內建功能取代您的腳本。收件者密件抄送映射我想到了
- 配置 postfix
header_checks
以簡單地拒絕不符合您的策略的郵件(例如,跳過所需的 To: 標頭,然後拒絕其所有不完整版本) - 在一些 milter/filter 中配置副本
- 配置一個(最好是新的本地)地址,您將其設定為擴展到您想要接收郵件的兩個地址,讓用戶在那裡發送郵件
- 將該收件人的郵件傳送到一個腳本,可能是使用您的Sieve 腳本的腳本(這不太可能是您的最佳選擇:在LDA 用例之外使用sieve 根本無法獲得任何現有軟體的良好支持)