From f8b10b0e0516ad8e0e0f2cf1ed7ab9fb73922b97 Mon Sep 17 00:00:00 2001 From: "Adam D. Barratt" Date: Thu, 10 Oct 2019 20:21:57 +0100 Subject: [PATCH] eximconf: migrate from CDB to BDB for ud-ldap generated files (RT#4648) The BDB files use keys that are not null-terminated, so we must use the "dbmnz" lookup type, rather than the more generally obvious "dbm" Signed-off-by: Adam D. Barratt --- modules/exim/templates/eximconf.erb | 48 ++++++++++++++++------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/modules/exim/templates/eximconf.erb b/modules/exim/templates/eximconf.erb index a11e8d5de..2fa12c9f4 100644 --- a/modules/exim/templates/eximconf.erb +++ b/modules/exim/templates/eximconf.erb @@ -45,8 +45,12 @@ # From /var/lib/misc / UD: # -# mail-forward.cdb - aliases for @d.o -# user-forward.cdb - aliases for @thishost.d.o +# mail-forward.db - aliases for @d.o +# user-forward.db - aliases for @thishost.d.o +# +# Note that the BDB files generated by ud-ldap use keys that are not +# null-terminated, so Exim needs to use the "dbmnz" lookup type, rather +# than "dbm". # 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, @@ -414,27 +418,27 @@ acl_getprofile: accept condition = ${if !eq {$acl_m_rprf}{}} warn domains = +virtual_domains - condition = ${if exists {${extract{directory}{VDOMAINDATA}{${value}/contentinspectionaction.cdb}}}} - condition = ${if eq{${lookup{$local_part}cdb{${extract{directory}{VDOMAINDATA}{${value}/contentinspectionaction.cdb}}}{$value}{}}}{markup}} + condition = ${if exists {${extract{directory}{VDOMAINDATA}{${value}/contentinspectionaction.db}}}} + condition = ${if eq{${lookup{$local_part}dbmnz{${extract{directory}{VDOMAINDATA}{${value}/contentinspectionaction.db}}}{$value}{}}}{markup}} set acl_m_rprf = markup accept condition = ${if !eq {$acl_m_rprf}{}} warn domains = +virtual_domains - condition = ${if exists {${extract{directory}{VDOMAINDATA}{${value}/contentinspectionaction.cdb}}}} - condition = ${if eq{${lookup{$local_part}cdb{${extract{directory}{VDOMAINDATA}{${value}/contentinspectionaction.cdb}}}{$value}{}}}{blackhole}} + condition = ${if exists {${extract{directory}{VDOMAINDATA}{${value}/contentinspectionaction.db}}}} + condition = ${if eq{${lookup{$local_part}dbmnz{${extract{directory}{VDOMAINDATA}{${value}/contentinspectionaction.db}}}{$value}{}}}{blackhole}} set acl_m_rprf = blackhole accept condition = ${if !eq {$acl_m_rprf}{}} warn domains = +local_domains - condition = ${if eq{${lookup{$local_part}cdb{/var/lib/misc/${primary_hostname}/mail-contentinspectionaction.cdb}{$value}{}}}{markup}} + condition = ${if eq{${lookup{$local_part}dbmnz{/var/lib/misc/${primary_hostname}/mail-contentinspectionaction.db}{$value}{}}}{markup}} set acl_m_rprf = markup accept condition = ${if !eq {$acl_m_rprf}{}} warn domains = +local_domains - condition = ${if eq{${lookup{$local_part}cdb{/var/lib/misc/${primary_hostname}/mail-contentinspectionaction.cdb}{$value}{}}}{blackhole}} + condition = ${if eq{${lookup{$local_part}dbmnz{/var/lib/misc/${primary_hostname}/mail-contentinspectionaction.db}{$value}{}}}{blackhole}} set acl_m_rprf = blackhole accept condition = ${if !eq {$acl_m_rprf}{}} @@ -1082,8 +1086,8 @@ check_message: begin rewrite \N^buildd_(.*)@fasolo\.debian\.org$\N buildd_$1@buildd.debian.org T -*@debian.org ${lookup{$1}cdb{/var/lib/misc/${primary_hostname}/mail-forward.cdb}{$value}fail} T -*@people.debian.org ${lookup{$1}cdb{/var/lib/misc/${primary_hostname}/mail-forward.cdb}{$value}fail} T +*@debian.org ${lookup{$1}dbmnz{/var/lib/misc/${primary_hostname}/mail-forward.db}{$value}fail} T +*@people.debian.org ${lookup{$1}dbmnz{/var/lib/misc/${primary_hostname}/mail-forward.db}{$value}fail} T #*@${primary_hostname} "${if exists{/etc/exim4/email-addresses}{${lookup{$1}lsearch{/etc/exim4/email-addresses}{$value}fail}}fail}" fFs @@ -1338,9 +1342,9 @@ ldap_aliases: driver = redirect allow_defer allow_fail - data = ${if exists{/var/lib/misc/$primary_hostname/user-forward.cdb}\ - {${lookup{$local_part}cdb\ - {/var/lib/misc/$primary_hostname/user-forward.cdb}}}} + data = ${if exists{/var/lib/misc/$primary_hostname/user-forward.db}\ + {${lookup{$local_part}dbmnz\ + {/var/lib/misc/$primary_hostname/user-forward.db}}}} domains = +local_domains file_transport = address_file local_part_suffix = -* @@ -1497,17 +1501,17 @@ virt_users: group = ${extract{group}{VDOMAINDATA}} # Manually construct the forwarding address, preserving the # local_part_suffix if the remote host is master. - data = ${if and {{exists{${extract{directory}{VDOMAINDATA}{${value}/mail-forward.cdb}}}}\ - {! eq {${lookup{$local_part}cdb\ - {${extract{directory}{VDOMAINDATA}{${value}/mail-forward.cdb}}}}}\ + data = ${if and {{exists{${extract{directory}{VDOMAINDATA}{${value}/mail-forward.db}}}}\ + {! eq {${lookup{$local_part}dbmnz\ + {${extract{directory}{VDOMAINDATA}{${value}/mail-forward.db}}}}}\ {}}}\ - {${local_part:${lookup{$local_part}cdb\ - {${extract{directory}{VDOMAINDATA}{${value}/mail-forward.cdb}}}}}\ - ${if eq {${domain:${lookup{$local_part}cdb\ - {${extract{directory}{VDOMAINDATA}{${value}/mail-forward.cdb}}}}}}{master.debian.org}{$local_part_suffix} {}}\ + {${local_part:${lookup{$local_part}dbmnz\ + {${extract{directory}{VDOMAINDATA}{${value}/mail-forward.db}}}}}\ + ${if eq {${domain:${lookup{$local_part}dbmnz\ + {${extract{directory}{VDOMAINDATA}{${value}/mail-forward.db}}}}}}{master.debian.org}{$local_part_suffix} {}}\ @\ - ${domain:${lookup{$local_part}cdb\ - {${extract{directory}{VDOMAINDATA}{${value}/mail-forward.cdb}}}}}}} + ${domain:${lookup{$local_part}dbmnz\ + {${extract{directory}{VDOMAINDATA}{${value}/mail-forward.db}}}}}}} domains = +virtual_domains file_transport = address_file headers_add = "Delivered-To: ${local_part}${local_part_suffix}@${domain}" -- 2.20.1