summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Catch MMBadEmailError and print a sensible message (PR#59)bwarsaw1999-07-031-3/+8
|
* Use autoconf results for true (PR#65)bwarsaw1999-07-031-1/+2
|
* Added autoconf test for true (PR#65)bwarsaw1999-07-032-106/+91
|
* Don't check for VPRINTF since we don't use it anywhere in the C code.bwarsaw1999-07-022-72/+23
| | | | We may eventually need to check for VSNPRINTF.
* fatal(): Use vsnprintf() to avoid potential buffer overflowbwarsaw1999-07-021-2/+4
| | | | vulnerability (PR#72)
* MailList.Save(): Rewrite to be more robust in maintaining a validbwarsaw1999-07-011-13/+28
| | | | | | | | config.db file in the face of IOErrors during the marshal write. This is critical code so we have to make sure we get it right, but I've been running it on python.org for about a day and have seen no problems under normal conditions. I've tested under failure mode too, but not under real world conditions.
* DumbBTree.clear(): New method to short-circuit clearing the btree.bwarsaw1999-07-011-3/+8
| | | | | | | | | | This isn't part of the bsddb.btree interface assumed by Pipermail, but it's only used in one place and /dramatically/ improves Mailman's performance. HyperDatabase.clearIndex(): Use DumbBTree.clear(). These changes may not fix all the performance problems with Mailman, but certainly nails the most serious problem I've been experiencing.
* Fixed typo in SendMailToNewsGroup().hmeland1999-07-011-1/+1
|
* ProcessConfirmCmd(): Confirmation of an subscription for an addresshmeland1999-07-011-1/+4
| | | | | | can bomb out with MMAlreadyAMember if the address has already been subscribed by some other mechanism after the pending confirmation was registered. Catch this and reply politely.
* Fixed a minor grammar error.hmeland1999-07-011-1/+1
|
* Archiver.ArchiveMail(): As this method always is called with onehmeland1999-07-011-1/+5
| | | | | | | single message, we must quote any lines beginning with "From " -- the message will be interpreted by the general HyperArch.HyperArchive.processUnixMailbox() as a (possibly multi-message) mbox file on it's way into the archive.
* DeliverToUser(): I believe the forking done in here is no longerhmeland1999-07-011-20/+34
| | | | | | needed. For now, however (trying to move towards 1.0), I've merely reduced the amount of work done in the child, and wrapped it in a try: clause for catching fork() failures.
* processQueue(): Catch and log problems with corrupt/inaccessible queuehmeland1999-07-011-4/+26
| | | | | | files. This fixes a problem where one old, invalid queue file would always cause the queue runner to abort before the newer, possibly valid queue files were processed.
* IncomingMessage.GetSender(): Don't assume addresses taken from headershmeland1999-07-011-4/+8
| | | | are valid.
* The "password" mail command can now also be used for having one'shmeland1999-07-011-2/+14
| | | | member password mailed back -- if given with no arguments.
* Fixed problem with MIME bounces not containing any MIME boundaries athmeland1999-07-011-1/+6
| | | | all (these used to raise an IndexError).
* Use "mailman-<version>" instead of "<mailman-src-dir>" when referringhmeland1999-07-011-5/+8
| | | | | | to the directory Mailman has been unpacked into, to avoid any confusion regarding the "src" directory inside "mailman-<version>". Tried to clarify the solution to smrsh-induced problems.
* Added a section named "How secure are the authentication mechanismshmeland1999-07-011-0/+44
| | | | used in Mailman's web interface?".
* re.match() was being used when we wanted re.search() for findinghmeland1999-06-151-2/+2
| | | | already inserted subject prefixes :(
* Bumping revnum to 1.0rc2bwarsaw1999-06-143-4/+7
|
* don't be so graphic :)bwarsaw1999-06-141-1/+1
|
* My annotation, v1 :)hmeland1999-06-132-1/+19
|
* TrySMTPDelivery(): Be smarter about handling the various exceptionshmeland1999-06-131-3/+45
| | | | smtplib.sendmail() can raise.
* SecurityManager:hmeland1999-06-134-166/+171
| | | | | | | | | | | | | | | | | | * New method WebAuthenticate(). Takes up to three keyword arguments: user-address, password and cookie-suffix. If password is supplied (and authenticates OK), issue a cookie -- otherwise try to do authentication based on cookies. * MakeCookie(): Changed to actually return a finished Cookie object. Takes one (non-optional) argument; the created cookie's name. Fixed bug in setting of cookie's path. * CheckCookie(): Now takes cookie's name as single argument, and can raise various MMAuthenticationErrors if that cookie doesn't authenticate OK. admin.py: Do explicit re-authentication when changing list admin password. admin.py, admindb.py and private.py: Removed isAuthenticated() function -- use MailList.WebAuthenticate() instead. This removed the need to import Cookie, so now we don't.
* Undo, previous checkin was a mistake (I'm still only beginning tohmeland1999-06-131-11/+8
| | | | experiment with the addaliases stuff).
* Create(): Do ValidateEmail(admin) before trying to actually createhmeland1999-06-132-10/+13
| | | | | anything, to disallow bin/newlist creating lists with bogus admin addresses.
* AddToResponse(): Added new optional arg `prefix'. Changed truncationhmeland1999-06-131-87/+95
| | | | | | | | | to be a per-line operation, done after addition of prefix. AddError(): Use AddToResponse with the new `prefix' argument to make sure the prefix is added to all the lines of the error message. Added info on the `help' mail command to the response indicating processing problems. Quite a lot of buglet fixes and general cleanup.
* Created MMAuthenticationError exception class hierarchy, into whichhmeland1999-06-131-2/+9
| | | | MMBadPasswordError and MMPasswordsMustMatch have been moved.
* Fixed ordering of MIME boundaries.hmeland1999-06-131-4/+5
|
* Some more TODOs -- nothing critical.hmeland1999-06-131-2/+5
|
* Use new MailList.ApprovedAddMembers() to speed up addition.hmeland1999-06-131-25/+21
|
* Postfix's alias builder is commonly called `postalias', not `mkalias'.hmeland1999-06-131-2/+2
|
* More changes to make syslog() work on OSes where it isn't part of thehmeland1999-06-113-65/+64
| | | | | | | standard libraries. This fix has been verified to work on SCO OpenServer 5, which was the OS for which this change was originally needed. The previous attempt at a fix, stolen from GNU sh-utils, proved insufficient.
* Changes to fix the CGI cookie security flaw reported by John Morton.hmeland1999-06-114-14/+38
| | | | | | | | | SecurityManager: New functions MakeCookie() and CheckCookie(). These functions work with cookies containing cookie creation and expire time, the client's IP number, and a checksum hash of these values as well as a secret (the lists (encrypted) admin password). admin.py, admindb.py and private.py: isAuthenticated now uses these new cookie functions.
* humorbwarsaw1999-06-101-1/+7
|
* In docstring, use %% to escape the percent sign.bwarsaw1999-06-101-1/+1
|
* main(): MMBadPassword => MMBadPasswordErrorbwarsaw1999-06-101-1/+1
|
* Patch by Per Cederqvist:guido1999-06-091-3/+6
| | | | | | | I've found two places where smtplib.py sends an extra trailing space on command lines to the SMTP server. I don't know if this ever causes any problems, but I'd prefer to be on the safe side. The enclosed patch removes the extra space.
* update_dirty_archives(): Set umask to 002 when creating gzipped texthmeland1999-06-041-1/+5
| | | | archives.
* New class: QuotedContainer(Container). It's Format() method returnshmeland1999-06-041-1/+11
| | | | | | | | | | contained objects representation after putting them through Utils.QuoteHyperChars(). Changed class Preformatted to be a subclass of the new QuotedContainer class. This hopefully will make the admindb pages display emails containing "<", ">" etc. characters correctly. It will lose if someone tries to use other HTML elements inside a Preformatted container.
* ParseMailCommands(): In the case that the maximum number of commandhmeland1999-06-041-2/+2
| | | | | lines is reached, inclusion of the rest of the original message was being truncated (and was using a strange line prefix). Fixed.
* Changes to speed up mass subscription via the web:hmeland1999-06-043-67/+143
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MailList.py: Changed MailList.SetUserOption() to take a `save_list' keyword argument (defaulting to true). When false, SetUserOption won't do self.Save() after changing the option. New function MailList.ApprovedAddMembers() (note plural) that takes a list of prospective new list members (and possibly a list of corresponding passwords), and does _all_ the necessary list changes before saving the list configuration. Empty passwords are substituted with randomly generated ones. Returns a dict with {address: exception_tuple} entries -- exception_tuple is either None or a two-element tuple containing the first exception type and value raised when trying to add address. The exception traceback object isn't included in the returned dict, because a) I don't think it is very useful for the relevant exceptions, and b) using it wrongly could cause some fuzz with Python's garbage collector -- i.e. we would leak memory. Changed MailList.ApprovedAddMember() to be a mere wrapper, calling the new ApprovedAddMembers() function and reraising any exception in the returned dict. Also made the logic of the code doing subject prefixing a bit clearer, and changed MailList.aside_new() so that list's config.db files are saved with umask 007 (as they contain all list members' passwords in clear text). Utils.py: New function MakeRandomPassword(length=4), used by MailList.ApprovedAddMembers() whenever empty passwords are found. The default random password length should possibly be made site configurable. Also, fixed an error in the _badchars regular expression -- the final "," was probably meant to be inside the character set. Cgi/admin.py: Changed ChangeOptions() to use the new MailList.ApprovedAddMembers() function.
* dolist(): Do l.Unlock() before returning, to avoid the list's openhmeland1999-06-021-0/+2
| | | | lockfiles eating up all the available filehandles.
* Stole GNU sh-utils-1.16 configure.in code to check for syslog()hmeland1999-05-234-66/+70
| | | | | | | | outside of the default libs. Ran autoconf (from autoconf-2.13) to update configure. src/common.[ch] now has #ifdefs around syslog-using code -- thus, Mailman will compile, but _without any syslog calls_ if configure couldn't find syslog().
* FormatListinfoOverview(): The CGI/1.1 spec defines the SERVER_NAMEhmeland1999-05-221-1/+2
| | | | | envvar, but not HTTP_HOST. Thus, if HTTP_HOST is unset, try getting SERVER_NAME.
* Changed import of rfc822 to always get the version we distribute withhmeland1999-05-221-47/+8
| | | | | | | | | Mailman. IncomingMessage.SetHeader(): This messed up when changing headers that spanned multiple lines -- changed it to use rfc822.Message's emulation of a mapping type, which seems to get this right. IncomingMessage.__delitem__(): Removed, inherit from rfc822.Message instead.
* ProcessUnsubscribeCmd(): Catch Errors.MMNotAMemberError, which is whatbwarsaw1999-05-061-2/+1
| | | | SecurityManager raises when the user addr isn't on the list.
* eradicate "maillist" as a nounbwarsaw1999-05-0511-37/+43
|
* eradicate "maillist" as a noun (sorry Ken :-)bwarsaw1999-05-052-5/+5
|
* Bump to 1.0rc1 and announce the logo contest winnerbwarsaw1999-05-041-7/+8
|