Dovecot Sieve и: выходная переменная для выполнения добавления недопустимого символа

Я пытаюсь заставить работать фильтр blow 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;
      }
    }
}

Где user-verify - это внешняя программа, которая вызывает API и проверяет пользователь на основе адреса электронной почты затем возвращает логическое значение (как вывод на консоль).

Все работает нормально, когда я удалю , если строка: соответствует "$ {valid_user}" "True" Оператор , по-другому, похоже, не распознает переменную valid_user .

Когда я передаю valid_user какому-то сценарию только для захвата значения для этой переменной, он выдает ошибку:

ошибка: указано: args item `True? ' неверно.

Почему в этом случае к переменной был добавлен вопросительный знак?

Мысли?

0
задан 18 September 2018 в 22:39
1 ответ

В этом случае за «True» следует новая строка, которую Sieve с радостью считывает и включает в значение переменной.

Исправить сценарий проверки пользователя должен выводить его без новой строки.

0
ответ дан 5 December 2019 в 05:17

Теги

Похожие вопросы