Michael L Griffin wrote:
> Holy smokes!
>
> Anyone willing to try break this down into English for the rest of us
> noobs who have no clue what this is or what it does. I would love to use it
> as a learning experience and enrich my knowledge of Exim.
>
> Regards
> Michael
>
Might be better off to not.
The 'recursive' code looks vaguely sewing-machine'ish, referring the the
description of a sewing-machine as 'a self-fornicating mechanical device'.
;-)
Bill
> ----- Original Message -----
> From: "John W. Baxter" <jwblist3@???>
> To: <exim-users@???>
> Sent: Saturday, February 17, 2007 7:39 AM
> Subject: Re: [exim] how to set up RelayCountry
>
>
> On 2/15/07 7:22 AM, "Mike Cardwell" <exim-users@???> wrote:
>
>> If you just want to add the header, you can do it natively in exim:
>>
>> Stick this in your data acl:
>>
>> warn set acl_m0 =
>> acl = acl_relay_countries
>> condition = ${if ! eq{$acl_m0}{}}
>> message = X-Relay-Countries: $acl_m0
>>
>> Create a recursive acl as follows:
>>
>> acl_relay_countries:
>> warn set acl_m3 = ${if eq{$acl_m3}{}{$h_received:}{$acl_m3}}
>> set acl_m2 = ${if match{$acl_m3}{\N^[^\[]+\[([^\]]+)\]\N}{$1}{}}
>> set acl_m3 = ${sg{$acl_m3}{\N^[^\[]+\[([^\]]+)\](.*)\N}{\$2}}
>> warn condition = ${if match{$acl_m2}{\N^\d{1,3}(\.\d{1,3}){3}$\N}}
>> !condition = ${if match_ip{$acl_m2}{+private_networks}}
>> set acl_m5 =
>> ${sg{$acl_m2}{\N^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$\N}{\$4.\$3.\$2.\$
>> 1.zz.countries.nerd.dk}}
>> set acl_m5 = ${lookup dnsdb{txt=<,$acl_m5}{${uc:$value}}{UNKNOWN}}
>> set acl_m0 = ${if eq{$acl_m0}{}{$acl_m5}{$acl_m0 $acl_m5}}
>> warn !condition = ${if eq{$acl_m2}{}}
>> acl = acl_relay_countries
>> accept
>>
>> I only briefly tested the above but it seems to work.
>>
>> There should be an obfuscated exim configuration contest.
>
> Philip, thou hast builded a monster. ;-)
>
> Mike, be grateful for the \N...\N construct (a relatively recent--compared
> with my use of Exim--and most welcome addition).
>
> --John
>
>
>