Dovecot

Dovecot Sieve 和:用於執行添加無效字元的輸出變數

  • September 21, 2018

我正在嘗試讓吹篩過濾器工作

require ["fileinto", "imap4flags", "mailbox", "body", "envelope", "vnd.dovecot.pipe", "variables", "vnd.dovecot.execute"];

if envelope :matches "To" "*@*" {
 set "recipient" "${0}";
 set "user" "${1}";
 set "recip_domain" "${2}";
}

if envelope :matches "From" "*" {
 set "sender" "${0}";
}

#Check if recipient is valid user
if execute :output "valid_user" "user-verification" "${recipient}" {
   if string :matches "${valid_user}" "True" {
     if body :raw :contains ["message/notification"] {
       setflag "\\Seen";
       fileinto :create "Notifications";
       stop;
     }
   }
}

extprogram在哪裡user-verification呼叫 API 並根據電子郵件地址驗證使用者,然後返回布爾值(作為控制台的輸出)。

if string :matches "${valid_user}" "True"當我以其他看起來無法辨識valid_user變數的方式刪除語句時,一切正常。

當我通過管道valid_user傳輸到某個腳本只是為了擷取該變數的值時,它會引發錯誤:

錯誤:指定:args 項目“真?” 是無效的。

為什麼在這種情況下將問號添加到變數中?

想法?

在這種情況下,“True”後面是一個換行符,Sieve 很高興地讀取它並將其包含在變數值中。

要讓它固定user-verification腳本必須在沒有新行的情況下輸出它。

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