[Mailman-Users] Possible Bug in 2.1.13 sync_members

Mark Sapiro mark at msapiro.net
Wed Feb 3 00:03:26 CET 2010


Barry Finkel wrote:

>I think I may have uncovered a bug in Mailman 2.1.13.  I have not
>completed my research.  I have a script that refreshes the subscriber
>list via:
>
>/usr/lib/mailman/bin/sync_members -w=no -g=no -d=no -a=no \
>     -f /etc/mailman/generated_lists/LISTNAME LISTNAME
>
>where
>
>     /etc/mailman/generated_lists/LISTNAME
>
>is a file that contains a possibly updated mailing list.  In that file
>there is a line:
>
>     ssmith at example.com        (XYZ, 012345, Smith, S.A. (Sam))
>
>and after I run the sync_members, every line below this one is
>ignored; the e-mail addresses in those lines are unsubscribed from
>the list.  This has happened with two lists since I installed
>Mailman 2.1.13 (replacing 2.1.11 - I never installed 2.1.12 in
>production).  The third list that contains this e-mail address has
>a different format:
>
>     ssmith at example.com        (Smith, S.A. (Sam)      :012345)
>
>and that list has no problems.  I have not yet checked for changes in
>the sync_members source from 2.1.11 to 2.1.12 to 2.1.13.


There are no changes in sync_members. What has changed is in 2.1.11,
Mailman used its own email package (version 2.5.8) installed in
Mailman's pythonlib directory. Beginning with 2.1.12, Mailman uses the
email package of the installed Python which depends on version.

The difference is almost certainly in email.Utils.getaddresses() which
is used to parse the lines of the input into 'address' and 'display
name + comment' parts.

I think the problem is that the addresses

ssmith at example.com        (XYZ, 012345, Smith, S.A. (Sam))

and

ssmith at example.com        (Smith, S.A. (Sam)      :012345)

contain comments within comments and email.Utils.parseaddr() used by
email.Utils.getaddresses() can be confused by this. However, email
4.0.1 which is in most recent Python versions parses those into

name: 'XYZ, 012345, Smith, S.A. Sam', address: 'ssmith at example.com'

and

name: 'Smith, S.A. Sam      :012345', address: 'ssmith at example.com'

respectively, so that should be OK. Also email 3.0+ from python 2.4.2
gives the same result.

In any case, I am surprised at the result. If sync_members finds any
member addresses in the input file that appear invalid, it reports
these and quits before doing anything to the list, and if it throws an
exception while updating the list, it quits without saving the updated
list.

What's in Mailman's error log? What's in the output from sync_members?

-- 
Mark Sapiro <mark at msapiro.net>        The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan



More information about the Mailman-Users mailing list