Avoid literal domainlist in match_domain
authorTollef Fog Heen <tfheen@err.no>
Sun, 14 Oct 2012 19:21:15 +0000 (21:21 +0200)
committerTollef Fog Heen <tfheen@err.no>
Sun, 14 Oct 2012 19:22:29 +0000 (21:22 +0200)
With exim 4.77 and newer, match_domain no longer does string expansion
in the second argument, to avoid potentially expensive database
lookups and such.

Use a named domain list and refer to that instead.

Thanks to Andreas Metzler for the heads-up.

modules/exim/templates/eximconf.erb

index 1be6b7e..9aef945 100644 (file)
@@ -115,6 +115,8 @@ domainlist bsmtp_domains = ${if exists {/etc/exim4/bsmtp}{partial-lsearch;/etc/e
 
 domainlist handled_domains = +local_domains : +virtual_domains : +bsmtp_domains
 
+domainlist ourself_and_handled = $primary_hostname : +handled_domains
+
 localpartlist local_only_users = lsearch;/etc/exim4/localusers
 
 localpartlist postmasterish = postmaster : abuse : hostmaster
@@ -557,7 +559,7 @@ check_recipient:
 
   drop   !hosts        = +debianhosts
          !acl          = acl_spamlovers
-         condition     = ${if match_domain{$sender_helo_name}{$primary_hostname:+handled_domains}}
+         condition     = ${if match_domain{$sender_helo_name}{+ourself_and_handled}}
          condition     = ${if !match{$sender_host_name}{${rxquote:$sender_helo_name}\N$\N}}
          message       = HELO mismatch Forged HELO for ($sender_helo_name)