> If someone knows a way to have Exim go through the delivery ACL rules for
> each
> recipient, I'd like to know.
>
> -- Chris
>
> --
> Chris Knadle
> [email protected]
Delivery ACL? Am I missing something, or have you not accepted the message
anyway by then?
We defer at the RCPT ACL stage - not enforcing a separate delivery per
recipient, but a separate delivery per preference (this is OK as long as the
number of different preferences is reasonably small! And most people use
default anyway...). It works like this...
# Use macros to define these ACL variable names
#
ACL_USER_PREFS_MODE = acl_m0
ACL_RCPT_EXEMPTION_MODE = acl_m2
ACL_MSG_EXEMPTION_MODE = acl_m3
...
In the RCPT ACL, early on, get the user preferences from a database (the names
here are not necessarily the best but you will get the idea)...
warn set ACL_USER_PREFS_MODE =
${readsocket{/var/run/exim_white_sockd.sock}{WHITELIST ${lc:$sender_address}
${lc:$local_part@$domain} $sender_host_address}{3s}{\n}{0}}
(then set ACL_RCPT_EXEMPTION_MODE according to ACL_USER_PREFS_MODE)
...
# If this is the first recipient, the message exemption mode will be unset -
# in this case, set the message exemption mode to be
# the same as the recipient exemption mode
warn condition = ${if def:ACL_MSG_EXEMPTION_MODE {no}{yes}}
set ACL_MSG_EXEMPTION_MODE = $ACL_RCPT_EXEMPTION_MODE
# Now if the recipient exemption mode is not the same as the message
# exemption mode (so recipients want the message handled differently)
# defer the message for the current recipient
defer condition = ${if eq{$ACL_MSG_EXEMPTION_MODE}{$ACL_RCPT_EXEMPTION_MODE}
{no}{yes}}
message = 450 Deferred - please re-try for this recipient
log_message = Deferred for $local_part@$domain due to user preference
conflict
...
and do your normal message checks, accept/deny/defer as appropriate.
Hope this helps
Regards
Richard
--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/