Dovecot
Dovecot Sieve 和:用於執行添加無效字元的輸出變數
我正在嘗試讓吹篩過濾器工作
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
腳本必須在沒有新行的情況下輸出它。