chiark / gitweb /
user-spam.m4: Fix indentation in the output.
[exim-config] / user-spam.m4
index 4aaf352b445bf0473145a41e757508c6f0853b02..29a796321e0a15404647e7a06762a3e3433165d3 100644 (file)
@@ -25,28 +25,48 @@ DIVERT(null)
 ###--------------------------------------------------------------------------
 ### User-configurable spam thresholds.
 
+m4_define(<:USER_SPAMLIMIT_ROUTER:>,
+<:SPAMLIMIT_ROUTER(fetch_spam_limit_$1_$2)
+       check_local_user
+       local_part_suffix = CONF_user_suffix_list
+       local_part_suffix_optional = true
+       $3:>)
+
+m4_define(<:USER_SPAMLIMIT_ROUTERS:>,
+<:USER_SPAMLIMIT_ROUTER(<:lookup:>, <:$1:>,
+       <:$5SPAMLIMIT_LOOKUP(<:CONF_userconf_dir/spam-limit:>,
+               <:$2:>, <:$3:>, <:$4:>, <:user=$local_part:>):>)
+USER_SPAMLIMIT_ROUTER(<:userv:>, <:$1:>,
+       <:$5SPAMLIMIT_USERV(<:$local_part:>,
+               <:$2:>, <:$3:>, <:$4:>, <:user=$local_part:>):>):>)
+
+m4_define(<:CURRENT_LOCAL_PART:>,
+       <:$local_part_prefix$local_part$local_part_suffix:>)
+
+m4_define(<:ORIGINAL_ADDRESS:>, <:$original_local_part@$original_domain:>)
+m4_define(<:PARENT_ADDRESS:>, <:$parent_local_part@$parent_domain:>)
+m4_define(<:CURRENT_ADDRESS:>, <:CURRENT_LOCAL_PART@$domain:>)
+
 SECTION(routers, allspam)m4_dnl
 ## If we're verifying an address and the recipient has a `~/.mail/spam-limit'
 ## file, then look up the recipient and sender addresses to find a plausible
 ## limit and insert it into the `address_data' where the RCPT ACL can find
 ## it.  This router always declines, so it doesn't affect the overall outcome
 ## of the verification.
-SPAMLIMIT_ROUTER(fetch_spam_limit_lookup)
-       check_local_user
-       local_part_suffix = CONF_user_suffix_list
-       local_part_suffix_optional = true
-       SPAMLIMIT_LOOKUP(CONF_userconf_dir/spam-limit,
-               $local_part_prefix, $local_part, $local_part_suffix, $domain,
-               $sender_address)
-
-SPAMLIMIT_ROUTER(fetch_spam_limit_userv)
-       check_local_user
-       local_part_suffix = CONF_user_suffix_list
-       local_part_suffix_optional = true
-       condition = ${if exists{CONF_userconf_dir/spam-limit.userv}}
-       SPAMLIMIT_USERV(SHQUOTE($local_part),
-               $local_part_prefix, $local_part, $local_part_suffix, $domain,
-               $sender_address)
+##
+## As a result of forwarding and aliasing, the original envelope recipient
+## may have been set a while ago, so we'll search through the history until
+## we find a match.
+USER_SPAMLIMIT_ROUTERS(<:original:>,
+       <:$original_local_part:>, <:$original_domain:>, <:$sender_address:>,
+       <:condition = ${if !eq{ORIGINAL_ADDRESS}{PARENT_ADDRESS}}
+       :>)
+USER_SPAMLIMIT_ROUTERS(<:parent:>,
+       <:$parent_local_part:>, <:$parent_domain:>, <:$sender_address:>,
+       <:condition = ${if !eq{PARENT_ADDRESS}{CURRENT_ADDRESS}}
+       :>)
+USER_SPAMLIMIT_ROUTERS(<:current:>,
+       <:CURRENT_LOCAL_PART:>, <:$domain:>, <:$sender_address:>)
 
 DIVERT(null)
 ###----- That's all, folks --------------------------------------------------