| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
already existing commas. Should do a better job.
|
| |
|
|
| |
rfc822.Message.getaddrlist() now does the right thing.
|
| |
|
|
|
|
|
| |
getallrecipients() and just make getaddrlist() do the right thing
(scan all matching headers, not just the first one).
Patch submitted to Guido.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
messing up their SIGCHLD handling. This would manifest as an IOError
getting raised in the cmdproc.close() call of DeliverToList() in
Deliverer.py. Thanks go Harald Meland for describing the real problem
and giving the real fix. Thanks go to Greg Stein for testing this
patch and verifying that it works.
Deliverer.DeliverToList(): Undo previously checked in patch, which
simply wrapped a try/except around the cmdproc.close() call and
ignored errno=10 IOErrors. This was treating the symptoms, not the
cause.
All files in cron/: Added Harald's work around of the Linux bug by
including these lines in every file:
# Work around known problems with some RedHat cron daemons
import signal
signal.signal(signal.SIGCHLD, signal.SIG_DFL)
It helps RedHat and doesn't appear to hurt on e.g. Solaris.
|
| |
|
|
|
|
|
| |
all the To: and Cc: line recipients. Previously, we'd only get the
first of any existing headers, and this meant that even if the list
appeared on a later Cc: header, the message would get incorrectly
flagged as an implicit destination.
|
| |
|
|
| |
getallrecipients() method.
|
| |
|
|
| |
recipients, parsed with AddressList()
|
| | |
|
| |
|
|
| |
cut-and-paste error (found by Balazs Nagy).
|
| | |
|
| |
|
|
|
| |
catching blank lines, so we can (mostly) get rid of the special
treatment here.
|
| | |
|
| |
|
|
| |
here in its case-preserved form.
|
| |
|
|
|
|
|
|
| |
EmailAddressError, and clean up logic.
ChangeOptions(): In the `subscribees' section, add a call to
ValidateEmail() so that invalid email addresses can't be added in the
Membership Management text window.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cleaned up its interface so that it always raises an exception if an
address problem is uncovered (it used to both raise exceptions and
return 0 or 1). It now has no useful return value.
Added a re to barf on other unacceptable characters in an email
address, currently: [ ] ( ) < > | ;
Should there be others? The test that were there are retained, but the
domain_parts test was cleaned up (there was a redundant test in
there).
Note that now unqualified addresses (e.g. those that don't contain an
`@' are now DISALLOWED). This goes partially toward Greg Stein's
suggestion.
|
| |
|
|
|
|
|
| |
Because I want to be able to catch both MMBadEmailError and
MMHostileAddress in a `politically correct' and clean except clause, I
made both exceptions classes which derive from new exception class
EmailAddressError.
|
| |
|
|
| |
be an empty string.
|
| |
|
|
|
| |
list, and not have a `value' attribute. Don't try to int()ify them if
so.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
disabled. The problem: because cookies are disabled, the admin has to
authenticate for each access. We can't change this because otherwise
option values could leak.
So when the admin fills in the password and clicks `let me in...', the
form gets POSTed, and even those the variable to get details on is
given in the form's ACTION, cgi.py ignores any QUERY_STRING on a
POST. Maybe cgi.py should be fixed? In the meantime, we just watch
for the FieldStorage having a `request_login' field and a QUERY_STRING
environment variable. In that case, we manually parse out the query
string and use its value if available.
|
| |
|
|
|
| |
Linux systems when we close the cmdproc pipe. We could be masking a
real bug, but I can't figure it out, and it seems harmless.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
content-type header, or include a bogus one.
cgi.py
FieldStorage.__init__(): if there is no content-type header, use
text/plain for inner parts, but application/x-www-form-urlencoded
for outer parts. Honor any existing content-type header.
Lower down, if the content-type header is something we don't
understand, default to text/plain for inner parts, but
application/x-www-form-urlencoded for outer parts.
This patch will be proposed for Python 1.5.2
driver
run_main(): Play some games to get Mailman's special cgi.py
module. We import it from Mailman.pythonlib.cgi, but then we jam
this module into sys.modules['cgi'] so all those imports in all
those Mailman.Cgi scripts get our special one (without having to
hack all those scripts!)
|
| | |
|
| | |
|
| |
|
|
|
|
| |
default arg value because then this module can't be imported in older
versions of Mailman. Use None in the arglist, and set to the proper
value when None is detected.
|
| |
|
|
|
|
| |
raised from the os.stat() call, the value will unpack into a
two-tuple. So just do the unpacking in place, check the code and use
Utils.reraise() if it wasn't what we expected.
|
| |
|
|
|
|
| |
`raise' here since we may be running under Python 1.5. I don't use
Utils.reraise() because I don't want to import Utils, so just do the
manual sys import and raise.
|
| | |
|
| |
|
|
|
|
| |
when exc is not None.
open_ex(): Use reraise().
|
| |
|
|
|
| |
it and there are still some 1.5 users out there (thanks Brad
Crittenden for finding this).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
got a false positive for a message that had the last line of a
paragraph (hence, short enough to look like administrivia) begin with
'set'.
- Require all 3 arguments (for some reason it was requiring 2 or 3,
while MailCommandHandler seems to clearly require 3 - perhaps we
want to catch malformed administrivia, i'm just assuming not)
- Require second arg of set command matches to be 'on' or 'off'.
I guess administrivia is a delicate balance between weeding out
non-administrivia and catching mis-directed admin messages, even ones
that were badly formed. I'm inclined to opt for greater stingency, at
the risk of not catching malformed and misdirected admin messages.
Tough luck, the misguided poster will have to change their password.
(I bet i get stung by this one day, myself...)
|
| | |
|
| |
|
|
|
|
|
|
| |
linked_newsgroup or nntp_host is empty. Instead log the error to
logs/error and just return, otherwise the email doesn't get posted to
the list.
Removed exception ImproperNNTPConfigError.
|
| |
|
|
|
|
| |
make it much more readable. First, use bare checkboxes and column
headers for what used to be the checkbox labels. Put a border around
the table. Add a legend for what the column headers mean.
|
| | |
|
| |
|
|
|
| |
through Utils.ParseAddrs() to get the real email address out of the
name argument.
|
| |
|
|
|
| |
the success notification specifies the address instead of any other
goo.
|
| |
|
|
|
|
|
|
|
|
| |
addresses from lines such as
User J. Person <person@allusers.com>
person@allusers.com (User J. Person)
It also handles bare email addresses. While this is rather simplistic
regexp matching, I think it will catch most situations.
|
| | |
|
| | |
|
| |
|
|
| |
1.5.1's bare raise statement
|
| |
|
|
| |
line in mass subscribe dialog. The old way didn't really work.
|
| |
|
|
|
|
| |
doesn't have the attribute sys.__stdout__; although this is placed
into the sys module by the driver, I think there are non-CGI paths to
this code.
|
| |
|
|
|
|
| |
1.5.2 distribution, so that names are uniquely generated in fork()
related children. Use a simlar import/hasattr trick as when importing
the latest smtplib.py
|
| |
|
|
| |
safe filename generation across fork() related children.
|
| |
|
|
| |
and put the child code in the block of the `if'.
|
| |
|
|
| |
line
|
| |
|
|
| |
chars wide instead of 20.
|
| |
|
|
|
|
|
|
|
|
| |
referenced; these should be Errors.
This was in response to an attempt to subscribe a list to itself by
sending an subscribe email command and faking the From: field. Now we
don't get a crash, but I'm not sure the current behavior is correct.
The address (properly) doesn't get subscribed, but a message stating
this *is* sent to the list!
|
| |
|
|
| |
converter
|