[rt-devel] stacked email handlers
Jesse
jesse at fsck.com
Mon Sep 25 20:04:40 EDT 2000
Ok. here's a first round of commentary on this. I'm rather busy with the new gig,
so this may be somewhat discombobulated....tell me what you think.
-j
> I'll still be busy with the schema stuff for another day or two at least
> (but I promose, a patch is on its way), so you have time to tell me all
> the things that are wrong here before I start writing code (or even a more
> detailed spec :)
(For those playing along at home, we've already got a stackable-handler system inside RT2. I'm not thrilled with my own answers to the issues I've raised. Our best bet may be to take what's already there to enhance it to do what's needed for ivan's new functionality.
)
My big concerns with a stackable-handler system are:
the increased overhead at startup..especially at high-volume sites
the added complexity for debugging.
If we design and build with these things in mind, I think we should be able
to make something really capable.
A number of the things mentioned here are important / easy enough that
they should just be part of the 'standard' mail gateway.
> Replication of current RT1 procmail functionality with stackable Perl
> plugins inside RT itself. Write plugins to (stacked in this order):
> - Archive message
You mean split off a copy into a mailbox? How is it better to do this
inside RT rather than at the MTA level?
> - Parsing of header fields, etc.
> - Drop bounces and other messages based on configurable regexs against
> header fields, i.e. abuse.net bounces,
Take a look at how we're doing address canonicalization. That may be
the easiest way to do this.
> - Drop duplicates based on checksum of body
Presumably checksum of body and a literal comparison of the requestor
> - RT1 `stripmime' - remove non-text attachments and change to URL
> - (Normal RT processing)
This is taken care of in the core now.
> - Stop processing before autoreply based on queue name
How is this different than "Don't send autoreply for some queues"? Which
is easy
> - (above drop plugin used again to drop undesirable messages before
> autoreply - undesirable From: addresses {mailer-daemon, daemon,
> listserv, majordomo}, Precendence: {junk, list, bulk, noreply,
> bofh}, X-RT: loop-prevention)
> - Per-ticket check for 1 message per timeframe (probably a database
> field for timestamp of last autoreply) -> stop processing before
> autoreply
> - drop messages based on a database table of blacklist addresses
> - Autoreply
Autoreply is an RT::Action that's already in the core. will that work?
>
> Plugin interface:
> - Message (probably an object with headers parsed, email
> addresses decoded, etc., but need a way for the archive plugin and
> possibly others should get the raw text first)
> - Queue name
> - Ticket#
> - Arbitrary data store with per-plugin namespace (for AgentId and
> other abuse outsourcing features, etc.)
>
A lot of this feels like it may make sense to add some functionality to the
existing Scrip system and put in another Scrip check
_before_ committing transactions with wider range of return values. ...
to allow better control of the transaction after the check.
Hrm. If we could do real commit-rollback, this would be so much easier.
*sigh*
The quiccker way to do this may be with a few callbacks in the mail gateway.
Most of what MAPS needs is pretty general :)
Jesse
> --
> meow
> _ivan
>
> _______________________________________________
> Rt-devel mailing list
> Rt-devel at lists.fsck.com
> http://lists.fsck.com/mailman/listinfo/rt-devel
>
>
--
jesse reed vincent --- root at eruditorum.org --- jesse at fsck.com
pgp keyprint: 50 41 9C 03 D0 BC BC C8 2C B9 77 26 6F E1 EB 91
-------------------------------------------------------------
Gur SOV jnagf gb znxr guvf fvt vyyrtny.
More information about the Rt-devel
mailing list