Revert "And another acl for exim"+1
[mirror/dsa-puppet.git] / modules / exim / templates / eximconf.erb
index 9b89ea1..818d778 100644 (file)
 #           us. This is primarily only usefull for emergancy 'queue
 #           flushing' operations, but should be populated with a list
 #           of trusted machines. Wildcards are not permitted
+<%=
+out = ""
+if nodeinfo['mailrelay']
+  out = '
 #  mailhubdomains - Domains for which we are the MX, but the mail is relayed
 #           elsewhere.  This is designed for use with small volume or
 #           restricted machines that need to use a smarthost for mail
 #           traffic.  We will relay for them based on ssl cert validation
 #           but we need to teach exim how to route the mail to them.  This is
 #           that list.
-
+'
+end
+out
+%>
 # Exim's wildcard mechanism is a bit odd in that to say "any address in
 # debian.org including debian.org" you must use two patterns,
 #   *.debian.org
 #                    MAIN CONFIGURATION SETTINGS                     #
 ######################################################################
 
+<%=
+out=''
+if nodeinfo.has_key?('heavy_exim') and not nodeinfo['heavy_exim'].empty?
+  out = "
+perl_startup = do '/etc/exim4/exim_surbl.pl'
+"
+end
+out
+%>
+
 # These options specify the Access Control Lists (ACLs) that
 # are used for incoming SMTP messages - after the RCPT and DATA
 # commands, respectively.
@@ -114,12 +131,20 @@ localpartlist local_only_users = lsearch;/etc/exim4/localusers
 # accept mail for them.
 domainlist rcpthosts = partial-lsearch;/etc/exim4/rcpthosts
 hostlist debianhosts = 127.0.0.1 : net-lsearch;/var/lib/misc/thishost/debianhosts
+<%=
+out = ""
+if nodeinfo['mailrelay']
+  out = '
 domainlist mailhubdomains = lsearch;/etc/exim4/manualroute
+'
+end
+out
+%>
 
 hostlist reservedaddrs = <%= nodeinfo['reservedaddrs'] %>
 
 <%= out = ""
-if has_variable?("exim_ssl_certs") && exim_ssl_certs == true
+if has_variable?("exim_ssl_certs") && exim_ssl_certs == "true"
 out = "tls_certificate = /etc/exim4/ssl/thishost.crt
 tls_privatekey = /etc/exim4/ssl/thishost.key
 tls_try_verify_hosts = *
@@ -190,16 +215,16 @@ ports = []
 out = "daemon_smtp_ports = "
 ports << 25
 
-if results['bugsmaster']
+if nodeinfo['bugsmaster']
   ports << 587
 end
 
-if not results['mail_port'].empty?
-  ports << results['mail_port']
+if not nodeinfo['mail_port'].to_s.empty?
+  ports << nodeinfo['mail_port']
 end
 
-if results['mailrelay']
-  ports << results['smarthost_port']
+if nodeinfo['mailrelay']
+  ports << nodeinfo['smarthost_port']
 end
 
 out += ports.uniq.sort.join(" : ")
@@ -211,7 +236,7 @@ remote_sort_domains = *.debian.org:*.debian.net
 
 pipelining_advertise_hosts = !*
 <%= out = ""
-if has_variable?("exim_ssl_certs") && exim_ssl_certs == true
+if has_variable?("exim_ssl_certs") && exim_ssl_certs == "true"
 out = 'tls_advertise_hosts = *'
 end
 out
@@ -254,7 +279,7 @@ check_helo:
 
 <%= 
 out = ""
-if results['mailrelay']
+if nodeinfo['mailrelay']
   out = "  accept  verify   = certificate"
 end
 out
@@ -347,7 +372,7 @@ check_submission:
 
 <%= 
 out = ""
-if results['mailrelay']
+if nodeinfo['mailrelay']
   out = "  accept  verify   = certificate"
 end
 out
@@ -371,10 +396,18 @@ out
          message  = unknown user
          verify   = recipient
 
+<%=
+out = ""
+if nodeinfo['mailrelay']
+  out = '
   accept  domains  = +mailhubdomains
           endpass
          message  = unknown user
          verify   = recipient/callout=30s,defer_ok,use_sender,no_cache
+'
+end
+out
+%>
 
   accept  domains  = +submission_domains
           endpass
@@ -386,9 +419,9 @@ out
 #!!# ACL that is used after the RCPT command
 check_recipient:
 
-<%= 
+<%=
 out = ""
-if results['mailrelay']
+if nodeinfo['mailrelay']
   out = "  accept  verify   = certificate"
 end
 out
@@ -478,9 +511,17 @@ out
           hosts         = !+debianhosts
          message       = mail for $local_part is only accepted internally
 
+<%=
+out=''
+if 0 == 1:
+out='
   deny    message  = address $sender_host_address is listed in $dnslist_domain; $dnslist_text
          hosts    = !+debianhosts
           dnslists = rbl.debian.net : rbl.debian.net/$sender_address_domain
+'
+end
+out
+%>
 
   deny    !recipients = survey@popcon.debian.org
           !verify = sender
@@ -489,7 +530,6 @@ out
           condition      = ${if >{${eval:$acl_c1}}{0}}
           ratelimit      = 10 / 60m / per_rcpt / $sender_host_address
           message        = slow down (no reverse dns, mismatched ehlo, dialup, or in blacklists)
-
 <%=
 out = ""
 if has_variable?("policydweight") && policydweight == "true"
@@ -554,23 +594,37 @@ out
   warn    recipients = survey@popcon.debian.org
           set acl_m1 = PopconMail
 
+<%=
+out=''
+if nodeinfo['rtmaster']
+  out='
   warn    domains  = rt.debian.org
           set acl_m1 = RTMail
           set acl_m12 = ${if def:acl_m12 {$acl_m12} {${if or{{match{$local_part}{[^+]+\\+\\d+}}{match{$local_part}{[^+]+\\+new}}} {RTMailRecipientHasSubaddress}}}}
-
+'
+end
+out
+%>
+<%=
+out=''
+if nodeinfo['packagesmaster']
+  out='
   warn    domains  = packages.qa.debian.org
           set acl_m1 = PTSMail
 
   warn    recipients = owner@packages.qa.debian.org : postmaster@packages.qa.debian.org
           set acl_m1 = PTSOwner
 
-  warn    recipients = change@db.debian.org : changes@db.debian.org : chpasswd@db.debian.org : ping@db.debian.org : recommend@nm.debian.org
-          set acl_m1 = DBSignedMail
-
   warn    senders  = :
           domains  = packages.qa.debian.org
           condition = ${if match{$local_part}{\N^bounces+\N}}
           set acl_m1 = PTSListBounce
+'
+end
+out
+%>
+  warn    recipients = change@db.debian.org : changes@db.debian.org : chpasswd@db.debian.org : ping@db.debian.org : recommend@nm.debian.org
+          set acl_m1 = DBSignedMail
 
 <%=
 out = ""
@@ -629,7 +683,7 @@ elsif has_variable?("postgrey") && postgrey == "true"
                          ${readsocket{/var/run/postgrey/socket}{$acl_m3}\
                                {5s}{}{action=DUNNO}}\
                      }{action=}{}}
-    message        = ${sg{$acl_m3}{^\\w+\\s*}{}}
+    message        = ${sg{$acl_m3}{^\\\\w+\\\\s*}{}}
     log_message    = greylisted.
     condition      = ${if eq{${uc:${substr{0}{5}{$acl_m3}}}}{DEFER}}
 
@@ -641,8 +695,9 @@ elsif has_variable?("postgrey") && postgrey == "true"
     domains        = +handled_domains : +rcpthosts
     local_parts    = GREYLIST_LOCAL_PARTS
     condition      = ${if eq{${uc:${substr_0_7:$acl_m3}}}{PREPEND}}
-    message        = ${sg{$acl_m3}{^\\w+\\s*}{}}
+    message        = ${sg{$acl_m3}{^\\\\w+\\\\s*}{}}
 '
+end
 out
 %>
 
@@ -680,11 +735,18 @@ out
           !hosts   = +debianhosts : WHITELIST
          !verify  = sender/callout
 
+<%=
+out = ""
+if nodeinfo['mailrelay']
+  out = '
   accept  domains  = +mailhubdomains
           endpass
          message  = unknown user
          verify   = recipient/callout=30s,defer_ok,use_sender,no_cache
-
+'
+end
+out
+%>
   accept  domains  = +handled_domains
           endpass
          message  = unknown user
@@ -706,17 +768,31 @@ check_message:
   require verify = header_syntax
           message = Invalid syntax in the header
 
+<%=
+out=''
+if nodeinfo['rtmaster']
+  out='
   deny    condition = ${if eq {$acl_m1}{RTMail}}
           condition = ${if and{{!match {${lc:$rh_Subject:}} {debian rt}} \
                                {!match {${lc:$rh_Subject:]}} {\\[rt.debian.org }} \
                                {!match {$acl_m12}{RTMailRecipientHasSubaddress}}}}
           message  = messages to the Request Tracker system require a subject tag or a subaddress
-
+'
+end
+out
+%>
+<%=
+out=''
+if nodeinfo['packagesmaster']
+  out='
   deny    !hosts  = +debianhosts : 217.196.43.134
           condition = ${if eq {$acl_m1}{PTSMail}}
           condition = ${if def:h_X-PTS-Approved:{false}{true}}
           message   = messages to the PTS require an X-PTS-Approved header
-
+'
+end
+out
+%>
   deny    condition      = ${if match {$message_body}{\Nhttp:\/\/[a-z\.-]+\/video1?.exe\N}}
           message        = Blackisted URI found in body
 
@@ -765,6 +841,18 @@ out
                             {${lookup{$local_part@$domain}nwildlsearch{/etc/exim4/sa_users}{$local_part}{}}}\
                             {${lookup{$local_part}lsearch{/etc/exim4/sa_users}{$local_part}{}}}}}}
 
+<%=
+out=''
+if nodeinfo.has_key?('heavy_exim') and not nodeinfo['heavy_exim'].empty?
+out='
+  deny   condition     = ${if <{$message_size}{256000}}
+         set acl_m5    = ${perl{surblspamcheck}}
+         condition     = ${if eq{$acl_m5}{false}{no}{yes}}
+         log_message   = $acl_m5
+'
+end
+out
+%>
   # Check header_sender except for survey@popcon.d.o
   deny    condition = ${if eq{$acl_m1}{PopconMail}{false}{true}}
           !verify = header_sender
@@ -809,7 +897,7 @@ begin routers
 
 <%=
 out = ""
-if results['mailrelay']
+if nodeinfo['mailrelay']
   out = '
 relay_manualroute:
   driver = manualroute
@@ -844,14 +932,14 @@ ipliteral:
 
 <%=
 out = ""
-if not results['smarthost'].empty?
+if not nodeinfo['smarthost'].empty?
 out = '
 smarthost:
   debug_print = "R: smarthost for $local_part@$domain"
   driver = manualroute
   domains = !+handled_domains
   transport = remote_smtp_smarthost
-  route_list = * ' + smarthost + '
+  route_list = * ' + nodeinfo['smarthost'] + '
   host_find_failed = defer
   same_domain_copy_routing = yes
   no_more
@@ -1010,7 +1098,7 @@ localuser:
 # the virts, and delivering to them.  blah.
 <%=
 out = ""
-if results['packagesmaster']
+if nodeinfo['packagesmaster']
   out = '
 # This router delivers for packages.d.o
 packages:
@@ -1034,7 +1122,7 @@ out
 
 <%=
 out = ""
-if results['bugsmaster']
+if nodeinfo['bugsmaster']
   out = '
 # This router delivers for bugs.d.o
 bugs:
@@ -1057,7 +1145,7 @@ out
 
 <%=
 out = ""
-if results['rtmaster']
+if nodeinfo['rtmaster']
   out = '
 # This router delivers for rt.d.o
 rt_force_new_verbose:
@@ -1075,7 +1163,7 @@ rt_force_new_verbose:
 # - rt+NNNN@rt.debian.org          : attach correspondence to ticket (verbose)
 # - rt+NNNN-quiesce@rt.debian.org  : attach correspondence to ticket (quiesce)
 # - rt+NNNN-<action>@rt.debian.org : attach correspondence to ticket (some action)
-# requires modification to custom condition in 'scrips'
+# requires modification to custom condition in \'scrips\'
 rt_force_new_quiesce:
   debug_print = "R: rt for $local_part+new-quiesce@$domain"
   driver = redirect
@@ -1291,20 +1379,22 @@ end
 out
 %>
 
+<%=
+out = ""
+if not nodeinfo['smarthost'].empty?
+out = '
 remote_smtp_smarthost:
   debug_print = "T: remote_smtp_smarthost for $local_part@$domain"
   driver = smtp
-<%=
-out = ""
-if not results['smarthost'].empty?
-  out += "  port = " + results['smarthost_port'] + "\n"
-end
-
-if has_variable?("exim_ssl_certs") && exim_ssl_certs == "true"
-  out += '  tls_tempfail_tryclear = false
+  port = '
+  out += nodeinfo['smarthost_port'].to_s + "\n"
+  if has_variable?("exim_ssl_certs") && exim_ssl_certs == "true"
+    out += '  tls_tempfail_tryclear = false
+  hosts_require_tls = ' + nodeinfo['smarthost'] + '
   tls_certificate = /etc/exim4/ssl/thishost.crt
   tls_privatekey = /etc/exim4/ssl/thishost.key
 '
+  end
 end
 out
 %>
@@ -1330,7 +1420,7 @@ bsmtp:
 
 <%=
 out = ""
-if results['bugsmaster']
+if nodeinfo['bugsmaster']
   out = '
 bugs_pipe:
   driver = pipe
@@ -1349,7 +1439,7 @@ out
 
 <%=
 out = ""
-if results['rtmaster']
+if nodeinfo['rtmaster']
   out = '
 rt_pipe:
   debug_print = "T: rt_pipe for $local_part${local_part_suffix}@$domain"