ietf-mta-filters
[Top] [All Lists]

Re: Sieve mime loop issues list

2006-03-24 06:40:35

#1: Need to deal with nested for_every_part loops. What will this do:
    for_every_part { if (some test here) { for_every_part { ... } } }

My inclination is to ban them, or at least allow an implementation-defined
limit which can be set to 1. (Actually, such a limit is allowed implicitly for
almost anything in sieve by the base spec.)

I would like the nested for_every_part to operate on the child nodes of the 
current context body part, not always operate on all the body parts of the root 
message.  This to me is the obvious behaviour.  If Ned wants to 
(understandably) ban them from his implementation, that's fine by me ;o) 

#2: Need to decide if there would be a "mime" shorthand for testing the
type/subtype, without requiring

    if allof (mime :type "multipart", mime :subtype "alternative") ?

How about getting rid of :subtype and making :type check the whole thing? A
subtype is only meaningful in the context of a particular type; the only
exception to this are suffix tags, and checking those would require :matches
anyway. 

And :matches can easily be used to check the primary type by itself. I see no
strong reason to prefer

    if mime :type "text" ...

over

    if mime :type :matches "text/*" ...

Although it isn't very explicit, I think I'm right in saying the default match 
type for mime is "is"?  So that means if :type matches against type/subtype, 
then I would be very confused if I wrote :type "text" and it didn't match 
against text/plain.

I suggest:
- :type to match against type, 
- :subtype to match against subtype
- :contenttype to match against type/subtype

#3: We need to add some way to look at parameter lists:
    Content-Type: text/plain; charset="foo"

I currently have:

 MimeClause ::= "x_mime" [COMPARATOR] [MATCH-TYPE]
 <header-list: string-list> [<parameter-list: string-list>] <key-list: 
string-list>
 MimeClause ::= "x_mime" :filename <key-list: string-list>
 MimeClause ::= "x_mime" :type <key-list: string-list>
 MimeClause ::= "x_mime" :subtype <key-list: string-list>

So if you don't have a :type/:subtype/:filename, then you must specify a list 
of header names, a list of parameter names, and the search strings.  "type" and 
"subtype" are supported as psuedo parameter names of the bit before the first 
";".  If there are no parameter names, then it matches against the text before 
the first ";".  :type/:subtype/:filename then become short hands:

mime :type "text"
mime "Content-Type" "type" "text

mime :subtype "plain"
mime "Content-Type" "subtype" "plain"

mime :filename "junk.txt"
anyof (
    mime "Content-Disposition" "filemane""junk.txt"'
    mime "Content-Type" "name" "junk.txt"
)
 
The following issues/comments were raised at the meeting:
    interactions with variables
    notifications
    notifications to calendar service
    address tests, exists tests
    add tests mimeheader, mimeparameter


I prefer

    header :mime
    exists :mime
    address :mime

Over 

   mimeheader
   mimeexists
   mimeaddress

but I do want to see some way to do address and exists tests on inner
headers. This is actually quite a bit more important than a parameter
test IMO.

I agree

Nigel

<Prev in Thread] Current Thread [Next in Thread>