Re: RFC 4408 Errata - PermError on invalid domains after macro expansion

Alessandro Vesely <[email protected]> Tue, 25 Oct 2011 13:57:57 +0200
Newsgroups gmane.mail.spam.spf.discuss
Message-ID <[email protected]>
On 24/Oct/11 22:37, Scott Kitterman wrote:
> 
> My preference here would be to treat these as PermError since an empty
> domain-spec is not useful to the protocol and should be an error.

Then PermError can result from both an incorrect SPF record and a
macro expanded illicit sender identity.

> My solution (note: different than RFC4408 already due to other,
> non-controversial erratum):
> 
>>         A "PermError" result means that the domain's published records
>>         could not be correctly interpreted.  This signals an error
>>         condition that requires manual intervention to be resolved, as
>>         opposed to the TempError result.   If the message is rejected
>>         during the SMTP transaction for this reason, the software SHOULD
>>         use an SMTP reply code of 550 and, if supported, the 5.5.2 DSN
>>         code.

I don't think it may gain wide consensus to reject on PermError.  It
can result from inadvertently getting the syntax wrong, which is
totally unrelated with a third party acting maliciously.  By removing
the last sentence above, it is more likely that the intended meaning
of the spec --reject on Fail-- will be conveyed.

>>                Be aware that if the domain owner uses macros
>>         (<xref target="macros"/>), it is possible that this result is due
>>         to the checked identities having an unexpected format.  The domain
>>         and domain-spec MUST be fully macro expanded before being tested
>>         for errors.

I'd put both these considerations in Section 8.1.  In addition, the
note in the last but one paragraph there deserves an uppercase SHOULD,
before the explanation.  E.g.

   The domain and domain-spec MUST be fully macro expanded before
   being tested for errors.

   Note: Domains SHOULD avoid using the "s", "l", "o", or "h" macros
   in conjunction with any mechanism directive.  These macros can be
   exploited so as to get a PermError instead of the intended outcome,
   in certain circumstances:  If the domain owner uses them, it is
   possible that PermError results due to the checked identities
   having an unexpected format.  In addition, these macros severely
   limit the ability of implementations to cache results of
   check_host() and thus reduce the effectiveness of DNS caches.

jm2c