| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
file.
|
|
|
|
|
| |
to a .corrupt file, since it could not be read. This should eliminate the
shutil EPERM exceptions.
|
|
|
|
|
|
|
| |
MMHostileAddress will be caught.
This (and the previous similar patch to Mailman/Cgi/create.py) were given by
SHIGENO Kazutaka.
|
|
|
|
| |
MMBadEmailError or MMHostileAddress will be caught.
|
| |
|
| |
|
| |
|
|
|
|
| |
before trying to call replace on them for the rejection notice substitution.
|
|
|
|
| |
or otherwise doesn't exist.
|
| |
|
| |
|
| |
|
|
|
|
| |
ids. (With slight modification by BAW.)
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
OutgoingRunner for easier handling of probe messages which are rejected at
SMTP time.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
escaping. 'info' sanitizes just <script> and </script> tags. This partially
closes bugs 870028 and 881369.
|
|
|
|
|
| |
This allows subclasses to override where necessary. The default implementaton
is to call Utils.websafe().
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
to indicate that we're now saving things in a per-list database.
|
|
|
|
| |
class), pending database.
|
|
|
|
|
| |
InviteNewMember(), AddMember(), ChangeMemberAddress(), ProcessConfirmation(),
ConfirmUnsubscription(): Convert to the new pending database interface.
|
|
|
|
| |
member whose bounce score is greater than the threshold.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
and the pending database.
|
| |
|
| |
|
| |
|
| |
|