Re: daily response 18 mar 2004
Laird Breyer <[email protected]> Fri, 19 Mar 2004 11:34:13 +1000
| Newsgroups | gmane.ietf.asrg.filtering |
|---|---|
| Message-ID | <20040319013413.GB14917@ender> |
On Mar 18 2004, David Nicol wrote: > Hmm. we're trying to discuss e-mail filtering here, not exhaustive > library indexing. > MTA filtering: messages are delivered or blocked (or delivered and > tagged) (et cetera) > MUA filtering: messages are filed (perhaps respecting tags placed by an MTA) > > That is real, today, current practice. Big distinction. Ok, I'll try again. Some filters have components that act during MTA filtering (your definition above), and also components that act after MUA filtering (your def). This is true for any statistical filter whose learning material is read directly from filed messages. Learning occurs after MUA filtering, while tagging (etc.) occurs during MTA filtering. We all have most experience with the schemes we've come up with ourselves, so it's natural for the discussion to polarize along those lines. There's no bestest solution. If what I say below seems biased, that's because it is. In your case, you do not filter or tag based on content at all: > I am working on an aggressively filtering SMTP server. It refuses messages > that have not been approved in advance by the recipients. This means that It follows that you have no need to worry about modifications to the content of messages, and it's probably counterproductive to discuss complex message modification protocols from you pov. The statistical filters are totally content based. Some are installed inside or just before the MUA, but others can be installed within an SMTP server. Statistical filters need a lot of data (typically stored in a database). This data comes from messages, which are either learned during filtering, or learned after MUA filtering. Here are two scenarios, many filters can handle both of these. bogofilter is the canonical example. Scenario 1: messages arrive, are filtered and learned at the MTA or MDA level. What happens when the MUA boundary is crossed is irrelevant. The statistics database is stored separately from the MUA. This design has problems with feedback from users. Incorrect classifications must be awkwardly communicated to the filter by resubmitting the *exact same* message, character for character. Alternatively, the filter must keep its own duplicate message cache, separate from the MUA, so that the user need only refer to a previous message somehow. In that case, the filter is evolving into a message repository just like the MUA already is. Scenario 2: messages arrive, are filtered only at the MTA/MDA level. Learning is performed on messages scavenged from the MUA repository (mbox files, maildirs whatever). This design is nice for users, because the learning/feedback can be tightly integrated with their user interface. It suffers from the problem that by the time messages are learned, they may have been modified, mangled, and otherwise become slightly "wrong". I mentioned bogofilter because it can do both these scenarios, and people really do use both. For scenario 1, there's a couple of switches which update the database on the fly. For scenario 2, some people relearn their bogo database from scratch every night, through a cron job. Why do people use both scenarios? Because databases can get out of whack, hence needing a rebuild, and because some people report better results through complete relearning from scratch, and because databases can fill up and become stale. Scenario 1 is nearly maintenance free, but untended misclassifications will slowly sabotage the database. > okay, so you understand the differences between MUA/MTA In summary, I still maintain that the difference between MUA/MTA is close to irrelevant for statistical filtering. It's like an overlay which doesn't fit properly. Note that I've given you reasons which have nothing to do with library management this time. -- Laird Breyer.