aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Load(): Another shutil EPERM elimination patch; os.remove any existing safetybwarsaw2004-02-291-3/+15
| | | | file.
* Load(): Before creating the .safety file, move any existing .pck or .db filebwarsaw2004-02-291-0/+10
| | | | | to a .corrupt file, since it could not be read. This should eliminate the shutil EPERM exceptions.
* main(): Catch base class of EmailAddressError so either MMBadEmailError orbwarsaw2004-02-291-13/+13
| | | | | | | MMHostileAddress will be caught. This (and the previous similar patch to Mailman/Cgi/create.py) were given by SHIGENO Kazutaka.
* process_request(): Catch base class of EmailAddressError so eitherbwarsaw2004-02-291-2/+2
| | | | MMBadEmailError or MMHostileAddress will be caught.
* __load(): Catch unpicking errors too.bwarsaw2004-02-291-1/+1
|
* main(): The list lock must be held in order to pend unsubscription requests.bwarsaw2004-02-291-12/+13
|
* __repr__(): Watch out for Unicode fullname or password.bwarsaw2004-02-291-4/+14
|
* __handlepost(): sender or subject could be Header instances, so str-ify thembwarsaw2004-02-291-2/+2
| | | | before trying to call replace on them for the rejection notice substitution.
* update_pending(): Return immediately if the pending db has already been updatebwarsaw2004-02-291-0/+3
| | | | or otherwise doesn't exist.
* dequeue(): Catch ValueErrors too.bwarsaw2004-02-291-1/+1
|
* 2.1.5 beta 1bwarsaw2004-02-291-3/+3
|
* *** empty log message ***pheinlein2004-02-231-3/+3
|
* update_pending(): Tokio Kikuchi's patch #899263 for ignoring duplicate pendingbwarsaw2004-02-221-2/+4
| | | | ids. (With slight modification by BAW.)
* Bump to alpha 4.bwarsaw2004-02-221-2/+2
|
* __repr__(): Added for better logging.bwarsaw2004-02-221-1/+4
|
* Much refactoring to improve bounce processing. The basic change moves thebwarsaw2004-02-221-63/+41
| | | | | | | | | | | | | | | | | | | | | queuing of bounce events out of the process's memory and into a 'bounce event' file, essentially consisting of a stream of pickles. Every once in a while the qrunner wakes up and processes the event file, which is named to be specific to each qrunner instance. The actually processing is factored out into a mixin class which is now subclassed by both the BounceRunner and OutgoingRunner classes (since the latter has to handle SMTP rejects as bounces). Specific changes here include: OutgoingRunner: Use BounceMixin as a base class. We can now get rid of the whole _permfailures and _permfail_counter stuff since we'll just use the mixin class as the basic logic for bounce handling. _dispose(): Simplified since we can just use _queue_bounces() when a message is rejected at SMTP time, although if that triggers a probe, the attached message will be the one for which delivery was attempted since there really isn't any bounce. Also, make this method handle probe bounces.
* Much refactoring to improve bounce processing. The basic change moves thebwarsaw2004-02-221-57/+119
| | | | | | | | | | | | | | | | | | | | | queuing of bounce events out of the process's memory and into a 'bounce event' file, essentially consisting of a stream of pickles. Every once in a while the qrunner wakes up and processes the event file, which is named to be specific to each qrunner instance. The actually processing is factored out into a mixin class which is now subclassed by both the BounceRunner and OutgoingRunner classes (since the latter has to handle SMTP rejects as bounces). Specific changes include: REGISTER_BOUNCES_EVERY: Promote to a Defaults.py.in variable. BounceMixin: Mixin class for handling the basics of bounce event queuing, periodic processing, and registering, as well as cleanup. It also contains a _probe_bounce() method for handling bounces of the probe message (which cause an immediate disable). BounceRunner: Add BounceMixin as a base class.
* sendProbe(): Add key 'probe_token' to the metadata. This is used by thebwarsaw2004-02-221-2/+4
| | | | | OutgoingRunner for easier handling of probe messages which are rejected at SMTP time.
* REGISTER_BOUNCES_EVERY: Promoted to a global configuration variable.bwarsaw2004-02-221-0/+3
|
* Update a link to papers and add a link to the USENIX 2003 paper.bwarsaw2004-02-202-14/+38
|
* Bugs found by Michael Fischer v. Mollard <fvm@heise.de>. Thanks.pheinlein2004-02-191-5/+5
|
* Changes from Michael Ranner <mranner@jawa.at>. -Thanks!pheinlein2004-02-191-15/+14
|
* InitTempVars(): Initialize _full_path to the empty string, not None.bwarsaw2004-02-191-1/+1
|
* Helpful links as suggested by Martin Mokrejs.bwarsaw2004-02-171-0/+5
|
* Small clarification as suggested by Martin Mokrejs.bwarsaw2004-02-171-1/+2
|
* Croatian updates from Nino Katicbwarsaw2004-02-175-2586/+1489
|
* pot merge. mostly line numbers and formatting.bwarsaw2004-02-171-1479/+2576
|
* _escape(): Everything except the 'info' variable gets the normal web-safebwarsaw2004-02-171-8/+19
| | | | | escaping. 'info' sanitizes just <script> and </script> tags. This partially closes bugs 870028 and 881369.
* handleForm(): Call out to self._escape() to make any entered data web-safe.bwarsaw2004-02-171-3/+7
| | | | | This allows subclasses to override where necessary. The default implementaton is to call Utils.websafe().
* main(): It's possible that if you're logged in as the list admin, you can getbwarsaw2004-02-171-3/+5
| | | | | | | to the end of the function trying to present the options page for a non-existant user, causing a traceback. At the last second, do one more isMember() check and return the loginpage if the address isn't a member of the list.
* Rewritten, simplified, and made more bullet-proof. The file read/written isbwarsaw2004-02-171-77/+66
| | | | | | | | | | | | | | | | | | | now a pickle instead the less secure marshal. Other changes: __filename(): Removed. We'll use the instance variable __filename instead. __opendb(): Simplified by removing upgrade logic largely duplicated in _UpdateRecords(). __closedb(): Use pickles and the __filename instance variable. __request_id(): Removed this since it wasn't thread-safe. It didn't require the acquisition of the list lock. Replaced with __nextid() which not only asserts the list lock, but also ensures that the id returned will be unique. HoldMessage(): Always flush and fsync the heldmsg file. Various other code improvement.
* The probe template.bwarsaw2004-02-101-0/+28
|
* main(): Use the new pending database interface.bwarsaw2004-02-101-3/+4
|
* update_qfiles(), ext_read(), dequeue(): More gross stuff to upgrade thebwarsaw2004-02-101-29/+227
| | | | | | | | | separate .db and .msg qfiles to the single .pck file. update_pending(): Updates the global data/pending.pck file to the per-list .pck files as best as possible. main(): update the qfiles and pending database.
* main(): Extend pickle file dumping to print every object in the pickle file.bwarsaw2004-02-101-10/+32
|
* enqueue(), dequeue(), files(): Implementation of new, more efficient,bwarsaw2004-02-101-226/+37
| | | | | | | | | | | one-file-per-queued-message architecture. The message object and metadata dictionary are now written to the same .pck file -- in that order -- instead of to separate files which were more complicated to manage. dequeue() especially simplifies considerably. Also, get rid of the special _Switchboard hack, as well as the MarshalSwitchboard, ASCIISwitchboard, and BSDDBSwitchboard implementations. Also get rid of the DumperSwitchboard class.
* _dispose(), verp_probe(): Add logic to parse and handle probe bounce verps.bwarsaw2004-02-101-1/+55
|
* hold_for_approval(): Convert to the new pending database interface.bwarsaw2004-02-101-2/+2
|
* main(), subscription_cancel(), unsubscription_cancel(), addrchange_cancel()bwarsaw2004-02-101-17/+36
| | | | | | | | addrchange_confirm(), heldmsg_cancel(), heldmsg_confirm(), reenable_confirm(): Convert to the new pending database interface. expunge(): A helper function which ensures that the list is locked before expunging an item from the confirmation database.
* Bump the version number to 2.1.5a3. Also bump the PENDING_FILE_SCHEMA_VERSIONbwarsaw2004-02-101-4/+4
| | | | to indicate that we're now saving things in a per-list database.
* Simplification and re-implementation as a per-list (and thus MailList mixinbwarsaw2004-02-101-231/+132
| | | | class), pending database.
* MailList: Add the Pending.Pending class to the list of base classes.bwarsaw2004-02-101-11/+10
| | | | | InviteNewMember(), AddMember(), ChangeMemberAddress(), ProcessConfirmation(), ConfirmUnsubscription(): Convert to the new pending database interface.
* sendProbe(): Method implementing the actual sending of the probe message to abwarsaw2004-02-101-1/+39
| | | | member whose bounce score is greater than the threshold.
* VERP_PROBE_FORMAT, VERP_PROBE_REGEXP: A new template and pattern for handlingbwarsaw2004-02-101-32/+7
| | | | | | | | | | | | the probe verps, which are different than the normal message verps because the former has a token hash in the address extension. METAFMT_MARSHAL, METAFMT_BSDDB_NATIVE, METAFMT_ASCII, METADATA_FORMAT: Remove all this since they don't make sense with the new rewritten single-file qrunner architecture. PENDINGDB_LOCK_TIMEOUT, PENDINGDB_LOCK_ATTEMPTS: These are no longer necessary given the new per-list pending database.
* Hook in the new bounce processing actions. Specifically,bwarsaw2004-02-101-7/+10
| | | | | | | | | | | registerBounce(): When the bounce score is higher than the threshold, instead of disabling the address right way, we send a probe message, then we reset the bounce score to zero. disableBouncingMember(): Use the new pending db interface and update the log messages. sendNextNotification(): Use the new pending db interface.
* Describe the changes in the qrunner system, bin/dumpdb, the bounce processorbwarsaw2004-02-101-1/+22
| | | | and the pending database.
* updatesbwarsaw2004-02-104-15/+15
|
* Some updates by Martin Mokrejs.bwarsaw2004-02-031-10/+17
|
* Added some clarification and improvements by Martin Mokrejs.bwarsaw2004-02-031-2/+12
|
* Added helpful comment.bwarsaw2004-02-031-1/+2
|