exim и формат condition в разделе router
Собственно сам router:
Код:
ditch_hdrmailer:
driver = redirect
allow_fail
data = :blackhole:
condition = ${if eq {${lookup mysql{select count(*) from blocklists,users,domains \
where blocklists.blockhdr = 'x-mailer' \
and blocklists.blockval = '${quote_mysql:$h_x-mailer:}' \
and users.localpart = '${quote_mysql:$local_part}' \
and domains.domain = '${quote_mysql:$domain}' \
and domains.domain_id=blocklists.domain_id \
and users.user_id=blocklists.user_id}}}{1} {yes}{no}}
local_part_suffix = -*
local_part_suffix_optional
retry_use_local_part
Хочу немного изменить условие
Код:
and blocklists.blockval = '${quote_mysql:$h_x-mailer:}'
вместо равно поставить что-то наподобие like из mysql (типа совпадение по подстроке). Как это правильно сделать? Да и вообще какие операции, кроме равно можно использовать в это куске?
|
Заработало вот так:
Код:
'${quote_mysql:$h_x-mailer:}' like concat('%',blocklists.blockval,'%')
Ну и ещё один вариант
Код:
blocklists.blockval RLIKE REPLACE('${quote_mysql:$h_x-mailer:}'," ","|")
Правда первый мне кажется будет выполняться быстрее, так как во втором регулярные выражения и ещё оператор replace. Второй вариант пригоден только для сравнения строк с пробелами.
|
Время: 11:09.
© OSzone.net 2001-