Я пытаюсь заставить работать фильтр Sieve blow
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;
}
}
}
Где user-verification
- это extprogram, который вызывает API и проверяет пользователя на основе адреса электронной почты, а затем возвращает логическое значение (как вывод на консоль).).
Все работает нормально, когда я удаляю оператор if string :matches "${valid_user}" "True"
, иначе он выглядит так, как будто не распознает valid_user
переменную.
Когда я передаю valid_user
в какой-то сценарий просто для захватазначение для этой переменной выдает ошибку:
ошибка: указано: args item `True? 'неверно.
Почему в этом случае в вопросе был добавлен вопросительный знак?
Мысли?