Difference (from prior major revision)
(author diff)
Paragraph 91
Paragraph 91
''Suggested fix and rationale:''
''Suggested fix '''(variant 1)''':''
Paragraph 95
Paragraph 95
Please note that an unexpected <code><target-name></code> can be also handled as <tt>no match</tt>, ideally implementations document how they handle such issues. The outcome for an unexpected <code><domain-spec></code> without macros might differ from the outcome for an unexpected <code><target-name></code> after macro expansion.
Please note that an unexpected <code><target-name></code> can be also handled as <tt>no match</tt>, ideally implementations document how they handle such issues. The outcome for an unexpected <code><domain-spec></code> without macros might differ from the outcome for an unexpected <code><target-name></code> after macro expansion.
''Suggested fix '''(Variant 2)''':''
The last sentence in the [[RFC 4408#op-result-permerror|Permerror]] definition is misleading. A syntactically malformed <code><target-name></code> can be also handled as <tt>no match</tt>. The specification should say:
> Be aware that it is also possible that this result is generated by certain SPF clients due to the input arguments having an unexpected format; see [[RFC 4408#domain-spec|Section 4.8]].
At the end of [[RFC 4408#domain-spec|Section 4.8]] add:
> Note: Historically, this document has made no provisions for how to handle <code><domain-spec></code>s, or macro-expansions thereof, that are syntactically invalid per <nowiki>[</nowiki>[[RFC:1035|RFC1035]]<nowiki>]</nowiki>, such as names with empty labels (e.g., "foo..example.com") or overlong labels (more than 63 characters). Some implementations choose to treat as a no-match mechanisms, and ignore modifiers, with such names, whereas others throw a "PermError" exception. The outcome for an unexpected <code><domain-spec></code> without macros might even differ from that for an unexpected <code><target-name></code> after macro expansion.
''Rationale:''
Reporting a <tt>TempError</tt> in such cases is no option, the syntax problem won't go away for a given sender policy, HELO identity, envelope sender address, and sending IP combination with a ''try again later'' <tt>TempError</tt> approach. If anything else is as expected the sender policy might need to be fixed manually, supporting <tt>PermError</tt>.
Reporting a <tt>TempError</tt> in such cases is no option, the syntax problem won't go away for a given sender policy, HELO identity, envelope sender address, and sending IP combination with a ''try again later'' <tt>TempError</tt> approach. If anything else is as expected the sender policy might need to be fixed manually, supporting <tt>PermError</tt>.