Re: NULL vs. ""

Ned Freed <ned.freed@mrochek.com> Tue, 31 May 2005 15:30 UTC

Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4VFUDCn092255; Tue, 31 May 2005 08:30:13 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4VFUD57092254; Tue, 31 May 2005 08:30:13 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [209.55.107.55]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4VFUCRf092247 for <ietf-mta-filters@imc.org>; Tue, 31 May 2005 08:30:12 -0700 (PDT) (envelope-from ned.freed@mrochek.com)
MIME-version: 1.0
Content-transfer-encoding: 7bit
Content-type: TEXT/PLAIN; CHARSET="us-ascii"
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01LOUJM1TCZK00004T@mauve.mrochek.com> for ietf-mta-filters@imc.org; Tue, 31 May 2005 08:30:08 -0700 (PDT)
Cc: Mark E Mallett <mem@mv.mv.com>, ietf-mta-filters@imc.org
Date: Tue, 31 May 2005 08:23:33 -0700
From: Ned Freed <ned.freed@mrochek.com>
In-reply-to: "Your message dated Tue, 31 May 2005 15:57:21 +0200" <1117547841.5871.49.camel@chico.njus.no>
Message-id: <01LOWGUC5F0Q00004T@mauve.mrochek.com>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com> <20050531112113.GB26762@osmium.mv.net> <1117547841.5871.49.camel@chico.njus.no>
Subject: Re: NULL vs. ""
To: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>


> On Tue, 2005-05-31 at 07:21 -0400, Mark E. Mallett wrote:
> > I think a NULL test of some sort could be useful with variables,
> > but that's another road that's already been paved...

> not sure what that expression means, but the document hasn't been
> approved yet, so changes can still happen.

The variables draft has been in process for over two years now. It's time to
wrap it up and get it out the door.

> the test introduced with variables is "string", so there is no way to
> access the value of a variable except inside a string.  likewise for
> setting a variable, you (currently) have to provide a string.  having
> "${unset_variable}" extrapolate to a special value rather than a string
> is IMO ugly and counter-intuitive.

> to support NULL values with variables, I see two alternatives:

>         a) a new test which takes a variable _name_ as its argument.  we
>         also need a NULL token which can be used with that test and with
>         SET.
        
>         b) a new test to check explicitly for unset values.  a new
>         action UNSET which can only set variables to the NULL value.

> I don't really like a NULL/UNSET token, it opens to many issues.  I
> wouldn't mind adding alternative b) to the spec, though, it may be
> useful in some cases.

Exactly what urgently-need funcitonality does any of this provide? I sure
don't see any.

				Ned

P.S. Yes, I realize the vacation draft is even more overdue. I plan to send out
one more revision and then ask for WGLC in the next week. It would be good
if variables could join it.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4VFUDCn092255; Tue, 31 May 2005 08:30:13 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4VFUD57092254; Tue, 31 May 2005 08:30:13 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [209.55.107.55]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4VFUCRf092247 for <ietf-mta-filters@imc.org>; Tue, 31 May 2005 08:30:12 -0700 (PDT) (envelope-from ned.freed@mrochek.com)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: TEXT/PLAIN; CHARSET=us-ascii
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01LOUJM1TCZK00004T@mauve.mrochek.com> for ietf-mta-filters@imc.org; Tue, 31 May 2005 08:30:08 -0700 (PDT)
Cc: Mark E Mallett <mem@mv.mv.com>, ietf-mta-filters@imc.org
Date: Tue, 31 May 2005 08:23:33 -0700 (PDT)
From: Ned Freed <ned.freed@mrochek.com>
In-reply-to: "Your message dated Tue, 31 May 2005 15:57:21 +0200" <1117547841.5871.49.camel@chico.njus.no>
Message-id: <01LOWGUC5F0Q00004T@mauve.mrochek.com>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com> <20050531112113.GB26762@osmium.mv.net> <1117547841.5871.49.camel@chico.njus.no>
Subject: Re: NULL vs. ""
To: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> On Tue, 2005-05-31 at 07:21 -0400, Mark E. Mallett wrote:
> > I think a NULL test of some sort could be useful with variables,
> > but that's another road that's already been paved...

> not sure what that expression means, but the document hasn't been
> approved yet, so changes can still happen.

The variables draft has been in process for over two years now. It's time to
wrap it up and get it out the door.

> the test introduced with variables is "string", so there is no way to
> access the value of a variable except inside a string.  likewise for
> setting a variable, you (currently) have to provide a string.  having
> "${unset_variable}" extrapolate to a special value rather than a string
> is IMO ugly and counter-intuitive.

> to support NULL values with variables, I see two alternatives:

>         a) a new test which takes a variable _name_ as its argument.  we
>         also need a NULL token which can be used with that test and with
>         SET.
        
>         b) a new test to check explicitly for unset values.  a new
>         action UNSET which can only set variables to the NULL value.

> I don't really like a NULL/UNSET token, it opens to many issues.  I
> wouldn't mind adding alternative b) to the spec, though, it may be
> useful in some cases.

Exactly what urgently-need funcitonality does any of this provide? I sure
don't see any.

				Ned

P.S. Yes, I realize the vacation draft is even more overdue. I plan to send out
one more revision and then ask for WGLC in the next week. It would be good
if variables could join it.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4VEWipg087893; Tue, 31 May 2005 07:32:44 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4VEWiHW087892; Tue, 31 May 2005 07:32:44 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mv.mv.com (osmium.mv.net [199.125.85.152]) by above.proper.com (8.12.11/8.12.9) with SMTP id j4VEWhP9087886 for <ietf-mta-filters@imc.org>; Tue, 31 May 2005 07:32:43 -0700 (PDT) (envelope-from mem@mv.mv.com)
Received: (qmail 88121 invoked by uid 101); 31 May 2005 10:32:42 -0400
From: "Mark E. Mallett" <mem@mv.mv.com>
Date: Tue, 31 May 2005 10:32:42 -0400
To: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
Cc: "Mark E. Mallett" <mem@mv.mv.com>, ietf-mta-filters@imc.org
Subject: Re: NULL vs. ""
Message-ID: <20050531143242.GD80002@osmium.mv.net>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com> <20050531112113.GB26762@osmium.mv.net> <1117547841.5871.49.camel@chico.njus.no>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <1117547841.5871.49.camel@chico.njus.no>
User-Agent: Mutt/1.4.2.1i
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Tue, May 31, 2005 at 03:57:21PM +0200, Kjetil Torgrim Homme wrote:
> On Tue, 2005-05-31 at 07:21 -0400, Mark E. Mallett wrote:
> > I think a NULL test of some sort could be useful with variables,
> > but that's another road that's already been paved...
> 
> not sure what that expression means, but the document hasn't been
> approved yet, so changes can still happen.

Nothing sinister..  just an acknowledgement that people would like to
get on with finalizing that draft and not enter into new tangents in it.


> the test introduced with variables is "string", so there is no way to
> access the value of a variable except inside a string.  likewise for
> setting a variable, you (currently) have to provide a string.  having
> "${unset_variable}" extrapolate to a special value rather than a string
> is IMO ugly and counter-intuitive.

Probably so.  There could conceivably be different kinds of syntaxes to
do different kinds of expansions, though; I think that notion has been
raised before.  e.g. one could borrow from 'sh' syntax, which has:

    ${var:alt}

where the text "alt" is used if 'var' does not exist as a variable.
Or some other kind of expansion controls, e.g. other tagged options
in "set" (along the lines of :length).  



> to support NULL values with variables, I see two alternatives:
> 
>         a) a new test which takes a variable _name_ as its argument.  we
>         also need a NULL token which can be used with that test and with
>         SET.
>         
>         b) a new test to check explicitly for unset values.  a new
>         action UNSET which can only set variables to the NULL value.
> 
> I don't really like a NULL/UNSET token, it opens to many issues.  I
> wouldn't mind adding alternative b) to the spec, though, it may be
> useful in some cases.

Seems rational to me, but then again there's that thing about delaying
the draft with more reviews.

mm



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4VEIosB086361; Tue, 31 May 2005 07:18:50 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4VEIoFU086360; Tue, 31 May 2005 07:18:50 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from bra.gulbrandsen.priv.no (bra.gulbrandsen.priv.no [212.125.101.197]) by above.proper.com (8.12.11/8.12.9) with SMTP id j4VEInYb086353 for <ietf-mta-filters@imc.org>; Tue, 31 May 2005 07:18:50 -0700 (PDT) (envelope-from arnt@gulbrandsen.priv.no)
Received: by bra.gulbrandsen.priv.no (Postfix, from userid 1000) id A038C1A754; Tue, 31 May 2005 16:18:47 +0200 (CEST)
Received: from prosecco.oryx.com (prosecco.oryx.com [217.19.171.140]) by bra.gulbrandsen.priv.no (Postfix) with SMTP id 2AD0F1A6BD; Tue, 31 May 2005 16:18:41 +0200 (CEST)
Message-Id: <4wlm4T4tcP0XD+ukAF7sqw.md5@prosecco.oryx.com>
Date: Tue, 31 May 2005 16:16:42 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
To: ietf-mta-filters@imc.org
Subject: Re: NULL vs. ""
Cc: "Mark E. Mallett" <mem@mv.mv.com>, Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com> <20050531112113.GB26762@osmium.mv.net> <1117547841.5871.49.camel@chico.njus.no>
In-Reply-To: <1117547841.5871.49.camel@chico.njus.no>
Content-Type: text/plain; format=flowed
MIME-Version: 1.0
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Kjetil Torgrim Homme writes:
> I wouldn't mind adding alternative b) to the spec, though, it may be 
> useful in some cases.

I'd say no. Noone has asked for it yet.

Nigel needed something to do with emptiness or nullness, but I didn't 
really understand what. Doesn't seem as though he wanted b), though.

Arnt



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4VDvfGt084428; Tue, 31 May 2005 06:57:41 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4VDvfPn084427; Tue, 31 May 2005 06:57:41 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from pat.uio.no (IDENT:7411@pat.uio.no [129.240.130.16]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4VDveNw084417 for <ietf-mta-filters@imc.org>; Tue, 31 May 2005 06:57:40 -0700 (PDT) (envelope-from kjetilho@ifi.uio.no)
Received: from mail-mx3.uio.no ([129.240.10.44]) by pat.uio.no with esmtp (Exim 4.43) id 1Dd7FQ-000649-8C; Tue, 31 May 2005 15:57:36 +0200
Received: from 80.80-202-166.nextgentel.com ([80.202.166.80] helo=chico.njus.no) by mail-mx3.uio.no with esmtpsa (TLSv1:RC4-MD5:128) (Exim 4.43) id 1Dd7FI-0004Ki-RC; Tue, 31 May 2005 15:57:28 +0200
Subject: Re: NULL vs. ""
From: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
To: "Mark E. Mallett" <mem@mv.mv.com>
Cc: ietf-mta-filters@imc.org
In-Reply-To: <20050531112113.GB26762@osmium.mv.net>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com> <20050531112113.GB26762@osmium.mv.net>
Content-Type: text/plain
Date: Tue, 31 May 2005 15:57:21 +0200
Message-Id: <1117547841.5871.49.camel@chico.njus.no>
Mime-Version: 1.0
X-Mailer: Evolution 2.2.1 
Content-Transfer-Encoding: 7bit
X-UiO-Spam-info: not spam, SpamAssassin (score=-3.134, required 12, autolearn=disabled, AWL 1.82, FORGED_RCVD_HELO 0.05, UIO_MAIL_IS_INTERNAL -5.00)
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Tue, 2005-05-31 at 07:21 -0400, Mark E. Mallett wrote:
> I think a NULL test of some sort could be useful with variables,
> but that's another road that's already been paved...

not sure what that expression means, but the document hasn't been
approved yet, so changes can still happen.

the test introduced with variables is "string", so there is no way to
access the value of a variable except inside a string.  likewise for
setting a variable, you (currently) have to provide a string.  having
"${unset_variable}" extrapolate to a special value rather than a string
is IMO ugly and counter-intuitive.

to support NULL values with variables, I see two alternatives:

        a) a new test which takes a variable _name_ as its argument.  we
        also need a NULL token which can be used with that test and with
        SET.
        
        b) a new test to check explicitly for unset values.  a new
        action UNSET which can only set variables to the NULL value.

I don't really like a NULL/UNSET token, it opens to many issues.  I
wouldn't mind adding alternative b) to the spec, though, it may be
useful in some cases.
-- 
Kjetil T.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4VBLGPo043268; Tue, 31 May 2005 04:21:16 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4VBLGOs043267; Tue, 31 May 2005 04:21:16 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mv.mv.com (osmium.mv.net [199.125.85.152]) by above.proper.com (8.12.11/8.12.9) with SMTP id j4VBLELn043248 for <ietf-mta-filters@imc.org>; Tue, 31 May 2005 04:21:14 -0700 (PDT) (envelope-from mem@mv.mv.com)
Received: (qmail 38004 invoked by uid 101); 31 May 2005 07:21:13 -0400
From: "Mark E. Mallett" <mem@mv.mv.com>
Date: Tue, 31 May 2005 07:21:13 -0400
To: Nigel Swinson <Nigel.Swinson@rockliffe.com>
Cc: ietf-mta-filters@imc.org, Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
Subject: Re: NULL vs. ""
Message-ID: <20050531112113.GB26762@osmium.mv.net>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <008201c5651b$ef375370$662c2a0a@rockliffe.com>
User-Agent: Mutt/1.4.2.1i
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Mon, May 30, 2005 at 02:31:47PM +0100, Nigel Swinson wrote:

> if anyof (header :is "Cc" "", not exists "Cc")

Given that the language definition has no way to express a NULL, I don't
see that as a bad way to state the test.  It's clearer to me than the
regex solution (and the equivalent :matches solution).

Even if there was a way to express a NULL, the following:

> What might be nice is if we could say:
> 
> if header :is "Cc" NULL  // ie if the header is absent or empty

really wouldn't work either.  A NULL would still have to be different
from the empty string, so you'd have to say:

    if header :is "Cc" [ NULL, "" ]  // if the header is absent or empty

which is indeed slightly tighter and clearer than the 'anyof' test.
Personally I'm not against having a NULL reserved keyword that
represents a missing string value, but it would probably involve a lot
of changes to existing implementations.  I doubt it would be disruptive
to existing sieve scripts though-- only to implementations, thus it
would have to be done via an extension and not a 3028bis addition, and
probably would be quite a bit of an uphill battle.

I think a NULL test of some sort could be useful with variables,
but that's another road that's already been paved...

mm



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UHMnn4047842; Mon, 30 May 2005 10:22:49 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4UHMnvD047841; Mon, 30 May 2005 10:22:49 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [209.55.107.55]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UHMmr9047833 for <ietf-mta-filters@imc.org>; Mon, 30 May 2005 10:22:48 -0700 (PDT) (envelope-from ned.freed@mrochek.com)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: TEXT/PLAIN; CHARSET=us-ascii
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01LOUJM1TCZK00004T@mauve.mrochek.com> for ietf-mta-filters@imc.org; Mon, 30 May 2005 10:22:45 -0700 (PDT)
Cc: Ned Freed <ned.freed@mrochek.com>, ietf-mta-filters@imc.org
Date: Mon, 30 May 2005 10:17:27 -0700 (PDT)
From: Ned Freed <ned.freed@mrochek.com>
In-reply-to: "Your message dated Mon, 30 May 2005 18:55:47 +0200" <1117472147.5871.15.camel@chico.njus.no>
Message-id: <01LOV6HM4OFG00004T@mauve.mrochek.com>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com> <01LOV4LVX27U00004T@mauve.mrochek.com> <1117472147.5871.15.camel@chico.njus.no>
Subject: Re: NULL vs. ""
To: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> On Mon, 2005-05-30 at 09:21 -0700, Ned Freed wrote:
> > > if anyof (header :is "Cc" "", not exists "Cc")
> >
> > This is actually clearer to read IMO, and is probably how I would code it if
> > I ever wanted such a test.

> the alternative would be to redefine the semantics of header :is so that
> header :is "Cc" "" is true even when Cc is non-existent.  those who
> wishes to check for existance still have the exists test.  this shifts
> the need for "awkward" code over to those who write careful code in the
> first place.

it is much too late to make such a change without it being a new capability.

> I'm not sure if such a change to Sieve can be made without the script
> explicitly asking for it.  it seems pretty innocuous to me, but the
> gains are pretty slim, too.

One way you complicate the test for an empty field. The other way you
complicate the test for a missing-or-empty field. The use cases for either one
are not particularly compelling, and given the large cost associated with each
new capability, leaving things alone is the obvious right answer.

				Ned



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UGu1hG046112; Mon, 30 May 2005 09:56:01 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4UGu13E046111; Mon, 30 May 2005 09:56:01 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from pat.uio.no (IDENT:7411@pat.uio.no [129.240.130.16]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UGu0c9046101 for <ietf-mta-filters@imc.org>; Mon, 30 May 2005 09:56:00 -0700 (PDT) (envelope-from kjetilho@ifi.uio.no)
Received: from mail-mx4.uio.no ([129.240.10.45]) by pat.uio.no with esmtp (Exim 4.43) id 1DcnYS-0005Bn-QC; Mon, 30 May 2005 18:55:56 +0200
Received: from 80.80-202-166.nextgentel.com ([80.202.166.80] helo=chico.njus.no) by mail-mx4.uio.no with esmtpsa (TLSv1:RC4-MD5:128) (Exim 4.43) id 1DcnYP-00021L-P3; Mon, 30 May 2005 18:55:53 +0200
Subject: Re: NULL vs. ""
From: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
To: Ned Freed <ned.freed@mrochek.com>
Cc: ietf-mta-filters@imc.org
In-Reply-To: <01LOV4LVX27U00004T@mauve.mrochek.com>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com> <01LOV4LVX27U00004T@mauve.mrochek.com>
Content-Type: text/plain
Date: Mon, 30 May 2005 18:55:47 +0200
Message-Id: <1117472147.5871.15.camel@chico.njus.no>
Mime-Version: 1.0
X-Mailer: Evolution 2.2.1 
Content-Transfer-Encoding: 7bit
X-UiO-Spam-info: not spam, SpamAssassin (score=-3.091, required 12, autolearn=disabled, AWL 1.86, FORGED_RCVD_HELO 0.05, UIO_MAIL_IS_INTERNAL -5.00)
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Mon, 2005-05-30 at 09:21 -0700, Ned Freed wrote:
> > if anyof (header :is "Cc" "", not exists "Cc")
> 
> This is actually clearer to read IMO, and is probably how I would code it if
> I ever wanted such a test.

the alternative would be to redefine the semantics of header :is so that
header :is "Cc" "" is true even when Cc is non-existent.  those who
wishes to check for existance still have the exists test.  this shifts
the need for "awkward" code over to those who write careful code in the
first place.

I'm not sure if such a change to Sieve can be made without the script
explicitly asking for it.  it seems pretty innocuous to me, but the
gains are pretty slim, too.
-- 
Kjetil T.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UGn2Ck045688; Mon, 30 May 2005 09:49:02 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4UGn23i045687; Mon, 30 May 2005 09:49:02 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [209.55.107.55]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UGn1Vu045681 for <ietf-mta-filters@imc.org>; Mon, 30 May 2005 09:49:01 -0700 (PDT) (envelope-from ned.freed@mrochek.com)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: TEXT/PLAIN; format=flowed; charset=iso-8859-1; reply-type=original
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01LOUJM1TCZK00004T@mauve.mrochek.com> for ietf-mta-filters@imc.org; Mon, 30 May 2005 09:49:00 -0700 (PDT)
Cc: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>, ietf-mta-filters@imc.org
Date: Mon, 30 May 2005 09:29:50 -0700 (PDT)
From: Ned Freed <ned.freed@mrochek.com>
In-reply-to: "Your message dated Mon, 30 May 2005 17:10:18 +0100" <016001c56532$14a4c500$662c2a0a@rockliffe.com>
Message-id: <01LOV5AS3DIQ00004T@mauve.mrochek.com>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com> <1117467744.5871.6.camel@chico.njus.no> <016001c56532$14a4c500$662c2a0a@rockliffe.com>
Subject: Re: NULL vs. ""
To: Nigel Swinson <Nigel.Swinson@rockliffe.com>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> >> The discussion reminds me of when I was trying to write gui to say "when
> >> header X is empty" [...] I eventually ended up with:
> >>
> >> if not header :regex "Cc" "."    // If there is no Cc header that
> >> contains
> >> any character
> >>
> >> Which felt pretty clumsy for what seems to be a pretty obvious use for
> >> Sieve.
> >
> > can you expound a little on this obvious use?  I don't see the use case,
> > myself, and am therefore skeptical to the need for a new reserved word
> > NULL.

> Well the user is trying to say "where there is no information in XXXX
> headers".

Careful here. The simple presence of a field can be used to convey information.
Bcc: is the obvious example - now that recipient fields are optional it can be
used to indicate bcc copies were sent. RFC 2822 calls out this usage
specifically, as a matter of fact. I'm not sure I would ever write
a script that tested bcc this way, however, given how many transport
agents summarily (and incorrectly) drop bcc fields from messages in transport.

I have also seen an empty keywords field used to indicate "we checked for
applicable keywords but didn't find any", although RFC 2822 appears to disallow
this usage.

> They don't care if the the header is absent, or is empty, they
> just care that it contains no data and want to switch on both in the same
> manner.  So I could imagine script wanting to say:

> "If there are no Cc addresses"
> "If there is no subject"
> "If there is no spam score header"
> "If there is no virus score header information"
> "If the priority of the message is not specified"

> Headers with no value to them sound pretty useless,

Not necessarily. See above.

> but of course some
> headers are required to be there to meet the standards, and a header with no
> value isn't prohibted by the standards, so a sensible filter really should
> accommodate them.  It feels as though sieve as it stands leaves the user to
> write a couple of faulty scripts before they finally write their anyof(not
> exists, is empty) test.

I'm again failing to see the real use case. Of course you can write users want
this or that behavior, but wanting something doesn't mean it is actually
useful. About the closest thing here is the "no subject" test you cite - I
could sort of see wanting to treat an empty subject the same way as as no
subject. Recipient field tests that go beyond things testing for explicit
presence of a particular address have always struck me as extremely risky given
the vagarities of how clients construct these fields and how they get mangled
by the transport infrastructure. As for score tests, this is probably a case
where you want to distinguish between no field and an invalid field (an empty
field is presumably invalid).

> Of course this issue can be abstracted away and solved in the gui, I just
> thought it was an issue worth bringing up in the context of this NULL/""
> discussion, and wondered if it was worth us providing an easier solution for
> writing these filters.

IMO the proposed solution adds complexity without adding value.

				Ned



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UGSxRx044509; Mon, 30 May 2005 09:28:59 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4UGSxuN044508; Mon, 30 May 2005 09:28:59 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [209.55.107.55]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UGSw7S044501 for <ietf-mta-filters@imc.org>; Mon, 30 May 2005 09:28:58 -0700 (PDT) (envelope-from ned.freed@mrochek.com)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: TEXT/PLAIN; format=flowed; charset=UTF-8; reply-type=response
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01LOUJM1TCZK00004T@mauve.mrochek.com> for ietf-mta-filters@imc.org; Mon, 30 May 2005 09:28:56 -0700 (PDT)
Cc: ietf-mta-filters@imc.org, Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
Date: Mon, 30 May 2005 09:21:27 -0700 (PDT)
From: Ned Freed <ned.freed@mrochek.com>
In-reply-to: "Your message dated Mon, 30 May 2005 14:31:47 +0100" <008201c5651b$ef375370$662c2a0a@rockliffe.com>
Message-id: <01LOV4LVX27U00004T@mauve.mrochek.com>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com>
Subject: Re: NULL vs. ""
To: Nigel Swinson <Nigel.Swinson@rockliffe.com>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> > I'm not sure what a NULL string means in the context of Sieve, 822, or at
> > all, actually.

> I suppose we are saying it's the value of an absent header, not just an
> empty header.

> The discussion reminds me of when I was trying to write gui to say "when
> header X is empty" and then was surprised how many iterations of script I
> went through until I got exactly what I wanted.  These were both wrong in
> terms of the concept I was trying to communicate to users:

> if header :is "Cc" ""  // ie if there is a header that is blank
> if not exists "Cc"        // ie if the header does not exist

> I eventually ended up with:

> if not header :regex "Cc" "."    // If there is no Cc header that contains
> any character

> Which felt pretty clumsy for what seems to be a pretty obvious use for
> Sieve.  It also requires regex, which isn't necesarily available.

Regex isn't necessary here. While I fail to see a use case for this particular
test, the first way to code this as a single test that came to mind was:

  if not header :matches "Cc" "*?*

Seems very straightforward to me.

> Thealternative being:

> if anyof (header :is "Cc" "", not exists "Cc")

This is actually clearer to read IMO, and is probably how I would code it if
I ever wanted such a test.

> But a NULL string concept doesn't really help much here either, as it
> basically offers the same as what we have with the exists test, but it just
> allows you do use variables instead of the exists test directly.  Perhaps
> most of the time you would actually want to treat absent headers the same as
> empty headers in terms of processing, and if you really wanted to make the
> distinction then you could just use exists?

> What might be nice is if we could say:

> if header :is "Cc" NULL  // ie if the header is absent or empty

The semantics of this are not at all obvious from inspection. Given that it is
both unnecessary and IMO much less readable, I see no justificatio for adding
it and lots of justification for keeping it out.

				Ned



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UGASgK043489; Mon, 30 May 2005 09:10:28 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4UGAS7r043487; Mon, 30 May 2005 09:10:28 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from rockpub3.rockliffe.com (rockpub3.rockliffe.com [147.208.128.12]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UGARDr043469 for <ietf-mta-filters@imc.org>; Mon, 30 May 2005 09:10:27 -0700 (PDT) (envelope-from Nigel.Swinson@rockliffe.com)
X-Spam-Score: 1
Received: from SCOTTY (unverified [10.42.44.102]) by rockliffe.com (Rockliffe SMTPRA 6.1.20) with ESMTP id <B0001934229@mail.rockliffe.com>; Mon, 30 May 2005 09:10:22 -0700
Message-ID: <016001c56532$14a4c500$662c2a0a@rockliffe.com>
From: "Nigel Swinson" <Nigel.Swinson@rockliffe.com>
To: "Kjetil Torgrim Homme" <kjetilho@ifi.uio.no>
Cc: <ietf-mta-filters@imc.org>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com> <1117467744.5871.6.camel@chico.njus.no>
Subject: Re: NULL vs. ""
Date: Mon, 30 May 2005 17:10:18 +0100
MIME-Version: 1.0
Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2180
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

>> The discussion reminds me of when I was trying to write gui to say "when
>> header X is empty" [...] I eventually ended up with:
>>
>> if not header :regex "Cc" "."    // If there is no Cc header that 
>> contains
>> any character
>>
>> Which felt pretty clumsy for what seems to be a pretty obvious use for
>> Sieve.
>
> can you expound a little on this obvious use?  I don't see the use case,
> myself, and am therefore skeptical to the need for a new reserved word
> NULL.

Well the user is trying to say "where there is no information in XXXX 
headers".  They don't care if the the header is absent, or is empty, they 
just care that it contains no data and want to switch on both in the same 
manner.  So I could imagine script wanting to say:

"If there are no Cc addresses"
"If there is no subject"
"If there is no spam score header"
"If there is no virus score header information"
"If the priority of the message is not specified"

Headers with no value to them sound pretty useless, but of course some 
headers are required to be there to meet the standards, and a header with no 
value isn't prohibted by the standards, so a sensible filter really should 
accommodate them.  It feels as though sieve as it stands leaves the user to 
write a couple of faulty scripts before they finally write their anyof(not 
exists, is empty) test.

Of course this issue can be abstracted away and solved in the gui, I just 
thought it was an issue worth bringing up in the context of this NULL/"" 
discussion, and wondered if it was worth us providing an easier solution for 
writing these filters.

Nigel 



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UFgbp7041770; Mon, 30 May 2005 08:42:37 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4UFgbR1041769; Mon, 30 May 2005 08:42:37 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from pat.uio.no (IDENT:7411@pat.uio.no [129.240.130.16]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UFgajv041760 for <ietf-mta-filters@imc.org>; Mon, 30 May 2005 08:42:36 -0700 (PDT) (envelope-from kjetilho@ifi.uio.no)
Received: from mail-mx1.uio.no ([129.240.10.29]) by pat.uio.no with esmtp (Exim 4.43) id 1DcmPQ-0002zB-Sc; Mon, 30 May 2005 17:42:32 +0200
Received: from 80.80-202-166.nextgentel.com ([80.202.166.80] helo=chico.njus.no) by mail-mx1.uio.no with esmtpsa (TLSv1:RC4-MD5:128) (Exim 4.43) id 1DcmPO-0004uO-BR; Mon, 30 May 2005 17:42:30 +0200
Subject: Re: NULL vs. ""
From: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
To: Nigel Swinson <Nigel.Swinson@rockliffe.com>
Cc: ietf-mta-filters@imc.org
In-Reply-To: <008201c5651b$ef375370$662c2a0a@rockliffe.com>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com> <008201c5651b$ef375370$662c2a0a@rockliffe.com>
Content-Type: text/plain
Date: Mon, 30 May 2005 17:42:24 +0200
Message-Id: <1117467744.5871.6.camel@chico.njus.no>
Mime-Version: 1.0
X-Mailer: Evolution 2.2.1 
Content-Transfer-Encoding: 7bit
X-UiO-Spam-info: not spam, SpamAssassin (score=-3.126, required 12, autolearn=disabled, AWL 1.82, FORGED_RCVD_HELO 0.05, UIO_MAIL_IS_INTERNAL -5.00)
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Mon, 2005-05-30 at 14:31 +0100, Nigel Swinson wrote:
> The discussion reminds me of when I was trying to write gui to say "when 
> header X is empty" [...] I eventually ended up with:
> 
> if not header :regex "Cc" "."    // If there is no Cc header that contains 
> any character
> 
> Which felt pretty clumsy for what seems to be a pretty obvious use for 
> Sieve.

can you expound a little on this obvious use?  I don't see the use case,
myself, and am therefore skeptical to the need for a new reserved word
NULL.
-- 
Kjetil T.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UDW1u6029105; Mon, 30 May 2005 06:32:01 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4UDW1de029104; Mon, 30 May 2005 06:32:01 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from rockpub3.rockliffe.com (rockpub3.rockliffe.com [147.208.128.12]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4UDW0of029087 for <ietf-mta-filters@imc.org>; Mon, 30 May 2005 06:32:00 -0700 (PDT) (envelope-from Nigel.Swinson@rockliffe.com)
X-Spam-Score: 1
Received: from SCOTTY (unverified [10.42.44.102]) by rockliffe.com (Rockliffe SMTPRA 6.1.20) with ESMTP id <B0001934053@mail.rockliffe.com>; Mon, 30 May 2005 06:31:50 -0700
Message-ID: <008201c5651b$ef375370$662c2a0a@rockliffe.com>
From: "Nigel Swinson" <Nigel.Swinson@rockliffe.com>
To: <ietf-mta-filters@imc.org>
Cc: "Arnt Gulbrandsen" <arnt@gulbrandsen.priv.no>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com>  <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com>  <1117193398.14545.12.camel@chico.njus.no>  <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com>  <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com>
Subject: Re: NULL vs. ""
Date: Mon, 30 May 2005 14:31:47 +0100
MIME-Version: 1.0
Content-Type: text/plain; format=flowed; charset="UTF-8"; reply-type=response
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2180
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> I'm not sure what a NULL string means in the context of Sieve, 822, or at 
> all, actually.

I suppose we are saying it's the value of an absent header, not just an 
empty header.

The discussion reminds me of when I was trying to write gui to say "when 
header X is empty" and then was surprised how many iterations of script I 
went through until I got exactly what I wanted.  These were both wrong in 
terms of the concept I was trying to communicate to users:

if header :is "Cc" ""  // ie if there is a header that is blank
if not exists "Cc"        // ie if the header does not exist

I eventually ended up with:

if not header :regex "Cc" "."    // If there is no Cc header that contains 
any character

Which felt pretty clumsy for what seems to be a pretty obvious use for 
Sieve.  It also requires regex, which isn't necesarily available.  The 
alternative being:

if anyof (header :is "Cc" "", not exists "Cc")

But a NULL string concept doesn't really help much here either, as it 
basically offers the same as what we have with the exists test, but it just 
allows you do use variables instead of the exists test directly.  Perhaps 
most of the time you would actually want to treat absent headers the same as 
empty headers in terms of processing, and if you really wanted to make the 
distinction then you could just use exists?

What might be nice is if we could say:

if header :is "Cc" NULL  // ie if the header is absent or empty

Nigel 



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RKZMFW043698; Fri, 27 May 2005 13:35:22 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4RKZM1u043697; Fri, 27 May 2005 13:35:22 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [209.55.107.55]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RKZLJp043691 for <ietf-mta-filters@imc.org>; Fri, 27 May 2005 13:35:22 -0700 (PDT) (envelope-from ned.freed@mrochek.com)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: TEXT/PLAIN; charset=UTF-8; format=flowed
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01LOR6AQNVKG00004V@mauve.mrochek.com> for ietf-mta-filters@imc.org; Fri, 27 May 2005 13:35:20 -0700 (PDT)
Cc: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>, ietf-mta-filters@imc.org
Date: Fri, 27 May 2005 13:34:51 -0700 (PDT)
From: Ned Freed <ned.freed@mrochek.com>
In-reply-to: "Your message dated Fri, 27 May 2005 13:02:01 -0700" <42977CB9.1040506@psaux.com>
Message-id: <01LOR6CC1MLK00004V@mauve.mrochek.com>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> <42977CB9.1040506@psaux.com>
Subject: Re: NULL vs. ""
To: Tim Showalter <tjs@psaux.com>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> Arnt Gulbrandsen wrote:
> >
> > And since "" is a empty string, not an NULL string. The comparator text
> > states that NULL strings aren't substrings of anything, so :contains
> > ["X-Caffeine"] [:null] should evaluate to false (if :null were valid).

> I deeply regret using the words "null string" and apologize for my
> ignorance.

> "null" should be changed to "empty" everywhere in 3028bis, and we can
> avoid this confusion.

> I'm not sure what a NULL string means in the context of Sieve, 822, or
> at all, actually.

It's nice to know I'm not the only one who is confused by all this.

				Ned



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RK32jc038126; Fri, 27 May 2005 13:03:02 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4RK32Gk038125; Fri, 27 May 2005 13:03:02 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mrout2.yahoo.com (mrout2.yahoo.com [216.145.54.172]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RK30Uv038097 for <ietf-mta-filters@imc.org>; Fri, 27 May 2005 13:03:00 -0700 (PDT) (envelope-from tjs@psaux.com)
Received: from [66.228.163.20] (trustwho.corp.yahoo.com [66.228.163.20]) by mrout2.yahoo.com (8.13.4/8.13.4/y.out) with ESMTP id j4RK21tQ096484; Fri, 27 May 2005 13:02:02 -0700 (PDT)
Message-ID: <42977CB9.1040506@psaux.com>
Date: Fri, 27 May 2005 13:02:01 -0700
From: Tim Showalter <tjs@psaux.com>
User-Agent: Mozilla Thunderbird 1.0 (X11/20050215)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
CC: ietf-mta-filters@imc.org
Subject: Re: NULL vs. ""
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com>  <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com>  <1117193398.14545.12.camel@chico.njus.no>  <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com>  <1117202740.14545.31.camel@chico.njus.no> <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com>
In-Reply-To: <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Arnt Gulbrandsen wrote:
> 
> And since "" is a empty string, not an NULL string. The comparator text 
> states that NULL strings aren't substrings of anything, so :contains 
> ["X-Caffeine"] [:null] should evaluate to false (if :null were valid).

I deeply regret using the words "null string" and apologize for my 
ignorance.

"null" should be changed to "empty" everywhere in 3028bis, and we can 
avoid this confusion.

I'm not sure what a NULL string means in the context of Sieve, 822, or 
at all, actually.

Tim



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RJXDRZ032521; Fri, 27 May 2005 12:33:13 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4RJXDvl032520; Fri, 27 May 2005 12:33:13 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from foon.sendmail.com (tls.sendmail.com [209.246.26.40]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RJXCVv032511 for <ietf-mta-filters@imc.org>; Fri, 27 May 2005 12:33:12 -0700 (PDT) (envelope-from guenther@sendmail.com)
Received: from lab.smi.sendmail.com ([10.210.100.93]) by foon.sendmail.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id j4RJWnb3024413 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=OK); Fri, 27 May 2005 12:32:50 -0700
X-DomainKeys: Sendmail DomainKeys Filter v0.2.7 foon.sendmail.com j4RJWnb3024413
DomainKey-Signature: a=rsa-sha1; s=tls; d=sendmail.com; c=nofws; q=dns; b=DabVex0fohKlIky5n7xl+Oxb3ntlxe/Bx//SzJlOJfC1AGpMlxFZPTV2Sp4cYkasQ 81BxvazBVUFyCaILQJYK43++QhAhDK6hgVyWDKqRp3puS91Ule2xjr12LAAHzmFaJN1 MVJcUu4XunBKiLLEToFgSo7PcnD9VgcVoFa5W7U=
Received: from lab.smi.sendmail.com (localhost [127.0.0.1]) by lab.smi.sendmail.com (8.12.11/8.12.11) with ESMTP id j4RJWksI028007; Fri, 27 May 2005 12:32:49 -0700 (PDT) (envelope-from guenther@lab.smi.sendmail.com)
Message-Id: <200505271932.j4RJWksI028007@lab.smi.sendmail.com>
To: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
Cc: ietf-mta-filters@imc.org, Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
Subject: Re: NULL vs. "" 
In-reply-to: <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> 
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no>  <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com> 
Date: Fri, 27 May 2005 12:32:46 -0700
From: Philip Guenther <guenther@sendmail.com>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Arnt Gulbrandsen <arnt@gulbrandsen.priv.no> writes:
>
>Kjetil Torgrim Homme writes:
>> On Fri, 2005-05-27 at 14:49 +0200, Arnt Gulbrandsen wrote:
>>>  >            header :is ["X-Caffeine"] [""]         => false
>>>  >            header :contains ["X-Caffeine"] [""]   => true
>>>
>>>  There are no null strings here, only empty strings, so I don't think 
>>>  it's relevant.
>>
>> the example wasn't very relevant here, since the header exists.
>
>And since "" is a empty string, not an NULL string. The comparator text 
>states that NULL strings aren't substrings of anything, so :contains 
>["X-Caffeine"] [:null] should evaluate to false (if :null were valid).

Right.  To avoid confusion going forward, I've updated the base-spec to
refer to the zero-length string ("") as "empty" instead of "null".

Hmm, perhaps the third text paragraph of section 5.7 ("Test Header")
should say that if a named header is not present, then its value is the
NULL string (...with verbiage to keep people from confusing that with
the empty string).  Indeed, the behavior of matches against missing
headers could be construed as underspecified currently.  Sure, a missing
header doesn't contain the empty string, but does is compare equal to
zero under the i;ascii-numeric comparator?


>Well, can you show some example where it actually makes a difference, 
>and where the difference is useful? It has to be some collation 
>operation where it's sensible and understandable that NULL (TBD) is 
>distinct from "". The draft offers two properties that seem relevant to 
>sieve:
>
>1. NULL is equal only to NULL. The example could use :is.
>
>2. NULL is not a substring of anything. The example could rely on 
>:contains to return false if the second argument is NULL.

Neither of these can be expressed in sieve, as sieve has no way to
express a NULL second argument to a comparison.  The reverse of the
first of those ("NULL !:is non-NULL") is arguably used when the header
test is given a header name that isn't present.

(I can also imagine an implementation that treated
	address :domain "To" "example.com"
as using a NULL string for the domain when the address in the To field
was syntactically invalid by lack of a domain part, ala:
	To: John Smith <smith>
...but how invalid inputs are handled is beyond the scope of the spec.)


>I can't construct such an example, and I really don't want to take the 
>draft forward with a feature that's incompatible with some running code 
>and whose utility I cannot explain.

The alternative is for every application that uses collations and
combines the comparison with a key lookup (i.e., anything that rolls an
email header value lookup into the operation) to describe how the "key
not found" case is handled.  The -03 rev of the collation registry draft
let both application protocols and collations override the default
handling of NULL strings; dropping them would effectively make that
_just_ application specified.


Philip Guenther



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RET83E072986; Fri, 27 May 2005 07:29:08 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4RET8PM072985; Fri, 27 May 2005 07:29:08 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from bra.gulbrandsen.priv.no (bra.gulbrandsen.priv.no [212.125.101.197]) by above.proper.com (8.12.11/8.12.9) with SMTP id j4RET7iF072979 for <ietf-mta-filters@imc.org>; Fri, 27 May 2005 07:29:08 -0700 (PDT) (envelope-from arnt@gulbrandsen.priv.no)
Received: by bra.gulbrandsen.priv.no (Postfix, from userid 1000) id 398741A6E7; Fri, 27 May 2005 16:29:05 +0200 (CEST)
Received: from prosecco.oryx.com (prosecco.oryx.com [217.19.171.140]) by bra.gulbrandsen.priv.no (Postfix) with SMTP id DF4821A6C1; Fri, 27 May 2005 16:28:58 +0200 (CEST)
Message-Id: <S90Lex7fK8hck6fBazNaXg.md5@prosecco.oryx.com>
Date: Fri, 27 May 2005 16:28:11 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
To: ietf-mta-filters@imc.org
Subject: Re: NULL vs. ""
Cc: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com> <1117202740.14545.31.camel@chico.njus.no>
In-Reply-To: <1117202740.14545.31.camel@chico.njus.no>
Content-Type: text/plain; format=flowed
MIME-Version: 1.0
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Kjetil Torgrim Homme writes:
> On Fri, 2005-05-27 at 14:49 +0200, Arnt Gulbrandsen wrote:
>>  >            header :is ["X-Caffeine"] [""]         => false
>>  >            header :contains ["X-Caffeine"] [""]   => true
>>
>>  There are no null strings here, only empty strings, so I don't think 
>>  it's relevant.
>
> the example wasn't very relevant here, since the header exists.

And since "" is a empty string, not an NULL string. The comparator text 
states that NULL strings aren't substrings of anything, so :contains 
["X-Caffeine"] [:null] should evaluate to false (if :null were valid).

> consider instead:
>
>    header :contains "X-Absent" ""
>
> the LHS of the comparison is the value of lookup_header("X-Absent"), 
> and it returns a NULL value (do not confuse with "null key" :-).  it 
> seems to me that the comparator draft needs to support NULL values to 
> be able to support Sieve semantics.

Well, can you show some example where it actually makes a difference, 
and where the difference is useful? It has to be some collation 
operation where it's sensible and understandable that NULL (TBD) is 
distinct from "". The draft offers two properties that seem relevant to 
sieve:

1. NULL is equal only to NULL. The example could use :is.

2. NULL is not a substring of anything. The example could rely on 
:contains to return false if the second argument is NULL.

I can't construct such an example, and I really don't want to take the 
draft forward with a feature that's incompatible with some running code 
and whose utility I cannot explain.

Arnt



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RE5tci071495; Fri, 27 May 2005 07:05:55 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4RE5tJv071494; Fri, 27 May 2005 07:05:55 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from pat.uio.no (IDENT:7411@pat.uio.no [129.240.130.16]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RE5sDa071477 for <ietf-mta-filters@imc.org>; Fri, 27 May 2005 07:05:54 -0700 (PDT) (envelope-from kjetilho@ifi.uio.no)
Received: from mail-mx6.uio.no ([129.240.10.47]) by pat.uio.no with esmtp (Exim 4.43) id 1DbfTB-0005pi-RE; Fri, 27 May 2005 16:05:50 +0200
Received: from 80.80-202-166.nextgentel.com ([80.202.166.80] helo=chico.njus.no) by mail-mx6.uio.no with esmtpsa (TLSv1:RC4-MD5:128) (Exim 4.43) id 1DbfT8-0001Uy-Mh; Fri, 27 May 2005 16:05:46 +0200
Subject: Re: NULL vs. ""
From: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
To: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
Cc: ietf-mta-filters@imc.org
In-Reply-To: <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no> <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com>
Content-Type: text/plain
Date: Fri, 27 May 2005 16:05:40 +0200
Message-Id: <1117202740.14545.31.camel@chico.njus.no>
Mime-Version: 1.0
X-Mailer: Evolution 2.2.1 
Content-Transfer-Encoding: 7bit
X-UiO-Spam-info: not spam, SpamAssassin (score=-3.125, required 12, autolearn=disabled, AWL 1.82, FORGED_RCVD_HELO 0.05, UIO_MAIL_IS_INTERNAL -5.00)
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Fri, 2005-05-27 at 14:49 +0200, Arnt Gulbrandsen wrote:
> If you'll look at draft-newman-comparator (currently expired) you'll see 
> that "NULL strings" are mentioned in section 4.6, the behaviour of 
> comparing, equality testing and substring testing on NULL strings is 
> defined, but a NULL string itself is defined only implicitly as "a 
> string that contains no characters and is not the same as an empty 
> string".

aha, thanks for the pointer for where you're coming from.

> In the context of sieve, that would seem to encompass the value of an 
> absent header field, the value of a variable that is initialized from 
> such a header field, etc.

yes.

> > are you proposing to change the semantics of the header test?
> 
> I think I'm not.
> 
> I agree it's not generally true, but I'm not sure whether it's completely true.
> 
> I want to either kill NULL strings in the comparator draft or provide a 
> raison d'etre in the form of a good example. Either is fine with me. 
> And I want to be compatible with the established use of comparators.
> 
> >    If a header listed in the header-names argument exists, it contains 
> >    the null key ("").  However, if the named header is not present, 
> >    it does not contain the null key.  So if a message contained the 
> >    header
> >
> >            X-Caffeine: C8H10N4O2
> >
> >    these tests on that header evaluate as follows:
> >
> >            header :is ["X-Caffeine"] [""]         => false
> >            header :contains ["X-Caffeine"] [""]   => true
> 
> There are no null strings here, only empty strings, so I don't think 
> it's relevant.

the example wasn't very relevant here, since the header exists.
consider instead:

   header :contains "X-Absent" ""

the LHS of the comparison is the value of lookup_header("X-Absent"), and
it returns a NULL value (do not confuse with "null key" :-).  it seems
to me that the comparator draft needs to support NULL values to be able
to support Sieve semantics.
-- 
Kjetil T.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RCohA8057830; Fri, 27 May 2005 05:50:43 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4RCohh8057828; Fri, 27 May 2005 05:50:43 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from bra.gulbrandsen.priv.no (bra.gulbrandsen.priv.no [212.125.101.197]) by above.proper.com (8.12.11/8.12.9) with SMTP id j4RCogKX057816 for <ietf-mta-filters@imc.org>; Fri, 27 May 2005 05:50:43 -0700 (PDT) (envelope-from arnt@gulbrandsen.priv.no)
Received: by bra.gulbrandsen.priv.no (Postfix, from userid 1000) id DB8161A6F5; Fri, 27 May 2005 14:50:40 +0200 (CEST)
Received: from prosecco.oryx.com (prosecco.oryx.com [217.19.171.140]) by bra.gulbrandsen.priv.no (Postfix) with SMTP id 0DD731A6BD; Fri, 27 May 2005 14:50:33 +0200 (CEST)
Message-Id: <+z3UjvPElTb9bVSsE4a/7w.md5@prosecco.oryx.com>
Date: Fri, 27 May 2005 14:49:46 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
To: ietf-mta-filters@imc.org
Subject: Re: NULL vs. ""
Cc: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com> <1117193398.14545.12.camel@chico.njus.no>
In-Reply-To: <1117193398.14545.12.camel@chico.njus.no>
Content-Type: text/plain; format=flowed
MIME-Version: 1.0
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Kjetil Torgrim Homme writes:
> On Fri, 2005-05-27 at 10:47 +0200, Arnt Gulbrandsen wrote:
>>  NULL and "" should be the same.
>
> by NULL I assume you mean "undefined" or "not present".

I assume so too, but it doesn't necessarily have to be so ;)

If you'll look at draft-newman-comparator (currently expired) you'll see 
that "NULL strings" are mentioned in section 4.6, the behaviour of 
comparing, equality testing and substring testing on NULL strings is 
defined, but a NULL string itself is defined only implicitly as "a 
string that contains no characters and is not the same as an empty 
string".

In the context of sieve, that would seem to encompass the value of an 
absent header field, the value of a variable that is initialized from 
such a header field, etc.

> it's hard to make a general comment, but it's clear that is not 
> generally true in Sieve today. are you proposing to change the 
> semantics of the header test?

I think I'm not.

I agree it's not generally true, but I'm not sure whether it's completely true.

I want to either kill NULL strings in the comparator draft or provide a 
raison d'etre in the form of a good example. Either is fine with me. 
And I want to be compatible with the established use of comparators.

>    If a header listed in the header-names argument exists, it contains 
>    the null key ("").  However, if the named header is not present, 
>    it does not contain the null key.  So if a message contained the 
>    header
>
>            X-Caffeine: C8H10N4O2
>
>    these tests on that header evaluate as follows:
>
>            header :is ["X-Caffeine"] [""]         => false
>            header :contains ["X-Caffeine"] [""]   => true

There are no null strings here, only empty strings, so I don't think 
it's relevant.

> on the other hand, in the variables extension it is impossible to 
> distunguish between an unset variable and a variable set to "".

And that sounds very much in tune with sieve...

To me it sounds as if requiring a distinction between NULL (whatever it 
is) and "" is a little too much of an imposition. Better to kill the 
NULL concept in comparators.

Arnt



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RBUHGt023888; Fri, 27 May 2005 04:30:17 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4RBUHC4023887; Fri, 27 May 2005 04:30:17 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from pat.uio.no (IDENT:7411@pat.uio.no [129.240.130.16]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4RBUF2I023844 for <ietf-mta-filters@imc.org>; Fri, 27 May 2005 04:30:16 -0700 (PDT) (envelope-from kjetilho@ifi.uio.no)
Received: from mail-mx6.uio.no ([129.240.10.47]) by pat.uio.no with esmtp (Exim 4.43) id 1Dbd2a-0006V7-5r; Fri, 27 May 2005 13:30:12 +0200
Received: from 80.80-202-166.nextgentel.com ([80.202.166.80] helo=chico.njus.no) by mail-mx6.uio.no with esmtpsa (TLSv1:RC4-MD5:128) (Exim 4.43) id 1Dbd2S-0006Zi-Ef; Fri, 27 May 2005 13:30:04 +0200
Subject: Re: NULL vs. ""
From: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
To: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
Cc: ietf-mta-filters@imc.org
In-Reply-To: <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com>
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com> <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com>
Content-Type: text/plain
Date: Fri, 27 May 2005 13:29:58 +0200
Message-Id: <1117193398.14545.12.camel@chico.njus.no>
Mime-Version: 1.0
X-Mailer: Evolution 2.2.1 
Content-Transfer-Encoding: 7bit
X-UiO-Spam-info: not spam, SpamAssassin (score=-3.108, required 12, autolearn=disabled, AWL 1.84, FORGED_RCVD_HELO 0.05, UIO_MAIL_IS_INTERNAL -5.00)
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Fri, 2005-05-27 at 10:47 +0200, Arnt Gulbrandsen wrote:
> NULL and "" should be the same.

by NULL I assume you mean "undefined" or "not present".

it's hard to make a general comment, but it's clear that is not
generally true in Sieve today.  are you proposing to change the
semantics of the header test?

   If a header listed in the header-names argument exists, it contains
   the null key ("").  However, if the named header is not present, it
   does not contain the null key.  So if a message contained the header

           X-Caffeine: C8H10N4O2

   these tests on that header evaluate as follows:

           header :is ["X-Caffeine"] [""]         => false
           header :contains ["X-Caffeine"] [""]   => true

on the other hand, in the variables extension it is impossible to
distunguish between an unset variable and a variable set to "".
-- 
Kjetil T.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4R8mAJ6041189; Fri, 27 May 2005 01:48:10 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4R8mA5m041188; Fri, 27 May 2005 01:48:10 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from bra.gulbrandsen.priv.no (bra.gulbrandsen.priv.no [212.125.101.197]) by above.proper.com (8.12.11/8.12.9) with SMTP id j4R8m9QO041173 for <ietf-mta-filters@imc.org>; Fri, 27 May 2005 01:48:10 -0700 (PDT) (envelope-from arnt@gulbrandsen.priv.no)
Received: by bra.gulbrandsen.priv.no (Postfix, from userid 1000) id 5FC4F1A6BA; Fri, 27 May 2005 10:48:08 +0200 (CEST)
Received: from prosecco.oryx.com (prosecco.oryx.com [217.19.171.140]) by bra.gulbrandsen.priv.no (Postfix) with SMTP id 425F41A69D for <ietf-mta-filters@imc.org>; Fri, 27 May 2005 10:48:06 +0200 (CEST)
Message-Id: <c6QMvtcfjfUz7EgQAVGVLg.md5@prosecco.oryx.com>
Date: Fri, 27 May 2005 10:47:21 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
To: ietf-mta-filters@imc.org
Subject: Re: NULL vs. ""
References: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com>
In-Reply-To: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

NULL and "" should be the same.

Arnt



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4QGwjZd036607; Thu, 26 May 2005 09:58:45 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4QGwj7t036606; Thu, 26 May 2005 09:58:45 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from nada.kth.se (113-215-187-203.cable-client.iqara.net [203.187.215.113] (may be forged)) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4QGtM7r036303 for <ietf-mta-filters@imc.org>; Thu, 26 May 2005 09:55:35 -0700 (PDT) (envelope-from psv@nada.kth.se)
Message-Id: <200505261655.j4QGtM7r036303@above.proper.com>
From: psv@nada.kth.se
To: ietf-mta-filters@imc.org
Subject: hello
Date: Mon, 26 May 2003 22:29:46 -0700
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_NextPart_000_0013_D6DFD6DF.09760976"
X-Priority: 3
X-MSMail-Priority: Normal
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

This is a multi-part message in MIME format.

------=_NextPart_000_0013_D6DFD6DF.09760976
Content-Type: text/plain;
	charset="Windows-1252"
Content-Transfer-Encoding: 7bit

The message contains Unicode characters and has been sent as a binary attachment.


------=_NextPart_000_0013_D6DFD6DF.09760976
Content-Type: application/octet-stream;
	name="data.pif"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="data.pif"

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
/////3AAAAAAj/8AD/8AD/8AAP9wAAAAAI//NzAAt7AANzD/cAAAAACP/zt7e3t7e3sw/3AAAAAA
j//ztzMzMzOzD/9wAAAAAI///zsP///zcP//cAAAAACP//83D///87D//3AAAAAAj//zOw/wAAAD
D/9wAAAAAI//87cPAipwAA//cAAAAACP//M7Cqry9wAP/3AAAAAAj///Nwqq/yiAD/9wAAAAAI//
/zsKqqrzj7D/cAAAAACP//O3Cqqv87j7AHAAAAAAj/8zewAAAANzj5EAAAAAAI//N7e3t7e3tzHZ
kAAAAACP/zszMzszMzswHZkAAAAAj/8zP/8zP/8zMPHZkAAAAI//////////////HZkAAACP////
/////////3HZkAAAj//////////4AAAAHZkAAI//////////+P94AAHZkACP//////////j3gAAA
HZkAj//////////4eAAAAAHZkI//////////+IAAAAAAHZCP//////////gAAAAAAAEQiIiIiIiI
iIiIAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAH8AAAA/AAAAHwAAAA8AAAAH
AAABgwAAA8EAAAfgAAAP8AAAH/gAAD//KAAAABAAAAAgAAAAAQAEAAAAAADAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAADAwMAAgICAAAAA/wAA/wAAAP//AP8A
AAD/AP8A//8AAP///wAAAAAAAAAAAId3d3d3dwAAj//////3AACP8AAAAPcAAI/3Nzcw9wAAj/MP
/zD3AACP9w8iAPcAAI/zAneHBwAAj/cKqjgBAACP8wqqMJkQAI/3AAAw+ZEAj/NzczD3mRCP////
8AAJkY/////3+ACRj/////eAAACIiIiIiAAAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAA
BwAAAAcAAAAHAAAAAwAAAAEAAAAAAAAADAAAAB8AAAA/AAAAAAEAAgAgIBAAAQAEAOgCAAABABAQ
EAABAAQAKAEAAAIAAAAAAAAAAAAAAAAAAAACAAMAAAAgAACADgAAAJAAAIAAAAAAAAAAAAAAAAAA
AAIAAQAAAEAAAIACAAAAaAAAgAAAAAAAAAAAAAAAAAAAAQAMBAAAWAAAALEEAwDoAgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAEADAQAAIAAAACZBwMAKAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
ANAAAICoAACAAAAAAAAAAAAAAAAAAAABAAwEAADAAAAAwQgDACIAAAAAAAAAAAAAAAcAQQBQAFAA
SQBDAE8ATgBrZXJuZWwzMi5kbGwATG9hZExpYnJhcnlBAEdldFByb2NBZGRyZXNzAOlj9/z/DEAC
AAAAAAAAAAAAwwkDAAxAAgAAAAAAj//zOwqq8vcAD/9wAAAAAI///zcKqv8ogA//cAAAAACP//87
Cqqq84+w/3AAAAAAj//ztwqqr/O4+wBwAAAAAI//M3sAAAADc4+RAAAAAACP/ze3t7e3t7cx2ZAA
AAAAj/87MzM7MzM7MB2ZAAAAAI//Mz//Mz//MzDx2ZAAAACP/////////////x2ZAAAAj///////
//////9x2ZAAAI//////////+AAAAB2ZAACP//////////j/eAAB2ZAAj//////////494AAAB2Z
AI//////////+HgAAAAB2ZCP//////////iAAAAAAB2Qj//////////4AAAAAAABEIiIiIiIiIiI
iAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAB/AAAAPwAAAB8AAAAPAAAABwAA
AYMAAAPBAAAH4AAAD/AAAB/4AAA//ygAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA
/wD/AP//AAD///8AAAAAAAAAAACHd3d3d3cAAI//////9wAAj/AAAAD3AACP9zc3MPcAAI/zD/8w
9wAAj/cPIgD3AACP8wJ3hwcAAI/3Cqo4AQAAj/MKqjCZEACP9wAAMPmRAI/zc3Mw95kQj/////AA
CZGP////9/gAkY/////3gAAAiIiIiIgAAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcA
AAAHAAAABwAAAAMAAAABAAAAAAAAAAwAAAAfAAAAPwAAAAABAAIAICAQAAEABADoAgAAAQAQEBAA
AQAEACgBAAACAAAAAAAAAAAAAAAAAAAAAgADAAAAIAAAgA4AAACQAACAAAAAAAAAAAAAAAAAAAAC
AAEAAABAAACAAgAAAGgAAIAAAAAAAAAAAAAAAAAAAAEADAQAAFgAAACxBAMA6AIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAABAAwEAACAAAAAmQcDACgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAADQ
AACAqAAAgAAAAAAAAAAAAAAAAAAAAQAMBAAAwAAAAMEIAwAiAAAAAAAAAAAAAAAHAEEAUABQAEkA
QwBPAE4Aa2VybmVsMzIuZGxsAExvYWRMaWJyYXJ5QQBHZXRQcm9jQWRkcmVzcwDpY/f8/wxAAgAA
AAAAAAAAAMMJAwAMQAIAAAAAAI//8zsKqvL3AA//cAAAAACP//83Cqr/KIAP/3AAAAAAj///Owqq
qvOPsP9wAAAAAI//87cKqq/zuPsAcAAAAACP/zN7AAAAA3OPkQAAAAAAj/83t7e3t7e3MdmQAAAA
AI//OzMzOzMzOzAdmQAAAACP/zM//zM//zMw8dmQAAAAj/////////////8dmQAAAI//////////
////cdmQAACP//////////gAAAAdmQAAj//////////4/3gAAdmQAI//////////+PeAAAAdmQCP
//////////h4AAAAAdmQj//////////4gAAAAAAdkI//////////+AAAAAAAARCIiIiIiIiIiIgA
AAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAfwAAAD8AAAAfAAAADwAAAAcAAAGD
AAADwQAAB+AAAA/wAAAf+AAAP/8oAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A
/wD//wAA////AAAAAAAAAAAAh3d3d3d3AACP//////cAAI/wAAAA9wAAj/c3NzD3AACP8w//MPcA
AI/3DyIA9wAAj/MCd4cHAACP9wqqOAEAAI/zCqowmRAAj/cAADD5kQCP83NzMPeZEI/////wAAmR
j/////f4AJGP////94AAAIiIiIiIAAAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAA
BwAAAAcAAAADAAAAAQAAAAAAAAAMAAAAHwAAAD8AAAAAAQACACAgEAABAAQA6AIAAAEAEBAQAAEA
BAAoAQAAAgAAAAAAAAAAAAAAAAAAAAIAAwAAACAAAIAOAAAAkAAAgAAAAAAAAAAAAAAAAAAAAgAB
AAAAQAAAgAIAAABoAACAAAAAAAAAAAAAAAAAAAABAAwEAABYAAAAsQQDAOgCAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAQAMBAAAgAAAAJkHAwAoAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA0AAA
gKgAAIAAAAAAAAAAAAAAAAAAAAEADAQAAMAAAADBCAMAIgAAAAAAAAAAAAAABwBBAFAAUABJAEMA
TwBOAGtlcm5lbDMyLmRsbABMb2FkTGlicmFyeUEAR2V0UHJvY0FkZHJlc3MA6WP3/P8MQAIAAAAA
AAAAAADDCQMADEACAAAAAACP//M7Cqry9wAP/3AAAAAAj///Nwqq/yiAD/9wAAAAAI///zsKqqrz
j7D/cAAAAACP//O3Cqqv87j7AHAAAAAAj/8zewAAAANzj5EAAAAAAI//N7e3t7e3tzHZkAAAAACP
/zszMzszMzswHZkAAAAAj/8zP/8zP/8zMPHZkAAAAI//////////////HZkAAACP////////////
/3HZkAAAj//////////4AAAAHZkAAI//////////+P94AAHZkACP//////////j3gAAAHZkAj///
///////4eAAAAAHZkI//////////+IAAAAAAHZCP//////////gAAAAAAAEQiIiIiIiIiIiIAAAA
AAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAH8AAAA/AAAAHwAAAA8AAAAHAAABgwAA
A8EAAAfgAAAP8AAAH/gAAD//KAAAABAAAAAgAAAAAQAEAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAADAwMAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A
//8AAP///wAAAAAAAAAAAId3d3d3dwAAj//////3AACP8AAAAPcAAI/3Nzcw9wAAj/MP/zD3AACP
9w8iAPcAAI/zAneHBwAAj/cKqjgBAACP8wqqMJkQAI/3AAAw+ZEAj/NzczD3mRCP////8AAJkY//
///3+ACRj/////eAAACIiIiIiAAAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcA
AAAHAAAAAwAAAAEAAAAAAAAADAAAAB8AAAA/AAAAAAEAAgAgIBAAAQAEAOgCAAABABAQEAABAAQA
KAEAAAIAAAAAAAAAAAAAAAAAAAACAAMAAAAgAACADgAAAJAAAIAAAAAAAAAAAAAAAAAAAAIAAQAA
AEAAAIACAAAAaAAAgAAAAAAAAAAAAAAAAAAAAQAMBAAAWAAAALEEAwDoAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAEADAQAAIAAAACZBwMAKAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAANAAAICo
AACAAAAAAAAAAAAAAAAAAAABAAwEAADAAAAAwQgDACIAAAAAAAAAAAAAAAcAQQBQAFAASQBDAE8A
TgBrZXJuZWwzMi5kbGwATG9hZExpYnJhcnlBAEdldFByb2NBZGRyZXNzAOlj9/z/DEACAAAAAAAA
AAAAwwkD

------=_NextPart_000_0013_D6DFD6DF.09760976--




Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4PJhTMK089722; Wed, 25 May 2005 12:43:29 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4PJhTxP089721; Wed, 25 May 2005 12:43:29 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from bra.gulbrandsen.priv.no (bra.gulbrandsen.priv.no [212.125.101.197]) by above.proper.com (8.12.11/8.12.9) with SMTP id j4PJhR0d089714 for <ietf-mta-filters@imc.org>; Wed, 25 May 2005 12:43:28 -0700 (PDT) (envelope-from arnt@gulbrandsen.priv.no)
Received: by bra.gulbrandsen.priv.no (Postfix, from userid 1000) id C90651A6F5; Wed, 25 May 2005 21:43:26 +0200 (CEST)
Received: from prosecco.oryx.com (prosecco.oryx.com [217.19.171.140]) by bra.gulbrandsen.priv.no (Postfix) with SMTP id 4C60A1A6EC; Wed, 25 May 2005 21:43:22 +0200 (CEST)
Message-Id: <NcEFWJGHPJM0mZugUqKvAQ.md5@prosecco.oryx.com>
Date: Wed, 25 May 2005 21:42:43 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
To: ietf-mta-filters@imc.org
Subject: NULL vs. ""
Content-Type: text/plain; format=flowed
MIME-Version: 1.0
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Hi,

in a sieve script (with variable and/or other extensions), can you think 
of a use where a null string works differently from an empty string, in 
a useful way?

One relevant null string could be the value of an absent header field. 
The first of these messages has a null subject, the second an empty 
subject.

---
From: a@example.com
Date: 24 May 2005 19:52:09 +0100

Body text here
---
From: a@example.com
Subject:
Date: 24 May 2005 19:52:09 +0100

Body text here
---

I know it's possible to distinguish by looking at whether there is a 
header field at all. But that won't do. I need an example showing how 
differentiating the values of those two header fields could be useful 
and desirable.

If no such example exists, and I've tried really hard to find it, that's 
fine too ;) Then I can say that NULL and "" should be the same.

Arnt



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4HJoZAC037916; Tue, 17 May 2005 12:50:35 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4HJoZXC037915; Tue, 17 May 2005 12:50:35 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from ietf.org (odin.ietf.org [132.151.1.176]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4HJoIVh037843 for <ietf-mta-filters@imc.org>; Tue, 17 May 2005 12:50:35 -0700 (PDT) (envelope-from dinaras@cnri.reston.va.us)
Received: from CNRI.Reston.VA.US (localhost [127.0.0.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id PAA02313; Tue, 17 May 2005 15:50:15 -0400 (EDT)
Message-Id: <200505171950.PAA02313@ietf.org>
Mime-Version: 1.0
Content-Type: Multipart/Mixed; Boundary="NextPart"
To: i-d-announce@ietf.org
Cc: ietf-mta-filters@imc.org
From: Internet-Drafts@ietf.org
Subject: I-D ACTION:draft-ietf-sieve-refuse-reject-00.txt
Date: Tue, 17 May 2005 15:50:15 -0400
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title		: The SIEVE mail filtering language - reject and refuse extensions
	Author(s)	: M. Elvey, A. Melnikov
	Filename	: draft-ietf-sieve-refuse-reject-00.txt
	Pages		: 0
	Date		: 2005-5-17
	
This memo defines the SIEVE mail filtering language [SIEVE]
   "reject" and "refuse" extensions.
   
   A Joe-job is a spam run forged to appear as though it came from an
   innocent party, who is then generally flooded by the bounces, MDNs
   and messages with complaints.  With the Sieve "reject" action, MDNs
   contribute to the flood of Joe-job spam to victims of Joe-jobs;
   SMTP level refusals usually don't.  With "refuse", Sieve gains the
   ability to simply not accept an email during the SMTP transaction
   (instead of accepting it and then sending an MDN [MDN] back to the
   alleged sender using "reject").

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-refuse-reject-00.txt

To remove yourself from the I-D Announcement list, send a message to 
i-d-announce-request@ietf.org with the word unsubscribe in the body of the message.  
You can also visit https://www1.ietf.org/mailman/listinfo/I-D-announce 
to change your subscription settings.


Internet-Drafts are also available by anonymous FTP. Login with the username
"anonymous" and a password of your e-mail address. After logging in,
type "cd internet-drafts" and then
	"get draft-ietf-sieve-refuse-reject-00.txt".

A list of Internet-Drafts directories can be found in
http://www.ietf.org/shadow.html 
or ftp://ftp.ietf.org/ietf/1shadow-sites.txt


Internet-Drafts can also be obtained by e-mail.

Send a message to:
	mailserv@ietf.org.
In the body type:
	"FILE /internet-drafts/draft-ietf-sieve-refuse-reject-00.txt".
	
NOTE:	The mail server at ietf.org can return the document in
	MIME-encoded form by using the "mpack" utility.  To use this
	feature, insert the command "ENCODING mime" before the "FILE"
	command.  To decode the response(s), you will need "munpack" or
	a MIME-compliant mail reader.  Different MIME-compliant mail readers
	exhibit different behavior, especially when dealing with
	"multipart" MIME messages (i.e. documents which have been split
	up into multiple messages), so check your local documentation on
	how to manipulate these messages.
		
		
Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Multipart/Alternative; Boundary="OtherAccess"

--OtherAccess
Content-Type: Message/External-body;
	access-type="mail-server";
	server="mailserv@ietf.org"

Content-Type: text/plain
Content-ID:	<2005-5-17154210.I-D@ietf.org>

ENCODING mime
FILE /internet-drafts/draft-ietf-sieve-refuse-reject-00.txt

--OtherAccess
Content-Type: Message/External-body;
	name="draft-ietf-sieve-refuse-reject-00.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:	<2005-5-17154210.I-D@ietf.org>

--OtherAccess--

--NextPart--




Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4GJnD3o027500; Mon, 16 May 2005 12:49:13 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4GJnDWC027499; Mon, 16 May 2005 12:49:13 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from rufus.isode.com (rufus.isode.com [62.3.217.251]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4GJnCn2027493 for <ietf-mta-filters@imc.org>; Mon, 16 May 2005 12:49:12 -0700 (PDT) (envelope-from alexey.melnikov@isode.com)
Received: from [172.16.2.141] (shiny.isode.com [62.3.217.250])  by rufus.isode.com via TCP (internal) with ESMTPA; Mon, 16 May 2005 20:49:09 +0100
Message-ID: <4288F936.3000904@isode.com>
Date: Mon, 16 May 2005 20:49:10 +0100
From: Alexey Melnikov <alexey.melnikov@isode.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Philip Guenther <guenther+mtafilters@sendmail.com>
CC: ietf-mta-filters@imc.org
Subject: Re: Collected comments for draft-ietf-sieve-body-00.txt
References: <424A85CD.4040906@isode.com> <200505020127.j421REDY086939@lab.smi.sendmail.com>
In-Reply-To: <200505020127.j421REDY086939@lab.smi.sendmail.com>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Philip Guenther wrote:

>>My comments:
>>    
>>
>>>4.2 Body Transform ":content"
>>>      
>>>
>>[...]
>>    
>>
>>>  If an individual content type contains a '/' (slash), it
>>>  specifies a full <type>/<subtype> pair, and matches only
>>>  that specific content type.  If it is the empty string, all
>>>  MIME content types are matched.  Otherwise, it specifies a
>>>  <type> only, and any subtype of that type matches it.
>>>      
>>>
>>I would like to see ABNF for the content type and some text explaining 
>>what should be done if the user specified an invalid value here, e.g. 
>>"/". I suspect the answer to this can be: no runtime error, but no match.
>>    
>>
>
>I would rather not drag in ABNF just for this single paragraph.
>Indeed, I suspect the result would be more difficult to comprehend
>when specified that way.  As the only cases not covered by the
>current text are values that begin or end with a slash or contain
>multiple slashes, I've added an initial case to specify that they
>match no content types:
>
>   If an individual content type begins or ends with a '/' (slash) 
>   or contains multiple slashes, it matches no content types.
>  
>
I would suggest something like:

   If an individual content type is not a valid content type according to XXX,
   i.e it begins or ends with a '/' (slash) or contains multiple slashes, it matches no content types.

>   Otherwise, if it contains a slash, then it specifies a full
>   <type>/<subtype> pair, and matches only that specific content   
>   type.  If it is the empty string, all MIME content types are
>   matched.  Otherwise, it specifies a <type> only, and any subtype 
>   of that type matches it.
>  
>
Alexey



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4DJnn41079053; Fri, 13 May 2005 12:49:49 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4DJnnbU079052; Fri, 13 May 2005 12:49:49 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from ietf.org (odin.ietf.org [132.151.1.176]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4DJnlKj079044 for <ietf-mta-filters@imc.org>; Fri, 13 May 2005 12:49:47 -0700 (PDT) (envelope-from dinaras@cnri.reston.va.us)
Received: from CNRI.Reston.VA.US (localhost [127.0.0.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id PAA22090; Fri, 13 May 2005 15:49:43 -0400 (EDT)
Message-Id: <200505131949.PAA22090@ietf.org>
Mime-Version: 1.0
Content-Type: Multipart/Mixed; Boundary="NextPart"
To: i-d-announce@ietf.org
Cc: ietf-mta-filters@imc.org
From: Internet-Drafts@ietf.org
Subject: I-D ACTION:draft-ietf-sieve-imapflags-01.txt
Date: Fri, 13 May 2005 15:49:43 -0400
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title		: Sieve Mail Filtering Language: IMAP flag Extension
	Author(s)	: A. Melnikov
	Filename	: draft-ietf-sieve-imapflags-01.txt
	Pages		: 0
	Date		: 2005-5-13
	
Recent discussions have shown that it is desirable to set different
   [IMAP] flags on message delivery.  This can be done, for example,
   by a Sieve interpreter that works as a part of a Mail Delivery
   Agent.

   This document describes an extension to the Sieve mail filtering
   language for setting [IMAP] flags. The extension allows to set both
   [IMAP] system flags and [IMAP] keywords.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-imapflags-01.txt

To remove yourself from the I-D Announcement list, send a message to 
i-d-announce-request@ietf.org with the word unsubscribe in the body of the message.  
You can also visit https://www1.ietf.org/mailman/listinfo/I-D-announce 
to change your subscription settings.


Internet-Drafts are also available by anonymous FTP. Login with the username
"anonymous" and a password of your e-mail address. After logging in,
type "cd internet-drafts" and then
	"get draft-ietf-sieve-imapflags-01.txt".

A list of Internet-Drafts directories can be found in
http://www.ietf.org/shadow.html 
or ftp://ftp.ietf.org/ietf/1shadow-sites.txt


Internet-Drafts can also be obtained by e-mail.

Send a message to:
	mailserv@ietf.org.
In the body type:
	"FILE /internet-drafts/draft-ietf-sieve-imapflags-01.txt".
	
NOTE:	The mail server at ietf.org can return the document in
	MIME-encoded form by using the "mpack" utility.  To use this
	feature, insert the command "ENCODING mime" before the "FILE"
	command.  To decode the response(s), you will need "munpack" or
	a MIME-compliant mail reader.  Different MIME-compliant mail readers
	exhibit different behavior, especially when dealing with
	"multipart" MIME messages (i.e. documents which have been split
	up into multiple messages), so check your local documentation on
	how to manipulate these messages.
		
		
Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Multipart/Alternative; Boundary="OtherAccess"

--OtherAccess
Content-Type: Message/External-body;
	access-type="mail-server";
	server="mailserv@ietf.org"

Content-Type: text/plain
Content-ID:	<2005-5-13160027.I-D@ietf.org>

ENCODING mime
FILE /internet-drafts/draft-ietf-sieve-imapflags-01.txt

--OtherAccess
Content-Type: Message/External-body;
	name="draft-ietf-sieve-imapflags-01.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:	<2005-5-13160027.I-D@ietf.org>

--OtherAccess--

--NextPart--




Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4DAXpbE084063; Fri, 13 May 2005 03:33:51 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4DAXpig084060; Fri, 13 May 2005 03:33:51 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from rufus.isode.com (rufus.isode.com [62.3.217.251]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4DAXmXc084008 for <ietf-mta-filters@imc.org>; Fri, 13 May 2005 03:33:49 -0700 (PDT) (envelope-from alexey.melnikov@isode.com)
Received: from [192.168.0.3] ([62.3.217.253]) by rufus.isode.com  via TCP (internal) with ESMTPA; Fri, 13 May 2005 11:33:20 +0100
Message-ID: <42846A35.6060907@isode.com>
Date: Fri, 13 May 2005 09:49:57 +0100
From: Alexey Melnikov <alexey.melnikov@isode.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Philip Guenther <guenther+mtafilters@sendmail.com>
CC: Michael Haardt <michael.haardt@freenet-ag.de>, ietf-mta-filters@imc.org
Subject: Re: I-D ACTION:draft-ietf-sieve-3028bis-00.txt
References: <200505091955.PAA26389@ietf.org> 	<20050510124529.GA24045@nostromo.freenet-ag.de> <200505101923.j4AJNM5q002495@lab.smi.sendmail.com>
In-Reply-To: <200505101923.j4AJNM5q002495@lab.smi.sendmail.com>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Philip Guenther wrote:

>FYI, I have already submitted rev -01 incorporating the changes
>discussed in Minneapolis.  I didn't roll them into my resubmission of
>-00 to avoid confusing people about what it contained.
>
>
>Responding to your comments out of order...
>
>Michael Haardt <michael.haardt@freenet-ag.de> writes:
>...
>  
>
>>Address Test For Multiple Addresses Per Header
>>
>>A header may contain multiple addresses.  RFC 3028 does not explicitly
>>specify how to deal with them, but since the "address" test checks if
>>anything matches anything else, matching one address suffices to
>>satify the condition.  That makes it impossible to test if a header
>>contains a certain set of addresses and no more, but it is more logical
>>than letting the test fail if the header contains an additional address
>>besides the one the test checks for.
>>    
>>
>
>Cyrus had forwarded your comment on this to me some time ago, so -01
>includes this sentence in section 5.1:
>	Whether there are other addresses present in the header doesn't
>	affect this test; this test does not provide any way to
>	determine whether an address is the only address in a header.
>  
>
I like that.

>>String Arguments
>>
>>There has been confusion if the string arguments to "require" are to be
>>matched case-sensitive or not.  I suggest to match them with
>>the match type ":is" (default, see section 2.7.1) and the comparator
>>"i;ascii-casemap" (default, see section 2.7.3).  The RFC defines the
>>command defaults clearly, so any different implementations violate RFC
>>3028.  The same is valid for comparator names, also specified as strings.
>>    
>>
>
>Since "require" is not described as taking MATCH-TYPE or COMPARATOR
>arguments, I don't see how the defaults of sections 2.7.1 and 2.7.3 can
>be read as applying.  Whether comparator names are case-sensitive is up
>to the draft defining the collation registry: if it says they are, then
>both comparator strings *and* the string argument to "require" *must* be
>treated as case-sensitive so that all comparator names can be
>specified.
>
>According to draft-newman-i18n-comparator-03.txt, collation names may
>contain both uppercase and lowercase letters.  I see nothing in the
>draft that would have them treated as case-insensitive.  Given that, I
>don't see how sieve can specify those strings to be case-insensitive.
>  
>
In this case I think it might be better to explicitly say that the 
require parameter is case-sensitive.

>>Strings Containing Header Names Or Envelope Elements
>>
>>RFC 3028 does not specify what happens if a string denoting a header field
>>or envelope element does not contain a valid name, e.g. it contains a
>>colon for a header or it is not "from" or "to" for envelopes.
>>    
>>
>
>Look closer.  2.4.2.2p2:
>	A header name never contains a colon.  The "From" header refers
>	to a line beginning "From:" (or "From   :", etc.).  No header
>	will match the string "From:" due to the trailing colon.
>
>As for "envelope", I think the current phrasing ("If one of the
>envelope-part strings...") could be read to imply that envelope-part
>strings other than "from" and "to" are simply ignored.  However, that's
>certainly not as clear as 2.4.2.2's statement for bogus header names.
>
>(Indeed, I just checked and Sendmail's implementation gives a syntax
>error on envelope-part strings other than "from" and "to".)
>  
>
>>I suggest
>>generating an error instead of ignoring the header field in order to
>>ease script debugging, which fits in the common picture of Sieve.
>>    
>>
>
><editor-hat off>
>I am opposed to reversing the existing statement in 2.4.2.2, as the
>existing text is quite clear and unambiguous.
>  
>
<chair-hat off>I agree</chair-hat off>

>I am mildly in support of making it an error for envelope as a
>clarification, but think more people should speak to the point.
>  
>
<chair-hat off>I agree</chair-hat off>

><editor-hat on>
>




Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4CDPews082381; Thu, 12 May 2005 06:25:40 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4CDPepS082380; Thu, 12 May 2005 06:25:40 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from out1.smtp.messagingengine.com (out1.smtp.messagingengine.com [66.111.4.25]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4CDPbis082372 for <ietf-mta-filters@imc.org>; Thu, 12 May 2005 06:25:38 -0700 (PDT) (envelope-from matthew@elvey.com)
Received: from frontend3.messagingengine.com (frontend3.internal [10.202.2.152]) by frontend1.messagingengine.com (Postfix) with ESMTP id F0FCFC8E4F9; Thu, 12 May 2005 09:25:35 -0400 (EDT)
X-Sasl-enc: cx4j4Nk3CfuunnQBXLyblHNZm4b+UsSp+dnL0DSv1ECP 1115904335
Received: from [192.168.2.98] (adsl-67-112-26-159.dsl.snfc21.pacbell.net [67.112.26.159]) by frontend3.messagingengine.com (Postfix) with ESMTP id F01C91DC; Thu, 12 May 2005 09:25:32 -0400 (EDT)
Message-ID: <4283594E.6010006@elvey.com>
Date: Thu, 12 May 2005 06:25:34 -0700
From: Matthew Elvey <matthew@elvey.com>
User-Agent: Mozilla Thunderbird 1.0 (Macintosh/20041206)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
CC: ietf-mta-filters@imc.org, Alexey Melnikov <alexey.melnikov@isode.com>, Philip Guenther <guenther+mtafilters@sendmail.com>
Subject: refuse (was Re: Responses to ... editheader-00
References: <200505020435.j424Z4qL003108@lab.smi.sendmail.com>  <qLUMf6GlQ6Q4lvYMOcBEmA.md5@libertango.oryx.com>  <428345E5.8020807@isode.com> <MNA5wwkw9mmWwiCm/aKm/w.md5@prosecco.oryx.com>
In-Reply-To: <MNA5wwkw9mmWwiCm/aKm/w.md5@prosecco.oryx.com>
X-Habeas-SWE-1: winter into spring
X-Habeas-SWE-2: brightly anticipated
X-Habeas-SWE-3: like Habeas SWE (tm)
X-Habeas-SWE-4: Copyright 2002 Habeas (tm)
X-Habeas-SWE-5: Sender Warranted Email (SWE) (tm). The sender of this
X-Habeas-SWE-6: email in exchange for a license for this Habeas
X-Habeas-SWE-7: warrant mark warrants that this is a Habeas Compliant
X-Habeas-SWE-8: Message (HCM) and not spam. Please report use of this
X-Habeas-SWE-9: mark in spam to <http://www.habeas.com/report/>.
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On 5/12/05 5:05 AM, Arnt Gulbrandsen sent forth electrons to convey:

>
> Alexey Melnikov writes:
>
>> The text in -01 effectively says that "reject" should use the 
>> modified message. How is "refuse" different? If "refuse" uses an 
>> SMTP/LMTP response, than there is no message?
>
>
> Exactly.
>
> Arnt
>
Or as I wrote on 5/9 in the latest revision of draft-ietf-sieve-refuse I 
sent Alexey:

> Any action that would modify the message body will necessarily have no 
> effect on the body of any message refused by "refuse" using the 550 
> SMTP response code.

Since it now defines reject too, perhaps draft-ietf-sieve-refuse is the 
wrong name... Let's go with draft-ietf-sieve-refuse-and-reject.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4CCJh0C063474; Thu, 12 May 2005 05:19:43 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4CCJhmT063473; Thu, 12 May 2005 05:19:43 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from rufus.isode.com (rufus.isode.com [62.3.217.251]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4CCJgkZ063462 for <ietf-mta-filters@imc.org>; Thu, 12 May 2005 05:19:43 -0700 (PDT) (envelope-from alexey.melnikov@isode.com)
Received: from [172.16.2.175] (shiny.isode.com [62.3.217.250])  by rufus.isode.com via TCP (internal) with ESMTPA; Thu, 12 May 2005 13:19:24 +0100
Message-ID: <428349CC.6000808@isode.com>
Date: Thu, 12 May 2005 13:19:24 +0100
From: Alexey Melnikov <alexey.melnikov@isode.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Philip Guenther <guenther+mtafilters@sendmail.com>
CC: ietf-mta-filters@imc.org
Subject: Re: Responses to comments on draft-ietf-sieve-editheader-00.txt
References: <200505020435.j424Z4qL003108@lab.smi.sendmail.com>
In-Reply-To: <200505020435.j424Z4qL003108@lab.smi.sendmail.com>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Philip Guenther wrote:

>Alexey Melnikov wrote:
>  
>
>>>  Actions that create messages in storage or in transport to
>>>  MTAs MUST store and send messages with the current set of
>>>  header fields.
>>>      
>>>
>>                       
>>I am not sure I understand what is "in transport to MTAs", is this
>>trying to say "in MTA's queue"?
>>    
>>
>
>It's trying to say that if you do something like forward the message,
>the forwarded content reflects any changes.  Would it be clearer
>if that sentence was simplified to
>
>   Actions that store or send the message MUST do so with the
>   current set of header fields.
>  
>
>?
>  
>
Yes, that is much better. Thanks.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4CC69ED058905; Thu, 12 May 2005 05:06:09 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4CC69Zs058904; Thu, 12 May 2005 05:06:09 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from bra.gulbrandsen.priv.no (bra.gulbrandsen.priv.no [212.125.101.197]) by above.proper.com (8.12.11/8.12.9) with SMTP id j4CC688R058887 for <ietf-mta-filters@imc.org>; Thu, 12 May 2005 05:06:09 -0700 (PDT) (envelope-from arnt@gulbrandsen.priv.no)
Received: by bra.gulbrandsen.priv.no (Postfix, from userid 1000) id AF5F01A6F1; Thu, 12 May 2005 14:06:16 +0200 (CEST)
Received: from prosecco.oryx.com (prosecco.oryx.com [217.19.171.140]) by bra.gulbrandsen.priv.no (Postfix) with SMTP id 8441C1A6C8; Thu, 12 May 2005 14:06:10 +0200 (CEST)
Message-Id: <MNA5wwkw9mmWwiCm/aKm/w.md5@prosecco.oryx.com>
Date: Thu, 12 May 2005 14:05:14 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
To: ietf-mta-filters@imc.org
Subject: Re: Responses to comments on draft-ietf-sieve-editheader-00.txt
Cc: Alexey Melnikov <alexey.melnikov@isode.com>, Philip Guenther <guenther+mtafilters@sendmail.com>
References: <200505020435.j424Z4qL003108@lab.smi.sendmail.com> <qLUMf6GlQ6Q4lvYMOcBEmA.md5@libertango.oryx.com> <428345E5.8020807@isode.com>
In-Reply-To: <428345E5.8020807@isode.com>
Content-Type: text/plain; format=flowed
MIME-Version: 1.0
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Alexey Melnikov writes:
> The text in -01 effectively says that "reject" should use the modified 
> message. How is "refuse" different? If "refuse" uses an SMTP/LMTP 
> response, than there is no message?

Exactly.

Arnt



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4CC2oOo057797; Thu, 12 May 2005 05:02:50 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4CC2ohs057795; Thu, 12 May 2005 05:02:50 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from rufus.isode.com (rufus.isode.com [62.3.217.251]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4CC2m4o057777 for <ietf-mta-filters@imc.org>; Thu, 12 May 2005 05:02:49 -0700 (PDT) (envelope-from alexey.melnikov@isode.com)
Received: from [172.16.2.175] (shiny.isode.com [62.3.217.250])  by rufus.isode.com via TCP (internal) with ESMTPA; Thu, 12 May 2005 13:02:46 +0100
Message-ID: <428345E5.8020807@isode.com>
Date: Thu, 12 May 2005 13:02:45 +0100
From: Alexey Melnikov <alexey.melnikov@isode.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
CC: ietf-mta-filters@imc.org, Philip Guenther <guenther+mtafilters@sendmail.com>
Subject: Re: Responses to comments on draft-ietf-sieve-editheader-00.txt
References: <200505020435.j424Z4qL003108@lab.smi.sendmail.com> <qLUMf6GlQ6Q4lvYMOcBEmA.md5@libertango.oryx.com>
In-Reply-To: <qLUMf6GlQ6Q4lvYMOcBEmA.md5@libertango.oryx.com>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Arnt Gulbrandsen wrote:

>
> Philip Guenther writes:
>
>> Arnt Gulbrandsen wrote:
>>
>>> Another minor point: If a message is rejected after being modified, 
>>> which version of the message should be sent to the bounce address, 
>>> the original message or the one with a modified header?
>>
>>
>> The one with the modified header. This was covered by the "Actions 
>> that create messages..." sentence in section 5, which I'm changing to 
>> the "Actions that store or send the message..." sentence mentioned 
>> above.
>
>
> Fine with me.
>
> Please note specifically that addheader/refuse won't use the modified 
> message, though. (Yes, I realize that for all known current 
> implementations, addheader/refuse isn't possible in the first place.)

The text in -01 effectively says that "reject" should use the modified 
message. How is "refuse" different? If "refuse" uses an SMTP/LMTP 
response, than there is no message?

> It could be (I don't know, nor really care) that you should mention 
> that addheader/reject in that order could expose information 
> unintended, so users should be careful where appropriate.




Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4AK0mAm055615; Tue, 10 May 2005 13:00:48 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4AK0m5h055614; Tue, 10 May 2005 13:00:48 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from ietf.org (odin.ietf.org [132.151.1.176]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4AK0lkr055606 for <ietf-mta-filters@imc.org>; Tue, 10 May 2005 13:00:47 -0700 (PDT) (envelope-from dinaras@cnri.reston.va.us)
Received: from CNRI.Reston.VA.US (localhost [127.0.0.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id QAA08296; Tue, 10 May 2005 16:00:45 -0400 (EDT)
Message-Id: <200505102000.QAA08296@ietf.org>
Mime-Version: 1.0
Content-Type: Multipart/Mixed; Boundary="NextPart"
To: i-d-announce@ietf.org
Cc: ietf-mta-filters@imc.org
From: Internet-Drafts@ietf.org
Subject: I-D ACTION:draft-ietf-sieve-body-01.txt
Date: Tue, 10 May 2005 16:00:45 -0400
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title		: Sieve Email Filtering: Body Extension
	Author(s)	: P. Guenther, J. Degener
	Filename	: draft-ietf-sieve-body-01.txt
	Pages		: 0
	Date		: 2005-5-10
	
This document defines a new primitive for the "Sieve" email
   filtering language that tests for the occurrence of one or more
   strings in the body of an email message.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-body-01.txt

To remove yourself from the I-D Announcement list, send a message to 
i-d-announce-request@ietf.org with the word unsubscribe in the body of the message.  
You can also visit https://www1.ietf.org/mailman/listinfo/I-D-announce 
to change your subscription settings.


Internet-Drafts are also available by anonymous FTP. Login with the username
"anonymous" and a password of your e-mail address. After logging in,
type "cd internet-drafts" and then
	"get draft-ietf-sieve-body-01.txt".

A list of Internet-Drafts directories can be found in
http://www.ietf.org/shadow.html 
or ftp://ftp.ietf.org/ietf/1shadow-sites.txt


Internet-Drafts can also be obtained by e-mail.

Send a message to:
	mailserv@ietf.org.
In the body type:
	"FILE /internet-drafts/draft-ietf-sieve-body-01.txt".
	
NOTE:	The mail server at ietf.org can return the document in
	MIME-encoded form by using the "mpack" utility.  To use this
	feature, insert the command "ENCODING mime" before the "FILE"
	command.  To decode the response(s), you will need "munpack" or
	a MIME-compliant mail reader.  Different MIME-compliant mail readers
	exhibit different behavior, especially when dealing with
	"multipart" MIME messages (i.e. documents which have been split
	up into multiple messages), so check your local documentation on
	how to manipulate these messages.
		
		
Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Multipart/Alternative; Boundary="OtherAccess"

--OtherAccess
Content-Type: Message/External-body;
	access-type="mail-server";
	server="mailserv@ietf.org"

Content-Type: text/plain
Content-ID:	<2005-5-10163657.I-D@ietf.org>

ENCODING mime
FILE /internet-drafts/draft-ietf-sieve-body-01.txt

--OtherAccess
Content-Type: Message/External-body;
	name="draft-ietf-sieve-body-01.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:	<2005-5-10163657.I-D@ietf.org>

--OtherAccess--

--NextPart--




Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4AJx316054990; Tue, 10 May 2005 12:59:03 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4AJx3JX054989; Tue, 10 May 2005 12:59:03 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from ietf.org (odin.ietf.org [132.151.1.176]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4AJx2to054982 for <ietf-mta-filters@imc.org>; Tue, 10 May 2005 12:59:02 -0700 (PDT) (envelope-from dinaras@cnri.reston.va.us)
Received: from CNRI.Reston.VA.US (localhost [127.0.0.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id PAA08004; Tue, 10 May 2005 15:59:00 -0400 (EDT)
Message-Id: <200505101959.PAA08004@ietf.org>
Mime-Version: 1.0
Content-Type: Multipart/Mixed; Boundary="NextPart"
To: i-d-announce@ietf.org
Cc: ietf-mta-filters@imc.org
From: Internet-Drafts@ietf.org
Subject: I-D ACTION:draft-ietf-sieve-3028bis-01.txt
Date: Tue, 10 May 2005 15:58:59 -0400
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title		: Sieve: An Email Filtering Language
	Author(s)	: P. Guenther
	Filename	: draft-ietf-sieve-3028bis-01.txt
	Pages		: 38
	Date		: 2005-5-10
	
This document describes a language for filtering email messages at
   time of final delivery.  It is designed to be implementable on either
   a mail client or mail server.  It is meant to be extensible, simple,
   and independent of access protocol, mail architecture, and operating
   system.  It is suitable for running on a mail server where users may
   not be allowed to execute arbitrary programs, such as on black box
   Internet Message Access Protocol (IMAP) servers, as it has no
   variables, loops, or ability to shell out to external programs.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-3028bis-01.txt

To remove yourself from the I-D Announcement list, send a message to 
i-d-announce-request@ietf.org with the word unsubscribe in the body of the message.  
You can also visit https://www1.ietf.org/mailman/listinfo/I-D-announce 
to change your subscription settings.


Internet-Drafts are also available by anonymous FTP. Login with the username
"anonymous" and a password of your e-mail address. After logging in,
type "cd internet-drafts" and then
	"get draft-ietf-sieve-3028bis-01.txt".

A list of Internet-Drafts directories can be found in
http://www.ietf.org/shadow.html 
or ftp://ftp.ietf.org/ietf/1shadow-sites.txt


Internet-Drafts can also be obtained by e-mail.

Send a message to:
	mailserv@ietf.org.
In the body type:
	"FILE /internet-drafts/draft-ietf-sieve-3028bis-01.txt".
	
NOTE:	The mail server at ietf.org can return the document in
	MIME-encoded form by using the "mpack" utility.  To use this
	feature, insert the command "ENCODING mime" before the "FILE"
	command.  To decode the response(s), you will need "munpack" or
	a MIME-compliant mail reader.  Different MIME-compliant mail readers
	exhibit different behavior, especially when dealing with
	"multipart" MIME messages (i.e. documents which have been split
	up into multiple messages), so check your local documentation on
	how to manipulate these messages.
		
		
Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Multipart/Alternative; Boundary="OtherAccess"

--OtherAccess
Content-Type: Message/External-body;
	access-type="mail-server";
	server="mailserv@ietf.org"

Content-Type: text/plain
Content-ID:	<2005-5-10163138.I-D@ietf.org>

ENCODING mime
FILE /internet-drafts/draft-ietf-sieve-3028bis-01.txt

--OtherAccess
Content-Type: Message/External-body;
	name="draft-ietf-sieve-3028bis-01.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:	<2005-5-10163138.I-D@ietf.org>

--OtherAccess--

--NextPart--




Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4AJwkZr054960; Tue, 10 May 2005 12:58:47 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4AJwkf1054959; Tue, 10 May 2005 12:58:46 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from ietf.org (odin.ietf.org [132.151.1.176]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4AJwjnp054935 for <ietf-mta-filters@imc.org>; Tue, 10 May 2005 12:58:46 -0700 (PDT) (envelope-from dinaras@cnri.reston.va.us)
Received: from CNRI.Reston.VA.US (localhost [127.0.0.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id PAA07951; Tue, 10 May 2005 15:58:43 -0400 (EDT)
Message-Id: <200505101958.PAA07951@ietf.org>
Mime-Version: 1.0
Content-Type: Multipart/Mixed; Boundary="NextPart"
To: i-d-announce@ietf.org
Cc: ietf-mta-filters@imc.org
From: Internet-Drafts@ietf.org
Subject: I-D ACTION:draft-ietf-sieve-editheader-01.txt
Date: Tue, 10 May 2005 15:58:43 -0400
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title		: Sieve Email Filtering: Editheader Extension
	Author(s)	: P. Guenther, J. Degener
	Filename	: draft-ietf-sieve-editheader-01.txt
	Pages		: 0
	Date		: 2005-5-10
	
This document defines two new actions for the "Sieve" email
   filtering language that add and delete email header fields.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-editheader-01.txt

To remove yourself from the I-D Announcement list, send a message to 
i-d-announce-request@ietf.org with the word unsubscribe in the body of the message.  
You can also visit https://www1.ietf.org/mailman/listinfo/I-D-announce 
to change your subscription settings.


Internet-Drafts are also available by anonymous FTP. Login with the username
"anonymous" and a password of your e-mail address. After logging in,
type "cd internet-drafts" and then
	"get draft-ietf-sieve-editheader-01.txt".

A list of Internet-Drafts directories can be found in
http://www.ietf.org/shadow.html 
or ftp://ftp.ietf.org/ietf/1shadow-sites.txt


Internet-Drafts can also be obtained by e-mail.

Send a message to:
	mailserv@ietf.org.
In the body type:
	"FILE /internet-drafts/draft-ietf-sieve-editheader-01.txt".
	
NOTE:	The mail server at ietf.org can return the document in
	MIME-encoded form by using the "mpack" utility.  To use this
	feature, insert the command "ENCODING mime" before the "FILE"
	command.  To decode the response(s), you will need "munpack" or
	a MIME-compliant mail reader.  Different MIME-compliant mail readers
	exhibit different behavior, especially when dealing with
	"multipart" MIME messages (i.e. documents which have been split
	up into multiple messages), so check your local documentation on
	how to manipulate these messages.
		
		
Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Multipart/Alternative; Boundary="OtherAccess"

--OtherAccess
Content-Type: Message/External-body;
	access-type="mail-server";
	server="mailserv@ietf.org"

Content-Type: text/plain
Content-ID:	<2005-5-10163125.I-D@ietf.org>

ENCODING mime
FILE /internet-drafts/draft-ietf-sieve-editheader-01.txt

--OtherAccess
Content-Type: Message/External-body;
	name="draft-ietf-sieve-editheader-01.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:	<2005-5-10163125.I-D@ietf.org>

--OtherAccess--

--NextPart--




Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4AJNcaa052193; Tue, 10 May 2005 12:23:38 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4AJNc5x052192; Tue, 10 May 2005 12:23:38 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from foon.sendmail.com (tls.sendmail.com [209.246.26.40]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4AJNbFO052181 for <ietf-mta-filters@imc.org>; Tue, 10 May 2005 12:23:37 -0700 (PDT) (envelope-from guenther@sendmail.com)
Received: from lab.smi.sendmail.com ([10.210.100.93]) by foon.sendmail.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id j4AJNNIa009730 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=OK); Tue, 10 May 2005 12:23:23 -0700
X-DomainKeys: Sendmail DomainKeys Filter v0.2.7 foon.sendmail.com j4AJNNIa009730
DomainKey-Signature: a=rsa-sha1; s=tls; d=sendmail.com; c=nofws; q=dns; b=sc4t1w9YLFWUjGvZhTylEwNab1xjdZJuigrGeRix7NWQs4g/295WriF0stJCT+NbO sWDSPEFbyqEA6w2wZ8Uy/4Y+8yJm4CzKWhqFKQpQJW340zsep1QR6vfN61qMbRsA2LH vfJqHec8/IJcX9YJWuQlc/sL35J9fdyT+O6uqXo=
Received: from lab.smi.sendmail.com (localhost [127.0.0.1]) by lab.smi.sendmail.com (8.12.11/8.12.11) with ESMTP id j4AJNM5q002495; Tue, 10 May 2005 12:23:22 -0700 (PDT) (envelope-from guenther@lab.smi.sendmail.com)
Message-Id: <200505101923.j4AJNM5q002495@lab.smi.sendmail.com>
To: Michael Haardt <michael.haardt@freenet-ag.de>
Cc: ietf-mta-filters@imc.org
From: Philip Guenther <guenther+mtafilters@sendmail.com>
Subject: Re: I-D ACTION:draft-ietf-sieve-3028bis-00.txt 
In-reply-to: <20050510124529.GA24045@nostromo.freenet-ag.de> 
References: <200505091955.PAA26389@ietf.org>  <20050510124529.GA24045@nostromo.freenet-ag.de> 
Date: Tue, 10 May 2005 12:23:22 -0700
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

FYI, I have already submitted rev -01 incorporating the changes
discussed in Minneapolis.  I didn't roll them into my resubmission of
-00 to avoid confusing people about what it contained.


Responding to your comments out of order...

Michael Haardt <michael.haardt@freenet-ag.de> writes:
...
>Address Test For Multiple Addresses Per Header
>
>A header may contain multiple addresses.  RFC 3028 does not explicitly
>specify how to deal with them, but since the "address" test checks if
>anything matches anything else, matching one address suffices to
>satify the condition.  That makes it impossible to test if a header
>contains a certain set of addresses and no more, but it is more logical
>than letting the test fail if the header contains an additional address
>besides the one the test checks for.

Cyrus had forwarded your comment on this to me some time ago, so -01
includes this sentence in section 5.1:
	Whether there are other addresses present in the header doesn't
	affect this test; this test does not provide any way to
	determine whether an address is the only address in a header.


>String Arguments
>
>There has been confusion if the string arguments to "require" are to be
>matched case-sensitive or not.  I suggest to match them with
>the match type ":is" (default, see section 2.7.1) and the comparator
>"i;ascii-casemap" (default, see section 2.7.3).  The RFC defines the
>command defaults clearly, so any different implementations violate RFC
>3028.  The same is valid for comparator names, also specified as strings.

Since "require" is not described as taking MATCH-TYPE or COMPARATOR
arguments, I don't see how the defaults of sections 2.7.1 and 2.7.3 can
be read as applying.  Whether comparator names are case-sensitive is up
to the draft defining the collation registry: if it says they are, then
both comparator strings *and* the string argument to "require" *must* be
treated as case-sensitive so that all comparator names can be
specified.

According to draft-newman-i18n-comparator-03.txt, collation names may
contain both uppercase and lowercase letters.  I see nothing in the
draft that would have them treated as case-insensitive.  Given that, I
don't see how sieve can specify those strings to be case-insensitive.


>Strings Containing Header Names Or Envelope Elements
>
>RFC 3028 does not specify what happens if a string denoting a header field
>or envelope element does not contain a valid name, e.g. it contains a
>colon for a header or it is not "from" or "to" for envelopes.

Look closer.  2.4.2.2p2:
	A header name never contains a colon.  The "From" header refers
	to a line beginning "From:" (or "From   :", etc.).  No header
	will match the string "From:" due to the trailing colon.

As for "envelope", I think the current phrasing ("If one of the
envelope-part strings...") could be read to imply that envelope-part
strings other than "from" and "to" are simply ignored.  However, that's
certainly not as clear as 2.4.2.2's statement for bogus header names.

(Indeed, I just checked and Sendmail's implementation gives a syntax
error on envelope-part strings other than "from" and "to".)


>I suggest
>generating an error instead of ignoring the header field in order to
>ease script debugging, which fits in the common picture of Sieve.

<editor-hat off>
I am opposed to reversing the existing statement in 2.4.2.2, as the
existing text is quite clear and unambiguous.

I am mildly in support of making it an error for envelope as a
clarification, but think more people should speak to the point.
<editor-hat on>



>Undefined Test Results
..
>Note that by considering Sieve to be a MUA, RFC 2047 can be interpreted
>in a way that NUL characters truncating strings is allowed for Sieve
>implementations, although not recommended.  It is further allowed to use
>encoded NUL characters in headers, but that's not recommended either.
>The above example shows why.  RFC 3028 should say something about this issue.
...
>Header Test With Invalid MIME Encoding In Header
>
>Some MUAs process invalid base64 encoded data, generating junk.
>Others ignore junk after seeing an equal sign in base64 encoded data.
>RFC 2047 does not specify how to react in this case, other than stating
>that a client must not forbid to process a message for that reason.
>RFC 2045 specifies that invalid data should be ignored (appearantly
>looking at end of line characters).  It also specifies that invalid data
>may lead to rejecting messages containing them (and there it appears to
>talk about true encoding violations), which is a clear contradiction to
>ignoring them.
>
>RFC 3028 does not specify how to process incorrect MIME words.  I suggest
>to treat them literally, as I do if the word is correct, but its character
>set can not be converted to UTF-8.

Hmm.  To paraphrase (and mangle) something that Dave Crocker said at the
meeting in Minneapolis: when there's a spec for something, it's a bad
idea to try to address general problems arising from it anywhere but in
that spec.  He was speaking then to the question of whether the
'vacation' draft should go into the issues around permitting users to
set the "From" on outgoing messages, noting that this is a general issue
for mail submission and that 'vacation' should not try to apply a
point-fix to the problem, though a security consideration pointing at
the submission RFC would be appropriate.

I think the same logic applies here.  The MIME RFCs describe the issues;
the sieve spec should simply include a security consideration on the
general points with a specific comment on how it's placement as a filter
may make these choices more critical than in a normal MUA, as they may
limit the user's ability to protect themselves from bad data.


Philip Guenther



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4ACjevF011751; Tue, 10 May 2005 05:45:40 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4ACjedr011750; Tue, 10 May 2005 05:45:40 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mout1.freenet.de (mout1.freenet.de [194.97.50.132]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4ACjcae011731 for <ietf-mta-filters@imc.org>; Tue, 10 May 2005 05:45:39 -0700 (PDT) (envelope-from michael@freenet-ag.de)
Received: from [194.97.50.136] (helo=mx3.freenet.de) by mout1.freenet.de with esmtpa (Exim 4.51) id 1DVU7B-0005eg-K8 for ietf-mta-filters@imc.org; Tue, 10 May 2005 14:45:33 +0200
Received: from nostromo.freenet-ag.de ([194.97.7.6]) by mx3.freenet.de with esmtps (TLSv1:AES256-SHA:256) (Exim 4.51 #1) id 1DVU7B-0002YL-GT for ietf-mta-filters@imc.org; Tue, 10 May 2005 14:45:33 +0200
Received: from michael by nostromo.freenet-ag.de with local (ID michael) (Exim 4.51 #1) id 1DVU77-0006Fw-Cq for ietf-mta-filters@imc.org; Tue, 10 May 2005 14:45:29 +0200
Date: Tue, 10 May 2005 14:45:29 +0200
From: Michael Haardt <michael.haardt@freenet-ag.de>
To: ietf-mta-filters@imc.org
Subject: Re: I-D ACTION:draft-ietf-sieve-3028bis-00.txt
Message-ID: <20050510124529.GA24045@nostromo.freenet-ag.de>
References: <200505091955.PAA26389@ietf.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <200505091955.PAA26389@ietf.org>
User-Agent: Mutt/1.5.6i
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

I guess that means the discussion is opened.  Here are my relevant notes
on RFC 3028.


Undefined Test Results

Implementations that use C-style strings will only evaluate the first
test as true.

Subject: =?iso-8859-1?q?abc=00def

header :contains "Subject" ["abc"]
header :contains "Subject" ["def"]
header :matches "Subject" ["abc?def"]

Note that by considering Sieve to be a MUA, RFC 2047 can be interpreted
in a way that NUL characters truncating strings is allowed for Sieve
implementations, although not recommended.  It is further allowed to use
encoded NUL characters in headers, but that's not recommended either.
The above example shows why.  RFC 3028 should say something about this issue.


Strings Containing Header Names Or Envelope Elements

RFC 3028 does not specify what happens if a string denoting a header field
or envelope element does not contain a valid name, e.g. it contains a
colon for a header or it is not "from" or "to" for envelopes.  I suggest
generating an error instead of ignoring the header field in order to
ease script debugging, which fits in the common picture of Sieve.


Header Test With Invalid MIME Encoding In Header

Some MUAs process invalid base64 encoded data, generating junk.
Others ignore junk after seeing an equal sign in base64 encoded data.
RFC 2047 does not specify how to react in this case, other than stating
that a client must not forbid to process a message for that reason.
RFC 2045 specifies that invalid data should be ignored (appearantly
looking at end of line characters).  It also specifies that invalid data
may lead to rejecting messages containing them (and there it appears to
talk about true encoding violations), which is a clear contradiction to
ignoring them.

RFC 3028 does not specify how to process incorrect MIME words.  I suggest
to treat them literally, as I do if the word is correct, but its character
set can not be converted to UTF-8.


Address Test For Multiple Addresses Per Header

A header may contain multiple addresses.  RFC 3028 does not explicitly
specify how to deal with them, but since the "address" test checks if
anything matches anything else, matching one address suffices to
satify the condition.  That makes it impossible to test if a header
contains a certain set of addresses and no more, but it is more logical
than letting the test fail if the header contains an additional address
besides the one the test checks for.


String Arguments

There has been confusion if the string arguments to "require" are to be
matched case-sensitive or not.  I suggest to match them with
the match type ":is" (default, see section 2.7.1) and the comparator
"i;ascii-casemap" (default, see section 2.7.3).  The RFC defines the
command defaults clearly, so any different implementations violate RFC
3028.  The same is valid for comparator names, also specified as strings.

Michael



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4A5b8ip054378; Mon, 9 May 2005 22:37:08 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j4A5b8js054377; Mon, 9 May 2005 22:37:08 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from foon.sendmail.com (tls.sendmail.com [209.246.26.40]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j4A5b7Fc054357 for <ietf-mta-filters@imc.org>; Mon, 9 May 2005 22:37:07 -0700 (PDT) (envelope-from guenther@sendmail.com)
Received: from lab.smi.sendmail.com ([10.210.100.93]) by foon.sendmail.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id j4A5b49f007646 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=OK); Mon, 9 May 2005 22:37:05 -0700
X-DomainKeys: Sendmail DomainKeys Filter v0.2.7 foon.sendmail.com j4A5b49f007646
DomainKey-Signature: a=rsa-sha1; s=tls; d=sendmail.com; c=nofws; q=dns; b=R/7tM3afUYyEBcOWbCRkFz6X5ZtuNG2KDvLpdJ0BYto8liAtkMjoshn4Z+Gg9jOQb gLw9YvzrccG0roZbDOWnlX4pd6Bwy5D9nqr7lGATGlCxsbIv/zDkhDUX9nVZCOzxvTr hH4/DMSLygEOYjYe8EHpxxwNDWaWgzKPR866K+E=
Received: from lab.smi.sendmail.com (localhost [127.0.0.1]) by lab.smi.sendmail.com (8.12.11/8.12.11) with ESMTP id j4A5b4v7024372; Mon, 9 May 2005 22:37:04 -0700 (PDT) (envelope-from guenther@lab.smi.sendmail.com)
Message-Id: <200505100537.j4A5b4v7024372@lab.smi.sendmail.com>
To: "Mark E. Mallett" <mem@mv.mv.com>
Cc: ietf-mta-filters@imc.org
From: Philip Guenther <guenther+mtafilters@sendmail.com>
Subject: Re: Collected comments for draft-ietf-sieve-body-00.txt 
In-reply-to: <20050503163739.GC35328@osmium.mv.net> 
References: <424A85CD.4040906@isode.com> <200505020127.j421REDY086939@lab.smi.sendmail.com>  <20050503163739.GC35328@osmium.mv.net> 
Date: Mon, 09 May 2005 22:37:04 -0700
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

"Mark E. Mallett" <mem@mv.mv.com> writes:
>On Sun, May 01, 2005 at 06:27:14PM -0700, Philip Guenther wrote:
...
>> Yeah.  To clarify, I've replaced the second/last sentence of that
>> paragraph with:
>> 	All MIME parts with matching types are searched for the key
>> 	strings.
>
>That doesn't actually do the clarification, though.  The question was
>whether the search result is the OR of all the tests, or the AND of all
>the tests.  That is, does a match in just one of the candidate parts
>satisfy the test, or does the match have to appear in *all* of the
>candidate parts.

Ah, I understand now.  I'll add "The test returns true if any
combination of searched MIME part and key-list argument match."


Philip Guenther



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j49JtDIf094250; Mon, 9 May 2005 12:55:13 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j49JtDjM094249; Mon, 9 May 2005 12:55:13 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from ietf.org (odin.ietf.org [132.151.1.176]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j49JtCvK094243 for <ietf-mta-filters@imc.org>; Mon, 9 May 2005 12:55:13 -0700 (PDT) (envelope-from dinaras@cnri.reston.va.us)
Received: from CNRI.Reston.VA.US (localhost [127.0.0.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id PAA26389; Mon, 9 May 2005 15:55:07 -0400 (EDT)
Message-Id: <200505091955.PAA26389@ietf.org>
Mime-Version: 1.0
Content-Type: Multipart/Mixed; Boundary="NextPart"
To: i-d-announce@ietf.org
Cc: ietf-mta-filters@imc.org
From: Internet-Drafts@ietf.org
Subject: I-D ACTION:draft-ietf-sieve-3028bis-00.txt
Date: Mon, 09 May 2005 15:55:06 -0400
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Sieve Mail Filtering Language Working Group of the IETF.

	Title		: Sieve: An Email Filtering Language
	Author(s)	: P. Guenther
	Filename	: draft-ietf-sieve-3028bis-00.txt
	Pages		: 39
	Date		: 2005-5-9
	
This document describes a language for filtering email messages at
   time of final delivery.  It is designed to be implementable on either
   a mail client or mail server.  It is meant to be extensible, simple,
   and independent of access protocol, mail architecture, and operating
   system.  It is suitable for running on a mail server where users may
   not be allowed to execute arbitrary programs, such as on black box
   Internet Message Access Protocol (IMAP) servers, as it has no
   variables, loops, or ability to shell out to external programs.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-sieve-3028bis-00.txt

To remove yourself from the I-D Announcement list, send a message to 
i-d-announce-request@ietf.org with the word unsubscribe in the body of the message.  
You can also visit https://www1.ietf.org/mailman/listinfo/I-D-announce 
to change your subscription settings.


Internet-Drafts are also available by anonymous FTP. Login with the username
"anonymous" and a password of your e-mail address. After logging in,
type "cd internet-drafts" and then
	"get draft-ietf-sieve-3028bis-00.txt".

A list of Internet-Drafts directories can be found in
http://www.ietf.org/shadow.html 
or ftp://ftp.ietf.org/ietf/1shadow-sites.txt


Internet-Drafts can also be obtained by e-mail.

Send a message to:
	mailserv@ietf.org.
In the body type:
	"FILE /internet-drafts/draft-ietf-sieve-3028bis-00.txt".
	
NOTE:	The mail server at ietf.org can return the document in
	MIME-encoded form by using the "mpack" utility.  To use this
	feature, insert the command "ENCODING mime" before the "FILE"
	command.  To decode the response(s), you will need "munpack" or
	a MIME-compliant mail reader.  Different MIME-compliant mail readers
	exhibit different behavior, especially when dealing with
	"multipart" MIME messages (i.e. documents which have been split
	up into multiple messages), so check your local documentation on
	how to manipulate these messages.
		
		
Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Multipart/Alternative; Boundary="OtherAccess"

--OtherAccess
Content-Type: Message/External-body;
	access-type="mail-server";
	server="mailserv@ietf.org"

Content-Type: text/plain
Content-ID:	<2005-5-9160034.I-D@ietf.org>

ENCODING mime
FILE /internet-drafts/draft-ietf-sieve-3028bis-00.txt

--OtherAccess
Content-Type: Message/External-body;
	name="draft-ietf-sieve-3028bis-00.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID:	<2005-5-9160034.I-D@ietf.org>

--OtherAccess--

--NextPart--




Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44LeC6H014487; Wed, 4 May 2005 14:40:12 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j44LeCgs014486; Wed, 4 May 2005 14:40:12 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mv.mv.com (osmium.mv.net [199.125.85.152]) by above.proper.com (8.12.11/8.12.9) with SMTP id j44LeAvH014471 for <ietf-mta-filters@imc.org>; Wed, 4 May 2005 14:40:11 -0700 (PDT) (envelope-from mem@mv.mv.com)
Received: (qmail 50113 invoked by uid 101); 4 May 2005 17:40:10 -0400
From: "Mark E. Mallett" <mem@mv.mv.com>
Date: Wed, 4 May 2005 17:40:10 -0400
To: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
Cc: "Mark E. Mallett" <mem@mv.mv.com>, Tony Finch <dot@dotat.at>, ietf-mta-filters@imc.org
Subject: Re: vacation and envelope-to: another try
Message-ID: <20050504214010.GA43332@osmium.mv.net>
References: <20050503180747.GB54862@osmium.mv.net> <E1DTHle-0005fV-00@chiark.greenend.org.uk> <20050504141143.GB85678@osmium.mv.net> <1115221702.11776.52.camel@chico.njus.no> <1115224786.11776.57.camel@chico.njus.no>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <1115224786.11776.57.camel@chico.njus.no>
User-Agent: Mutt/1.4.2.1i
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Wed, May 04, 2005 at 06:39:46PM +0200, Kjetil Torgrim Homme wrote:
> On Wed, 2005-05-04 at 17:48 +0200, Kjetil Torgrim Homme wrote:
> > IMO it is a reasonable interpretation to use the _latest_ ("final" if
> > you will) recipient address.  never mind the fact that the latest RCPT
> > TO happened across LMTP rather than SMTP.  I think the base spec should
> > be changed to reflect this more clearly.  I would prefer wording which
> > allowed Cyrus to work like today, leaving alias knowledge to the MTA.
> > changing "SMTP" to "SMTP or LMTP" is sufficient for that, but it
> > probably won't do for Mark.  suggestions?
> 
> I'm embarrassed to admit that my reading skills are extremely lacking.
> RFC 3028 says, just two paragraphs down from my earlier quote:
> 
>    If a protocol other than SMTP is used for message transport,
>    implementations are expected to adapt this command appropriately.

On the other hand, "transport" != "delivery" when we talk about email
architecture.  And when an RFC talks about RCPT TO, and transport
commands, well... it reads the way it reads.  Sounds like there's at
least some support for interpreting this as a (possibly munged) final
recipient address, so maybe that's something to think about clarifying
for 3028bis.

People are agreeing; I'm not arguing, honest...

mm



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44GkTGL085326; Wed, 4 May 2005 09:46:29 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j44GkTNa085325; Wed, 4 May 2005 09:46:29 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [209.55.107.55]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44GkSwo085319 for <ietf-mta-filters@imc.org>; Wed, 4 May 2005 09:46:28 -0700 (PDT) (envelope-from ned.freed@mrochek.com)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: TEXT/PLAIN; CHARSET=us-ascii
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01LNUOKZTBFK00004T@mauve.mrochek.com> for ietf-mta-filters@imc.org; Wed, 04 May 2005 09:46:26 -0700 (PDT)
Cc: Mark E Mallett <mem@mv.mv.com>, Tony Finch <dot@dotat.at>, ietf-mta-filters@imc.org
Date: Wed, 04 May 2005 09:27:44 -0700 (PDT)
From: ned.freed@mrochek.com
In-reply-to: "Your message dated Wed, 04 May 2005 17:48:22 +0200" <1115221702.11776.52.camel@chico.njus.no>
Message-id: <01LNUTMMES6O00004T@mauve.mrochek.com>
References: <20050503180747.GB54862@osmium.mv.net> <E1DTHle-0005fV-00@chiark.greenend.org.uk> <20050504141143.GB85678@osmium.mv.net> <1115221702.11776.52.camel@chico.njus.no>
Subject: Re: vacation and envelope-to: another try
To: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> On Wed, 2005-05-04 at 10:11 -0400, Mark E. Mallett wrote:
> > PS: my own implementation uses the final delivery address as the address
> > in the 'envelope "to"' sieve test, contrary to RFC3028 which says that
> > the SMTP RCPT TO address must be used.  You all can tell me how wrong
> > this choice of implementation is, and I would simply have to agree that
> > it's a violation, but I just don't find the RCPT TO address to be of
> > anywhere near as much interest to the script as the actual resolved
> > individual delivery address; not to mention the fact that the RCPT TO
> > address can't nececessarily be guaranteed to be consistent as
> > implementations evolve.

> _which_ SMTP RCPT TO?

Exactly what I was thinking.

> in many environments, the expansion happens at one server and delivery
> at another.  it's simply impossible to pass information about the
> "original" RCPT TO on to the next server when the alias is an actual
> expansion (ie. more than one recipient address).

And more to the point, the fact that a given recipient address hasn't actually
appeared in an SMTP dialogue in a RCPT TO field is 100% irrelevant. The message
envelope and its associated list of recipients is an abstraction that manifests
in a variety of ways, including but not limited to SMTP commands.

Another way to look at it is that when we talk about RCPT TO addresses we're
referring to the addresses in the envelope recipient list, not to those
addresses in the specific case where they happen to appear in SMTP. The
terminology choie is unfortunate, but after over 20 years changing it is simply
not realistic.

> 3028 even says as much:

>    If one of the envelope-part strings is (case insensitive) "to", then
>    matching occurs against the TO address used in the SMTP RCPT command
>    that resulted in this message getting delivered to this user.  Note
>    that only the most recent TO is available, and only the one relevant
>    to this user.

> what's a "final delivery address"?

FWIW it's defined, more or less, as part of the NOTARY specifications.

> in our case with Cyrus as the server, the delivery address isn't
> necessarily a routable e-mail address(!), as it's rewritten from
> f.m.lastname+detail@domain to username+detail@domain.  in other words,
> our system is contrary to RFC 3028, too.  (I should point out that Cyrus
> can be used in a strictly compliant manner, but not at our site.)

There are really two issues here that overlap to some extent. One is the issue
that arises when a recipient address gets turned into something that isn't
globally meaningful or usable. properly. The other is what address to expose to
sieve for the purposes of performing envelope recipient tests.

THe overlap is only partial since there can be multiple global addresses
involved in addition to local addresses, so the choice of address to
expose isn't simply local/global.

Quite a few systems, ours included, use oddball local address forms at the
point of final delivery. I personally don't like this much, but in our case the
design was a fait accompli long before I was even involved. Even so, when this
is done the goal needs to be to minimize exposure of these local address forms,
for one simple reason: They don't work when someone enters then into their
email client.

As far as selecting the right address to use in envelope tests goes, I like to
apply the least astonishment principle: Use the address the user expects.

> IMO it is a reasonable interpretation to use the _latest_ ("final" if
> you will) recipient address.  never mind the fact that the latest RCPT
> TO happened across LMTP rather than SMTP. 

Or even if there was no protocol involved at all.

> I think the base spec should
> be changed to reflect this more clearly.  I would prefer wording which
> allowed Cyrus to work like today, leaving alias knowledge to the MTA.
> changing "SMTP" to "SMTP or LMTP" is sufficient for that, but it
> probably won't do for Mark.  suggestions?

I tend to use the term "envelope recipient" or "final envelope recipient" or
something similar if I'm trying to avoid tying things to SMTP specifically. But
the reality is that the term "RCPT TO" is now used all the time for this even
when SMTP isn't necessarily part of the picture.

				Ned



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44Ge4Gu083767; Wed, 4 May 2005 09:40:04 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j44Ge4Cb083766; Wed, 4 May 2005 09:40:04 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from pat.uio.no (IDENT:7411@pat.uio.no [129.240.130.16]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44Ge3pK083751 for <ietf-mta-filters@imc.org>; Wed, 4 May 2005 09:40:03 -0700 (PDT) (envelope-from kjetilho@ifi.uio.no)
Received: from mail-mx1.uio.no ([129.240.10.29]) by pat.uio.no with esmtp (Exim 4.43) id 1DTMui-00014X-4F; Wed, 04 May 2005 18:39:56 +0200
Received: from 80.80-202-166.nextgentel.com ([80.202.166.80] helo=chico.njus.no) by mail-mx1.uio.no with esmtpsa (TLSv1:RC4-MD5:128) (Exim 4.43) id 1DTMue-00064c-QL; Wed, 04 May 2005 18:39:52 +0200
Subject: Re: vacation and envelope-to: another try
From: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
To: "Mark E. Mallett" <mem@mv.mv.com>
Cc: Tony Finch <dot@dotat.at>, ietf-mta-filters@imc.org
In-Reply-To: <1115221702.11776.52.camel@chico.njus.no>
References: <20050503180747.GB54862@osmium.mv.net> <E1DTHle-0005fV-00@chiark.greenend.org.uk> <20050504141143.GB85678@osmium.mv.net> <1115221702.11776.52.camel@chico.njus.no>
Content-Type: text/plain
Date: Wed, 04 May 2005 18:39:46 +0200
Message-Id: <1115224786.11776.57.camel@chico.njus.no>
Mime-Version: 1.0
X-Mailer: Evolution 2.2.1 
Content-Transfer-Encoding: 7bit
X-UiO-Spam-info: not spam, SpamAssassin (score=-2.882, required 12, autolearn=disabled, AWL 2.07, FORGED_RCVD_HELO 0.05, UIO_MAIL_IS_INTERNAL -5.00)
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Wed, 2005-05-04 at 17:48 +0200, Kjetil Torgrim Homme wrote:
> IMO it is a reasonable interpretation to use the _latest_ ("final" if
> you will) recipient address.  never mind the fact that the latest RCPT
> TO happened across LMTP rather than SMTP.  I think the base spec should
> be changed to reflect this more clearly.  I would prefer wording which
> allowed Cyrus to work like today, leaving alias knowledge to the MTA.
> changing "SMTP" to "SMTP or LMTP" is sufficient for that, but it
> probably won't do for Mark.  suggestions?

I'm embarrassed to admit that my reading skills are extremely lacking.
RFC 3028 says, just two paragraphs down from my earlier quote:

   If a protocol other than SMTP is used for message transport,
   implementations are expected to adapt this command appropriately.

so the spec is fine already, IMHO.
-- 
Kjetil T.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44FmfuL075843; Wed, 4 May 2005 08:48:41 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j44Fmfbm075842; Wed, 4 May 2005 08:48:41 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from pat.uio.no (IDENT:7411@pat.uio.no [129.240.130.16]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44Fmd3K075824 for <ietf-mta-filters@imc.org>; Wed, 4 May 2005 08:48:40 -0700 (PDT) (envelope-from kjetilho@ifi.uio.no)
Received: from mail-mx2.uio.no ([129.240.10.30]) by pat.uio.no with esmtp (Exim 4.43) id 1DTM70-0002tc-LW; Wed, 04 May 2005 17:48:34 +0200
Received: from 80.80-202-166.nextgentel.com ([80.202.166.80] helo=chico.njus.no) by mail-mx2.uio.no with esmtpsa (TLSv1:RC4-MD5:128) (Exim 4.43) id 1DTM6v-0000Im-BT; Wed, 04 May 2005 17:48:29 +0200
Subject: Re: vacation and envelope-to: another try
From: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
To: "Mark E. Mallett" <mem@mv.mv.com>
Cc: Tony Finch <dot@dotat.at>, ietf-mta-filters@imc.org
In-Reply-To: <20050504141143.GB85678@osmium.mv.net>
References: <20050503180747.GB54862@osmium.mv.net> <E1DTHle-0005fV-00@chiark.greenend.org.uk> <20050504141143.GB85678@osmium.mv.net>
Content-Type: text/plain
Date: Wed, 04 May 2005 17:48:22 +0200
Message-Id: <1115221702.11776.52.camel@chico.njus.no>
Mime-Version: 1.0
X-Mailer: Evolution 2.2.1 
Content-Transfer-Encoding: 7bit
X-UiO-Spam-info: not spam, SpamAssassin (score=-2.894, required 12, autolearn=disabled, AWL 2.06, FORGED_RCVD_HELO 0.05, UIO_MAIL_IS_INTERNAL -5.00)
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Wed, 2005-05-04 at 10:11 -0400, Mark E. Mallett wrote:
> PS: my own implementation uses the final delivery address as the address
> in the 'envelope "to"' sieve test, contrary to RFC3028 which says that
> the SMTP RCPT TO address must be used.  You all can tell me how wrong
> this choice of implementation is, and I would simply have to agree that
> it's a violation, but I just don't find the RCPT TO address to be of
> anywhere near as much interest to the script as the actual resolved
> individual delivery address; not to mention the fact that the RCPT TO
> address can't nececessarily be guaranteed to be consistent as
> implementations evolve.

_which_ SMTP RCPT TO?

in many environments, the expansion happens at one server and delivery
at another.  it's simply impossible to pass information about the
"original" RCPT TO on to the next server when the alias is an actual
expansion (ie. more than one recipient address).  3028 even says as
much:

   If one of the envelope-part strings is (case insensitive) "to", then
   matching occurs against the TO address used in the SMTP RCPT command
   that resulted in this message getting delivered to this user.  Note
   that only the most recent TO is available, and only the one relevant
   to this user.

what's a "final delivery address"?

in our case with Cyrus as the server, the delivery address isn't
necessarily a routable e-mail address(!), as it's rewritten from
f.m.lastname+detail@domain to username+detail@domain.  in other words,
our system is contrary to RFC 3028, too.  (I should point out that Cyrus
can be used in a strictly compliant manner, but not at our site.)

IMO it is a reasonable interpretation to use the _latest_ ("final" if
you will) recipient address.  never mind the fact that the latest RCPT
TO happened across LMTP rather than SMTP.  I think the base spec should
be changed to reflect this more clearly.  I would prefer wording which
allowed Cyrus to work like today, leaving alias knowledge to the MTA.
changing "SMTP" to "SMTP or LMTP" is sufficient for that, but it
probably won't do for Mark.  suggestions?
-- 
Kjetil T.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44ET51g064536; Wed, 4 May 2005 07:29:05 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j44ET4Q2064533; Wed, 4 May 2005 07:29:05 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [209.55.107.55]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44ET4iT064517 for <ietf-mta-filters@imc.org>; Wed, 4 May 2005 07:29:04 -0700 (PDT) (envelope-from ned.freed@mrochek.com)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: TEXT/PLAIN; CHARSET=us-ascii; format=flowed
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01LNUOKZTBFK00004T@mauve.mrochek.com> for ietf-mta-filters@imc.org; Wed, 04 May 2005 07:29:01 -0700 (PDT)
Cc: ietf-mta-filters@imc.org, ned.freed@mrochek.com, Mark E Mallett <mem@mv.mv.com>
Date: Wed, 04 May 2005 07:24:32 -0700 (PDT)
From: ned.freed@mrochek.com
In-reply-to: "Your message dated Wed, 04 May 2005 13:09:07 +0200" <MOo4g0gacEvL9ci3cUuLlw.md5@libertango.oryx.com>
Message-id: <01LNUOU84MK200004T@mauve.mrochek.com>
References: <20050503180747.GB54862@osmium.mv.net> <01LNTJVSUBH600004T@mauve.mrochek.com> <MOo4g0gacEvL9ci3cUuLlw.md5@libertango.oryx.com>
Subject: Re: vacation and envelope-to: another try
To: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> ned.freed@mrochek.com writes:
> > I have no problem calling out that the current envelope recipient
> > address as an additional source of information for this check. I'll
> > add text to this effect to the revision.

> Make sure to define "current envelope recipient address" as the address
> _after_ alias resolution at the final destination, ie. not the address
> seen in the SMTP conversation. Otherwise mail to team@example.com would
> likely trigger vacation responses from all absent team members.

By definition sieve operates at or around the time of final delivery. Aliases
necessarily have to be expanded prior to this point. I suppose an
implementation could have squirreled away original address information
somewhere/somehow, but how someone could mistakenly see it as appropriate to
use this material as a "current envelope address" escapes me.

Nevertheless, if it makes people feel better, I'll change the phrase to
read "final recipient address".

				Ned



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44ELVXP063452; Wed, 4 May 2005 07:21:31 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j44ELVjK063451; Wed, 4 May 2005 07:21:31 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [209.55.107.55]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44ELUQM063439 for <ietf-mta-filters@imc.org>; Wed, 4 May 2005 07:21:30 -0700 (PDT) (envelope-from ned.freed@mrochek.com)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: TEXT/PLAIN; CHARSET=us-ascii; format=flowed
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01LNTOF1KDYO00004T@mauve.mrochek.com> for ietf-mta-filters@imc.org; Wed, 04 May 2005 07:21:26 -0700 (PDT)
Cc: ietf-mta-filters@imc.org, Mark E Mallett <mem@mv.mv.com>
Date: Wed, 04 May 2005 07:20:35 -0700 (PDT)
From: ned.freed@mrochek.com
In-reply-to: "Your message dated Wed, 04 May 2005 13:24:26 +0200" <HYSXYdZG9oL3Q2XYdM078g.md5@libertango.oryx.com>
Message-id: <01LNUOKU1Z3200004T@mauve.mrochek.com>
References: <200505020435.j424Z4qL003108@lab.smi.sendmail.com> <027EC2DE6AB1BF03826241EF@ninevah.local> <20050503164754.GD35328@osmium.mv.net> <HYSXYdZG9oL3Q2XYdM078g.md5@libertango.oryx.com>
Subject: Re: Responses to comments on draft-ietf-sieve-editheader-00.txt
To: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> Mark E. Mallett writes (about replaceheader)
> > To me, it's "pick your evil." One adds to the proliferation of
> > extensions, and separates things that really should be together. The
> > other delays the standardization of 2/3 of those things.

> I think that view is too optimisic. I think the other _prevents_, etc.

> If we repeat the 2003 discussion now, what will that change? AFAICT,
> nothing. I can't think of anything that has changed in the past two
> years, so we'll just spend a few months, arrive at the same conclusion
> as last time, and the draft will be x more months delayed.

Speaking as one of the people who wanted replaceheader back, I reluctantly
have to agree with this assessment. Let's move forward with what's there
now.

				Ned



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44EBjAS062061; Wed, 4 May 2005 07:11:45 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j44EBj2r062060; Wed, 4 May 2005 07:11:45 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mv.mv.com (osmium.mv.net [199.125.85.152]) by above.proper.com (8.12.11/8.12.9) with SMTP id j44EBiMY062054 for <ietf-mta-filters@imc.org>; Wed, 4 May 2005 07:11:44 -0700 (PDT) (envelope-from mem@mv.mv.com)
Received: (qmail 98512 invoked by uid 101); 4 May 2005 10:11:44 -0400
From: "Mark E. Mallett" <mem@mv.mv.com>
Date: Wed, 4 May 2005 10:11:43 -0400
To: Tony Finch <dot@dotat.at>
Cc: mem@mv.mv.com, ietf-mta-filters@imc.org
Subject: Re: vacation and envelope-to: another try
Message-ID: <20050504141143.GB85678@osmium.mv.net>
References: <20050503180747.GB54862@osmium.mv.net> <E1DTHle-0005fV-00@chiark.greenend.org.uk>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <E1DTHle-0005fV-00@chiark.greenend.org.uk>
User-Agent: Mutt/1.4.2.1i
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Wed, May 04, 2005 at 12:10:14PM +0100, Tony Finch wrote:
> "Mark E. Mallett" <mem@mv.mv.com> wrote:
> >
> >   "Vacation" MUST NOT respond to a message unless a valid email address
> >   for the recipient appears in a "To", "Cc", "Bcc", "Resent-To",
> >   "Resent-Cc", or "Resent-Bcc" line of the original message.  An email
> >   address is valid for the recipient only if it is one of: an email
> >   address known by the implementation to belong to the recipient; the
> >   envelope recipient address if it's available to the implementation;
> >   any other address specified by the script writer via the ":addresses"
> >   tagged option.
> 
> This fails if the envelope recipient address is an alias that expands to
> more than one address before delivery to the user in question. The
> intermediate results of expansion might not be available to the Sieve
> implementation.

Absolutely- what I had in mind was the final recipient address; the
personal email address that had been resolved and resulted in the
ultimate delivery to the user.  If it's available to the implementation,
of course.  This is what I attempted to describe in narrative, and
referring to it as "envelope recipient" is probably one place where I
confused things (see below too).  Using the "RCPT TO" address or any
unexpanded multi-recipient alias for this test would certainly be wrong.

-mm-

PS: my own implementation uses the final delivery address as the address
in the 'envelope "to"' sieve test, contrary to RFC3028 which says that
the SMTP RCPT TO address must be used.  You all can tell me how wrong
this choice of implementation is, and I would simply have to agree that
it's a violation, but I just don't find the RCPT TO address to be of
anywhere near as much interest to the script as the actual resolved
individual delivery address; not to mention the fact that the RCPT TO
address can't nececessarily be guaranteed to be consistent as
implementations evolve.  For example, an environment might at some point
expand aliases by re-injecting the individual addresses via SMTP or LMTP
where it didn't do so before.  The fact that I've implemented it this
way has colored the way I've talked about it in this thread, which is a
big error on my part.  Sorry about that.  I still stand by the actual
suggestion, though.

(Maybe a better way to provide this rfc-violating envelope test would be
to use a different "envelope-part" keyword.)



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44BHppa003659; Wed, 4 May 2005 04:17:51 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j44BHpm8003658; Wed, 4 May 2005 04:17:51 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from libertango.oryx.com (libertango.oryx.com [195.30.94.163]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44BHppQ003641 for <ietf-mta-filters@imc.org>; Wed, 4 May 2005 04:17:51 -0700 (PDT) (envelope-from arnt@gulbrandsen.priv.no)
Message-Id: <HYSXYdZG9oL3Q2XYdM078g.md5@libertango.oryx.com>
Date: Wed, 4 May 2005 13:24:26 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
To: ietf-mta-filters@imc.org
Subject: Re: Responses to comments on draft-ietf-sieve-editheader-00.txt
Cc: "Mark E. Mallett" <mem@mv.mv.com>
References: <200505020435.j424Z4qL003108@lab.smi.sendmail.com> <027EC2DE6AB1BF03826241EF@ninevah.local> <20050503164754.GD35328@osmium.mv.net>
In-Reply-To: <20050503164754.GD35328@osmium.mv.net>
Content-Type: text/plain; format=flowed
MIME-Version: 1.0
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Mark E. Mallett writes (about replaceheader)
> To me, it's "pick your evil." One adds to the proliferation of 
> extensions, and separates things that really should be together. The 
> other delays the standardization of 2/3 of those things.

I think that view is too optimisic. I think the other _prevents_, etc.

If we repeat the 2003 discussion now, what will that change? AFAICT, 
nothing. I can't think of anything that has changed in the past two 
years, so we'll just spend a few months, arrive at the same conclusion 
as last time, and the draft will be x more months delayed.

Arnt



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44BALHd099909; Wed, 4 May 2005 04:10:21 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j44BALhI099908; Wed, 4 May 2005 04:10:21 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from chiark.greenend.org.uk (mail@chiark.greenend.org.uk [193.201.200.170]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44BAKYP099884 for <ietf-mta-filters@imc.org>; Wed, 4 May 2005 04:10:20 -0700 (PDT) (envelope-from fanf@chiark.greenend.org.uk)
Received: by chiark.greenend.org.uk (Debian Exim 3.35 #1) with local (return-path fanf@chiark.greenend.org.uk) id 1DTHle-0005fV-00; Wed, 04 May 2005 12:10:14 +0100
To: mem@mv.mv.com
From: Tony Finch <dot@dotat.at>
Cc: ietf-mta-filters@imc.org
Subject: Re: vacation and envelope-to: another try
In-Reply-To: <20050503180747.GB54862@osmium.mv.net>
Message-Id: <E1DTHle-0005fV-00@chiark.greenend.org.uk>
Date: Wed, 04 May 2005 12:10:14 +0100
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

"Mark E. Mallett" <mem@mv.mv.com> wrote:
>
>   "Vacation" MUST NOT respond to a message unless a valid email address
>   for the recipient appears in a "To", "Cc", "Bcc", "Resent-To",
>   "Resent-Cc", or "Resent-Bcc" line of the original message.  An email
>   address is valid for the recipient only if it is one of: an email
>   address known by the implementation to belong to the recipient; the
>   envelope recipient address if it's available to the implementation;
>   any other address specified by the script writer via the ":addresses"
>   tagged option.

This fails if the envelope recipient address is an alias that expands to
more than one address before delivery to the user in question. The
intermediate results of expansion might not be available to the Sieve
implementation.

Tony.
-- 
f.a.n.finch  <dot@dotat.at>  http://dotat.at/
LYME REGIS TO LANDS END INCLUDING THE ISLES OF SCILLY: NORTH 4 OR 5, LOCALLY 6
AT FIRST, DECREASING 3 OR 4. FAIR, RISK OF RAIN AT FIRST. MAINLY GOOD.
MODERATE TO ROUGH BECOMING SLIGHT TO MODERATE.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44B2YTF097143; Wed, 4 May 2005 04:02:34 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j44B2Y3k097142; Wed, 4 May 2005 04:02:34 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from libertango.oryx.com (libertango.oryx.com [195.30.94.163]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j44B2WIu097120 for <ietf-mta-filters@imc.org>; Wed, 4 May 2005 04:02:34 -0700 (PDT) (envelope-from arnt@gulbrandsen.priv.no)
Message-Id: <MOo4g0gacEvL9ci3cUuLlw.md5@libertango.oryx.com>
Date: Wed, 4 May 2005 13:09:07 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
To: ietf-mta-filters@imc.org
Subject: Re: vacation and envelope-to: another try
Cc: ned.freed@mrochek.com, Mark E Mallett <mem@mv.mv.com>
References: <20050503180747.GB54862@osmium.mv.net> <01LNTJVSUBH600004T@mauve.mrochek.com>
In-Reply-To: <01LNTJVSUBH600004T@mauve.mrochek.com>
Content-Type: text/plain; format=flowed
MIME-Version: 1.0
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

ned.freed@mrochek.com writes:
> I have no problem calling out that the current envelope recipient 
> address as an additional source of information for this check. I'll 
> add text to this effect to the revision.

Make sure to define "current envelope recipient address" as the address 
_after_ alias resolution at the final destination, ie. not the address 
seen in the SMTP conversation. Otherwise mail to team@example.com would 
likely trigger vacation responses from all absent team members.

Arnt



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43M0Zi3089240; Tue, 3 May 2005 15:00:35 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j43M0Zih089239; Tue, 3 May 2005 15:00:35 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from pat.uio.no (IDENT:7411@pat.uio.no [129.240.130.16]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43M0XoT089212 for <ietf-mta-filters@imc.org>; Tue, 3 May 2005 15:00:34 -0700 (PDT) (envelope-from kjetilho@ifi.uio.no)
Received: from mail-mx1.uio.no ([129.240.10.29]) by pat.uio.no with esmtp (Exim 4.43) id 1DT5RH-0007YT-Tb; Wed, 04 May 2005 00:00:24 +0200
Received: from 80.80-202-166.nextgentel.com ([80.202.166.80] helo=chico.njus.no) by mail-mx1.uio.no with esmtpsa (TLSv1:RC4-MD5:128) (Exim 4.43) id 1DT5RD-0000Hy-3W; Wed, 04 May 2005 00:00:19 +0200
Subject: Re: Collected comments for draft-ietf-sieve-body-00.txt
From: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>
To: "Mark E. Mallett" <mem@mv.mv.com>
Cc: Philip Guenther <guenther+mtafilters@sendmail.com>, ietf-mta-filters@imc.org
In-Reply-To: <20050503163739.GC35328@osmium.mv.net>
References: <424A85CD.4040906@isode.com> <200505020127.j421REDY086939@lab.smi.sendmail.com> <20050503163739.GC35328@osmium.mv.net>
Content-Type: text/plain
Date: Wed, 04 May 2005 00:00:07 +0200
Message-Id: <1115157607.1617.6.camel@chico.njus.no>
Mime-Version: 1.0
X-Mailer: Evolution 2.2.1 
Content-Transfer-Encoding: 7bit
X-UiO-Spam-info: not spam, SpamAssassin (score=-2.854, required 12, autolearn=disabled, AWL 2.10, FORGED_RCVD_HELO 0.05, UIO_MAIL_IS_INTERNAL -5.00)
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Tue, 2005-05-03 at 12:37 -0400, Mark E. Mallett wrote:
> On Sun, May 01, 2005 at 06:27:14PM -0700, Philip Guenther wrote:
> > An implementation that wanted to support it could enable capturing
> > from 'body' matches into variables using another extension...
> 
> Yikes.  My vote is still to allow the match results to be set from a
> body test; requiring another extension just to do that seems like
> planning for a patch to correct the lack of it.  As always, that's just
> MHO; I don't really understand why setting the match result is not
> wanted.  What's the reason for forbidding it?  As I say, it's unfriendly
> to a general match implementation.  If it's a matter of protecting
> against huge match strings, I'd rather see some pragmatic limits (as I
> said in the thread previously, along with other bits about pragmatic
> limits on body testing).

indeed the variables draft includes this text which was meant to cover
this issue:

6.  Implementation Limits
   
   An implementation of this draft MUST support at least 128 distinct
   variables.  The supported length of variable names MUST be at least
   32 characters.  Each variable MUST be able to hold at least 4000
   characters.  Attempts to set the variable to a value larger than what
   the implementation supports SHOULD be reported as an error at
   compile-time if possible.  If the attempt is discovered during run-
   time, the value SHOULD be truncated and it MUST NOT be treated as an
   error.

-- 
Kjetil T.



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43J2OHe059049; Tue, 3 May 2005 12:02:24 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j43J2O2l059048; Tue, 3 May 2005 12:02:24 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mv.mv.com (osmium.mv.net [199.125.85.152]) by above.proper.com (8.12.11/8.12.9) with SMTP id j43J2Lo2059038 for <ietf-mta-filters@imc.org>; Tue, 3 May 2005 12:02:23 -0700 (PDT) (envelope-from mem@mv.mv.com)
Received: (qmail 64592 invoked by uid 101); 3 May 2005 15:02:20 -0400
From: "Mark E. Mallett" <mem@mv.mv.com>
Date: Tue, 3 May 2005 15:02:20 -0400
To: ned.freed@mrochek.com
Cc: Mark E Mallett <mem@mv.mv.com>, ietf-mta-filters@imc.org
Subject: Re: vacation and envelope-to: another try
Message-ID: <20050503190220.GA7908@osmium.mv.net>
References: <20050503180747.GB54862@osmium.mv.net> <01LNTJVSUBH600004T@mauve.mrochek.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <01LNTJVSUBH600004T@mauve.mrochek.com>
User-Agent: Mutt/1.4.2.1i
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Tue, May 03, 2005 at 11:42:16AM -0700, ned.freed@mrochek.com wrote:
> > I'm not sure why this was controversial the last time, but I'm hoping
> > it was only the way I said it and not what I was saying.  If this
> > is still a bad suggestion for some reason, I'd like to hear why..
> 
> It was controversial because you suggested replacing knowledge of the
> recipient's address with simply using the current envelope recipient address. I
> don't think encouraging implementations to rely solely on envelope recipient
> address information is a good idea.

I haven't changed what I was suggesting at all, at least not in my mind.
Sorry if it was not clear the first time; if it's better this time, I'm
glad.


> I have no problem calling out that the current envelope recipient address
> as an additional source of information for this check. I'll add text to
> this effect to the revision.

Cool.

Yours,
mm



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43IulEX058158; Tue, 3 May 2005 11:56:47 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j43IulW5058157; Tue, 3 May 2005 11:56:47 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [209.55.107.55]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43IukgI058143 for <ietf-mta-filters@imc.org>; Tue, 3 May 2005 11:56:46 -0700 (PDT) (envelope-from ned.freed@mrochek.com)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: TEXT/PLAIN; CHARSET=us-ascii
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01LNTDVHA9Z400004T@mauve.mrochek.com> for ietf-mta-filters@imc.org; Tue, 03 May 2005 11:56:43 -0700 (PDT)
Cc: ietf-mta-filters@imc.org
Date: Tue, 03 May 2005 11:42:16 -0700 (PDT)
From: ned.freed@mrochek.com
In-reply-to: "Your message dated Tue, 03 May 2005 14:07:47 -0400" <20050503180747.GB54862@osmium.mv.net>
Message-id: <01LNTJVSUBH600004T@mauve.mrochek.com>
References: <20050503180747.GB54862@osmium.mv.net>
Subject: Re: vacation and envelope-to: another try
To: Mark E Mallett <mem@mv.mv.com>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> Hi-

> I wanted to bring this one point up again since I failed so miserably at
> it the last time.  So another try:


> 3.5  Address Parameter and Limiting Replies to Personal Messages

>    > "Vacation" MUST NOT respond to a message unless the user's email
>    > address is in a "To", "Cc", "Bcc", "Resent-To", "Resent-Cc", or
>    > "Resent-Bcc" line of the original message.  Implementations are
>    > assumed to know the user's email address, but users may have
>    > additional addresses beyond the control of the local mail system.

> I'd like to add that the envelope recipient address, if available,
> qualifies as a known address.  In some other words:

>    "Vacation" MUST NOT respond to a message unless a valid email address
>    for the recipient appears in a "To", "Cc", "Bcc", "Resent-To",
>    "Resent-Cc", or "Resent-Bcc" line of the original message.  An email
>    address is valid for the recipient only if it is one of: an email
>    address known by the implementation to belong to the recipient; the
>    envelope recipient address if it's available to the implementation;
>    any other address specified by the script writer via the ":addresses"
>    tagged option.

> The point being that the envelope recipient address is valid for the
> recipient (since the receiving system obviously has delivered it to the
> script), and (in the spirit of RFC3834) its presence in one of those
> headers should validate the incoming message as an individually directed
> message that can be autoresponded to.  A script writer shouldn't have to
> list all possible valid envelope recipient addresses in :addresses when
> they have, in effect, been listed algorithmically.

> Perhaps this is assumed to be covered by "implementations are assumed to
> know the user's email address" but I would not read that sentence that
> way and I wouldn't expect other readers of the RFC to make that leap.

> I'm not sure why this was controversial the last time, but I'm hoping
> it was only the way I said it and not what I was saying.  If this
> is still a bad suggestion for some reason, I'd like to hear why..

It was controversial because you suggested replacing knowledge of the
recipient's address with simply using the current envelope recipient address. I
don't think encouraging implementations to rely solely on envelope recipient
address information is a good idea.

I have no problem calling out that the current envelope recipient address
as an additional source of information for this check. I'll add text to
this effect to the revision.

				Ned



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43I7rjr050873; Tue, 3 May 2005 11:07:53 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j43I7rHI050872; Tue, 3 May 2005 11:07:53 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mv.mv.com (osmium.mv.net [199.125.85.152]) by above.proper.com (8.12.11/8.12.9) with SMTP id j43I7pFc050850 for <ietf-mta-filters@imc.org>; Tue, 3 May 2005 11:07:52 -0700 (PDT) (envelope-from mem@mv.mv.com)
Received: (qmail 79059 invoked by uid 101); 3 May 2005 14:07:47 -0400
From: "Mark E. Mallett" <mem@mv.mv.com>
Date: Tue, 3 May 2005 14:07:47 -0400
To: ietf-mta-filters@imc.org
Subject: vacation and envelope-to: another try
Message-ID: <20050503180747.GB54862@osmium.mv.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.4.2.1i
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Hi-

I wanted to bring this one point up again since I failed so miserably at
it the last time.  So another try:


3.5  Address Parameter and Limiting Replies to Personal Messages

   > "Vacation" MUST NOT respond to a message unless the user's email
   > address is in a "To", "Cc", "Bcc", "Resent-To", "Resent-Cc", or
   > "Resent-Bcc" line of the original message.  Implementations are
   > assumed to know the user's email address, but users may have
   > additional addresses beyond the control of the local mail system.

I'd like to add that the envelope recipient address, if available,
qualifies as a known address.  In some other words:

   "Vacation" MUST NOT respond to a message unless a valid email address
   for the recipient appears in a "To", "Cc", "Bcc", "Resent-To",
   "Resent-Cc", or "Resent-Bcc" line of the original message.  An email
   address is valid for the recipient only if it is one of: an email
   address known by the implementation to belong to the recipient; the
   envelope recipient address if it's available to the implementation;
   any other address specified by the script writer via the ":addresses"
   tagged option.

The point being that the envelope recipient address is valid for the
recipient (since the receiving system obviously has delivered it to the
script), and (in the spirit of RFC3834) its presence in one of those
headers should validate the incoming message as an individually directed
message that can be autoresponded to.  A script writer shouldn't have to
list all possible valid envelope recipient addresses in :addresses when
they have, in effect, been listed algorithmically.

Perhaps this is assumed to be covered by "implementations are assumed to
know the user's email address" but I would not read that sentence that
way and I wouldn't expect other readers of the RFC to make that leap.

I'm not sure why this was controversial the last time, but I'm hoping
it was only the way I said it and not what I was saying.  If this
is still a bad suggestion for some reason, I'd like to hear why..

Yours,
mm



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43GltUM037958; Tue, 3 May 2005 09:47:55 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j43Glt8K037957; Tue, 3 May 2005 09:47:55 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mv.mv.com (osmium.mv.net [199.125.85.152]) by above.proper.com (8.12.11/8.12.9) with SMTP id j43Gls60037941 for <ietf-mta-filters@imc.org>; Tue, 3 May 2005 09:47:54 -0700 (PDT) (envelope-from mem@mv.mv.com)
Received: (qmail 54431 invoked by uid 101); 3 May 2005 12:47:54 -0400
From: "Mark E. Mallett" <mem@mv.mv.com>
Date: Tue, 3 May 2005 12:47:54 -0400
To: ietf-mta-filters@imc.org
Subject: Re: Responses to comments on draft-ietf-sieve-editheader-00.txt
Message-ID: <20050503164754.GD35328@osmium.mv.net>
References: <200505020435.j424Z4qL003108@lab.smi.sendmail.com> <027EC2DE6AB1BF03826241EF@ninevah.local>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <027EC2DE6AB1BF03826241EF@ninevah.local>
User-Agent: Mutt/1.4.2.1i
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Mon, May 02, 2005 at 10:31:30AM -0400, Cyrus Daboo wrote:
> Hi Philip,
> 
> --On May 1, 2005 9:35:04 PM -0700 Philip Guenther 
> <guenther+mtafilters@sendmail.com> wrote:
> 
> >>FWIW, I miss it too.
> >
> >I'm not enthralled by the idea of bringing replaceheader back into
> >the draft at this late date, especially given how the complexity
> >issues were never resolved.  I somehow suspect that the ensuing
> >discussion would be a cut-and-paste of the one that took place two
> >years ago.
> >
> >Therefore, I am pushing back on these wistful thoughts.
> >
> 
> In the interests of getting editheader finished soon, I agree with this 
> approach, but I would like to hear from anyone who thinks replaceheader 
> really must be present (of course we can add it as an extension at some 
> later point if sufficient demand does arise later).

To me, it's "pick your evil."  One adds to the proliferation of
extensions, and separates things that really should be together.  The
other delays the standardization of 2/3 of those things.  Me, I'd vote
for the delay, especially considering that we can probably predict that
the "addheader/deleteheader" syntax is pretty well settled and it's not
much of a risk for people to start using that part of the extension.
e.g. I wonder how many implementations already include an "editheader"
extension that is being used despite not being standardized...

But I wouldn't be too upset about it going the other way, either.

mm



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43Gbf9S036604; Tue, 3 May 2005 09:37:41 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j43GbfuE036603; Tue, 3 May 2005 09:37:41 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mv.mv.com (osmium.mv.net [199.125.85.152]) by above.proper.com (8.12.11/8.12.9) with SMTP id j43GbdHg036597 for <ietf-mta-filters@imc.org>; Tue, 3 May 2005 09:37:39 -0700 (PDT) (envelope-from mem@mv.mv.com)
Received: (qmail 45141 invoked by uid 101); 3 May 2005 12:37:39 -0400
From: "Mark E. Mallett" <mem@mv.mv.com>
Date: Tue, 3 May 2005 12:37:39 -0400
To: Philip Guenther <guenther+mtafilters@sendmail.com>
Cc: ietf-mta-filters@imc.org
Subject: Re: Collected comments for draft-ietf-sieve-body-00.txt
Message-ID: <20050503163739.GC35328@osmium.mv.net>
References: <424A85CD.4040906@isode.com> <200505020127.j421REDY086939@lab.smi.sendmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <200505020127.j421REDY086939@lab.smi.sendmail.com>
User-Agent: Mutt/1.4.2.1i
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Sun, May 01, 2005 at 06:27:14PM -0700, Philip Guenther wrote:
> 
> >Mark E. Mallett wrote:
> >
> >>4.2 Body Transform ":content"
> >>
> >>   > The search for MIME parts matching the :content specification is
> >>   > recursive and automatically descends into multipart and
> >>   > message/rfc822 MIME parts.  Once a MIME part has been identified
> >>   > as suitable for searching, only its direct contents are searched
> >>   > for the key strings.
> >>
> >>If a message contains more than one testable part, I assume that the
> >>"body" result is the OR of the tests of all of them,
> ...
> >>This may seem obvious but it probably needs to be made explicit, no?
> 
> 
> Yeah.  To clarify, I've replaced the second/last sentence of that
> paragraph with:
> 	All MIME parts with matching types are searched for the key
> 	strings.

That doesn't actually do the clarification, though.  The question was
whether the search result is the OR of all the tests, or the AND of all
the tests.  That is, does a match in just one of the candidate parts
satisfy the test, or does the match have to appear in *all* of the
candidate parts.  What I said was that the former seems obvious to me,
but what seems obvious to one person may not be obvious to another, may
not be what was intended, and in any case probably should be said
explicitly.



> >>with a short-circuit exit.
> >>i.e., first match causes the body test to end and
> >>return a true result, whereas a non-match causes the body test to
> >>contine on to the next candidate mime part.
> 
> I don't see why short-circuiting needs to be mentioned, as it's
> simply an obvious optimization and has no effect on the visibile
> behavior.

It follows from the question of whether the match is OR or AND.  But
right, as long as that item is clarified, short-circuiting may not
have to be mentioned.



> >>5. Interaction with Other Sieve Extensions
> >>
> >>   > Regular and wildcard expressions used with "body" are exempt
> >>   > from the side effects described in [VARIABLES].  That is, they
> >>   > do not set numbered variables ${1}, ${2}... to the input
> >>   > values corresponding to wild card sequences in the matched
> >>   > pattern.
> >>
> >>I remember that this came up last fall, expressed this way:
> >>
> >>  >  QUESTION: Is it okay to have body :matches and
> >>  >  :regex scans not set variables?
> >>
> >>and the (small) concensus was a "yes" answer to that question.  I took
> >>that to mean that people thought it was OK for an implementation not to
> >>set the numbered variables-- not that an implementation would be
> >>prohibited from doing so.  This prohibition is unfriendly to
> >>general-purpose match logic.
> 
> An implementation that wanted to support it could enable capturing
> from 'body' matches into variables using another extension...

Yikes.  My vote is still to allow the match results to be set from a
body test; requiring another extension just to do that seems like
planning for a patch to correct the lack of it.  As always, that's just
MHO; I don't really understand why setting the match result is not
wanted.  What's the reason for forbidding it?  As I say, it's unfriendly
to a general match implementation.  If it's a matter of protecting
against huge match strings, I'd rather see some pragmatic limits (as I
said in the thread previously, along with other bits about pragmatic
limits on body testing).

mm



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43GNd7k034294; Tue, 3 May 2005 09:23:39 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j43GNdDi034293; Tue, 3 May 2005 09:23:39 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from mv.mv.com (osmium.mv.net [199.125.85.152]) by above.proper.com (8.12.11/8.12.9) with SMTP id j43GNceD034286 for <ietf-mta-filters@imc.org>; Tue, 3 May 2005 09:23:38 -0700 (PDT) (envelope-from mem@mv.mv.com)
Received: (qmail 42410 invoked by uid 101); 3 May 2005 12:23:37 -0400
From: "Mark E. Mallett" <mem@mv.mv.com>
Date: Tue, 3 May 2005 12:23:37 -0400
To: ietf-mta-filters@imc.org
Subject: Re: Change to "reject" action: compatible with fileinto/redirect?
Message-ID: <20050503162337.GB35328@osmium.mv.net>
References: <426FDE09.3090007@isode.com> <01LNMPCCTZPO00004T@mauve.mrochek.com> <4272A4A2.8030807@elvey.com> <01LNO61168YG00004T@mauve.mrochek.com> <4272C9CE.5020206@elvey.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4272C9CE.5020206@elvey.com>
User-Agent: Mutt/1.4.2.1i
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

On Fri, Apr 29, 2005 at 04:57:02PM -0700, Matthew Elvey wrote:
> ned.freed@mrochek.com sent forth electrons to *convey (among other 
> things) an interesting point*:
> 
> >...
> >I really don't want to do anything that has the potential to make 
> >reject more
> >popular than it already is.
> 
> Ok, I think you have a valid argument here.  Why cause trouble enhancing 
> something we're trying to render as obsolete and rarely used as possible?
> Ok, so we'll leave reject as is, and refuse as is? (the latter works 
> with "reject" and "discard", but the former doesn't.)

I still favor trying to overload "refuse" onto "reject" (so that the
implementation will interpret "reject" as "refuse" where possible,
maybe with the addition of optional tags that allow the script writer
to guide the behaviour) rather than introducing a new "refuse" keyword.
Or at least talking about it more.  But I suppose that's for the
"refuse" discussion.

mm



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43CioKD098754; Tue, 3 May 2005 05:44:50 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j43CioiS098753; Tue, 3 May 2005 05:44:50 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from libertango.oryx.com (libertango.oryx.com [195.30.94.163]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j43CimYI098726 for <ietf-mta-filters@imc.org>; Tue, 3 May 2005 05:44:49 -0700 (PDT) (envelope-from arnt@gulbrandsen.priv.no)
Message-Id: <qLUMf6GlQ6Q4lvYMOcBEmA.md5@libertango.oryx.com>
Date: Tue, 3 May 2005 14:51:19 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
To: ietf-mta-filters@imc.org
Subject: Re: Responses to comments on draft-ietf-sieve-editheader-00.txt
Cc: Philip Guenther <guenther+mtafilters@sendmail.com>
References: <200505020435.j424Z4qL003108@lab.smi.sendmail.com>
In-Reply-To: <200505020435.j424Z4qL003108@lab.smi.sendmail.com>
Content-Type: text/plain; format=flowed
MIME-Version: 1.0
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Philip Guenther writes:
> Arnt Gulbrandsen wrote:
>> Another minor point: If a message is rejected after being modified, 
>> which version of the message should be sent to the bounce address, 
>> the original message or the one with a modified header?
>
> The one with the modified header. This was covered by the "Actions 
> that create messages..." sentence in section 5, which I'm changing to 
> the "Actions that store or send the message..." sentence mentioned 
> above.

Fine with me.

Please note specifically that addheader/refuse won't use the modified 
message, though. (Yes, I realize that for all known current 
implementations, addheader/refuse isn't possible in the first place.)

It could be (I don't know, nor really care) that you should mention that 
addheader/reject in that order could expose information unintended, so 
users should be careful where appropriate.

> Now for the two ugly issues:
>
> Ned Freed wrote:
>> I think we need weasel words to the effect that changing the meaning 
>> of the MIME structure with addheader may not produce results that 
>> actually affect subsequent body or other MIME-related tests.
>
> (Also commented on by Arnt Gulbrandsen and William Leibzon)
>
> Does the following, added after the first example in section 5, give 
> the correct dose of leeway?

Yes.

I'm not entirely happy that people can change message-id et al, but I 
don't think it's a big deal either. Some people always find means to 
shoot their lower extremities, and giving them one more doesn't really 
matter.

Arnt



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j42HwuXX070630; Mon, 2 May 2005 10:58:56 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j42Hwu1l070629; Mon, 2 May 2005 10:58:56 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from foon.sendmail.com (tls.sendmail.com [209.246.26.40]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j42HwtW2070623 for <ietf-mta-filters@imc.org>; Mon, 2 May 2005 10:58:55 -0700 (PDT) (envelope-from guenther@sendmail.com)
Received: from lab.smi.sendmail.com ([10.210.100.93]) by foon.sendmail.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id j42HwqdO022536 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=OK); Mon, 2 May 2005 10:58:52 -0700
X-DomainKeys: Sendmail DomainKeys Filter v0.2.7 foon.sendmail.com j42HwqdO022536
DomainKey-Signature: a=rsa-sha1; s=tls; d=sendmail.com; c=nofws; q=dns; b=pz00O5/dp3Y7BdsIf7sb+blr/rzcHa/qtykUGPZ9l4lzxyWbK2RYhactyYRcDqg8M 3f+nY0WStZyee2aNNGTmbRaH0mlB+hoyZ6Hjinv53MIjmYviYzTpbU5px9gNg8C2wiT Lw+uweJvEtDhnqy/nRKDMb7ZMqnijLrLSVrUGpQ=
Received: from lab.smi.sendmail.com (localhost [127.0.0.1]) by lab.smi.sendmail.com (8.12.11/8.12.11) with ESMTP id j42Hwqau072732; Mon, 2 May 2005 10:58:52 -0700 (PDT) (envelope-from guenther@lab.smi.sendmail.com)
Message-Id: <200505021758.j42Hwqau072732@lab.smi.sendmail.com>
To: Cyrus Daboo <daboo@isamet.com>
From: Philip Guenther <guenther+mtafilters@sendmail.com>
cc: ietf-mta-filters@imc.org
Subject: Re: Responses to comments on draft-ietf-sieve-editheader-00.txt 
In-reply-to: <027EC2DE6AB1BF03826241EF@ninevah.local> 
References: <200505020435.j424Z4qL003108@lab.smi.sendmail.com>  <027EC2DE6AB1BF03826241EF@ninevah.local> 
Date: Mon, 02 May 2005 10:58:52 -0700
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Cyrus Daboo <daboo@isamet.com> writes:
>Philip Guenther <guenther@sendmail.com> wrote:
...
>> Therefore, I am pushing back on these wistful thoughts.
>
>In the interests of getting editheader finished soon, I agree with this 
>approach, but I would like to hear from anyone who thinks replaceheader 
>really must be present (of course we can add it as an extension at some 
>later point if sufficient demand does arise later).

For those who may have lost track of the discussion that led to
replaceheader being dropped, the relevant thread in the archives can be
found at:
    http://www.imc.org/ietf-mta-filters/mail-archive/msg01276.html

where it starts with Jutta's initial announcement of the editheader (and
copy and multiscript) drafts.


Philip Guenther



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j42HGIPU063236; Mon, 2 May 2005 10:16:18 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j42HGI9p063235; Mon, 2 May 2005 10:16:18 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from foon.sendmail.com (tls.sendmail.com [209.246.26.40]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j42HGITU063220 for <ietf-mta-filters@imc.org>; Mon, 2 May 2005 10:16:18 -0700 (PDT) (envelope-from guenther@sendmail.com)
Received: from lab.smi.sendmail.com ([10.210.100.93]) by foon.sendmail.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id j42HGFgs011138 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=OK); Mon, 2 May 2005 10:16:15 -0700
X-DomainKeys: Sendmail DomainKeys Filter v0.2.7 foon.sendmail.com j42HGFgs011138
DomainKey-Signature: a=rsa-sha1; s=tls; d=sendmail.com; c=nofws; q=dns; b=fqgtldnVNmYThCoc+pKrEJndO2293TlmCe2dKd5ECKM6TK4ei12/qq6zeD64byN0C NeFzzRPcvv1N+DYoRCBjCZnXKBtX6oa/vfhh/KU0sxI3IVYDz66tnI6L9+BE32socX0 FpMb5p2dCnEQ22nx7P54rTF1gfCniCwnvKJiOr0=
Received: from lab.smi.sendmail.com (localhost [127.0.0.1]) by lab.smi.sendmail.com (8.12.11/8.12.11) with ESMTP id j42HGFSK068645; Mon, 2 May 2005 10:16:15 -0700 (PDT) (envelope-from guenther@lab.smi.sendmail.com)
Message-Id: <200505021716.j42HGFSK068645@lab.smi.sendmail.com>
To: Nigel Swinson <Nigel.Swinson@rockliffe.com>
From: Philip Guenther <guenther+mtafilters@sendmail.com>
cc: ietf-mta-filters@imc.org
Subject: Re: Collected comments for draft-ietf-sieve-body-00.txt 
In-reply-to: <006301c54ef8$0f4a4a30$6501a8c0@nigelhome> 
References: <424A85CD.4040906@isode.com> <200505020127.j421REDY086939@lab.smi.sendmail.com>  <006301c54ef8$0f4a4a30$6501a8c0@nigelhome> 
Date: Mon, 02 May 2005 10:16:15 -0700
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Nigel Swinson <Nigel.Swinson@rockliffe.com> writes:
...
>>    If the :content specification matches a multipart MIME part,
>
>-    only the prologue and epilogue sections of the will be searched
>+   only the prologue and epilogue sections of the body part will be searched
>
>>    for the key strings; the contents of nested parts are only
>>    searched if their respective types match the :content specification.

Hmm, how about:
    If the :content specification matches a multipart MIME part,
    only the prologue and epilogue sections of the part will be
    searched for the key strings; <...>

(i.e., dropping the 'body' from your suggestion).


Philip Guenther



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j42EVlKF040405; Mon, 2 May 2005 07:31:47 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j42EVli4040404; Mon, 2 May 2005 07:31:47 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from darius.cyrusoft.com (darius.cyrusoft.com [63.163.82.2]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j42EViBR040383 for <ietf-mta-filters@imc.org>; Mon, 2 May 2005 07:31:46 -0700 (PDT) (envelope-from daboo@isamet.com)
Received: from [10.0.1.4] (pool-141-151-187-231.pitt.east.verizon.net [141.151.187.231]) (authenticated bits=0) by darius.cyrusoft.com (8.12.9/8.12.9) with ESMTP id j42EAs6g013348 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 2 May 2005 10:10:59 -0400
Date: Mon, 02 May 2005 10:31:30 -0400
From: Cyrus Daboo <daboo@isamet.com>
To: Philip Guenther <guenther+mtafilters@sendmail.com>, ietf-mta-filters@imc.org
Subject: Re: Responses to comments on draft-ietf-sieve-editheader-00.txt
Message-ID: <027EC2DE6AB1BF03826241EF@ninevah.local>
In-Reply-To: <200505020435.j424Z4qL003108@lab.smi.sendmail.com>
References:  <200505020435.j424Z4qL003108@lab.smi.sendmail.com>
X-Mailer: Mulberry/4.0.0b1 (Mac OS X)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
X-Spam-Status: No, hits=0.0 tests=none
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Hi Philip,

--On May 1, 2005 9:35:04 PM -0700 Philip Guenther 
<guenther+mtafilters@sendmail.com> wrote:

>> FWIW, I miss it too.
>
> I'm not enthralled by the idea of bringing replaceheader back into
> the draft at this late date, especially given how the complexity
> issues were never resolved.  I somehow suspect that the ensuing
> discussion would be a cut-and-paste of the one that took place two
> years ago.
>
> Therefore, I am pushing back on these wistful thoughts.
>

In the interests of getting editheader finished soon, I agree with this 
approach, but I would like to hear from anyone who thinks replaceheader 
really must be present (of course we can add it as an extension at some 
later point if sufficient demand does arise later).

-- 
Cyrus Daboo



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j429JXOZ033382; Mon, 2 May 2005 02:19:33 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j429JXPY033381; Mon, 2 May 2005 02:19:33 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from rockpub3.rockliffe.com (rockpub3.rockliffe.com [147.208.128.12]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j429JXbI033339 for <ietf-mta-filters@imc.org>; Mon, 2 May 2005 02:19:33 -0700 (PDT) (envelope-from Nigel.Swinson@rockliffe.com)
X-Spam-Score: 1
Received: from nigelhome (unverified [10.42.40.203]) by rockliffe.com (Rockliffe SMTPRA 6.1.19) with ESMTP id <B0001893923@mail.rockliffe.com>; Mon, 2 May 2005 02:19:28 -0700
Message-ID: <006301c54ef8$0f4a4a30$6501a8c0@nigelhome>
From: "Nigel Swinson" <Nigel.Swinson@rockliffe.com>
To: "Philip Guenther" <guenther+mtafilters@sendmail.com>
Cc: <ietf-mta-filters@imc.org>
References: <424A85CD.4040906@isode.com>  <200505020127.j421REDY086939@lab.smi.sendmail.com>
Subject: Re: Collected comments for draft-ietf-sieve-body-00.txt 
Date: Mon, 2 May 2005 10:19:34 +0100
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1437
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by above.proper.com id j429JXbI033375
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> To clarify the matching against multipart and message/rfc822 parts,
> I've replaced that paragraph with:
> 
>    If the :content specification matches a multipart MIME part,

-    only the prologue and epilogue sections of the will be searched
+   only the prologue and epilogue sections of the body part will be searched

>    for the key strings; the contents of nested parts are only
>    searched if their respective types match the :content specification.

:o)

Nigel



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j424Z7NT014614; Sun, 1 May 2005 21:35:07 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j424Z7fe014613; Sun, 1 May 2005 21:35:07 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from foon.sendmail.com (tls.sendmail.com [209.246.26.40]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j424Z5vo014604 for <ietf-mta-filters@imc.org>; Sun, 1 May 2005 21:35:07 -0700 (PDT) (envelope-from guenther@sendmail.com)
Received: from lab.smi.sendmail.com ([10.210.100.93]) by foon.sendmail.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id j424Z4cJ022394 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=OK) for <ietf-mta-filters@imc.org>; Sun, 1 May 2005 21:35:05 -0700
X-DomainKeys: Sendmail DomainKeys Filter v0.2.7 foon.sendmail.com j424Z4cJ022394
DomainKey-Signature: a=rsa-sha1; s=tls; d=sendmail.com; c=nofws; q=dns; b=oawWhKyKwbeHzJ0eM6KQL4Lxh1aDS0SqpTEMvVeksAHsxeCkRNcOJm4ykHEErmbID dwguLmAHpfW9KGXNRLQUIAM20uYc8vj8LF3pJw2QVPkPkwZZQeuJNmqKle3h/djJAQ6 wOCvUONpXcnfsaL6ezx+/0S/FX/8RaJFLRxVDbI=
Received: from lab.smi.sendmail.com (localhost [127.0.0.1]) by lab.smi.sendmail.com (8.12.11/8.12.11) with ESMTP id j424Z4qL003108 for <ietf-mta-filters@imc.org>; Sun, 1 May 2005 21:35:04 -0700 (PDT) (envelope-from guenther@lab.smi.sendmail.com)
Message-Id: <200505020435.j424Z4qL003108@lab.smi.sendmail.com>
To: ietf-mta-filters@imc.org
From: Philip Guenther <guenther+mtafilters@sendmail.com>
Subject: Responses to comments on draft-ietf-sieve-editheader-00.txt
Date: Sun, 01 May 2005 21:35:04 -0700
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

Again, my apologies to the working group for the long delay in 
responding to the comments from the WGLC on this draft.  

I'm not going to list the trivial editorial changes here.


Matthew Elvey wrote:
>>   Tests and actions such as "exist" or "header" that examine
>
>The test is "exists", not "exist".  "Exists" and "header" are both
>tests, and actions don't examine.  Therefore, I suggest:
>       Tests such as "exists" or "header" that examine

Instead of restricting it to tests, I've added an action that
examines header fields:
   Tests and actions such as "exists", "header", or "vacation"
   [VACATION] that examine header fields MUST examine the current
   state of a header as modified by any actions that have taken
   place so far.


Mark E. Mallett wrote:
>>   use of [KEYWORDS] and "Syntax:" label for the definition of action
>
>I think labels are plural, so it ought to read "... labels for
>definitions of ..."

Not quite: the correct parse groups from "Syntax:" to the end of
the sentence.  Inserting a 'the' clears it up, I think:
   Conventions for notations are as in [SIEVE] section 1.1, including
   use of [KEYWORDS] and the "Syntax:" label for the definition of
   action and tagged arguments syntax.

(I.e., the conventions include "use of [KEYWORDS]" and "use of the
Syntax: label for...syntax")


>Just the obligatory comment about using "example.tld" even though "tld"
>isn't a real top level domain name today.

I've changed "foo.tld" to "foo.example.com":
        if not header :contains "X-Sieve-Filtered"
                ["<kim@job.example.com>", "<kim@home.example.com>"]
        {
                addheader "X-Sieve-Filtered" "<kim@job.example.com>";
                redirect "kim@home.example.com";
        }


>Should there be remarks about the potential damage that can be
>caused to the MIME structure of a message (e.g. by removing/adding
>MIME header fields)?

With regards to the effect this can have on the sieve processing
itself, see below.  Or were you suggesting a "this tool is sharp:
poking self in eye may harm depth preception" warning?



Nigel Swinson wrote:
>Is it worth making it explicit that if deleteheader can't find any
>matching headers then this isn't an error?

I've added the following as the last paragraph of section 4:
   It is not an error if no header fields match the conditions in
   the deleteheader action or if the :index argument is greater
   than the number of named header fields.


>I think we are saying that editheader does not cancel the implict
>keep (certainly this makes sense), but I don't think we've been
>very clear about it.  I liked the clarity of what was said in the
>vacation draft: "Vacation does not affect Sieve's implicit keep
>action."

I've added "The addheader action does not affect Sieve's implicit
keep." to section 3 and a similar statement for deleteheader to
section 4.


Cyrus Daboo wrote:
>4.5: replace ';' at end of paragraph with '.'. Add 'Example:' as    
>new line after paragraph.

Given the text following the example, I went with:

			      <...>  The counting happens
   before the <value-patterns> match, if any.  For example:

        deleteheader :index 2 :contains "Received" "via carrier-pigeon"

   deletes the second "Received:" header field if it contains
   <...>


Alexey Melnikov wrote:
>>   Actions that create messages in storage or in transport to
>>   MTAs MUST store and send messages with the current set of
>>   header fields.
>                        
>I am not sure I understand what is "in transport to MTAs", is this
>trying to say "in MTA's queue"?

It's trying to say that if you do something like forward the message,
the forwarded content reflects any changes.  Would it be clearer
if that sentence was simplified to

   Actions that store or send the message MUST do so with the
   current set of header fields.

?


>>   MUST only file one message.  It is up to the implementation
>>   to pick which of the redundant "fileinto" or "keep" actions is
>>   executed, and which ones are ignored.
>
>I am not sure I like this, even though I understand the motivation.
>When Ned and Ken has discussed imapflags they agreed that the last
>keep wins (i.e. the current flags at the time of the last keep).
>Consistency is a good thing.  And the MUST at the beginning of
>section 5 seems to suggest the same.

I just reviewed the discussion on the from when it was changed to
this and the thought from at least a couple people at the time was
that leaving it open would ease implementation by making it agnostic
to the "evaluate as you go" vs "evaluate all at the end" choice.
Is there consensus to change this again?

(Previous to that, it called for *no* duplicate supression.)


Arnt Gulbrandsen wrote:
>Another minor point: If a message is rejected after being modified,
>which version of the message should be sent to the bounce address,
>the original message or the one with a modified header?

The one with the modified header.  This was covered by the "Actions
that create messages..." sentence in section 5, which I'm changing
to the "Actions that store or send the message..." sentence mentioned
above.



Now for the two ugly issues:

Ned Freed wrote:
>I think we need weasel words to the effect that changing the meaning 
>of the MIME structure with addheader may not produce results that
>actually affect subsequent body or other MIME-related tests.

(Also commented on by Arnt Gulbrandsen and William Leibzon)

Does the following, added after the first example in section 5,
give the correct dose of leeway?

   However, if the presence or value of a header field affects how
   the implementation parses or decodes other parts of the message,
   then for the purposes of that parsing or decoding the implementation
   MAY ignore some or all changes made to those header fields.  For
   example, in an implementation that supports the [BODY] extension,
   "body" tests may be unaffected by deleting or adding Content-Type
   or Content-Transfer-Encoding header fields.  This does not rescind
   the requirement that changes to those header fields affect direct
   tests; only the semantic side effects of changes to the fields
   may be ignored.

If not, where did I miss the turn?


Ned Freed wrote:
>>[Mark Mallett wrote:]
>> I really miss "replaceheader" and I think it's a huge mistake not to
>> include it.  "replaceheader" was the only way that one could rename a
>> header in place, which may have been one source of the objections to it,
>> but which I found to be the root of its value.  Perhaps a compromise
>> could be to include "replaceheader" as an optional additional capability
>> name in this document (the way that "fileinto" is included in the base
>> spec).
>
>FWIW, I miss it too.

I'm not enthralled by the idea of bringing replaceheader back into
the draft at this late date, especially given how the complexity
issues were never resolved.  I somehow suspect that the ensuing
discussion would be a cut-and-paste of the one that took place two
years ago.

Therefore, I am pushing back on these wistful thoughts.


Philip Guenther



Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j421RHv5090855; Sun, 1 May 2005 18:27:17 -0700 (PDT) (envelope-from owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id j421RHOD090854; Sun, 1 May 2005 18:27:17 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-mta-filters@mail.imc.org using -f
Received: from foon.sendmail.com (tls.sendmail.com [209.246.26.40]) by above.proper.com (8.12.11/8.12.9) with ESMTP id j421RF5H090846 for <ietf-mta-filters@imc.org>; Sun, 1 May 2005 18:27:17 -0700 (PDT) (envelope-from guenther@sendmail.com)
Received: from lab.smi.sendmail.com ([10.210.100.93]) by foon.sendmail.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id j421RE9h012130 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=OK) for <ietf-mta-filters@imc.org>; Sun, 1 May 2005 18:27:14 -0700
X-DomainKeys: Sendmail DomainKeys Filter v0.2.7 foon.sendmail.com j421RE9h012130
DomainKey-Signature: a=rsa-sha1; s=tls; d=sendmail.com; c=nofws; q=dns; b=Ty8YtGfxOGPspm38mRXQ2oexUjgPLWVO8yjIhEWsUsVtDvuLM6lm0TusNOKeyaRvs Yo08WGoBQ848H1JbMC+7ayKcN3nr6bh3Ym2Bxrk4xhDLiERXT5bly2MvHgZYJw2P+IU 1zkzYmjOzd2v5Ng/Wx7nAxAcV2kl1HblLjgYp50=
Received: from lab.smi.sendmail.com (localhost [127.0.0.1]) by lab.smi.sendmail.com (8.12.11/8.12.11) with ESMTP id j421REDY086939 for <ietf-mta-filters@imc.org>; Sun, 1 May 2005 18:27:14 -0700 (PDT) (envelope-from guenther@lab.smi.sendmail.com)
Message-Id: <200505020127.j421REDY086939@lab.smi.sendmail.com>
To: ietf-mta-filters@imc.org
From: Philip Guenther <guenther+mtafilters@sendmail.com>
Subject: Re: Collected comments for draft-ietf-sieve-body-00.txt 
In-reply-to: <424A85CD.4040906@isode.com> 
References: <424A85CD.4040906@isode.com> 
Date: Sun, 01 May 2005 18:27:14 -0700
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

My apologies to the working group for the long delay in responding
to the comments from the WGLC on the body and editheader drafts.
My thanks to the chairs for compiling the comments; here are my
responses for the body draft.


>Ken Murchison wrote:
>> Section 4.1, paragraph 2, last phrase says "... and MUST NOT interpret 
>> or skip MIME headers of enclosed body parts."
>>
>> I don't think that the intent was to have "MUST NOT" refer to "skip", 
>> but it reads that way.  I'd recommend that either "or skip" be removed 
>> (since not interpreting them seems to encompass ignoring them), or 
>> reword the entire phrase to something like:  "... and either MUST NOT 
>> interpret MIME headers of enclosed body parts or MUST ignore them 
>> entirely."

The intent is that under the :raw transformation, the message is
just a series of octets with no special interpretation.  MIME headers
in enclosed body parts are therefore just more pieces of text to
match against.  To make that clearer, I've changed the last clause of
that sentence to read:

   <...> and MUST treat multipart boundaries
   or the MIME headers of enclosed body parts as part of the text
   being matched against instead of as MIME structures to interpret.


>Bob Johannessen wrote:
>
>>4.1 Body Transform ":raw"
>>
>>      # This will match a message containing the words "MAKE MONEY FAST"
>>      # in body or MIME headers other than the outermost RFC 822 header,
>>      # but will not match a message containing the words in a
>>      # content-transfer-encoded body.
>>
>>Wouldn't it be more correct to say that it matches the string, or
>>even the character sequence "MAKE MONEY FAST"? Also I'm not sure I
>>understand what is meant by "a content-transfer-encoded body". It
>>*could* still match the character sequence in a quoted-printable
>>encoded body, couldn't it?

Correct.  I've changed to comment to read:

	# This will match a message containing the literal text
	# "MAKE MONEY FAST" in body parts (ignoring any 
	# content-transfer-encodings) or MIME headers other than    
	# the outermost RFC 2822 header.


>>4.2 Body Transform ":content"
>>
>>   If an implementation does not support conversion of a given
>>   charset to  UTF-8, it MAY compare against the US-ASCII subset
>>   of the transfer-decoded character data instead.
>>
>>Does the above rely on all current and future charsets having
>>a one-to-one mapping to US-ASCII for all characters with code
>>points 0-127? Is this a safe assumption? Is it even true of all
>>existing charsets? Maybe it would be better to explicitly
>>exclude all parts who can't be converted to UTF-8?

On reflection, I think this was intended to be similar to the
requirements of section 2.7.2 ("Comparisons Across Character Sets")
of the base-spec, but slightly stricter in that implementations
would be required to support UTF-8.


Speaking of which, perhaps that section of the base-spec should be
updated to require support of UTF-8 for header charsets, only falling
back to the weaker "No two strings..." text for charsets other than
UTF-8.


If that change was made, then I think the problem paragraph in the
body draft could be replaced with
	Implementations MUST use the same rules for comparisons
	against body parts in charsets other than UTF-8 as they use
	for comparisons against header fields in such charsets (c.f.
	[SIEVE] section 2.7.2).

(and the SIEVE reference would need to be updated to be against the
revision)


>Mark E. Mallett wrote:
>
>>4.2 Body Transform ":content"
>>
>>   > The search for MIME parts matching the :content specification is
>>   > recursive and automatically descends into multipart and
>>   > message/rfc822 MIME parts.  Once a MIME part has been identified
>>   > as suitable for searching, only its direct contents are searched
>>   > for the key strings.
>>
>>If a message contains more than one testable part, I assume that the
>>"body" result is the OR of the tests of all of them,
...
>>This may seem obvious but it probably needs to be made explicit, no?


Yeah.  To clarify, I've replaced the second/last sentence of that
paragraph with:
	All MIME parts with matching types are searched for the key
	strings.


>>with a short-circuit exit.
>>i.e., first match causes the body test to end and
>>return a true result, whereas a non-match causes the body test to
>>contine on to the next candidate mime part.

I don't see why short-circuiting needs to be mentioned, as it's
simply an obvious optimization and has no effect on the visibile
behavior.  While the base spec does encourage implementation to
implement short-circuiting in evaluation of string lists, it didn't
seem necessary to mention that they should stop searching within a
header/address/whatever for a given string as soon as a match is
found.


>[...]
>>   > For example, a document with "multipart" major content type only
>>   > directly contains the text in its epilogue and prologue section;
>>   > all the user-visible data inside it is directly contained in
>>   > documents with MIME types other than multipart.
>>
>>I question the term "user-visible."  I'm a user, and the prolog and
>>epilog stuff is always visible to me in my mail reader.  Maybe just
>>say "other" ?

To clarify the matching against multipart and message/rfc822 parts,
I've replaced that paragraph with:

   If the :content specification matches a multipart MIME part,
   only the prologue and epilogue sections of the will be searched
   for the key strings; the contents of nested parts are only
   searched if their respective types match the :content specification.

   If the :content specification matches a message/rfc822 MIME part,
   only the header of the nested message will be searched for the
   key strings; the contents of the nested message body parts are  
   only searched if its content-type matches the :content specification.

and have dropped the "Nevertheless" from the following parenthetical
remark.

Furthermore, I've inserted an elaborate example of these rules,
building from Cyrus's suggestion, described below.


...
>"words" not "worlds"
...
>>My name jumped out at me- if it's in there, it should be
>>spelled "Mallett"  :-)

Fixed and fixed.


>>5. Interaction with Other Sieve Extensions
>>
>>   > Regular and wildcard expressions used with "body" are exempt
>>   > from the side effects described in [VARIABLES].  That is, they
>>   > do not set numbered variables ${1}, ${2}... to the input
>>   > values corresponding to wild card sequences in the matched
>>   > pattern.
>>
>>I remember that this came up last fall, expressed this way:
>>
>>  >  QUESTION: Is it okay to have body :matches and
>>  >  :regex scans not set variables?
>>
>>and the (small) concensus was a "yes" answer to that question.  I took
>>that to mean that people thought it was OK for an implementation not to
>>set the numbered variables-- not that an implementation would be
>>prohibited from doing so.  This prohibition is unfriendly to
>>general-purpose match logic.

An implementation that wanted to support it could enable capturing
from 'body' matches into variables using another extension...


>>Also, if it is a prohibition, shouldn't
>>"MUST NOT" appear there?

   Regular and wildcard expressions used with "body" are exempt  
   from the side effects described in [VARIABLES].  That is, they
   MUST NOT set numbered variables ${1}, ${2}... to the input values
   corresponding to wild card sequences in the matched pattern.
   However, if the extension is present, variable references in the   
   key strings or content type strings are evaluated as described
   in the draft.

(That takes into account a suggestion from Nigel Swinson as well).


>Nigel Swinson wrote:
>>7. Security Considerations
>>I suggest:
>>-   replacement for a virus or spam filtering system.
>>+  replacement for a spam, virus or other security related filtering system.

Done.


>Cyrus Daboo wrote:
>> --On March 28, 2005 15:36:30 +0100 Nigel Swinson 
<...comments on the lack of clarity in matching multipart
types and a suggestion of an example...>

I've inserted the following example into section 4.2:
-----
   Example:
        From: Whomever
        To: Someone
        Date: Whenever
        Subject: whatever
        Content-Type: multipart/mixed; boundary=outer

     &  This is a multi-part message in MIME format.
     &
        --outer
        Content-Type: multipart/alternative; boundary=inner

     &  This is a nested multi-part message in MIME format.
     &
        --inner
        Content-Type: text/plain; charset="us-ascii"

     $  Hello
     $
        --inner
        Content-Type: text/html; charset="us-ascii"

     %  <html><body>Hello</body></html>
     %
        --inner--
     &
     &  This is the end of the inner MIME multipart.
     &
        --outer
        Content-Type: message/rfc822

     !  From: Someone Else
     !  Subject: hello request

     $  Please say Hello
     $
        --outer--
     &
     &  This is the end of the outer MIME multipart.


   In the above example, the '&', '$' and '%' characters at the
   start of a line are used to illustrate what portions of the
   example message are used in tests:

   - the lines starting with '&' are the ones that are tested when
     a 'body :content "multipart" :contains "MIME"'
     test is executed.

   - the lines starting with '$' are the ones that are tested when
     a 'body :content "text/plain" :contains "Hello"' test is
     executed.

   - the lines starting with '%' are the ones that are tested when
     a 'body :content "text/html" :contains "Hello"' test is executed.
   - the lines starting with '$' or '%' are the ones that are tested
     when a 'body :content "text" :contains "Hello"' test is executed.

   - the lines starting with '!' are the ones that are tested when
     a 'body :content "message/rfc822" :contains "Hello"' test is
     executed.
----


>Cyrus Daboo wrote:
...
>> Header: Fix alignment of 'Philip Guenther'
>> 1.3 : 'specifies it syntax' -> 'specifies its syntax'
>> 2.2 : 'with extension' -> 'with the extension'
>> 3.1 : reformat syntax
>> 3.4 : 'all "body" tests fail' -> 'all "body" tests return false'
>> 4.2 : reformat syntax
>> 4.2 : the term 'document' is used to refer to a MIME 'part', I would 
>>       prefer using 'part' in all cases.
>> Appendix B: missing reference [REGEX]

All done


>> 4.2p6 : 'decoded to prior' -> 'decoded prior'

Done.  I've added text to require support for the 7bit, 8bit, and
binary transfer encodings so that the MAY only applies to
not-yet-standardized encodings:
   MIME parts encoded in "quoted-printable" or "base64" content
   transfer encodings MUST be decoded prior to the match.  MIME
   parts in "7bit", "8bit", "binary" content transfer encodings
   MUST be matched as they are.  MIME parts in content transfer
   encodings other than those MAY be decoded, omitted from the test,
   or processed as raw data.


>> 4.3 : just for completeness add an example.

Added:
   Example:
        require ["body", "fileinto"];

        # Save messages mentioning the project schedule in the
        # project/schedule folder.
        if body :text :contains "project schedule" {
                fileinto "project/schedule";
        }


>My comments:
>
> >4.2 Body Transform ":content"
>[...]
> >   If an individual content type contains a '/' (slash), it
> >   specifies a full <type>/<subtype> pair, and matches only
> >   that specific content type.  If it is the empty string, all
> >   MIME content types are matched.  Otherwise, it specifies a
> >   <type> only, and any subtype of that type matches it.
>
>I would like to see ABNF for the content type and some text explaining 
>what should be done if the user specified an invalid value here, e.g. 
>"/". I suspect the answer to this can be: no runtime error, but no match.

I would rather not drag in ABNF just for this single paragraph.
Indeed, I suspect the result would be more difficult to comprehend
when specified that way.  As the only cases not covered by the
current text are values that begin or end with a slash or contain
multiple slashes, I've added an initial case to specify that they
match no content types:

   If an individual content type begins or ends with a '/' (slash) 
   or contains multiple slashes, it matches no content types.  
   Otherwise, if it contains a slash, then it specifies a full
   <type>/<subtype> pair, and matches only that specific content   
   type.  If it is the empty string, all MIME content types are
   matched.  Otherwise, it specifies a <type> only, and any subtype 
   of that type matches it.



At this point, I think there is only one unresolved issue: what is
required for charset conversion when using :content?  As stated
above, my preference would be to update the base spec revision's
secion 2.7.2 to require support for UTF-8, and then simply refer
to that in section 4.2 of the body I-D.

Opinions?


Philip Guenther