Summary of Issues Raised to date

Yakov Shafranovich <[email protected]> Mon, 15 Mar 2004 18:03:54 -0500
Newsgroups gmane.ietf.asrg.filtering
Organization SolidMatrix Technologies, Inc.
Message-ID <[email protected]>
Jesse was working on something but seems to have disappeared 
temporarily. Meanwhile, I put together his original message plus your 
comments into a Wiki page 
(http://www.shaftek.org/wiki/wiki.pl?Filtering_Standards/Issues_Raised). 
I am including a copy here, feel free to comment here and edit the Wiki 
directly:

=== This page outlines some of the issues raised during the discussions 
on the mailing list. This is based on 
[http://article.gmane.org/gmane.ietf.asrg.filtering/64 a message] by 
Jesse Dougherty. ===

=== Multiple Filter Types Possible ===
* spam filtering isn't the only potential filter running.  A filter 
header specification should be extensible to other filtering types. 
Possible three types of filters:

1) Protection - MTA/MDA - implemented by administrator
   - malware
   - UCE/spam filtering

2) Policy - enforce communications policies (MTA or MDA)
   - content policy
   - archiving
   - ...

3) Preference (MDA or MUA)
   - personal rules
   - personal bayes filtering

Each level may remove items from the mail stream, or add data to the 
messages for consumption later down the line.

* More types of filters are possible such as IDS systems, etc.

* Filters should generally NOT modify the body of the message directly 
(e.g. add a URL for the filter), since such standard description  can 
quickly become an indicator for the filter. Anything that makes it so 
the downstream filter cannot see exactly the same message as the 
upstream filter is unstable (ie if you remove a filter in the chain, 
you've sabotaged training for all filters downstream).  If the filter's 
behavior is changed (e.g. removing the URL), repercussions could be 
dramatic for a while.

* Anti-virus software and other agent may sometimes need to modify the 
body of the message but in those cases they will likely to elect to 
remove an email, or say "replace" it with a notice that the email is 
suspect and can be picked up in a quarantine zone. In this sort of case, 
filtering software is not likely to see  tampered messages.

* An upstream filter may know about something that breaks a downstream 
filter (in possibly damaging ways), and *need* to be able to stop that 
payload from getting to your filter. One possibility may include a blend 
of "don't modify unless you have to" with  "if you have to modify, 
here's how you signal what you did, and why".

* Sometimes upstream filters such as IDS systems may need to pass some 
sort of indicator that this message had some strange characteristics 
which may not be apparent when simply analysing the message. (like it 
was delivered in a connection which also attempted to deliver to a lot 
of other addresses, all starting with 'r').

* Filtering headers add to the information processed downstream. To 
prevent unwanted feedback (ie a procmail filter catching on to a Spam 
Assassin recommendation), the spec needs to be so that added headers can 
be recognized by all and skipped. This suggests a common prefix such as 
"X-SPAM-", so that the programs downstream don't need extensive logic to 
identify and skip headers.

=== No Standard Meaning for Labels ===

* an administrator may opt to have their filtering framework assign a 
label with the outcome of a specific filter.  These labels have no 
standard meaning, requiring that configuration of the clients requires 
more offline work. Moreover, the labelling may not even be consistent 
over several versions of the same filter.

* The definition of spam isn't universal and filtering technologies may 
have subtle differences in their implementation of spam detection.  To 
this end, labelling a message as spam may not be consistent. (unwanted 
vs. UCE or some combination thereof)

* filters all have different methods of labelling messages, resulting in 
no common way to configure MUAs to identify filter labels in incoming 
messages

* some filters develop a confidence as well as a label, allowing later 
processing to be tuned to reduce errors.  Some filters are unable to 
parse these confidence levels.  A common format for confidence is also 
required.

* MUAs and MDAs have varying rules capabilities from simplistic to 
complex and not all labelling methods respect this.  It takes work for a 
recipient to configure their filters to deal with labels added by a 
trusted spam filter.

* Users want a label and a confidence to allow the recipients to set 
their own spam thresholds.

* One of the ways we can do this is to be able to provide for multiple 
rule systems in the headers. For example: "Filter-Results: 
rule-system-type=sieve; results=xxx". We can specify an IANA registry 
for rules, plus some commons rules as part of the standard.

* The labelling spec needs to consider that MUAs and MDAs have a vast 
array of parsing capabilities and we need to consider that when dealing 
with a multiple filter chain. We need to consider:
1) multiple filters attempting similar classifications (ie: dnsbls at 
the gateway edge, followed by content filtering at
a second tier.)
2) multiple filters attempting different classifications (ie: virus, 
spam, other content filters)

* Actions should not be determined by the filters.  They simply need to 
label a message and actions would be determined downstream.

=== There is a Need for More Metadata ===

* filtering decisions are dependant on the state of the filtering (virus 
definitions, software version) at the time of message scanning resulting 
in different results for the same message at different times.  It is 
important for filters to be able to add meta data to the label.

* Recipients may believe that a message was labelled in error and want 
to provide as a defect to the administrator. This administrator (or the 
filter vendor) will need more meta data about the filtering than a 
single judgement label.  More state data will be required to diagnose 
and adjust/reject the feedback.

* This suggests a different type of labelling is already used by some 
filters: instead of advisory labels only, the message also carries state 
information. I think that means we need to discuss two different types 
of headers separately:
1) headers which advise the downstream programs.
2) headers which are meant to be private to the filter.

=== Trust Is Needed  ===

* Labels may be added to the message prior to gateway filtering (on the 
outgoing MTA?) and may not be trusted.  How to tell if a label was added 
by the trusted MTA?  What should an MTA do if it receives an incoming 
labelled message? "- this message was virus scanned by ..."

Yakov