aboutsummaryrefslogtreecommitdiffstats
path: root/Mailman (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Detect 'who' with 1 or 2 arguments as administrivia.Mark Sapiro2007-07-171-2/+2
|
* There is a bug in email 2.5.8 and possibly others, but not in 4.0.1 orMark Sapiro2007-06-291-1/+9
| | | | | | | | | 4.0.2 that causes email.Utils.getaddresses() to return a spurious (name, address) tuple if the supplied argument is multi-line. The actual bug is in email.Utils.parseaddr(), but the manifestation in Message.py is in the use of getaddresses() in get_sender() and get_senders(). This fix works around the bug by passing the header field values through Mailman.Utils.oneline().
* Scrubber.py - Cleaned up a few loose ends and incomplete things left after theMark Sapiro2007-06-222-21/+26
| | | | | | | | | previous commit. - Normalized a couple more 'URL:'. - Improved handling of None payloads. - Cleaned up a few charset coercions. OutgoingRunner.py - Made probe bounce processing and queuing of bounces conditional on having some permanent failure(s).
* Scrubber.py - If a malformed message has Content-Type: with amsapiro2007-06-151-4/+7
| | | | | | | | | | charset="quoted-printable" parameter, quopri_encode can be called at t = t.encode(charset, 'replace') which throws an AssertionError. See log message for r. 8213. Caught this. - Malformed RFC 2047 encoded filename= parameter can have a null byte or other garbage in the extension. Cleaned this. - A message with a message/delivery-status part returns None for the part's payload. Checked for a payload before attempting unicode/encode.
* admindb.py - Changed to not show the "Discard all messages marked Defer" ↵msapiro2007-06-121-2/+5
| | | | | | | checkbox when there are only (un)subscribes and no held messages. - Added a separator and heading for "Held Messages" like the ones for "Subscribe Requests" and "Unsubscribe Requests".
* Improved processing of an Approve(d): body line by decoding the body payloadmsapiro2007-06-091-6/+22
| | | before looking for/deleting the Approve(d): line.
* base64 codec raises 'AssertionError'. This should not occur in normal casetkikuchi2007-05-091-1/+1
| | | | | | but it looks like thare is a buggy MUA or spammer who declairs like so: Content-Type: text/plain; charset=base64 :-(
* - CGI/admin.pymsapiro2007-05-0810-54/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The email address which forms a part of the various CGI data keys in the admin membership list is now urllib.quote()ed. This allows changing options for and unsubbing an address which contains a double-quote character. - CGI/admindb.py Added additional test to not display "Database Updated ..." when coming from the login page. - CGI/roster.py, HTMLFormatter.py Changed to show hidden members when authorization is site or list's admin or moterator password. Patch 1587651. - Defaults.py.in, Handlers/Cleanse_DKIM.py Added a new REMOVE_DKIM_HEADERS Defaults.py/mm_cfg.py setting (default = No) to control removing dkim/domainkey signatures from posts and mail to -owner. - Handlers/Decorate.py, Handlers/Scrubber.py Changed to preserve format=flowed and delsp=yes in the Content-Type: of the body when adding header/footer and when scrubbing attachments and to remove trailing spaces from the header/footer lines so they won't be flowed. Bug 1495122. Fixed a scrubber issue where the i18n translated 'next part' separator can be garbled if the list charset is different from the message. - Queue/Runner.py. Queue/Switchboard.py Now that we have .bak queue entries for recovery, it is no longer the case that an unparseable message is lost. In this case, and in case of other exceptions when dequeueing, I added a preservation feature to move the .bak file to qfiles/shunt as a .psv file and write an appropriate log entry. It is also possible for an attempt to shunt a message to fail. One example that occurred in practice (bug 1656289) was caused by a huge message that threw a MemoryError in processing and then threw another MemoryError in the attempt to pickle the message for the shunt queue. In this case as well, I log and attempt to preserve the original queue entry by renaming.
* Fix comment typo (also, test my commit privileges)akuchling2007-05-041-1/+1
|
* - Fixed a bug in OldStyleMemberships.addNewMember that allowed adding an addressmsapiro2007-03-201-3/+11
| | | | | | | with upper case in the domain if the local part was all lower case. - Changed the semantics of OldStyleMemberships.changeMemberAddress os that in the case of a straightforward address change, i.e. nodelete = 0, delivery status and time are preserved if BYUSER or BYADMIN.
* - Changed cmd_who.py to show hidden members when authorization is by list ↵msapiro2007-02-071-18/+37
| | | | | admin or moderator password. - Changed cmd_who.py public roster syntax to accept optional list admin or moderator password.
* Changed header_filter_rules processing to ignore blank patterns.msapiro2007-01-201-1/+4
|
* Fixed documentation for POSTFIX_STYLE_VIRTUAL_DOMAINS to clarify that themsapiro2007-01-071-7/+8
| | | empty list is the appropriate value if Postfix virtual domains aren't used.
* Delete the .bak file from the queue for an unparseable message.msapiro2006-11-171-0/+1
|
* Fixed admin.py so null VARHELP category is handled (1573393).msapiro2006-10-111-4/+5
|
* Removed the "Discard all messages marked Defer" checkbox from themsapiro2006-09-211-2/+2
| | | details=all page.
* Set things up for 2.1.10a0bwarsaw2006-09-131-3/+3
|
* Tag as 2.1.9 (final). Also, remove version.ht* since it's redundant.bwarsaw2006-09-131-3/+3
|
* Update web pages and version numbers for 2.1.9rc1.bwarsaw2006-09-021-3/+3
|
* A much improved release script, which now knows about Subversion (though isn'tbwarsaw2006-09-0110-12/+0
| | | | | | | yet ready to work from the trunk). Also, get rid of all the obsolete .cvsignore directories, they're no longer needed. Almost ready for 2.1.9rc1!
* CVE-2006-3636. Fixes for various cross-site scripting issues. Discovery bybwarsaw2006-08-309-32/+60
| | | | | Moritz Naumann and most of the repair work done by Mark Sapiro (with some additional work by Barry).
* Update copyright years.bwarsaw2006-08-071-1/+1
|
* Bump version number to 2.1.9a0bwarsaw2006-08-071-4/+5
|
* Language files update. New languages: Arabic, Vietnamese.tkikuchi2006-08-041-1/+2
|
* Back port Python 2.5 compatibility changes to Mailman 2.1. Specifically,bwarsaw2006-07-303-15/+25
| | | | | | | | | | | | | | | | | | - In SecurityManager.py, fix the parsecookie() code to work with Python 2.5 generated cookie text. The latter was changed to be more RFC compliant so it does not output trailing semicolons for each line of cookie text. This broke the splitting rules, so now first split on newlines, then on ';\s*'. This should work across all Python versions. - In Python 2.5, exceptions are new-style, and thus are no longer of ClassType. The instantiation type test in hold_for_approval() was too naive. This one is fixed differently here than in the MM trunk because in Python 2.1, 'type' isn't a type, it's a function and so can't be used as the second argument to isinstance() directly. - Raising strings generates deprecation warnings in Python 2.5. Switch the one weird use of this in Utils.py to use a class exception. Don't call it "quick exit" though because it's probably not.
* SendSubscribeAck() - Removed test of self.send_welcome_message.msapiro2006-07-241-3/+1
| | | The caller may want to override the list setting.
* - Switchboard.py Changed "while key in times.keys():" tomsapiro2006-07-231-1/+1
| | | | "while times.has_key(key):" for execution efficiency while maintaining Python 2.1 compatibility.
* - Switchboard.py Added missing newline at EOF.msapiro2006-07-221-1/+1
|
* - bin/unshuntmsapiro2006-07-222-12/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Queue/Runner.py - Queue/Switchboard.py Backported the gfiles backup changes from the trunk. The following comments are from the trunk checkin. Note that the test cases are not added. Added robustness to Switchboards and Runners so that if a runner crashes uncleanly (e.g. segfaults the Python interpreter), messages being processed will not be lost. The vulnerability, ideas, and patches are credited to Richard Barrett and Mark Sapiro. Their original work was modified by Barry for this commit and any bugs are his fault. The basic idea is that instead of unlinking a .pck file in dequeue(), the file is renamed to a .bak file. The Switchboard grows a finish() method which then unlinks the .bak file. That class's constructor also grows a 'restore' argument (defaulting to false), which when true moves all .bak files it finds in its hash space to .pck, thereby restoring a file lost while "in flight". This relies on the fact that even with multiple qrunners, exactly one process will be responsible for one hash space slice, so it's never possible (under normal operation) for a .bak file to be renamed to .pck by some other process. Test cases for both the new Switchboard behavior and the use of that by Runner subclasses has been added. There are two things to watch out for, either of which may require some additional changes. There is some small potential to duplicate messages in various queues, if say 'mailmanctl' were improperly started more than once by a site admin. This usually won't happen unless an admin is overly eager with the mailmanctl -s switch, so we can chalk this one up to operator error. I'm not sure what more we can do about that. There's also a possibility that if we're processing a message that continually causes the Python interpreter to crash, we could end up duplicating messages endlessly. This is especially troublesome for the Outgoing runner which could conceivably cause a mail flood. I consider this the more critical issue to defend against, probably by adding a numbering scheme to the .bak file names and refusing to restore a .bak file more than say 3 times without human intervention.
* - Switchboard.py - Closed very tiny holes at the upper ends of queuemsapiro2006-07-091-5/+13
| | | | | slices that could result in unprocessable queue entries. Improved FIFO processing when two queue entries have the same timestamp.
* - Decorate.py Fixed bug 1507248 by ignoring header/footer charactersmsapiro2006-06-232-4/+10
| | | | | | | | outside the character set of the list's language. - Utils.py Fixed a security hole which allowed a crafted URI to inject bogus apparent messages into the error log, possibly inducing an admin to visit a phishing site.
* 2006-04-27 Clytie Siddall <clytie@riverland.net.au>clytie2006-04-271-0/+1
| | | | | | * Defaults.py.in: Added Vietnamese to add_languages.
* Bump version to 2.1.8 final.tkikuchi2006-04-151-3/+3
|
* Bumping 2.1.8rc1.tkikuchi2006-04-061-2/+2
|
* Fix XSS bug: Thanks Moritz Naumann. (CVE-2006-1512)tkikuchi2006-04-041-2/+3
|
* Recognize more bounces - DSN.py, Qmail.py and SimpleMatch.pymsapiro2006-04-043-4/+20
|
* Added bounce tests. Updated bounce recognizers to pick up a few more.msapiro2006-03-242-1/+21
|
* Bump version number to 2.1.8b1.tkikuchi2006-03-231-2/+2
|
* SF Bug ID 1453049 from Clytie. Only easiest fixes are done because we shouldtkikuchi2006-03-232-3/+3
| | | | | care all the .po files in language directories. More fixes should be done in mailman-2.2.
* Added missing import of Errors module.msapiro2006-03-201-0/+1
|
* Fixed VERP_CONFIRM_REGEXP to accommodate 'broken' MUAs that add themsapiro2006-03-181-2/+6
| | | | local_part of the From: address as a 'real name' in the To: header when replying.
* Improved fix for bug 1275856 to return host part of DEFAULT_URL if any frommsapiro2006-03-181-7/+5
| | | | get_domain() if VIRTUAL_HOST_OVERVIEW off.
* Fixed long standing bug (1275856) - get_domain() returned DEFAULT_EMAIL_HOSTmsapiro2006-03-121-3/+8
| | | | instead of DEFAULT_URL_HOST is VIRTUAL_HOST_OVERVIEW was off.
* Fixed long standing error - subscribe log 'new' entry reversed name and email.msapiro2006-03-121-1/+1
|
* Bumping version number to 2.1.8a1tkikuchi2006-03-101-3/+3
|
* Add test in BounceRunner for non-fatal, VERPed bounce. Bug 1421285.msapiro2006-03-091-1/+5
|
* Changed email package to 2.5.7. Backed out workaround set_payload() methodmsapiro2006-03-061-12/+1
| | | | from Message.py
* Updated SimpleWarning to return Stop. Updated SimpleMatch to catch a few moremsapiro2006-03-062-3/+17
| | | | Added some more test cases.
* Added some more bounce recognition to SimpleMatch and changed the logicmsapiro2006-03-031-12/+28
| | | | | | | so one all pattern sets are tried until a match is found so one start pattern whose address doesn't match won't preempt a later patern set that will match. Added more test cases.
* Changed BouncerAPI.py to return Stop from a Bouncer and changedmsapiro2006-03-014-16/+27
| | | | | | BounceRunner.py to discard the bounce when Stop returned. Changed DSN.py to recognize Action: headers with comments. Changed Qmail.py to recognize an observed different starting string.