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
[email protected]
http://mailground.net/mailman/listinfo/exim-users