eximconf: migrate from CDB to BDB for ud-ldap generated files (RT#4648)
authorAdam D. Barratt <adam@adam-barratt.org.uk>
Thu, 10 Oct 2019 19:21:57 +0000 (20:21 +0100)
committerAdam D. Barratt <adam@adam-barratt.org.uk>
Fri, 11 Oct 2019 16:26:14 +0000 (17:26 +0100)
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 <adam@adam-barratt.org.uk>
modules/exim/templates/eximconf.erb

index a11e8d5..2fa12c9 100644 (file)
 
 # 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}"