02 жовтня 2020, 10:36:20, від "Victor Sudakov" <[email protected]>:
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{[email protected]}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
[email protected]
http://mailground.net/mailman/listinfo/exim-users