Страница 1 из 1

exim, не отрабатывает match в кондишине

Добавлено: 2013-05-07 16:34:59
deisler
Здравствуйте.
Хочу из #spf_received выдрать кусок "(бла-бла)" и назначить его другой переменной.
Почему-то не отрабатывает match в кондишне (либо сам кондишн неправильный и не присваивает результат следующей переменной):

Код: Выделить всё

    warn    add_header    = $spf_received
            logwrite      = "SPF status: spf_result = $spf_result; spf_smtp_comment = $spf_smtp_comment"
            set acl_c_spf_for_dkim = ${if match{$spf_received}{\N\(.*\)\N}{$1}}
            logwrite      = $acl_c_spf_for_dkim
debug:

Код: Выделить всё

processing "warn"
check add_header = $spf_received
                 = Received-SPF: pass (mail.example.com: domain of yandex.ru designates 77.88.61.49 as permitted sender) client-ip=77.88.61.49; envelope-from=user@yandex.ru; helo=forward10.mail.yandex.net;
check logwrite = "SPF status: spf_result = $spf_result; spf_smtp_comment = $spf_smtp_comment"
               = "SPF status: spf_result = pass; spf_smtp_comment = "
LOG: MAIN
  "SPF status: spf_result = pass; spf_smtp_comment = "
check set acl_c_spf_for_dkim = ${if match{$spf_received}{\N\(.*\)\N}{$1}}
                             = 
check logwrite = $acl_c_spf_for_dkim
               = 
LOG: MAIN
  
warn: condition test succeeded in ACL "acl_check_rcpt"
Регулярное выражение правильное, проверял на http://gskinner.com/RegExr/.
Подскажите решение.
Спасибо.

Re: exim, не отрабатывает match в кондишине

Добавлено: 2013-05-17 11:11:24
deisler
Вообщем надо писать кондишн так:

Код: Выделить всё

check set acl_c_spf_for_dkim = ${if match{$spf_received}{\N(\(.*\))\N}{$1}}
потому, что результат в $1 должен быть сгруппирован скобками ().