George L. Yermulnik wrote: [dd]
> Первый "yes" - это то, что вернёт в случае удачи lookup и что будет > являться первой частью для eq, а второй "yes" - это то, с чем будет > сравниваться первый. > Т.е. в, так сказать, полной нотации это должно выглядеть так: > condition = ${if or {\ > { eq > {${lookup{$local_part@$domain}lsearch{/etc/dovecot/aliases}{yes}{no}}} {yes} > }\ > { eq > {${lookup{$local_part@$domain}lsearch{/etc/dovecot/users}{yes}{no}}} {yes} }\ > } {yes}{no}} > > "{no}" в lookup'ах можно убрать, т.к. в данном случае не важно, что > вернёт lookup, если совпадение не найдёт (абы только не "yes"). > > "{yes}{no}" в конце всего кондишена тоже можно убрать, т.к. в случае > удачи if вернёт строку "true", а в случае неудачи вернёт пустую строку, > что для "condition" равноценно false. > Собственно как можно убрать только "{no}", тогда соответственно в случае > удачи вернёт "yes", а в случае неудачи - пустую строку, от чего > функциональность не изменится =) > В примере Лены yes/no|true/false заменено на 1/0 через bool, но в итоге > для exim это всё равнозначные удача/неудача. С bool{...} как-то стройнее и нагляднее получается, чем с eq. Он уже В общем главный вывод для меня из этой истории - что нельзя "or" и "and" подсовывать результат лукапа, хотя этот лукап тоже можно использоваться (в других местах) как condition, но это не expansion condition. А expansion conditions - только из строгого списка. Вот про bool{} пишут, что This condition turns a string holding a true or false representation into a boolean state. It parses “true”, “false”, “yes” and “no” (case-insensitively); also integer numbers map to true if non-zero, false if zero. An empty string is treated as false. Кто им мешал "or" и "and" сделать столь же всеядными? -- Victor Sudakov, VAS4-RIPE, VAS47-RIPN 2:5005/49@fidonet http://vas.tomsk.ru/ _______________________________________________ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users