| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
traces of our crufty old Syslog. Most of this work was purely mechanical,
except for:
1) Initializing the loggers. For this, there's a new module
Mailman/loginit.py (yes all modules from now on will use PEP 8
names). We can't call this 'logging.py' because that will
interfere with importing the stdlib module of the same name (can
you say Python 2.5 and absolute imports?).
If you want to write log messages both to the log file and to
stderr, pass True to loginit.initialize(). This will turn on
propagation of log messages to the parent 'mailman' logger, which
is set up to print to stderr. This is how bin/qrunner works when
not running as a subprocess of mailmanctl.
2) The driver script. I had to untwist the StampedLogger stuff and
implement differently printing exceptions and such to log/error
because standard logging objects don't have a write() method. So
we write to a cStringIO and then pass that to the logger.
3) SMTPDirect.py because of the configurability of the log messages.
This required changing SafeDict into a dict subclass (which is
better than using UserDicts anyway -- yay Python 2.3!). It's
probably still possible to flummox things up if you change the
name of the loggers in the SMTP_LOG_* variables in mm_cfg.py.
However, the worst you can do is cause output to go to stderr and
not go to a log file.
Note too that all entry points into the Mailman system must call
Mailman.loginit.initialize() or the log output will go to stderr
(which may occasionally be what you want). Currently all CGIs and
qrunners should be working properly.
I wish I could have tested all code paths that touch the logger, but
that's infeasible. I have tested this, but it's possible that there
were some mistakes in the translation.
- Mailman.Bouncers.BounceAPI.Stop is a singleton, but not a class
instance any more.
- True/False code cleanup, PEP 8 import restructuring, whitespace
normalization, and copyright year updates, as appropriate.
|
| |
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
| |
going to re-use it in a new test script.
|
| |
|
|
| |
Also, whitespace normalization.
|
| |
|
|
|
|
|
|
|
|
| |
for the BounceRunner. Instead of actually registering the bounces
here, it simply returns the list of addresses that have matched. It
returns an empty list if none of the bounce detectors found any
addresses.
I'm also ripping out the test code. The unit test suite is more
appropriate.
|
| | |
|
| |
|
|
| |
syslog error message.
|
| |
|
|
|
| |
still don't implement weighted scoring, but we could if we improved
the bounce detection framework.
|
| | |
|
| |
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
|
| |
|
|
|
|
| |
to stop processing immediately. This in effect provides for the
recognition of temporary problem bounce messages which shouldn't
RegisterBounce(), but /should/ discard the message.
|
| | |
|
| | |
|
| |
|
|
|
| |
its process() function. This doesn't require three nested getattr()
calls.
|
| | |
|
| |
|
|
|
|
|
|
| |
ScanMessages(): Remove Smail detector as this is now folded into the
SimpleMatch detector. Remove the Catchall detector (should be covered
by other detectors). Add the Yale detector.
__main__(): Internationalize the printing of the module docstring.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- GroupWise.py which detects (I believe) Novell's GroupWise Internet
Agent 5.5.3.1 and something called NTMail v4.30.0012
- SMTP32.py which detects something that claims in its X-Mailer:
header to be "<SMTP32 vXXXXXX> where the X's are various version
numbers. I've actually gotten a few bounces from three totally
different domains with this header. I have no idea what it actually
is.
- SimpleMatch.py which detects a wide variety of simple matches of the
form:
...a bunch of lines
--- some start delimiter ---
...a bunch of lines
some lines that look like they contain an email address
...maybe more bunches of lines
--- some end delimiter ---
There may actually be overlap between SimpleMatcher and other
matches, I don't know. There's definitely overlap between
SimpleMatcher and Catchall, the latter of which can probably go
away eventually.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
|
|
pipeline architecture in Mailman/Handlers/HandlersAPI.py, but with a
slightly different interface.
This module is also written so that it can be used (moderately easily)
as a bounce message testing harness.
|