> >> ACLs are processed in sequential order. Some ACL condition clauses > >> overwrite the "message" field that's used when the ACL triggers a
> >> rejection, and some don't. This is why your results are
> >> inconsistent; to get consistency, put your clauses in the
> >> logically correct order.
>
> Actually that explanation was too simplistic. There are in fact
> _two_ "message" fields (the one used by message=, which is returned
> to the client, and the one used by log_message=, which is logged
> and defaults to the message= value if not explicitly set). Many of
> the ACL clauses set the log_message= field without touching the
> message= field, so in those cases what you see in the log doesn't
> match what the client sees (which you'll probably have to use exim -bh
> to find out).
Okay, so this explains why switching the order still didn't work... sometimes log_message is set and sometimes it isn't, but log_message is always what is shown even if not explicitly set. I didn't see that anywhere in the docs, but that doesn't mean I'm not just blind.
> verify = reverse_host_lookup doesn't verify an "address" in that
> context, the docs are referring to an email address not an IP.
> reverse_host_lookup actually only sets the log_message= field as
> far as I can tell from the code.
I just assumed that when the docs were written, only address verification was there and that the other bits were added later but worked in the same fashion.