| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
digests unpack correctly (bug found by Sjoerd Mullender).
|
| | |
|
| |
|
|
|
|
| |
it queue messages. It registers bounces only for SMTP error codes >=
500, although errors never seem to occur with sendmail when not doing
DSN -- probably because such deliveries are asynchronous.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
PRIVATE_EXTERNAL_ARCHIVER.
Get DEFAULT_HOST_NAME and SMTPHOST from the autoconf calculated @FQDN@
parameter, which is the fully qualified local host name. DEFAULT_URL
uses the @URL@ value. PUBLIC_ARCHIVE_URL and PRIVATE_ARCHIVE_URL both
also have more sensible defaults.
Added SMTPPORT, which defaults to 0 (which lets smtplib use its own
default).
|
| |
|
|
|
| |
by anything other than letter case. This is a QND (quick 'n' dirty)
security patch when using an external archiver.
|
| | |
|
| |
|
|
|
| |
shorter than len(key). Just let it fail normally in those cases.
Fixes PR#158.
|
| |
|
|
| |
sender get set correctly.
|
| |
|
|
| |
text, otherwise this messes up the message headers.
|
| |
|
|
|
| |
os._exit() appears to skip this, which will cause premature script
termination errors.
|
| |
|
|
|
| |
because for some reason IE5 seems to corrupt the former under at least
some situations.
|
| |
|
|
| |
bug
|
| |
|
|
| |
for addresses. Reported by dpalffy@kkt.bme.hu. PR#165
|
| |
|
|
|
| |
SnarfMessage(): Removed all these functions, since they are no longer
used.
|
| |
|
|
|
|
|
|
|
| |
delivery to pipeline architecture by using HandlerAPI.DeliverToUser()
for fast track delivery of the notification messages.
ApprovedAddMembers(): Don't need to call Reap anymore (it's gone).
Post(): ...process() => ...DeliverToList()
|
| |
|
|
|
| |
HandlerAPI.DeliverToUser() for fast track delivery of the
notification messages.
|
| |
|
|
|
|
|
|
| |
message pipeline modules. Specifically,
AddNonStandardHeaders(), SendTextToUser(), DeliverToUser(),
QuotePeriods(), DeliverToOwner(), DeliverToList(),
CreateSubscribeAck(): All these methods have been removed.
|
| |
|
|
|
|
|
|
|
| |
that to the StringIO constructor. Useful for subclassing.
UserNotification: Very useful subclass of OutgoingMessage which takes
a recipient, a sender, a subject, and the message text, and sets the
appropriate headers and `recips' attribute for use in the message
pipeline.
|
| | |
|
| |
|
|
| |
Some rewording of the notification messages.
|
| |
|
|
|
| |
HandlerAPI.DeliverToUser() for fast track delivery of the
notification messages.
|
| |
|
|
|
| |
x-beenthere's. I'm hoping this was a transcription error on my part,
otherwise this never worked, and we've been lucky!
|
| |
|
|
| |
user here and not in the post script.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
HandlerAPI.DeliverToUser() for fast track delivery of the
acknowledgement to the sender. We need to be a little tricky digging
the original sender out of a msg object attribute, since CookHeaders
(which sets the attribute) changes it for the outgoing message. If
msg.original_sender isn't found, use the normal msg.GetSender().
|
| |
|
|
|
|
|
|
|
|
|
| |
DeliverToUser(): New function which implements a pipeline for direct
delivery to a specified user. This pipeline is used for all admin
notifications, and other things like user post acks. It sets
msg.fastrack attribute to 1 so other modules can know which delivery
track this message is on.
This lets us use the same module for all delivery, or separate ones
for delivery to list and delivery to user.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
| |
module.
|
| |
|
|
|
|
|
|
|
| |
Convert message delivery to pipeline architecture by using
HandlerAPI.DeliverToUser() for fast track delivery of the
acknowledgement to the sender. We need to be a little tricky digging
the original sender out of a msg object attribute, since CookHeaders
(which sets the attribute) changes it for the outgoing message. If
msg.original_sender isn't found, use the normal msg.GetSender().
|
| | |
|
| |
|
|
|
|
| |
already has a recipients list, otherwise digests will get delivered to
all non-digest members (and digest members won't even get the message
at all!)
|
| |
|
|
|
|
|
| |
instead of getting handed it from the requests database. If we can't
open the file for reading, the message was lost, so print an
information message and tidy up the housekeeping (this last is a bit
of a kludge though).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instead of marshalled into the requests.db file. The file name will
always be $PREFIX/data/heldmsg-<listname>-<id> where <id> is the
request id integer value.
HoldMessage(): Store the message text in the heldmsg file as described
above. In the requests.db marshal, we just include the filename in
the last slot. Although this is redundant information, it makes
calculating the file name a little easier (hmm, maybe we should remove
this anyway).
__handlepost(): Watch out for the message file being removed, and
raise a LostHeldMessage in that situation. In any case, once the
message is dispatched, be sure to unlink the message file
(transforming expected exceptions into LostHeldMessage).
|
| |
|
|
|
|
|
|
|
|
|
|
| |
class for all Mailman exception. When creating a new exception class,
or converting an old string-based exception, always use this as the
base class.
MMLoopingPost, EmailAddressError: Use MailmanError as base class.
LostHeldMessage: New exception which handles the case when the held
message text file gets lost (i.e. deleted from the file system) during
an admindb transaction.
|
| |
|
|
|
|
|
|
|
|
| |
locally in ListAdmin.py
ADMINDB_PAGE_TEXT_LIMIT: new variable which controls how big an
excerpt to include in the admindb text field. Current default is 4k.
This number is passed directly to fileobj.read(), so a negative number
means put the whole message in the field (which could slow down the
web page).
|
| |
|
|
|
| |
\n so we don't see ^M's in this text (some MTAs may do the conversion
anyway, but not all)
|
| |
|
|
|
|
| |
self.fullpath() returns a non-false value
__opendb(): assert that self.__filename is true
|
| |
|
|
|
|
|
| |
also done in InitTempVars() which is called just before the
conditional.
InitTempVars(): If name is false, then set self._full_path to None.
|
| | |
|
| |
|
|
| |
far enough to have a lock object
|
| |
|
|
|
|
| |
for the news->mail gateway and Handlers/ToUsenet for mail->news).
This class now contains only the list configuration variables.
|
| |
|
|
|
|
|
|
| |
use getattr() not hasattr()
For the outgoing message, take the object passed in as arg, flatten it
via the str() method, and post the StringIO'd wrapper to the nntp
process.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
programming constructs. Could still use a lot more work.
Make sure that lists are saved and unlocked when exiting.
|
| | |
|
| |
|
|
| |
programming constructs. Could still use a lot more work.
|