| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| |
|
|
|
|
| |
listname-bounces@dom.ain address instead of to the -admin address.
This departure cleans up the return path for bounced deliveries, but
does require a regeneration of the aliases file.
|
| |
|
|
| |
then don't add the List-* headers.
|
| |
|
|
|
|
|
|
| |
their own policies. Specifically, added first_strip_reply_to which
will control whether any additional Reply-To: headers override or
extend an existing such field.
Also, we no longer save the old Reply-To: header on X-Reply-To:
|
| | |
|
| |
|
|
|
|
| |
`explicit' but the reply_to_address is invalid.
Also, include some notes about better RFC 2369 support...
|
| |
|
|
|
|
|
|
| |
De-string-module-ify
Other Python 2.0 constructs used where appropriate.
Get rid of HandlerAPI references -- this module is obsolete.
|
| |
|
|
|
| |
Also, don't set the X-BeenThere: header by appending to msg.headers;
use the __setitem__() interface instead.
|
| | |
|
| |
|
|
|
|
|
| |
is enabled, we now unconditionally munge based on the
reply_goes_to_list config variable setting. If the Reply-To: header
is munged, the original Reply-To: header (if any) is put on
X-Reply-To:
|
| | |
|
| |
|
|
| |
longer than 78 characters.
|
| |
|
|
| |
value needs to be wrapped in angle brackets.
|
| |
|
|
|
| |
last patch. This caused confirmation requests to have a reply-to
pointing back to the list. Closes bug #115253.
|
| |
|
|
| |
"X-Ack: no" header if the `noack' flag is set on msgdata.
|
| |
|
|
|
|
|
|
|
| |
Fuhriman) SF patch #101290. List-Id: is kept for historical reasons
even though it is not part of the RFC. The following headers included
on each email: List-Help, List-Unsubscribe, List-Subscribe, List-Post
with appropriate http and/or mailto urls for the list. List-Archive
is also added if the mailing list supports archives. These headers
are not added for "_nolist" messages (e.g. password reminders).
|
| |
|
|
|
| |
key "_nolist" (set by mailpasswords). Close SF bug #114127, Jitterbug
PR#149.
|
| |
|
|
|
| |
_dirty flag so the text will be forced to disk in the event of an
Enqueue().
|
| |
|
|
| |
in the msgdata dictionary, falling back to the -admin address.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
failures, bugs, and lock acquisition timeouts. Instead of storing
information about the progress of the delivery on the Message object,
we pass around a parallel data structure called `msgdata' (current
just a dictionary). All calculated information is passed through this
object, but this changes the API to handler modules. They now take
three arguments: the mailing list, the message object, and the
msgdata. WARNING: This may change before 2.0 final.
Specific changes include:
HandlerAPI
DiscardMessage(), HandlerAPI.SomeRecipientsFailed(): New shared
exceptions.
pipeline_deliver(): removed
LIST_PIPELINE: global containing the primary list delivery
pipeline
DelivertoList: Revamped main entry point into message delivery to
list membership. Takes three arguments: the mailing list, the
message object, and the msgdata dictionary. This digs the
pipeline to use out of the msgdata (allowing resumption of
prematurely interrupted pipeline deliveries).
Then each module is called in turn, and the shared exceptions are
caught. As each module is completed successfully, it is removed
from the head of the pipeline. This function returns the number
of pipeline modules remaining to be executed (i.e. a return of 0
means DeliverToList() is done with this message and it can be
dequeued).
A catch-all is included in case some unexpected exception occurs
(say a bug or typo in one of the delivery modules). Such an error
will queue the message, so at least it doesn't just get lost. We
try to never just lose a message.
RedeliverMessage(), DeliverToUser(): reimplemented in terms of
DeliverToList().
Acknowledge, AfterDelivery, CalcRecips, Cleanse, CookHeaders,
Decorate, Replybot, ToArchive, ToUsenet
Fix the function signature to match the new API (three arguments),
and changed the implementations to extract delivery information
from msgdata instead of as attributes of the message object.
Approved
Same as above, but also removed NotApproved exception. LoopError
is now multiply derived from HandlerAPI.DiscardMessage and
Errors.MMLoopingPost.
Hold
Same as above, but also changed slightly the way an exception is
raised when a message is held. hold_for_approval() now takes four
arguments (the msgdata parameter has been added), and the exc
object can be a class or instance. If it's a class, it is simply
zero-arg'd instantiated. We also use the str() of the exception
to get us the reason for the hold. This allows us to override
HandlerAPI.MessageHeld.__str__() for MessageToBig so that we can
include the size of the message being held.
SMTPDirect
Same as above, but instead of explicitly enqueuing the messages
when some or all of the recipient deliveries failed, just raise a
HandlerAPI.SomeRecipientsFailed exception and let DeliverToList()
manage the enqueuing. Thus queue_message() is removed.
Sendmail
Same as above, but if any chunks fail delivery, those recipients
are queued by raising SomeRecipientsFailed.
SpamDetect
Same as above, except that if a regexp matches, a SpamDetect
exception is raised directly. The DeliverToList() framework
discards these spam messages instead of holding them for
approval.
ToDigest
Same as above, except that if a digest is prepared for delivery,
it is not sent directly via mlist.Post(). Instead, the message is
queued for delivery, thereby relinquishing the lock soon. This
means that digests will only be sent the next time qrunner runs.
|
| | |
|
| |
|
|
|
| |
to handle the case where the header is set to an explicit address, as
specified in mlist.reply_to_address.
|
| |
|
|
|
| |
capitalization) using the setitem interface, you should not include
the header key or the trailing newline.
|
| |
|
|
|
|
|
| |
a new mailing list -- changed to append a new header per list (so
that multi-list loops can be detected).
* Set Reply-To: header to point back to list, if
mlist.reply_goes_to_list is true and msg.fastrack is false/unset.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
outgoing mail, we stash the original value of msg.GetSender() in a
message object attribute msg.original_sender. This is used by the
Acknowledge module.
Second, only perform subject prefix prepending if not msg.isdigest an
dnot msg.fastrack. I.e. the message isn't a pre-crafted digest
message, and it's not being fast tracked via HandlerAPI.DeliverToUser.
Fast tracking means it's being delivered to a single address and not
to the general list subscribership.
|
| |
|
|
| |
not a digest.
|
|
|
"""Cook a message's Subject header.
Use Cleanse.py module to actually remove various headers.
"""
|