# 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
# 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 = *
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(" : ")
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
<%=
out = ""
-if results['mailrelay']
+if nodeinfo['mailrelay']
out = " accept verify = certificate"
end
out
<%=
out = ""
-if results['mailrelay']
+if nodeinfo['mailrelay']
out = " accept verify = certificate"
end
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
#!!# ACL that is used after the RCPT command
check_recipient:
-<%=
+<%=
out = ""
-if results['mailrelay']
+if nodeinfo['mailrelay']
out = " accept verify = certificate"
end
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 = ""
${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}}
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
%>
!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
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
<%=
out = ""
-if results['mailrelay']
+if nodeinfo['mailrelay']
out = '
relay_manualroute:
driver = manualroute
<%=
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
# the virts, and delivering to them. blah.
<%=
out = ""
-if results['packagesmaster']
+if nodeinfo['packagesmaster']
out = '
# This router delivers for packages.d.o
packages:
<%=
out = ""
-if results['bugsmaster']
+if nodeinfo['bugsmaster']
out = '
# This router delivers for bugs.d.o
bugs:
<%=
out = ""
-if results['rtmaster']
+if nodeinfo['rtmaster']
out = '
# This router delivers for rt.d.o
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
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
%>
<%=
out = ""
-if results['bugsmaster']
+if nodeinfo['bugsmaster']
out = '
bugs_pipe:
driver = pipe
<%=
out = ""
-if results['rtmaster']
+if nodeinfo['rtmaster']
out = '
rt_pipe:
debug_print = "T: rt_pipe for $local_part${local_part_suffix}@$domain"