| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| | |
|
| | |
|
| |
|
|
| |
to be removed.
|
| |
|
|
|
|
|
|
|
| |
to do a little more work here. Specifically, we need to add an
explicit pipeline to the message's metadata, then we can send the
message through the normal incoming queue (i.e. we override the
incoming queue's default pipeline). We also set the envsender
attribute to point to the -bounces address for the list so we can
handle any bounces to the list's owners.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
address instead of the mailman-admin@dom.ain address. We don't want
people contacting the site owner to be bounce processed.
Also, Utils.get_site_email()'s second argument should no longer
include the leading dash.
Set the `errorsto' metadata to the mailman-bounces address, and add a
`verp' flag in the metadata set to VERP_PASSWORD_REMINDERS.
|
| | |
|
| |
|
|
| |
longer include the leading dash.
|
| |
|
|
|
| |
Consults VERP_DELIVERY_INTERVAL to decide whether to set the `verp'
metadata key.
|
| |
|
|
|
| |
this because I want to create a flow chart later to give a better
description of the details.
|
| |
|
|
|
|
|
|
|
|
|
| |
no longer handles any -admin or -owner messages, or any bounce
processing.
_dispose(): Don't look at the `authoritah' metadata key. Also, vastly
simplify the main switch because it only needs to look at torequest,
tojoin, and toleave.
_toadmins(): Removed as unnecessary.
|
| |
|
|
|
|
|
|
| |
the new bounces script. -admin no longer delivers to the mailowner
script since the mailowner script no longer does bounce processing.
For backwards compatibility -admin goes to the bounces script now
(should it?). Also, -owner is no longer an alias for -admin but pipes
to the mailowner script directly.
|
| |
|
|
|
|
|
|
|
|
|
| |
to write out the mailman-loop address which is used to consume all
messages sent to the mailman-owners address that bounces. This is now
the best way to break bounce loops.
All mail to mailman-loop@dom.ain will get appended to an mbox file
called $prefix/data/owner-bounces.mbox.
Similarly, make sure the mailman-loop address is in the database.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
process(): Don't hardcode the envelope sender to the -admin address.
First off, we're directing bounces to the -bounces address. Second,
if we're VERPing, we'll be calculating the envelope sender
individually for each recipient in the deliver() function.
When VERPIng, set the envsender local variable to a tuple containing
some pre-calculated information needed by deliver(). Specifically it
will contain the split mailbox and domain of the list's -bounces
address.
Also, when VERPing, each chunk will contain exactly one recipient, so
use a list comprehension to calculate this (it's actually a list of
lists where the inner list has one item).
We'll also pass the envsender local variable to both
threaded_deliver() and deliver().
To make VERP delivery slightly more efficient, every thread gets its
own connection to the MTA. So we create an smtplib.SMTP instance once
but do not connect it until we actually get to deliver() -- and there
we have to use a kludge to determine whether we're connected or not.
deliver() will re-use the connection to the MTA to do the
conn.sendmail() calls.
pre_deliver(): Add the conn argument.
threaded_deliver(): Create one smtplib.SMTP instance for each thread.
Be sure to close the connection when the thread is finished.
deliver(): Add the conn argument. Craft the VERP envelope sender as
described above. Make sure the MTA connection is connect()'ed.
|
| | |
|
| |
|
|
|
| |
then set the `verp' flag in the message metadata. This will signal
the SMTPDirect module to VERP this message delivery.
|
| |
|
|
|
|
| |
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.
|
| |
|
|
| |
longer include the leading dash.
|
| |
|
|
| |
API so that the leading dash on extra shouldn't be included.
|
| |
|
|
|
|
|
|
|
|
|
| |
class to decode the cookie data so there's no possibility of
unpickling exploits of untrusted data.
I'm still mildly concerned about using marshal.loads() to de-serialize
the cookie data we want to use for authorization, although I think
we're more or less safe for the reasons described in the preceding
comment. I should probably think about this some more, possibly using
the newly documented pickle anti-exploit measures.
|
| |
|
|
|
|
|
|
|
|
| |
list given the extension.
GetAdminEmail(), GetOwnerEmail(), GetRequestEmail(), GetListEmail():
Define in terms of getListAddress().
ApprovedAddMember(), ApprovedDeleteMember(): Utils.get_site_email()'s
second argument should not include the leading dash.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
detection.
VERP_FORMAT: The string (with interpolations) that is used as the
format for VERP'd envelope senders.
VERP_REGEXP: The (unfortunately complex) regular expression which
decodes strings encoded with VERP_FORMAT. WIBNI Python had a scanf()
equivalent?
VERP_PASSWORD_REMINDERS: A flag which controls whether password
reminders are VERP'd. This is a golden opportunity because such
emails are already individualized.
VERP_PERSONALIZED_DELIVERIES: A flag which controls whether
personalized regular deliveries are VERP'd. This is another golden
opportunity because such emails are already individualized.
VERP_DELIVERY_INTERVAL: A variable which controls the frequency with
which to VERP regular, non-personalized deliveries. 0 means never
VERP these, 1 means to always VERP them, and a number > 1 means to
VERP every Nth delivery.
GLOBAL_PIPELINE: Move the ToUsenet handler up to just after the
ToArchive handler. Also, added some comments.
QRUNNERS: Alphabetize, and also add a BounceRunner now that we're
going to change the envelope sender address so that bounces always
come to listname-bounces@dom.ain. IOW, we're finally separating
administration from bounce processing, however this /will/ require
folks to regenerate their aliases. We'll make that easier for them.
|
| |
|
|
|
|
|
| |
RegisterBounce(): The dirty flag wasn't used anywhere.
HandleBouncingAddress(): Utils.get_site_email()'s second argument
should no longer include the leading dash.
|
| |
|
|
|
|
| |
America/St_Johns, which was broken due to an erroneous divmod() call.
Not important enough to bump the version number, so if you installed
it in the last hour or so, please re-install.
|
| |
|
|
| |
formatdate(), sync'd with the Python 2.2. versions.
|
| | |
|
| |
|
|
|
| |
which includes the fullname, but also watch out for older records
which don't include the fullname.
|
| | |
|
| |
|
|
|
| |
the admin database, otherwise it won't be in the list's preferred
language.
|
| | |
|
| |
|
|
|
| |
would be a duplicate of one in bin/newlist. Web version and email
version should have different entries in the message catalog.
|
| |
|
|
|
| |
Buchmann, including that Defer, Approve, Reject, Discard are valid for
both held messages and held subscription requests.
|
| |
|
|
|
|
|
|
|
|
| |
results strings should be displayed in the language that the
subscribee has requested. Also, tailor the response message based on
whether the moderators have to approve a confirmed request or not.
Reported by Daniel Buchmann.
subscription_confirm(): Need a `listname' local variable for _()
string interpolation.
|
| |
|
|
|
|
| |
to be sent to the list moderators, it should be sent in the list's own
preferred language, not in the requested language of the subscribee.
Reported by Daniel Buchmann.
|
| | |
|
| |
|
|
|
|
|
| |
or login, be sure we test for membership with isMember() before we
call the methods that require the user to be a member. Organize the
code such that membership isn't leaked due to the result messages, and
that mischievous attempts are logged.
|
| |
|
|
| |
list exists before we try to write the template file.
|
| |
|
|
|
| |
and exit with a non-zero status (so cron should let us know there's a
problem).
|
| |
|
|
|
| |
explanation needs to be written to reflect the fact that password
inputs are not on the general optinos page anymore.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|