eximconf: only set "greylisting requested" flag for handled domains
[mirror/dsa-puppet.git] / modules / exim / templates / eximconf.erb
index bb7c756..f8f927c 100644 (file)
@@ -306,7 +306,7 @@ GREYLIST_LOCAL_PARTS = ${if match_domain{$domain}{+virtual_domains}\
                        {${lookup{$local_part}lsearch*{${extract{directory}{VDOMAINDATA}{${value}/grey_users}}}{$local_part}{}}}{}}}\
                        {${lookup{$local_part}lsearch{/etc/exim4/grey_users}{$local_part}{}}}} : \
                        ${lookup{$local_part}lsearch{/var/lib/misc/$primary_hostname/mail-greylist}{$local_part}{}}
-HAS_DEFAULT_OPTIONS  = ${if eq{${lookup{$local_part}dbmnz{/var/lib/misc/$primary_hostname/default-mail-options.db}{$value}{TRUE}}}{TRUE}}
+HAS_DEFAULT_OPTIONS  = ${if eq{${lookup{$local_part}dbmnz{/var/lib/misc/$primary_hostname/default-mail-options.db}{$value}{FALSE}}}{TRUE}}
 <%- if @is_rtmaster -%>
 # This subject rewrite is embedded in double-quoted strings. As such, some of
 # the items need more escaping than usual, otherwise \N becomes simply "N" and
@@ -601,6 +601,14 @@ check_recipient:
           message       = Different profile, please retry
           log_message   = Only one profile at a time, please
 
+  # Set a flag to indicate whether the current recipient
+  # has explicitly requested greylisting
+  warn    set acl_m_grey_recip = 0
+
+  warn    local_parts          = GREYLIST_LOCAL_PARTS
+          domains              = +handled_domains
+          set acl_m_grey_recip = 1
+
   # Defer after too many bad RCPT TO's.  Legit MTAs will retry later.
   # This is a rough pass at preventing address harvesting or other mail blasts.
 
@@ -782,16 +790,17 @@ check_recipient:
     message  = $sender_host_address is not yet authorized to deliver mail from <$sender_address> to <$local_part@$domain>.
     log_message = greylisted.
     condition      = ${if or { \
-                                 {match_local_part{$local_part}{GREYLIST_LOCAL_PARTS}} \
-                                 {HAS_DEFAULT_OPTIONS} \
+                                 {eq{$acl_m_grey_recip}{1}} \
+                                 {bool_lax{HAS_DEFAULT_OPTIONS}} \
                              } \
-                     }
+                      }
     !senders       = :
     !hosts         = : +debianhosts : WHITELIST : \
                      ${if exists {/etc/greylistd/whitelist-hosts}\
                                  {/etc/greylistd/whitelist-hosts}{}} : \
                      ${if exists {/var/lib/greylistd/whitelist-hosts}\
                                  {/var/lib/greylistd/whitelist-hosts}{}} 
+    !dnslists      = list.dnswl.org&0.0.0.3
     condition      = ${if !eq {$acl_m_prf}{PopconMail}}
     !authenticated = *
     domains        = +handled_domains
@@ -808,6 +817,7 @@ check_recipient:
   warn
     !senders       = :
     !hosts         = : +debianhosts : WHITELIST
+    !dnslists      = list.dnswl.org&0.0.0.3
     condition      = ${if !eq {$acl_m_prf}{PopconMail}}
     condition      = ${if ! def:acl_m_grey}
     set acl_m_grey = $pid.$tod_epoch.$sender_host_port
@@ -816,14 +826,15 @@ check_recipient:
   defer
     !senders       = :
     !hosts         = : +debianhosts : WHITELIST
+    !dnslists      = list.dnswl.org&0.0.0.3
     condition      = ${if !eq {$acl_m_prf}{PopconMail}}
     !authenticated = *
     domains        = +handled_domains
     condition      = ${if or { \
-                                 {match_local_part{$local_part}{GREYLIST_LOCAL_PARTS}} \
-                                 {HAS_DEFAULT_OPTIONS} \
+                                 {eq{$acl_m_grey_recip}{1}} \
+                                 {bool_lax{HAS_DEFAULT_OPTIONS}} \
                              } \
-                     }
+                      }
     set acl_m_pgr  = request=smtpd_access_policy\n\
                      protocol_state=RCPT\n\
                      protocol_name=${uc:$received_protocol}\n\
@@ -845,14 +856,15 @@ check_recipient:
  warn
     !senders       = :
     !hosts         = : +debianhosts : WHITELIST
+    !dnslists      = list.dnswl.org&0.0.0.3
     condition      = ${if !eq {$acl_m_prf}{PopconMail}}
     !authenticated = *
     domains        = +handled_domains
     condition      = ${if or { \
-                                 {match_local_part{$local_part}{GREYLIST_LOCAL_PARTS}} \
-                                 {HAS_DEFAULT_OPTIONS} \
+                                 {eq{$acl_m_grey_recip}{1}} \
+                                 {bool_lax{HAS_DEFAULT_OPTIONS}} \
                              } \
-                     }
+                      }
     condition      = ${if eq{${uc:${substr_0_7:$acl_m_pgr}}}{PREPEND}}
     message        = ${sg{$acl_m_pgr}{\N^\w+\s*\N}{}}