spf-discuss
[Top] [All Lists]

Re: improving Received-SPF

2004-01-08 14:38:51
Philip Gladstone wrote:

I think that smtp-receiver-hostname ought to be renamed to smtp-sender-helo

I think that's a better name... or did I mess up and put the wrong comment. Maybe it should be the hostname of the host computer?

I would like to include the argument to the mechanism (before any macro expansion).

That was my intent... according to section 3.2 in the same document:

mechanism   = 1*ALPHA [ ':' *VCHAR ] *[ '/' *DIGIT ]

Which MUST include the argument exactly as found in the SPF record.

Maybe that should be specified more precicely.

Actually it will cause the argument to appear as if it was the next ':'-delimited field in line after the mechanism name.

I think that the whole best_guess thing is a bit of a nightmare -- I wouldn't want to mention it in the RFC. Otherwise there will be endless discussions about the precise set of values, yadda yadda yadda.

Good point, but I think it still SHOULD be included in the comment field if a best_guess is used instead of a real SPF query.

We probably also ought to take trhe opportunity to make the header compatible with other SMTP headers in terms of LWSP. It appears (from a quick look at 2822) that the BNF doesn't mention the WS after the colon anyway.

Yeah, I saw that and didn't know what to make of it. Is 2822 saying that I'm not supposed to have a space after the colon? If so, then does every header value technically include the leading space?

(That would be weird.  Instead of having a mail client do this:
  Subject: [From your friend________________________]
it should instead properly do this:
  Subject: [ From your friend_______________________]

Or is it somehow just implied by common practice?

I think that comment-string probably ought to be 'ccontent' from rfc2822.

Hmmm... I don't think so, as 'ccontent' looks like it has to include parentheses or have no spaces in it whatsoever. Maybe I'm wrong, but I expect these two examples are valid 'ccontent':

This_is_a_ccontent_string-as-spaces-are-not-valid-in-a-ctext

( This is also a ccontent string each-those-words-is-a-ccontent
 and it may include "FWS" but is forced to use parantheses \af
 -The-[backslash]af is an allowed quoted-pair (and nesting is
 allowed))

And this is not:

This is invalid because spaces are not part of ctext and we are not
 within paretheses.

This would mean that a properly formatted Received-SPF header would have to look like either this:

Received-SPF: pass

(helo.host.name:address(_at_)host(_dot_)name:127.0.0.1:ptr:domain.com:This_is_a_comment)

Or this:

Received-SPF: pass
 (helo.host.name:address(_at_)host(_dot_)name:127.0.0.1:ptr:domain.com:(This
 is a comment))

And I think the nested parentheses look funny. Note that since we are already within paretheses it is also compliant with 2822 (and probably more correct than using VCHAR) to change comment-string to:

comment-string = *([FWS] ccontent) [FWS]

Definitely a move in the right direction.

Thanks!  I hope some of it helps out :)

My updated definition (Probably both the smtp-receiver-hostname and envelope-sender should be better defined than just 1*VCHAR, as should IPV4Address and IPV6Address):

header = 'Received-SPF:' result [ FWS '(' comment ')' ] CRLF

FWS = [*WSP CRLF] 1*WSP

result = 'pass' / 'fail' / 'error' / 'unknown'
         / unknown-declarations

unknown-declarations = 'unknown' *( FWS declaration )

comment = smtp-receiver-hostname ':' envelope-sender ':' current-domain
          ':' match-mechanism [ ':' comment-string ]

smtp-receiver-hostname = 1*VCHAR
    ;hostname of the SMTP server

envelope-sender = 1*VCHAR
    ;reverse-path given by SMTP client at MAIL FROM command

current-domain = IPV4Address / IPV6Address
    ;IP address of current SMTP client

match-mechanism = mechanism / 'none'
    ;mechanism format specified in section 3.2
    ;MUST be the mechanism (and argument) record checked which was
    ; matched to cause the result, copied exactly from the actual
    ; SPF record.
    ;MUST be 'none' if no match was made for any reason
    ;  (ie, error, no SPF information given)

comment-string = *( [FWS] ccontent ) [FWS]
    ;ccontent is defined in RFC 2822 section 3.2.3
    ;SHOULD include further information not already provided
    ;  (ie, description of error message in the case of errors)
    ;SHOULD mention if the "best_guess" function is used
    ;MAY include a human-readable explanation of why the current result
    ;  was decided
    ;MAY in the future include other "important" information such as SPF
    ;  version number, or additional colon-delimited information

--
Jim Ramsay

-------
Sender Permitted From: http://spf.pobox.com/
Archives at http://archives.listbox.com/spf-discuss/current/
Latest draft at http://spf.pobox.com/draft-mengwong-spf-02.9.4.txt
To unsubscribe, change your address, or temporarily deactivate your subscription, please go to http://v2.listbox.com/member/?listname(_at_)©#«Mo\¯HÝÜîU;±¤Ö¤Íµø?¡