Package: mailman Summary: postfix+mailman+postfix-to-mailman.py breaks when recipient_delimeter="-".
This bug was reported to Ubuntu as https://bugs.launchpad.net/ubuntu/+source/mailman/+bug/529349 a. Install postfix, mailman packages mail to user+...@example.com <user%2b...@example.com> should be delivered to u...@example.com (because default postfix recipient_delimiter="+") b. Configure mailman according to instructions in /usr/lib/mailman/bin/postfix-to-mailman.py i used a subdomain -- lists.example.com create a test list using a newlist. mail to t...@list.example.com should be delivered to your list. mail to test-ad...@list.example.com should be delivered to the list admin. c. change postfix recipient_delimiter to "-". (add recipient_delimiter="-" to /etc/postfix/main.cf) restart postfix mail to user-...@example.com should be delivered to u...@example.com mail to test-ad...@example.com will be erroneously sent to the test list. postfix sees the recipient delimiter and strips it off before passing it to the postfix-to-mailman.py script. d. apply attached patch. postfix will now pass the pre-processed email address (no recipient_delimiter stripping) to postfix-to-mailman.py. mail to test-ad...@list.example.com will now correctly go to the list admin.
diff --git a/mailman/postfix-to-mailman.py b/mailman/postfix-to-mailman.py index 7e1aced..f29b672 100755 --- a/mailman/postfix-to-mailman.py +++ b/mailman/postfix-to-mailman.py @@ -100,7 +100,8 @@ def main(): MailmanOwner = 'postmas...@localhost' try: - domain, local = [ a.lower() for a in sys.argv[1:] ] + domain, full = [ a.lower() for a in sys.argv[1:] ] + local = full.split("@")[0] except: # This might happen if we're not using Postfix or # /etc/postfix/master.cf is badly misconfigured diff --git a/postfix/master.cf b/postfix/master.cf index 28947fd..f606f49 100644 --- a/postfix/master.cf +++ b/postfix/master.cf @@ -79,5 +79,5 @@ scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py - ${nexthop} ${user} + ${nexthop} ${recipient}