>Barry Finkel wrote: >> >>I ran a test with a test list on my test virtual machine, and this is >>what is happening. The line in the "-f" file for sync_members >> >> bsf-cr...@example.com (New 1 (zzz)) >> >>is causing all of the succeeding lines in that file to be treated as >>part of the parenthesized "name-comments" field for this new >>bsf-crane entry. The command
Mark Sapiro replied: >Yes, I am able to duplicate this issue with email 3.0.1 >Utils.getaddresses(), but only if the input file is 'unix format' >(<LF> line terminators and only if the succeeding lines also have the >'name' in a comment. If the file is 'dos format' - i.e. <CRLF> line >terminators, the problem does not occur. Also, I don't think it occurs >with email 4.0.1 with either input format. And if there are lines of >the form "Display Name <u...@example.com>", the first of those and the >subsequent lines will be OK. > >The underlying problem is in the _parseaddr module in the email package >which misses the second paren when a nested comment and the outer >comment terminate together > >As a workaround, for sync_members, you could try the following. Find >this section > > # strip out lines we don't care about, they are comments (# in first > # non-whitespace) or are blank > for i in range(len(filemembers)-1, -1, -1): > addr = filemembers[i].strip() > if addr == '' or addr[:1] == '#': > del filemembers[i] > print _('Ignore : %(addr)30s') > >add three lines so it becomes > > # strip out lines we don't care about, they are comments (# in first > # non-whitespace) or are blank > for i in range(len(filemembers)-1, -1, -1): > addr = filemembers[i].strip() > if addr == '' or addr[:1] == '#': > del filemembers[i] > print _('Ignore : %(addr)30s') > else: > # work around bug in email 3.0.1 Utils.getaddresses() > filemembers[i] = addr + '\r\n' > >The better fix is the attached _parseaddr.patch.txt for the 3.0.1 >email/_parseaddr.py I applied the patch to /usr/lib/python2.4/email/_parseaddr.py on my test Mailman system, and I reset the subscriber list back to its original. I then ran the same /usr/lib/mailman/bin/sync_members command, and there were no problems: the one subscriber was added, and the subsequent address lines were not unsubscribed. I did some RFC research, and RFC 2822 "Internet Message Format" in section 3.4.1 states: Note: Some legacy implementations used the simple form where the addr-spec appears without the angle brackets, but included the name of the recipient in parentheses as a comment following the addr-spec. Since the meaning of the information in a comment is unspecified, implementations SHOULD use the full name-addr form of the mailbox, instead of the legacy form, to specify the display name associated with a mailbox. Also, because some legacy implementations interpret the comment, comments generally SHOULD NOT be used in address fields to avoid confusing such implementations. The same text is in the newer RFC 5322, which obsoletes 2822. So the format I am using u...@example.com (comments) SHOULD not be used; the accepted format is "comments" <u...@example.com> ---------------------------------------------------------------------- Barry S. Finkel Computing and Information Systems Division Argonne National Laboratory Phone: +1 (630) 252-7277 9700 South Cass Avenue Facsimile:+1 (630) 252-4601 Building 240, Room 5.B.8 Internet: bsfin...@anl.gov Argonne, IL 60439-4828 IBMMAIL: I1004994 ------------------------------------------------------ Mailman-Users mailing list Mailman-Users@python.org http://mail.python.org/mailman/listinfo/mailman-users Mailman FAQ: http://wiki.list.org/x/AgA3 Security Policy: http://wiki.list.org/x/QIA9 Searchable Archives: http://www.mail-archive.com/mailman-users%40python.org/ Unsubscribe: http://mail.python.org/mailman/options/mailman-users/archive%40jab.org