[exim-dev] [Bug 423] callout verify failure message as a var…

Top Page
Delete this message
Reply to this message
Author: admin
Date:  
To: exim-dev
Subject: [exim-dev] [Bug 423] callout verify failure message as a variable
https://bugs.exim.org/show_bug.cgi?id=423

--- Comment #14 from Simon Arlott <bugzilla.exim.simon@???> ---
(In reply to Jeremy Harris from comment #13)
> > it logs on any warn verb that defers. There is no message or log_message on it.
>
> So I'm confused. I had the impression that you had a warn verb, which would
> not result in a defer, and you went on with other verbs doing other things.
> Note that "warn" and "defer" are different verbs.
> Can you show your code section, pointing out where something gets logged?


exim_check_acl:
warn
        set acl_m_verify = bypass
        condition        = ${if eq{$acl_m_allow_any}{0}{yes}{no}}
        acl              = exim_verify_sender
        condition        = 0
# Exim removes user_message at the end of every warn verb.


defer
        condition   = ${if eq{$acl_m_verify}{defer}}
        logwrite    = :main:...
        log_message = $acl_m_debug verify/sender/defer


deny
        condition   = ${if eq{$acl_m_verify}{deny}}
        logwrite    = :main:...
        log_message = $acl_m_debug verify/sender/deny


exim_verify_sender:
accept
        set acl_m_verify = defer
        verify           = sender/callout=90s
        set acl_m_verify = accept


deny
        set acl_m_verify = deny


> > Yes, the user message is impossible to reconstruct.
>
> What did it say, and why can't you put that in a log_message or logwrite
> modifier?


Because I don't have it. It is generated by Exim:

  if (rc != FAIL || LOGGING(sender_verify_fail))
    log_write(0, LOG_MAIN|LOG_REJECT, "%s sender verify %s for <%s>%s",
      host_and_ident(TRUE),
      ((sender_verified_failed->special_action & 255) == DEFER)?
"defer":"fail",
      sender_verified_failed->address,
      (sender_verified_failed->message == NULL)? US"" :
      string_sprintf(": %s; %s", sender_verified_failed->message,
sender_verified_failed->user_message));


I have no way to access sender_verified_failed->user_message from an ACL.

> > What it fails to point out is that the verify message that used to get sent
> > over SMTP is now no longer sent and you get a default generic message instead.
>
> Now you're talking about the SMTP response, not the logging.


Why is this relevant?

I want to send the original SMTP response message with the information that
explains why the verify failed.

I want to log some headers when there's a defer/deny.

I can't do both of these things at the same time because there's a lot of
special cases in the Exim code around generation of messages for verify
failures.

This bug is for putting the message in a variable, which would make it possible
to send it in the response even after the user_message is reset.

--
You are receiving this mail because:
You are the QA Contact for the bug.