On 7/16/2020 12:05 AM, Julian Bradfield via Exim-users wrote:
>> However, the DMARC example of 58.5 contains a construct that has me
>> totally stumped:
>>
>> warn !domains = +screwed_up_dmarc_records
>>
>> ...
>> Presumably the left side of the "=" is negated in some manner, but that
>> is about as much as I think I understand. The right side looks
>> sufficiently close (linguistically speaking) to "foobar" that I think I
>> have some glimmer of understanding of that. But, maybe not.
> It means warn !( domains = +screwed_up_dmarc_records)
>
> The meaning of ! is explained in the first line of section 44.20 of
> the spec.
44.20 first line:
> An exclamation mark preceding a condition negates its result.
The remainder of 44.20 seems to me an obfuscatory masterpiece of
explanation of an ambiguous spec.
In any event, to understand the negation of "x" one must first
understand "X".
But, actually, my focus on "!domains = +some_meaningless_list" appears
to be an example of chasing a wild goose. My focus should have been on
the preceding "warn" verb.
As explained in 44.18:
> If log_message is not present, a warn verb just checks its conditions and obeys any “immediate”
> modifiers (such as control, set, logwrite, add_header, and remove_header) that appear before
> the first failing condition.
Therefore, per the spec:
> warn !domains = +screwed_up_dmarc_records
> control = dmarc_enable_forensic
Does precisely nothing because the control modifier appears AFTER the
failing "domains" condition. Which leaves one to wonder the intent of
the author.
Phil