spf-discuss
[Top] [All Lists]

Re: When should the proccessing of the SPF record end?

2004-03-22 18:41:16
On Mon, Mar 22, 2004 at 10:39:00PM +0100, Ramakanta (das) HKS (PAMHO.NET SysOp) 
(Zurich - CH) wrote:
| In spf-draft-20040209.txt in the section 3.2 it says:
| 

I have updated section 3.2 to contain:

   An SPF record contains an ordered list of mechanisms and modifiers:

     SPF-record  = version *( 1*SP ( [prefix] mechanism | modifier ) )

       prefix      = "+" / "-" / "~" / "?"
       mechanism   = 1*ALPHA [ ':' *VCHAR ] *[ '/' *DIGIT ]
       modifier    = 1*ALPHA '=' *VCHAR

   Modifiers always contain an equals ('=') character.

   Mechanisms usually contain ':' or '/' characters.

   Directives that do not contain any of '=', ':', or '/' are
   mechanisms.

+  A meaningful modifer such as "exp" may appear to the
+  right of a terminal mechanism such as "all".  SPF parsers
+  may therefore choose to extract all the modifiers from a
+  record before interpreting mechanisms.  Alternatively,
+  they may continue to parse a record in search of a
+  meaningful modifier even after mechanism evaluation has
+  completed.

   Each mechanism is considered in turn from left to right.

   When a mechanism is evaluated, one of three things can happen: it
   can match, it can not match, or it can throw an exception.

   If it matches, processing ends and the prefix value is returned as
   the result of that record.  (The default prefix value is "+".)

   If it does not match, processing continues with the next
   mechanism.  If no mechanisms remain, the default value is "-".

   If it throws an exception, mechanism processing ends and
   the exception value is returned (either "error"
   indicating a temporary failure, usually DNS-related, or
   "unknown" indicating a syntax error or other permanent
   failure resulting in incomplete processing.)

I'm a little bit bothered by the new paragraph because it tries to
micromanage clients in too much detail.  Is there a better way to say:
you have to respect an exp modifier even if it appears after "all"?