Evgeniy Berdnikov via Exim-users wrote:
> On Thu, Oct 01, 2020 at 05:21:38PM +0700, Victor Sudakov via Exim-users wrote:
> > Jeremy Harris via Exim-users wrote:
> > > On 01/10/2020 10:00, Victor Sudakov via Exim-users wrote:
> > > > And I'm damned if I understand what is "condition name expected."
> > > 
> > > http://exim.org/exim-html-current/doc/html/spec_html/ch-string_expansions.html
> > > 
> > > Section 7, "Expansion conditions".
> > 
> > I've read it, and "8. Combining expansion conditions" too.
> > 
> > But some help with combining the specific conditions I have provided would
> > be much more appreciated. 
> 
>  You feed the string "yes" to or{..} as argument, but Exim does not treat
>  strings as conditions. 

I'm afraid I don't understand you. Look at this quite legitimate line:

accept condition = 
${lookup{$local_part@$domain}lsearch{/etc/dovecot/aliases}{yes}}

Doesn't this line mean that the right part of the expression is err... hmm... a 
condition?

> In particular, bool{} transforms string to boolean,
>  you can do conversion with it. Or use syntax like eq{{LOOKUP}{yes}}.

OK, I have changed my expression to

  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}}

and still it's not the thing:

failed to expand ACL string "${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}}": each subcondition inside an "or{...}" condition must be in its own {}

Then into 

 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}}

and still:

failed to expand ACL string "${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}}": missing 2nd string in {} after "eq" inside "or{...}" condition

Can you possibly please reword my combined expression into a working one?

> 
> > Obviously if a person has read the manual and is struggling with syntax,
> > sending the person back to the manual is not quite helpful, especially if
> > you know the answer.
> 
>  IMHO, Exim documentation is very clean and structured.

I agree. Exim is my favorite opensource MTA.

>  However, it assumes some background in CS and/or programming.

Even people with some background in CS and/or programming often need
and appreciate good cookbooks and howtos.

BTW while googling for the solution, I've found quite a few questions in mailing
lists and Web-fora where people are frustrated by exim's nested conditions.

-- 
Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
2:5005/49@fidonet http://vas.tomsk.ru/

-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to