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}