I have a policy server that needs to be able to make policy decisions after a before-queue content filter. The problem is that the client IP address reported by the second smtpd instance to the policy server is that of the proxy (i.e. localhost), rather than of the sending server. Would it make sense to add the values provided by XFORWARD to the list of attributes passed to the policy server? For example:
--- smtpd_check.c.orig 2010-03-06 19:35:24.000000000 -0500 +++ smtpd_check.c 2010-05-26 11:57:41.000000000 -0400 @@ -3417,6 +3417,10 @@ ATTR_TYPE_STR, MAIL_ATTR_ACT_PROTO_NAME, state->protocol, ATTR_TYPE_STR, MAIL_ATTR_ACT_CLIENT_ADDR, state->addr, ATTR_TYPE_STR, MAIL_ATTR_ACT_CLIENT_NAME, state->name, + ATTR_TYPE_STR, MAIL_ATTR_LOG_CLIENT_ADDR, FORWARD_ADDR(state), + ATTR_TYPE_STR, MAIL_ATTR_LOG_CLIENT_NAME, FORWARD_NAME(state), + ATTR_TYPE_STR, MAIL_ATTR_LOG_HELO_NAME, state->helo_name ? FORWARD_HELO(state) : "", + ATTR_TYPE_STR, MAIL_ATTR_LOG_PROTO_NAME, FORWARD_PROTO(state), ATTR_TYPE_STR, MAIL_ATTR_ACT_REVERSE_CLIENT_NAME, state->reverse_name, ATTR_TYPE_STR, MAIL_ATTR_ACT_HELO_NAME, -- Joshua Pettett