| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| |
|
|
| |
"""Inject the message to Usenet."""
|
| |
|
|
|
|
|
|
|
|
| |
"""Add the message to the list's current digest and possibly send it.
This handler will add the current message to the list's currently accumulating
digest. If the digest has reached its size threshold, it is delivered by
creating an OutgoingMessage of the digest, setting the `isdigest' attribute,
and injecting it into the pipeline.
"""
|
| |
|
|
| |
"""Add the message to the archives."""
|
| |
|
|
|
|
|
|
|
|
|
|
| |
"""Do more detailed spam detection.
This module hard codes site wide spam detection. By hacking the
KNOWN_SPAMMERS variable, you can set up more regular expression matches
against message headers. If spam is detected, it is held for approval (see
Hold.py).
TBD: This needs to be made more configurable and robust.
"""
|
| |
|
|
|
|
|
|
|
|
|
|
| |
"""Deliver a message via `sendmail' drop-off.
This module delivers the message via the command line interface to the
sendmail program. It should work for sendmail clones like Postfix. It is
expected that sendmail handles final delivery, message queueing, etc. The
recipient list is only trivially split so that the command line is less that
4k in size.
"""
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"""Determine whether this message should be held for approval.
This modules tests only for hold situations, such as messages that are too
large, messages that have potential administrivia, etc. Definitive approvals
or denials are handled by a different module.
If no determination can be made (i.e. none of the hold criteria matches), then
we do nothing. If the message must be held for approval, then the hold
database is updated and any administator notification messages are sent.
Finally an exception is raised to let the pipeline machinery know that further
message handling should stop.
"""
|
| |
|
|
|
| |
"""Decorate a message by sticking the header and footer around it.
"""
|
| |
|
|
|
|
|
| |
"""Cook a message's Subject header.
Use Cleanse.py module to actually remove various headers.
"""
|
| |
|
|
| |
"""Cleanse certain headers from all messages."""
|
| |
|
|
|
|
|
|
|
|
|
| |
"""Calculate the regular (i.e. non-digest) recipients of the message.
This module calculates the non-digest recipients for the message based on the
list's membership and configuration options. It places the list of recipients
on the `recips' attribute of the message. This attribute is used by the
SendmailDeliver and BulkDeliver modules.
"""
|
| |
|
|
|
|
|
|
|
|
|
| |
"""Determine whether the message is approved for delivery.
This module only tests for definitive approvals. IOW, this module only
determines whether the message is definitively approved or definitively
denied. Situations that could hold a message for approval or confirmation are
not tested by this module.
"""
|
| |
|
|
|
|
|
| |
"""Perform some bookkeeping after a successful post.
This module must appear after the delivery module in the message pipeline.
"""
|
| |
|
|
|
|
|
|
|
|
| |
"""Send an acknowledgement of the successful post to the sender.
This only happens if the sender has set their AcknowlegePosts attribute. This
module must appear after the deliverer in the message pipeline in order to
send acks only after successful delivery.
"""
|
| | |
|
| |
|
|
|
|
|
|
|
| |
means you can now change the version number without having to re-run
configure (or config.status). That was a pain.
In Defaults.py, you should see
from Version import VERSION
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
claimant crashes before cleaning up it's hardlink claim.
lock(): There's no reliable way to clean up stale hardlink lockfile
claims programmatically, so the best we can do is signal the error and
let a human fix the problem. This happens when we've stolen the lock,
fail the 2-link test, but happen to be the lockfile winner.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
feel like converting the gifs
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
DeliverToUser(): keep a global list of child processes we create so
that they can be reaped later.
Reap(): wait on the subchildren an remove from the _children global
all that are finished. This should eliminate zombie processes.
some debugging turds are still left in here, commented out
|
| |
|
|
| |
subchildren
|
| | |
|
| | |
|
| |
|
|
|
| |
speeds up invocation of the executable considerably by eliminating
tons of stats and other computation.
|
| | |
|
| |
|
|
| |
keep whatever gethostname() returns. After a suggestion by Doug Wyatt.
|
| | |
|
| |
|
|
|
|
|
| |
part of the email command. This means "help" [sic] works and you
don't have to say:
Send the word "help" (sans quotes) to ...
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
PUBLIC_EXTERNAL_ARCHIVER is true, the variable contains a shell
command string for os.popen() to invoke the external archiver.
Similar for PRIVATE_EXTERNAL_ARCHIVER and private archiving.
Patch submitted by Paul Hebble <hebble@ncsa.uiuc.edu>, modified by
myself (I couldn't resist!)
|
| |
|
|
|
|
| |
which control use of an external archiver for both public and private
archiving. When both variables are false, the internal archiver is
used.
|
| |
|
|
| |
ExtractApproval(): Use `is' test to compare against None, not ==
|
| |
|
|
| |
1.5.2-ism. Here's a more portable implementation.
|
| |
|
|
|
|
|
| |
maketext(): Use SafeDict class to make sure that key interpolation in
the template can't raise an exception, even if someone's edited the
template and included missing keys. Patch inspired by Sean
Reifschneider <jafo@tummy.com>
|
| | |
|
| | |
|
| |
|
|
|
| |
X-Confirm-Reading-To: to get automated receipts, so we need to remove
this header too.
|
| | |
|
| |
|
|
|
|
|
|
| |
- be sure to use the member's case-preserved subscribed address
- watch out for any addresses that are in the password dictionary but
are (for some unknown reason) not subscribed. Zap any such
addresses found.
|
| |
|
|
| |
given (as is the case with calling bin/mmsitepass)
|