| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| |
|
| |
Added more test cases.
|
| |
|
|
|
|
|
|
|
|
|
| |
- Remove True/False binding cruft
- Remove __future__ statements for nested scopes
- Remove ascii_letters import hack from Utils.py
- Remove mimetypes.guess_all_extensions import hack from Scrubber.py
- In Pending.py, set _missing to object() (better than using [])
Also, update copyright years where appropriate, and re-order imports more to
my PEP 8 tastes. Whitespace normalize.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
BounceRunner.py to discard the bounce when Stop returned. Changed
DSN.py to recognize Action: headers with comments. Changed Qmail.py
to recognize an observed different starting string.
|
| | |
|
| |
|
|
|
|
|
| |
Fixed the import of Stop, which was causing the import of this message
to fail. The symptom was this traceback message in logs/error:
AttributeError: 'module' object has no attribute 'process'
|
| |
|
|
| |
running, but don't attempt to dig out an email address.
|
| | |
|
| |
|
|
| |
then uniquify the return results based on the address.
|
| | |
|
| |
|
|
| |
handling "delayed" DSN reports.
|
| |
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
|
| | |
|
| |
|
|
|
| |
sample that's nearly DSN compliant -- it uses "Action: failure" when
it should be "Action: failed". Be liberal in what you accept.
|
| |
|
|
|
|
| |
De-string-module-ify
Other Python 2.0 constructs used where appropriate.
|
| |
|
|
| |
framework will cause errors. filter out Nones before return.
|
| |
|
|
|
| |
are bogus and don't contain the required address type field, don't try
to guess -- return None.
|
| |
|
|
|
| |
possible to get a multifile.Error not only on the mfile.next() call,
but also on the mfile.read() call. Return None in both cases.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
bounces. These look like DSN mime messages, but don't contain
-Recipient: headers. :(
Caiwireless, Catchall, DSN, Exim, Postfix, Qmail, Smail, Yahoo:
Changed process() API to take just the message object, since the
MailList object isn't really required. Modified Catchall to use
mm_cfg.DEFAULT_HOST_NAME in the one place where mlist.host_name was
used. This module's deprecated anyway so it shouldn't matter much.
BouncerAPI.py: Use the new bouncer.process() API. Also improve the
unit testing code a bit.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
notification, so we need to handle this.
Sadly, MTAs that support DSN use a bunch of different headers which
might be more useful in picking out the actual list member.
Final-recipient is required but may not correspond to our list
member. Original-recipient, which /would/ be a list member, is
optional. Some MTAs seem to use X-Actual-Recipient to point to our
list member, but others use that for the final recip. :(
|
|
|
MIME. The Python tools for MIME handling could use a good rewrite!
|