[Mailman-Developers] MM Bouncer

Chuq Von Rospach chuqui@plaidworks.com
Thu, 06 Dec 2001 11:04:09 -0800


On 12/6/01 10:33 AM, "Peter C. Norton" <spacey-mailman@lenin.nu> wrote:

>> around). I've done some noodling on doing something like this, and if you do
>> it right (it's a fair amount of work), you can really do some fun stuff,
>> because you're literally writing the message on the fly out the wire.
> 
> It could be written as a before-the MTA, never-enque model, but it seems
> like the design of courier and postfix make wedging in output modules
> relatively easy.  Certianly easier then writing everything myself, and they
> do all the work. 

Exactly. When you take something like postfix or sendmail and throw it out,
you are, (ta da!) writing a replacement. Now, in the case of something like
this, what you're really doing is keeping the MTA around to do most of the
grunt work (like incoming mail and retrying failed mail), but still -- you
have to write a fair amount of code to replace the code you're tossing out.

For almost all environments, it ain't worth it. But for those off-the-edge
sites, you can get some serious gains by doing it, at the cost of a fair
chunk o' code and engineering. When you start looking at just the issue of
resolving and dealign with MX issues, you start seeing code bloat, and if
you read the Postfix list, you find you run into huge amounts of fun sending
mail to servers that don't quite work to standard (or at all). To some
degree, you can choose to let those transactions fail and retry through the
MTA, but... It gets gnarly, fast.

> Definetely the high-volume impelmentation is overkill.  But the re-writing
> engine would be valuable for any mailing list manager.

Yes, it would be. And it's actually not that difficult to add, at least
conceptually. Mailman, in fact, already does some swapping of system
variables into header templates. It's not that tough to extend the number of
variables it knows about (and then extend that to allow for per-user data)
and extend the global search/replace to include the entire message. Then you
'simply' set up your messages to include template variables that get updated
as you send things out...

In practice, it's not quite one paragraph of text to do, but the underlying
system's not that bad.