02 жовтня 2020, 10:36:20, від "Victor Sudakov" <v...@sibptus.ru>:
Vladimir Sharun wrote: > Привет, > > Потому что сейчас девелоперы exim'а работают над соблюдением типизации. > > Если раньше конструкции типа condition = {lookup} (без if) работали, то > сейчас - с очень переменным успехом. То есть есть шанс, что рано или поздно и конструкция "accept condition = ${lookup{$local_part@$domain}lsearch{/etc/dovecot/aliases}{yes}{no}}" работать перестанет? Надо будет везде оборачивать в bool{...} ? Я бы проверил работают ли они всё еще уже сейчас :) > > Я вот такого типа конструкции проверяю через exim -be - выпадаешь в консоль > expression'ов и можно тестировать, только вместо expansion variables надо > использовать живые значения. Лукапы как минимум в mysql он в консоли делает > ок. Можно включить дебаг - покажет что он с чем сравнивает и почему факап. > > Да, в консоли я хз что там за редактор (если он вообще есть), лучше > копипастой вставлять готовые строки и enter. Можно на stdin ему. Я так и смотрю: echo '${lookup{v...@xxxx.com}lsearch{/etc/dovecot/aliases}{yes}{no}}' | exim -be потом стрелкой верх и меняю параметр. > > вторая тема - я бы врапнул вот эти длинные лукапы в named list - легче читать Примерчик можно? hostlist TRUSTED_MASSMAIL = partial2-lsearch;/lists/TRUSTED_MASSMAIL : /lists/TRUSTED_NETWORKS https://www.exim.org/exim-html-current/doc/html/spec_html/ch-domain_host_address_and_local_part_lists.html Что-то типа макросов. Потом используется (например) как hosts = +TRUSTED_MASSMAIL и всё понятно и нет тяжелых-длинных-непонятных конструкций > > и третья тема (смое важное) - результат лукапа - это value, которое > при bool сравнении всегда будет или false или true - уже не помню; > если вам надо "есть или нет" надо использовать конструкцию типа > {bool{${lookup{$item}nwildlsearch{some_file}...} Зачем, почему? Работает же так я bool и имел в виду. На каком-то моменте в 4.9х перестал работать мехнизм "если лукап что-то вернул - это true, а если ничего - false". Строго говоря правая часть кондишна - это bool, а логические операции также обязаны оперировать с bool, т.е. {if or {cond1} {cond2}}, вот эти condN - это должен быть bool тоже и если нет, то факапы ойой вылазят. > > Вот над этой конструкцией я потел часа два: > condition = ${if forall{<\n ${lc:${lookup dnsdb{ptr=$sender_host_address}}}} > {bool{${lookup{$item}nwildlsearch{/lists/HOSTS_REGEX}{1}{0}}}}} > > Тут все три секса сразу: и цикл forall, и передача $item в lookup, и > приведение к boolean результата лукапа. Для истинных поклонников sendmail.cf, чтобы не расслаблялись :-) Или пример того, что если инспектируешь бэкрезолвы, то их может быть несколько и что надо инспектировать все.
_______________________________________________ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users