Не работает condition

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
shadowpvl
рядовой
Сообщения: 14
Зарегистрирован: 2007-11-09 13:17:03

Не работает condition

Непрочитанное сообщение shadowpvl » 2012-12-09 9:17:59

Добрый день.

Имеется такой макрос с запросом к БД:

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

CHECK_IN_WHITE_GLOBAL = ${lookup mysql{SELECT MAX(IF((`domain` = '${quote_mysql:$sender_address_domain}' \
                     AND (`address` = '${quote_mysql:$sender_address}' \
                     OR ISNULL(`address`))), 1, 0)) AS result \
                  FROM white_list \
                  WHERE `area` = 'GLOBAL'}};
Имеется такой condition в роутере:

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

condition = ${if eq{CHECK_IN_WHITE_GLOBAL}{0}{yes}{no}}
При отправке письма от определенного юзера exim выполняет такой запрос:

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

SELECT MAX(IF((`domain` = 'pentagon.mil' AND (`address` = 'vasya@pentagon.mil' OR ISNULL(`address`))), 1, 0)) AS result FROM white_list WHERE `area` = 'GLOBAL'
В результате этого запроса выдается 0.
Однако exim почему-то в condition пропускает этот роутер и переходит к следующему!
При дебаге выводится вот что:

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

23531 local_part=user domain=example.com
23531 checking "condition"
23531 search_open: mysql "NULL"
23531   cached open
23531 search_find: file="NULL"
23531   key="SELECT MAX(IF((`domain` = 'pentagon.mil' AND (`address` = 'vasya@pentagon.mil' OR ISNULL(`address`))), 1, 0)) AS result FROM white_list WHERE `area` = 'GLOBAL'" partial=-1 affix=NULL starflags=0
23531 LRU list:
23531 internal_search_find: file="NULL"
23531   type=mysql key="SELECT MAX(IF((`domain` = 'pentagon.mil' AND (`address` = 'vasya@pentagon.mil' OR ISNULL(`address`))), 1, 0)) AS result FROM white_list WHERE `area` = 'GLOBAL'"
23531 database lookup required for SELECT MAX(IF((`domain` = 'pentagon.mil' AND (`address` = 'vasya@pentagon.mil' OR ISNULL(`address`))), 1, 0)) AS result FROM white_list WHERE `area` = 'GLOBAL'
23531 MySQL query: SELECT MAX(IF((`domain` = 'pentagon.mil' AND (`address` = 'vasya@pentagon.mil' OR ISNULL(`address`))), 1, 0)) AS result FROM white_list WHERE `area` = 'GLOBAL'
23531 MYSQL using cached connection for localhost/mail/exim
23531 lookup yielded: 0
23531 incoming_control_mail router skipped: condition failure
Если вместо CHECK_IN_WHITE_GLOBAL прописать 0, то роутер срабатывает!
Если сделать так, чтобы в результате запроса выдавалась 1, то роутер также не срабатывает.

Подскажите, пожалуйста, почему роутер не работает? Где я мог сделать ошибку или что-то забыл сделать?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

wildman
рядовой
Сообщения: 39
Зарегистрирован: 2012-12-02 15:45:49
Откуда: Kiev, Ukraine

Re: Не работает condition

Непрочитанное сообщение wildman » 2012-12-11 21:13:20

интересно... ";" в конце CHECK_IN_WHITE_GLOBAL - не создает проблем?

shadowpvl
рядовой
Сообщения: 14
Зарегистрирован: 2007-11-09 13:17:03

Re: Не работает condition

Непрочитанное сообщение shadowpvl » 2012-12-12 7:24:51

Спасибо. Действительно в этой фигне была проблема.

ЗЫ Пока решал данную проблему много нового узнал про exim)))