Hello! On Thu, 01 Oct 2020 at 19:15:35 (+0700), Victor Sudakov wrote:
> > Вот более детальный пример. Но, опять же, я не проверял в действии + могут > > быть ошибки синтаксиса. > > condition = ${if or {\ > > { eq > > {${lookup{$local_part@$domain}lsearch{/etc/dovecot/aliases}{yes}}} {yes} }\ > > { eq > > {${lookup{$local_part@$domain}lsearch{/etc/dovecot/users}{yes}}} {yes} }\ > > } {yes}} > Работает вроде. Интересно, а чем же тогда мой: > accept condition = ${if or {\ > > {eq{${lookup{$local_part@$domain}lsearch{/etc/dovecot/aliases}{yes}}{yes}}} \ > > {eq{${lookup{$local_part@$domain}lsearch{/etc/dovecot/users}{yes}}{yes}}} \ > } {yes}} > не подошёл, вроде такой же по смыслу, через eq{...}. "{yes}" не там, что ли. Нет там. Я поэтому для ридабилти разделяю обычно пробелами части. Первый "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 это всё равнозначные удача/неудача. -- George L. Yermulnik [YZ-RIPE] _______________________________________________ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users