Start Again ((was Re: Filtering Header Draft Discussion
David Nicol <[email protected]> Wed, 20 Oct 2004 12:39:31 -0500
| Newsgroups | gmane.ietf.asrg.filtering |
|---|---|
| Message-ID | <[email protected]> |
On Wed, 20 Oct 2004 17:29:55 +1000, Laird Breyer <[email protected]> wrote: > On Oct 16 2004, J.J.Bailey wrote: > > > > Does anyone have a feel for how much effort is being put into client- > > side filtering? I'm curious to know what's driving the standard and > > who needs what where. Several MUA systems use stastical filtering and is-junk/is-not-junk buttons. Larger unified webmail providers (yahoo, gmail) have shared systems. There are shared systems available for DIY e-mail servers. The best are integrated with IMAP servers in such a way that moving messages into/outof the JUNK folder is equivalent to an is-junk/is-not-junk button. My feeling WRT the general purpose informational header is that the scope of the problem has been defined far too broadly. My feeling WRT this feeling is that I maybe I sit too close to the the problem and a result that is a set of reasonable reccomendations regarding key/value pair syntax in extended headers and creation of an authoritative registry for known extended heaers and their meanings -- a "best practices" document that refers to a created central name registry -- would be a good thing, even though it ignores what I see as the problem. I see the problem as facilitating shared is-junk/is-not-junk interoperabilty. The filtering WG does not IIRC have regular contribution from anyone who is involved with, for instance, the Thunderbird project, or development of any of the various commercial MUA products that currently have built-in junk/not-junk buttons that train internal statistical filters. > Well this group is somewhat research oriented, so we might not end up > with an actual standard;-) > > If you read the past discussion on the list, there's a wide variety of > headers used in the wild, andthe list is growing. We did a quick > survey on one of the threads on this list, but if anything it showed > lots of variation. > > I believe the main interest for the filtering standard is to identify > whether we can formalise a common extensible format which would > > 1) allow machines to robustly read header contents without needing > separate custom parsers for each header. We chose to recognize key=value pairs separated by semicolons as a best practice. > 2) identify and solve(?) issues such as authentication, overwriting, > modification, removal, coherence which are otherwise decided by each filter on an > ad-hoc basis. "decided by each filter on an ad-hoc basis" is not a problem. Not all the blades on a Swiss army knife are sharp. By trying to "solve" these isues, we are looking for the Swiss army blade that does it all, rather than defining the meta-issues that map in the pocket-knife idiom to, "there are axles in the tool on which the blades fold in and out" and "when all blades are folded in, the tool will not cut a hole in your pocket." Defining a set of criteria that will be maintained in the central registry for interoperability of the different blades, I see that as within the greater mission, not micromanaging solutions to problems that are not facing us immediately. How does each compliant extended header behave WRT authentication, overwriting, modification, removal, and coherence? These are issues that can be deferred to definitions of the particular compliant extended headers. > 3) be simple and easy enough for all interested parties to implement. > > For example, the key/value pair format helps with 1). > > In the case of 2), consider the following header: > > X-Filtered-by: Plusnet (hmail v1.01) > > This is practically useless. but it will work for an example. Maybe it would become Tag-Plusnet: agent=hmail; ver=1.01; status=filtered I favor a short prefix ("Tag") to allow for lots of length following it. X- are experimental and are already well defined, so if we declare that compliant new headers are like Tag-<name>: <keys and values> and declare what information is to be kept in the registry of such things, we could call our mission accomplished, without driving ourselves crazy. The big question becomes, "What is accomplished? instead of a plethora of X- headers, now there are Tag- headers too" and the answer is, X- headers are experimental and Tag- headers are well defined and the definitions are available in a well known place. i envision, for instance, the SpamAssassin project would submit a definition for the Spam name, currently in their X-Spam headers, and would deprecate X-Spam in favor of Tag-Spam. the SPF people would deprecate Received-SPF in favor of Tag-SPF. The first to publish a definition of a general purpose junk status reporting instructions header would submit a definition for it, perhaps something like the SJMDP Simple Junk Mail Declaration Protocol described in http://article.gmane.org/gmane.ietf.asrg.filtering/270 except that the sections on compliance, rewriting, and so on would follow a rigid format demanded by the general purpose Tag- header framework. Changes to SJMDP would include changing the conclusive tags to Tag-Junk: <keys and values> Tag-NotJunk: <keys and values> changing the "If" tags to keys that would appear in the others, and changing the proposed renaming syntax to comply with a renaming convention described in the general proposal. Perhaps the general proposal would declare that tags that are renamed have a reserved name of "Renamed" and the reserved Renamed name description would include a mechanism for readably escaping the keys and values from the old one that has been rewritten. Perhaps using bencoding. (for bencoding purposes, all white space sequences can be presumed to compress to a single space.) "Old" is shorter than "Renamed" and better carries the meaning of inclusion for forensic purposes. (That the header line was renamed is true, but meaningless to everyone except the developers of the software that is doing the renaming.) Tag-Plusnet: agent=imail; ver=0.5; status=filtered; host=cheeseburger.example.com Tag-Old: name=Plusnet; replhost=cheeseburger.example.com; orig=39:agent=hmail; ver=1.01; status=filtered We could more fully embrace the concept of rewriting by declaring Old to be another new header prefix rather than a reserved name. Tag-Plusnet: agent=imail; ver=0.5; status=filtered; host=cheeseburger.example.com Old: name=Plusnet; replhost=cheeseburger.example.com; orig=39:agent=hmail; ver=1.01; status=filtered or even better, Tag-Plusnet: agent=imail; ver=0.5; status=filtered; host=cheeseburger.example.com Old-Plusnet; replhost=cheeseburger.example.com; orig=39:agent=hmail; ver=1.01; status=filtered I have no idea what "status" might mean to the Plusnet system, but the final recipient (or their software) would know that the Plusnet-enabled software at cheeseburger.example.com and the Plusnet-enabled software that gave cheeseburger the message both agreed that the message in question warrants a status of "filtered." One design constraint I see, in which I disagree with Phillip Miller, unless he's come around, is: legacy MUA software that can prefile based on header appearance and content but which is not able to compare bits from different headers in the same message MUST be able to get full use out of compliant informational headers Using the third renaming syntax option above, someone who trusts hmail more than imail, assuming that the imail plusnet software would reject a forgery using some plusnet-specific mechanism, could declare a recipient prefiling rule about Old-Plusnet headers containing "agent=hmail" and "status=filtered" and "replhost=cheeseburger.example.com" in preference to the Tag-Plusnet header provided by the later relay. -- David L Nicol transportation infrastructure technology contracting since 2002