Re: [Exim] ACL tidying

Top Page
Delete this message
Reply to this message
Author: William Thompson
Date:  
To: John Jetmore
CC: exim-users
Subject: Re: [Exim] ACL tidying
> I have a tree acl - the one that gets run is based on the recipient
> domain. I have been using it like this, which is very ugly to me:
>
> acl_choose_check_rcpt:
>   accept acl = \
>     ${if \
>       eq\
>         {$domain}\
>         {${lookup\
>           {$domain}\
>           dbmnz{MAILRTRD/db.rtr_alldomains.db}\
>           {$domain}\
>           {}\
>         }}\
>       {acl_rtr_main}\
>       {check_recipient}\
>     }

>
> so, if $domain is in db.rtr_alldomains.db, acl_rtr_main is run. otherwise
> check_recipient is run. I'm trying to find out a cleaner way to write
> this. I thought this would work:


ICK, that's horrid.

> acl_choose_check_rcpt:
>   accept domains = dbmnz;MAILRTRD/db.rtr_alldomains.db
>          acl     = acl_rtr_main
>   accept acl     = check_recipient


That should work.

> but it doesn't. If acl_rtr_main denies the rcpt, check_recipient is then
> given a go, which is wrong. I also considered this:


Maybe you should change that to a deny:
    deny    domains = dbmnz;MAILRTRD/db.rtr_alldomains.db
        acl = acl_rtr_main


I don't know how to change it to a require. I prefer deny anyway. =)

If the above doesn't work, you might want to put a ! before the acl = part.

NICO? =)

> acl_choose_check_rcpt:
>   accept domains = dbmnz;MAILRTRD/db.rtr_alldomains.db
>          acl     = acl_rtr_main
>   deny   domains = dbmnz;MAILRTRD/db.rtr_alldomains.db
>   accept acl     = check_recipient

>
> but that throws away all the very carefully crafted rejection messages in
> acl_rtr_main.
>
> It seems like w/ all the flexibility of ACLs there's some way I'm missing
> to make that lookup not quite so ugly. Any ideas?
>
> --John
>
>
> --
>
> ## List details at http://www.exim.org/mailman/listinfo/exim-users Exim details at http://www.exim.org/ ##
>