Been working with postfix 2.11 that added support for multi recipient-delimiters. I also messed around with dovecot to make it function there also, and figured, I shouldn't leave amavis out of the loop. Here is a patch that I believe is fully functional to update it's support.


--- amavisd-new 2013-08-18 02:24:24.000000000 -0400
+++ amavisd-new 2014-01-28 22:20:22.487507619 -0500
@@ -4807,10 +4807,10 @@
   my $extension; local($1,$2);
   if ($localpart =~ /^(postmaster|mailer-daemon|double-bounce)\z/i) {
     # do not split these, regardless of what the delimiter is
-  } elsif ($delimiter eq '-' && $owner_request_special &&
+  } elsif (index($delimiter,'-')>=0 && $owner_request_special &&
            $localpart =~ /^owner-.|.-request\z/si) {
     # don't split owner-foo or foo-request
-  } elsif ($localpart =~ /^(.+?)(\Q$delimiter\E.*)\z/s) {
+  } elsif ($localpart =~ /^(.+?)([\Q$delimiter\E].*)\z/s) {
     ($localpart, $extension) = ($1, $2);  # extension includes a delimiter
     # do not split the address if the result would have a null localpart
   }
@@ -15112,7 +15112,7 @@
cr('addr_extension_maps_by_ccat'));
       my $ext = !ref($ext_map) ? undef : lookup2(0,$recip,$ext_map);
       if ($ext ne '') {
-        $ext = $delim . $ext;
+        $ext = substr($delim,0,1) . $ext;
         my $orig_extension;  my($localpart,$domain) = split_address($recip);
         ($localpart,$orig_extension) = split_localpart($localpart,$delim)
           if c('replace_existing_extension');  # strip existing extension


Reply via email to