Re: [exim] struggling with conditions

Top Page
Delete this message
Reply to this message
Author: Magnus Holmgren
Date:  
To: exim-users
Subject: Re: [exim] struggling with conditions
On Wednesday 09 May 2007 05:47, Dominique wrote:
> I have made a revised, simplified version based on your previous post.
>
> My ACL now looks like this:
>
>   defer
>         warn set acl_m_PROTECTION = ${lookup mysql{SELECT protection FROM
> domain_settings WHERE domain_
> name='$domain'}}


You can't nest ACL statements. What you have there is a defer without
conditions, which either is a syntax error or means that you will always
defer. Have you read chapter 40 *carefully*?

>         !senders = : postmaster
>         #defer condition = {if eq{acl_m_PROTECTION}{2} }
>         #       !local_parts = +skip_grey
>         #       acl = greylist_acl
>         #{ !local_parts = +skip_grey}}
>         #       acl = greylist_acl
>         #       !local_parts =
>         #       acl = greylist_acl
>         #defer condition = {if eq{acl_m_PROTECTION}{3}}{yes}{no}
>         #       local_parts = +partial_grey
>         #       acl = greylist_acl
>         #accept condition = {if eq{acl_m_PROTECTION}{2}}{yes}{no}
>         #       !local_parts = +skip_grey
>         #       acl = greylist_acl
>         #defer condition = {if eq{acl_m_PROTECTION}{1}}{yes}{no}
>                 acl = greylist_acl

>
>                 message = Greylisted

>
>
> But this is not really going to work either. Essentially what I'm looking
> for are if statements.
>
> something like the meta code below:
>
> if acl_m_PROTECTION == 2:
>     # do not protect these local parts
>     !local_parts = +skip_grey
>     acl = greylist_acl
> elsif acl_m_PROTECTION == 3:
>     # protect only these local parts
>     local_parts = +partial_grey
>     acl = greylist_acl

>
> Is something like this doable in ACLs?


Yes, with multiple ACL statements like the suggestion I gave you. To avoid
repetition you use sub-ACLs, just like you have done. If you want
greylist_acl to return accept for "greylisted" and deny for "whitelisted",
then change the accepts into defers in my suggested solution.

-- 
Magnus Holmgren        holmgren@???
                       (No Cc of list mail needed, thanks)


"Exim is better at being younger, whereas sendmail is better for
Scrabble (50 point bonus for clearing your rack)" -- Dave Evans