On Thu, Aug 7, 2014 at 9:38 AM, Konstantin <[email protected]> wrote:
> Hi,
>
> I need to make recipient check against two files.
>
> condition =  ${if or{\
>
> {${lookup{$local_part\@$domain}lsearch{/etc/exim/list1}{false}{true}}} \
>
> {${lookup{$local_part\@$domain}lsearch{/etc/exim/list2}{false}{true}}} } }
>
> But it does not work. The error is:
> Failed: condition name expected, but found "${lookup{$local_" inside
> "or{...}" condition

You have the right idea with what you are are trying to do.  The or{}
and and{} syntax is pretty specific.  It is:

or{ {condition1{}} {condition2{}} {condition3{}} etc }

In your case, the lookup must occur inside the {} part.  So what is
the condition?  Well, you use a condition to compare the results of
that lookup to something else.  In this case, your logic implies that
you want to return true if the user/email is NOT found in the file,
such as a blacklist.  So use eq to compare the lookup to an empty
string   For example:

eq{ ${lookup{$local_part\@$domain}lsearch{/etc/exim/list1} {}
      {false} {true} }

So when you put it all together, you wrap each eq function with
another set of curly braces and you end up with:

or{
  {eq{ ${lookup{$local_part\@$domain}lsearch{/etc/exim/list1}} {}
          {false} {true} }
  }
  {eq{ ${lookup{$local_part\@$domain}lsearch{/etc/exim/list2}} {}
          {false} {true} }
  }
}

This is untested, but it should work the way you expect it to.  Fully
test it first for form, function, and accuracy.

...Todd
-- 
The total budget at all receivers for solving senders' problems is $0.
If you want them to accept your mail and manage it the way you want,
send it the way the spec says to. --John Levine

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