<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lecklider-ppf-00" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="PPF">Pingback Permitted From (PPF)</title>
    <seriesInfo name="Internet-Draft" value="draft-lecklider-ppf-00"/>
    <author initials="C." surname="Lecklider" fullname="Charles Lecklider">
      <organization>Independent</organization>
      <address>
        <email>charlesl@invis.net</email>
        <uri>https://invis.net</uri>
      </address>
    </author>
    <date year="2026" month="July" day="29"/>
    <area>Applications and Real-Time</area>
    <workgroup>Individual Submission</workgroup>
    <keyword>linkback</keyword>
    <keyword>link notification</keyword>
    <keyword>DNS</keyword>
    <keyword>sender authorization</keyword>
    <abstract>
      <?line 35?>

<t>Pingback Permitted From (PPF) defines a DNS-based mechanism for authorizing senders of linkback requests. A domain owner publishes a TXT record declaring which hosts are permitted to send linkbacks for source URIs on that domain. Receivers and linkback proxies can then reject unauthorized linkbacks before fetching the claimed source URI.</t>
      <t>PPF is intended for linkback protocols in which a sender claims that one web resource links to another and the receiver would otherwise fetch the claimed source resource to verify that claim. PPF provides sender authorization; it does not replace content verification, moderation, or abuse filtering.</t>
    </abstract>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Linkback protocols allow one site to notify another that a source resource links to a target resource. In typical deployments, the receiver verifies the linkback by fetching the claimed source URI and checking that it contains a link to the target URI.</t>
      <t>This receiver-side verification step creates a sender authorization problem. Without an authorization layer, any host can send a linkback claiming any source URI. A receiver that attempts to verify such a linkback will make an HTTP request to the claimed source URI, even if the party sending the linkback has no authority over that source domain.</t>
      <t>This creates two related problems:</t>
      <ul spacing="normal">
        <li>
          <t>unauthorized linkbacks, where a sender causes linkbacks to be created for source resources it does not control; and</t>
        </li>
        <li>
          <t>reflected fetches, where many receivers are induced to fetch resources from a victim domain.</t>
        </li>
      </ul>
      <t>PPF addresses this by moving the first authorization check into DNS. The owner of the source domain publishes a policy at a well-known DNS owner name. Receivers and linkback proxies query that policy and determine whether the sender's IP address is authorized before attempting source-resource verification.</t>
      <t>PPF is deliberately narrow. It answers only this question:</t>
      <ul empty="true">
        <li>
          <t>Is this sender authorized by the source domain to send linkbacks for source URIs on that domain?</t>
        </li>
      </ul>
      <t>A positive PPF result does not mean that the linkback is true, desirable, non-abusive, or safe to display. Receivers still need to verify that the source resource links to the target resource and apply their ordinary moderation, abuse, and policy controls.</t>
      <t>This document defines:</t>
      <ul spacing="normal">
        <li>
          <t>the PPF DNS owner name;</t>
        </li>
        <li>
          <t>the PPF TXT record format;</t>
        </li>
        <li>
          <t>PPF mechanisms;</t>
        </li>
        <li>
          <t>the PPF evaluation algorithm;</t>
        </li>
        <li>
          <t>PPF result names;</t>
        </li>
        <li>
          <t>generic protocol-binding requirements; and</t>
        </li>
        <li>
          <t>the generic model for PPF linkback proxy operation.</t>
        </li>
      </ul>
      <t>This document does not define a complete binding for any particular linkback protocol. Protocol bindings define how source URIs, target URIs, sender IP addresses, responses, status resources, and proxy metadata are represented in a specific protocol.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the following terms:</t>
      <dl>
        <dt>Source URI</dt>
        <dd>
          <t>The URI of the resource that is claimed to contain a link.</t>
        </dd>
        <dt>Target URI</dt>
        <dd>
          <t>The URI of the resource that is claimed to be linked to by the source resource.</t>
        </dd>
        <dt>Linkback</dt>
        <dd>
          <t>A protocol message from a sender to a receiver claiming that a source URI links to a target URI. This document uses "linkback" as the generic term for such messages and the protocols that carry them.</t>
        </dd>
        <dt>Sender</dt>
        <dd>
          <t>The host or service transmitting a linkback to a receiver or linkback proxy.</t>
        </dd>
        <dt>Receiver</dt>
        <dd>
          <t>The host or service receiving a linkback for a target URI.</t>
        </dd>
        <dt>Linkback proxy</dt>
        <dd>
          <t>A service that receives linkbacks, evaluates PPF, performs source-resource verification or filtering, caches the result, and forwards or reports the result to a receiver using a protocol binding.</t>
        </dd>
        <dt>Protected receiver</dt>
        <dd>
          <t>A receiver that relies on a linkback proxy to perform PPF evaluation, source fetching, or source verification on its behalf.</t>
        </dd>
        <dt>Source domain</dt>
        <dd>
          <t>The DNS domain name derived from the host component of the source URI.</t>
        </dd>
        <dt>Sender IP address</dt>
        <dd>
          <t>The IP address evaluated against the PPF policy. The protocol binding or local trusted-proxy configuration defines how this address is determined.</t>
        </dd>
        <dt>PPF record</dt>
        <dd>
          <t>A DNS TXT record whose first token is <tt>v=ppf1</tt>, using ASCII case-insensitive comparison, at the DNS owner name <tt>_pingback.&lt;source-domain&gt;</tt>.</t>
        </dd>
        <dt>Policy</dt>
        <dd>
          <t>The authorization rule set expressed by a PPF record.</t>
        </dd>
        <dt>Mechanism</dt>
        <dd>
          <t>A policy term that can authorize a sender IP address.</t>
        </dd>
        <dt>Strict mode</dt>
        <dd>
          <t>Receiver or proxy behavior in which source-resource verification proceeds only when PPF evaluation returns <tt>pass</tt>.</t>
        </dd>
        <dt>Permissive mode</dt>
        <dd>
          <t>Receiver or proxy behavior in which a linkback can proceed to ordinary source-resource verification when no usable PPF policy is found.</t>
        </dd>
        <dt>Protocol binding</dt>
        <dd>
          <t>A specification that defines how PPF applies to a particular linkback protocol.</t>
        </dd>
      </dl>
    </section>
    <section anchor="design-considerations">
      <name>Design Considerations</name>
      <section anchor="relationship-to-spf">
        <name>Relationship to SPF</name>
        <t>PPF is intentionally modeled on the Sender Policy Framework (SPF) <xref target="RFC7208"/>. The two protocols address structurally identical problems: a sender claims to be acting on behalf of a domain, and a receiver must determine whether the domain authorizes that sender before performing potentially expensive or dangerous follow-up work. SPF gates message acceptance; PPF gates source-resource fetching.</t>
        <t>This document deliberately reuses SPF's design choices wherever the underlying problem is the same:</t>
        <ul spacing="normal">
          <li>
            <t>DNS as the policy publication layer, exploiting existing global caching and operational practice;</t>
          </li>
          <li>
            <t>a TXT record at a well-known prefix relative to the domain being authorized;</t>
          </li>
          <li>
            <t>a small, fixed mechanism vocabulary evaluated left-to-right with first-match semantics;</t>
          </li>
          <li>
            <t><tt>include</tt> as a delegation primitive, with the SPF-style requirement that the included policy must return <tt>pass</tt> for the include to match;</t>
          </li>
          <li>
            <t>a DNS-work limit inspired by SPF's limit of ten DNS-interactive terms, together with an explicit maximum include depth of 5; and</t>
          </li>
          <li>
            <t>a result vocabulary with the same names and meanings (<tt>pass</tt>, <tt>fail</tt>, <tt>none</tt>, <tt>permerror</tt>, <tt>temperror</tt>).</t>
          </li>
        </ul>
        <t>PPF omits SPF features that do not apply to linkbacks. There is no <tt>mx</tt> mechanism, because linkback senders are not mail exchangers. There are no qualifiers (<tt>+</tt>, <tt>-</tt>, <tt>~</tt>, <tt>?</tt>) and no soft-fail or neutral states. PPF handles gradual deployment through receiver enforcement modes rather than per-mechanism qualifiers, so a binary pass/fail policy is simpler to reason about. There is no <tt>redirect</tt> modifier because <tt>include</tt> is sufficient for the deployment patterns observed for linkbacks.</t>
        <t>Implementers familiar with SPF should find PPF immediately recognizable. Where this document is silent on a corner case that SPF addresses, SPF's behavior is generally a reasonable starting point, though only the text in this document is normative.</t>
      </section>
      <section anchor="choice-of-dns-owner-name-prefix">
        <name>Choice of DNS Owner Name Prefix</name>
        <t>The DNS owner name prefix for PPF policies is <tt>_pingback</tt>, despite this document being protocol-neutral. Three alternatives were considered.</t>
        <t><tt>_ppf</tt> is the most precise label and aligns with the protocol name. It was rejected because PPF policies are published primarily by web site operators using common DNS management interfaces. An operator inspecting a TXT record named <tt>_ppf</tt> has no contextual cue for what it controls; a record named <tt>_pingback</tt> is self-describing for an audience that recognizes Pingback as a category of web traffic.</t>
        <t><tt>_linkback</tt> is more accurate as a category term but has limited operational recognition. Pingback is by a wide margin the most widely deployed linkback protocol, and operators searching for relevant documentation are more likely to find it under "pingback".</t>
        <t><tt>_pingback</tt> was therefore retained. The label refers to the category of web traffic the policy authorizes, not to a specific protocol. A single PPF record at <tt>_pingback.&lt;domain&gt;</tt> authorizes senders for any linkback protocol that has a binding for PPF, including Pingback 1.0, Webmention, and future protocols. Protocol bindings <bcp14>MUST NOT</bcp14> define alternative DNS owner names for PPF policies.</t>
      </section>
      <section anchor="use-of-explicit-none-policies">
        <name>Use of Explicit <tt>none</tt> Policies</name>
        <t>A PPF record containing only <tt>v=ppf1</tt> is syntactically valid and authorizes no senders. The Record Format section nonetheless recommends that generators emit <tt>v=ppf1 none</tt> rather than the bare version tag.</t>
        <t>The reasoning parallels the choice of DNS owner name prefix. PPF records are read and written by site operators using DNS management tools. An operator encountering a record that contains only <tt>v=ppf1</tt> has no obvious indication of whether the policy is incomplete, mistakenly truncated, or deliberately empty. A record reading <tt>v=ppf1 none</tt> makes the same intent visible at a glance, with a keyword whose meaning is self-evident.</t>
        <t>The keyword <tt>none</tt> was preferred over alternatives such as an explicit <tt>fail</tt> keyword or an SPF-style deny-all qualifier. PPF defines <tt>fail</tt> as an evaluation result, not a policy keyword; using the same name for both would force operators to learn the result vocabulary in order to write a basic policy. <tt>none</tt> reads as the declaration "none authorized", which matches the operator's perspective rather than the implementer's.</t>
      </section>
    </section>
    <section anchor="ppf-dns-owner-name">
      <name>PPF DNS Owner Name</name>
      <t>For a source URI, the receiver or linkback proxy extracts the host component as specified by the URI scheme and converts it to a DNS domain name. For <tt>http</tt> and <tt>https</tt> URIs, this is the URI host component as defined by <xref target="RFC3986"/>. If the source URI has an IP address literal as its host, or its host cannot otherwise be converted to a DNS domain name, no source domain exists and PPF evaluation returns <tt>none</tt>.</t>
      <t>The PPF policy is published as a TXT RRset at:</t>
      <artwork><![CDATA[
_pingback.<source-domain>
]]></artwork>
      <t>For example, the PPF policy for source URI <tt>https://blog.example.com/post</tt> is queried at:</t>
      <artwork><![CDATA[
_pingback.blog.example.com. IN TXT
]]></artwork>
      <t>The <tt>_pingback</tt> label is the well-known DNS owner-name prefix for PPF policies. The policy authorizes senders of linkbacks for the source domain.</t>
      <t>Internationalized domain names <bcp14>MUST</bcp14> be converted to A-label form using the IDNA lookup protocol <xref target="RFC5891"/>; the term A-label is defined by <xref target="RFC5890"/>. PPF record generators <bcp14>SHOULD</bcp14> publish DNS owner names in A-label form. Receivers and linkback proxies <bcp14>MUST</bcp14> perform DNS lookups using the DNS wire representation of the resulting domain name.</t>
    </section>
    <section anchor="record-format">
      <name>Record Format</name>
      <t>A PPF policy is expressed in a DNS TXT record. A TXT RR can contain one or more character strings. When parsing a candidate PPF TXT RR, the receiver or linkback proxy <bcp14>MUST</bcp14> concatenate all character strings in that RR in order, without inserting separators.</t>
      <t>A TXT RR is a PPF record only when its concatenated content is exactly <tt>v=ppf1</tt> or begins with <tt>v=ppf1</tt> followed by one or more SP characters, using ASCII case-insensitive comparison. Other TXT records at the same owner name, including records for other PPF versions, <bcp14>MUST</bcp14> be ignored by this version of PPF.</t>
      <t>There <bcp14>MUST NOT</bcp14> be more than one PPF record at a PPF DNS owner name. If more than one TXT RR at the owner name has <tt>v=ppf1</tt> as its first token, the policy evaluation result is <tt>permerror</tt>.</t>
      <section anchor="abnf">
        <name>ABNF</name>
        <t>The following ABNF uses the notation of <xref target="RFC5234"/>.</t>
        <sourcecode type="abnf"><![CDATA[
ppf-record  = version [1*SP policy]
version     = "v=ppf1"
policy      = "none" / mechanisms
mechanisms  = mechanism *(1*SP mechanism)
mechanism   = "a" /
              "a:" domain-name /
              "ip4:" ip4-network /
              "ip6:" ip6-network /
              "include:" domain-name

domain-name = label *("." label) ["."]
label       = let-dig [*61(let-dig-hyp) let-dig]
let-dig     = ALPHA / DIGIT
let-dig-hyp = let-dig / "-"

ip4-network = IPv4address ["/" 1*2DIGIT]
ip6-network = IPv6address ["/" 1*3DIGIT]
]]></sourcecode>
        <t><tt>IPv4address</tt> and <tt>IPv6address</tt> are imported from <xref target="RFC3986"/>. <tt>domain-name</tt> is an ASCII DNS domain name in presentation form; internationalized names <bcp14>MUST</bcp14> use A-labels <xref target="RFC5890"/>. Each label <bcp14>MUST</bcp14> be between 1 and 63 octets. The wire-format domain name, including the root label, <bcp14>MUST NOT</bcp14> exceed 255 octets. Implementations <bcp14>MUST</bcp14> validate IP addresses, prefix lengths, and DNS names before evaluating mechanisms.</t>
        <t>Record generators <bcp14>MUST</bcp14> emit the version tag and mechanism names in lowercase. Receivers and linkback proxies <bcp14>MUST</bcp14> compare the version tag and mechanism names case-insensitively for ASCII letters. Domain names are compared using DNS case-insensitive comparison.</t>
        <t>A record containing only <tt>v=ppf1</tt> is valid and is equivalent to <tt>v=ppf1 none</tt>. Generators <bcp14>SHOULD</bcp14> emit <tt>v=ppf1 none</tt> rather than the bare version tag.</t>
        <t>The <tt>none</tt> policy <bcp14>MUST NOT</bcp14> appear with any other mechanism. A record such as <tt>v=ppf1 none ip4:192.0.2.1</tt> is invalid and evaluates to <tt>permerror</tt>.</t>
      </section>
      <section anchor="mechanisms">
        <name>Mechanisms</name>
        <t>Mechanisms are evaluated from left to right. The first matching mechanism determines that the sender is authorized. If no mechanism matches, the result is <tt>fail</tt>.</t>
        <dl>
          <dt><tt>a</tt></dt>
          <dd>
            <t>Authorizes IP addresses resolved from the host component of the source URI. For an IPv4 sender, this mechanism performs an A lookup; for an IPv6 sender, it performs an AAAA lookup.</t>
          </dd>
          <dt><tt>a:&lt;hostname&gt;</tt></dt>
          <dd>
            <t>Authorizes IP addresses resolved from the specified hostname. For an IPv4 sender, this mechanism performs an A lookup; for an IPv6 sender, it performs an AAAA lookup.</t>
          </dd>
          <dt><tt>ip4:&lt;addr-or-cidr&gt;</tt></dt>
          <dd>
            <t>Authorizes an IPv4 address or IPv4 CIDR range.</t>
          </dd>
          <dt><tt>ip6:&lt;addr-or-cidr&gt;</tt></dt>
          <dd>
            <t>Authorizes an IPv6 address or IPv6 CIDR range.</t>
          </dd>
          <dt><tt>include:&lt;domain&gt;</tt></dt>
          <dd>
            <t>Evaluates the PPF policy at <tt>_pingback.&lt;domain&gt;</tt>. The include mechanism matches only if the included policy evaluates to <tt>pass</tt> for the sender IP address.</t>
          </dd>
          <dt><tt>none</tt></dt>
          <dd>
            <t>Explicitly authorizes no senders. A policy of <tt>none</tt> evaluates to <tt>fail</tt> for every sender IP address.</t>
          </dd>
        </dl>
        <t>The <tt>a</tt> mechanism is convenient for self-hosted sites whose web-serving addresses are also valid linkback-sending addresses. It is not appropriate for sites using origin-hiding CDNs, split-horizon DNS, or managed outbound infrastructure unless the operator intends those resolved addresses to be authorized senders.</t>
      </section>
    </section>
    <section anchor="evaluation-results">
      <name>Evaluation Results</name>
      <t>PPF evaluation returns one of the following results. These result names deliberately mirror SPF where the same concepts apply.</t>
      <dl>
        <dt><tt>pass</tt></dt>
        <dd>
          <t>A valid PPF policy exists and a mechanism authorizes the sender IP address.</t>
        </dd>
        <dt><tt>fail</tt></dt>
        <dd>
          <t>A valid PPF policy exists, but no mechanism authorizes the sender IP address, or the policy is <tt>none</tt>.</t>
        </dd>
        <dt><tt>none</tt></dt>
        <dd>
          <t>No usable PPF policy was found for the source domain. This includes a source URI without a DNS source domain, NXDOMAIN, NODATA, and the absence of any TXT RR whose first token is <tt>v=ppf1</tt> at the expected owner name.</t>
        </dd>
        <dt><tt>permerror</tt></dt>
        <dd>
          <t>A PPF policy exists but cannot be used because it is malformed, ambiguous, contains invalid syntax, contains an unsupported mechanism, exceeds a lookup or include-depth limit, or otherwise violates this specification.</t>
        </dd>
        <dt><tt>temperror</tt></dt>
        <dd>
          <t>A temporary error occurred while attempting to retrieve or evaluate the policy, such as a DNS timeout or SERVFAIL.</t>
        </dd>
      </dl>
      <t>The <tt>none</tt> evaluation result is distinct from the <tt>none</tt> policy mechanism. A policy of <tt>v=ppf1 none</tt> is a usable policy that explicitly authorizes no senders; it therefore evaluates to <tt>fail</tt>, not <tt>none</tt>.</t>
      <t>Protocol bindings define how these results are mapped to protocol-specific responses. In strict mode, any result other than <tt>pass</tt> prevents source-resource fetching; the protocol binding defines whether the request is rejected, deferred, or otherwise represented. In permissive mode, <tt>none</tt>, <tt>permerror</tt>, and <tt>temperror</tt> can be treated as absence of PPF authorization and the receiver or proxy can proceed according to the underlying protocol's ordinary behavior.</t>
      <t>A receiver or linkback proxy <bcp14>MAY</bcp14> apply local policy that is stricter than the selected protocol binding, including rejecting <tt>temperror</tt> in otherwise permissive deployments.</t>
    </section>
    <section anchor="verification-algorithm">
      <name>Verification Algorithm</name>
      <t>Given a linkback, the receiver or linkback proxy obtains the following inputs from the protocol binding and local trusted-proxy configuration:</t>
      <ul spacing="normal">
        <li>
          <t>source URI;</t>
        </li>
        <li>
          <t>target URI;</t>
        </li>
        <li>
          <t>sender IP address; and</t>
        </li>
        <li>
          <t>enforcement mode.</t>
        </li>
      </ul>
      <t>PPF evaluates only the source URI and sender IP address. The target URI is part of the linkback protocol and is not used by the base PPF algorithm.</t>
      <t>The receiver or linkback proxy performs the following steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>Extract the host component from the source URI.</t>
        </li>
        <li>
          <t>Convert the host component to a DNS domain name. Internationalized domain names <bcp14>MUST</bcp14> be converted to A-label form. If the host is an IP address literal or cannot otherwise be converted to a DNS domain name, return <tt>none</tt>.</t>
        </li>
        <li>
          <t>Query the TXT RRset at <tt>_pingback.&lt;source-domain&gt;</tt>.</t>
        </li>
        <li>
          <t>If the lookup returns NXDOMAIN or NODATA for the owner name, return <tt>none</tt>.</t>
        </li>
        <li>
          <t>If the lookup fails because of a temporary DNS error, return <tt>temperror</tt>.</t>
        </li>
        <li>
          <t>From the returned TXT RRset, select records whose concatenated content is exactly <tt>v=ppf1</tt> or begins with <tt>v=ppf1</tt> followed by one or more SP characters, using ASCII case-insensitive comparison.</t>
        </li>
        <li>
          <t>If no PPF records are present, return <tt>none</tt>.</t>
        </li>
        <li>
          <t>If more than one PPF record is present, return <tt>permerror</tt>.</t>
        </li>
        <li>
          <t>Parse the selected PPF record. If parsing fails, return <tt>permerror</tt>.</t>
        </li>
        <li>
          <t>Evaluate mechanisms from left to right.</t>
        </li>
        <li>
          <t>If a mechanism matches, return <tt>pass</tt>.</t>
        </li>
        <li>
          <t>If no mechanism matches, return <tt>fail</tt>.</t>
        </li>
      </ol>
      <t>Receivers and linkback proxies <bcp14>MUST NOT</bcp14> fetch the claimed source URI as part of PPF evaluation. Source-resource fetching belongs to the linkback protocol's ordinary verification step and occurs only after PPF processing permits it.</t>
    </section>
    <section anchor="dns-processing-rules">
      <name>DNS Processing Rules</name>
      <section anchor="txt-record-selection">
        <name>TXT Record Selection</name>
        <t>A TXT RRset <bcp14>MAY</bcp14> contain records used for unrelated purposes or other PPF versions. Receivers and linkback proxies <bcp14>MUST</bcp14> ignore TXT records whose first token is not exactly <tt>v=ppf1</tt>, using ASCII case-insensitive comparison.</t>
        <t>A TXT RR containing multiple character strings is parsed as the concatenation of those character strings, in order, without inserted whitespace. This matches the DNS TXT representation and avoids ambiguity introduced by DNS presentation formats.</t>
        <t>If more than one TXT RR at the PPF owner name has <tt>v=ppf1</tt> as its first token, the policy is ambiguous and evaluation returns <tt>permerror</tt>.</t>
      </section>
      <section anchor="cname-handling">
        <name>CNAME Handling</name>
        <t>Receivers and linkback proxies <bcp14>MAY</bcp14> follow CNAME aliases encountered while resolving PPF owner names or mechanism hostnames, subject to ordinary DNS resolver behavior and the DNS lookup limits in this document. DNS lookups caused by CNAME chasing count toward the DNS lookup limit.</t>
        <t>If CNAME processing results in a loop or resolver error, evaluation returns <tt>temperror</tt> or <tt>permerror</tt> according to the resolver error.</t>
      </section>
      <section anchor="dns-lookup-limits">
        <name>DNS Lookup Limits</name>
        <t>To limit resource consumption, PPF evaluation <bcp14>MUST NOT</bcp14> perform more than 10 DNS queries after the initial TXT query for <tt>_pingback.&lt;source-domain&gt;</tt>. Every subsequent query caused by evaluation counts toward this limit, including included-policy TXT queries, A or AAAA queries, and queries caused by CNAME processing.</t>
        <t>Include depth <bcp14>MUST NOT</bcp14> exceed 5. The top-level policy is depth 0. A policy reached by one <tt>include</tt> is depth 1.</t>
        <t>If the lookup limit or include-depth limit is exceeded, evaluation returns <tt>permerror</tt>.</t>
      </section>
    </section>
    <section anchor="mechanism-evaluation">
      <name>Mechanism Evaluation</name>
      <section anchor="a">
        <name><tt>a</tt></name>
        <t>For an IPv4 sender, the <tt>a</tt> mechanism resolves the source domain using an A lookup. For an IPv6 sender, it resolves the source domain using an AAAA lookup. If the sender IP address is equal to any returned address, the mechanism matches.</t>
        <t>If all required DNS lookups complete successfully but return no usable addresses, the mechanism does not match.</t>
        <t>If a temporary DNS error occurs while evaluating the mechanism, evaluation returns <tt>temperror</tt>.</t>
      </section>
      <section anchor="ahostname">
        <name><tt>a:&lt;hostname&gt;</tt></name>
        <t>For an IPv4 sender, the <tt>a:&lt;hostname&gt;</tt> mechanism resolves the specified hostname using an A lookup. For an IPv6 sender, it resolves the hostname using an AAAA lookup. If the sender IP address is equal to any returned address, the mechanism matches.</t>
        <t>The hostname <bcp14>MUST</bcp14> be a valid DNS name. If it is not valid, evaluation returns <tt>permerror</tt>.</t>
      </section>
      <section anchor="ip4addr-or-cidr">
        <name><tt>ip4:&lt;addr-or-cidr&gt;</tt></name>
        <t>The <tt>ip4</tt> mechanism matches when the sender IP address is an IPv4 address within the specified IPv4 address or CIDR range.</t>
        <t>The prefix length, if present, <bcp14>MUST</bcp14> be between 0 and 32 inclusive. An invalid IPv4 address or prefix length makes the policy invalid and evaluation returns <tt>permerror</tt>.</t>
        <t>IPv4-mapped IPv6 addresses <bcp14>MUST NOT</bcp14> be treated as IPv4 addresses for <tt>ip4</tt> matching unless the protocol binding explicitly normalizes them before invoking PPF. Bindings that can receive IPv4-mapped IPv6 peer addresses <bcp14>SHOULD</bcp14> normalize them to IPv4 before PPF evaluation when that reflects the actual network peer.</t>
      </section>
      <section anchor="ip6addr-or-cidr">
        <name><tt>ip6:&lt;addr-or-cidr&gt;</tt></name>
        <t>The <tt>ip6</tt> mechanism matches when the sender IP address is an IPv6 address within the specified IPv6 address or CIDR range.</t>
        <t>The prefix length, if present, <bcp14>MUST</bcp14> be between 0 and 128 inclusive. An invalid IPv6 address or prefix length makes the policy invalid and evaluation returns <tt>permerror</tt>.</t>
      </section>
      <section anchor="includedomain">
        <name><tt>include:&lt;domain&gt;</tt></name>
        <t>The <tt>include</tt> mechanism evaluates the PPF policy at <tt>_pingback.&lt;domain&gt;</tt> using the original sender IP address.</t>
        <t>If the included policy returns <tt>pass</tt>, the include mechanism matches.</t>
        <t>If the included policy returns <tt>fail</tt>, the include mechanism does not match and mechanism evaluation continues with the next mechanism in the including policy.</t>
        <t>If the included policy returns <tt>temperror</tt> or <tt>permerror</tt>, evaluation of the including policy returns that result.</t>
        <t>If the included policy returns <tt>none</tt>, evaluation of the including policy returns <tt>permerror</tt>. This mirrors SPF <tt>include</tt> behavior: <tt>include</tt> is a request to evaluate another policy for a <tt>pass</tt> result, not a textual inclusion mechanism.</t>
        <t>Include processing is subject to the DNS lookup and include-depth limits defined in this document. Implementations <bcp14>MUST</bcp14> detect include loops. If an include loop is detected, evaluation returns <tt>permerror</tt>.</t>
      </section>
    </section>
    <section anchor="enforcement-modes">
      <name>Enforcement Modes</name>
      <t>PPF defines two enforcement modes. Protocol bindings <bcp14>MUST</bcp14> specify the default enforcement mode for that protocol. Receivers and linkback proxies <bcp14>MAY</bcp14> apply a stricter local policy than the binding default.</t>
      <section anchor="strict-mode">
        <name>Strict Mode</name>
        <t>In strict mode, a receiver or linkback proxy proceeds to source-resource verification only when PPF evaluation returns <tt>pass</tt>.</t>
        <t>For every other result, the receiver or linkback proxy <bcp14>MUST NOT</bcp14> fetch the claimed source URI. The protocol binding defines whether the request is rejected, deferred, or otherwise represented.</t>
        <t>Strict mode provides the strongest protection against reflected fetches because linkbacks without a <tt>pass</tt> result never cause source-resource fetches.</t>
      </section>
      <section anchor="permissive-mode">
        <name>Permissive Mode</name>
        <t>In permissive mode, a receiver or linkback proxy proceeds to source-resource verification when PPF evaluation returns <tt>pass</tt>. It <bcp14>MAY</bcp14> also proceed when evaluation returns <tt>none</tt>, <tt>permerror</tt>, or <tt>temperror</tt>.</t>
        <t>If evaluation returns <tt>fail</tt>, the receiver or linkback proxy <bcp14>MUST</bcp14> reject the linkback before fetching the claimed source URI.</t>
        <t>Permissive mode is intended for transition periods and backward-compatible deployments. It allows existing linkback ecosystems to continue functioning while domains gradually publish PPF policies.</t>
      </section>
    </section>
    <section anchor="protocol-binding-requirements">
      <name>Protocol Binding Requirements</name>
      <t>This document defines the PPF DNS policy format, evaluation algorithm, result vocabulary, and generic proxy-processing model. It does not define a complete binding for any particular linkback protocol.</t>
      <t>A protocol binding that uses PPF <bcp14>MUST</bcp14> define:</t>
      <ul spacing="normal">
        <li>
          <t>how the source URI is identified;</t>
        </li>
        <li>
          <t>how the target URI is identified;</t>
        </li>
        <li>
          <t>how the receiver or linkback proxy determines the sender IP address;</t>
        </li>
        <li>
          <t>whether the binding uses strict mode or permissive mode by default;</t>
        </li>
        <li>
          <t>how each PPF evaluation result is represented to the sender;</t>
        </li>
        <li>
          <t>whether asynchronous processing is supported;</t>
        </li>
        <li>
          <t>whether a capability signal is required to use asynchronous or extended response behavior;</t>
        </li>
        <li>
          <t>how protected receivers advertise proxy endpoints, if proxied operation is supported;</t>
        </li>
        <li>
          <t>how proxy metadata is carried from a linkback proxy to a protected receiver, if proxied operation is supported; and</t>
        </li>
        <li>
          <t>how a protected receiver authenticates the proxy, if proxied operation is supported.</t>
        </li>
      </ul>
      <t>A binding <bcp14>MUST</bcp14> preserve the PPF ordering requirement: PPF evaluation occurs before any receiver-initiated or proxy-initiated fetch of the claimed source URI.</t>
      <t>A binding <bcp14>MAY</bcp14> define additional protocol-specific error codes, response formats, status resources, metadata fields, or endpoint-discovery rules.</t>
    </section>
    <section anchor="linkback-proxy-operation">
      <name>Linkback Proxy Operation</name>
      <t>A linkback proxy is a service that receives linkbacks on behalf of protected receivers, performs PPF and source-resource verification, caches the results, and then contacts the protected receiver using a protocol binding.</t>
      <t>The purpose of this model is to allow a CDN, hosting provider, reverse proxy, or dedicated linkback service to absorb the DNS and HTTP risk of linkback processing before a request reaches the protected receiver.</t>
      <t>This section defines the protocol-independent proxy model. Protocol bindings define how the model is represented for particular linkback protocols.</t>
      <t>A linkback proxy <bcp14>SHOULD</bcp14> operate in strict mode by default. Permissive operation can be useful for staged deployment or diagnostics, but it weakens the protection the proxy is intended to provide.</t>
      <section anchor="proxy-processing-model">
        <name>Proxy Processing Model</name>
        <t>A linkback proxy receiving a linkback request performs the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>Extract the source URI and target URI according to the relevant protocol binding.</t>
          </li>
          <li>
            <t>Determine the sender IP address from the client connection and trusted local configuration.</t>
          </li>
          <li>
            <t>Apply syntax, target-routing, duplicate, rate-limit, and other local checks that do not require fetching the claimed source URI.</t>
          </li>
          <li>
            <t>Evaluate PPF for the source URI and sender IP address.</t>
          </li>
          <li>
            <t>If PPF and local policy do not permit source fetching, reject, defer, or record the result according to the protocol binding.</t>
          </li>
          <li>
            <t>If PPF permits source fetching, fetch the claimed source URI.</t>
          </li>
          <li>
            <t>Verify that the fetched source resource links to the target URI.</t>
          </li>
          <li>
            <t>Apply any remaining abuse, reputation, and receiver policy checks.</t>
          </li>
          <li>
            <t>Cache the fetched source representation, canonical source URI, validation result, PPF result, sender IP address, verification time, and any other metadata needed by the protected receiver.</t>
          </li>
          <li>
            <t>Contact the protected receiver using the relevant protocol binding.</t>
          </li>
        </ol>
        <t>A linkback proxy <bcp14>MUST NOT</bcp14> fetch the claimed source URI after PPF evaluation returns <tt>fail</tt>.</t>
        <t>In strict mode, a linkback proxy <bcp14>MUST NOT</bcp14> fetch the claimed source URI unless PPF evaluation returns <tt>pass</tt>.</t>
        <t>In permissive mode, a linkback proxy <bcp14>MAY</bcp14> fetch the claimed source URI after <tt>none</tt>, <tt>permerror</tt>, or <tt>temperror</tt> according to the protocol binding and local policy.</t>
      </section>
      <section anchor="proxy-to-receiver-metadata">
        <name>Proxy-to-Receiver Metadata</name>
        <t>A protocol binding for proxied operation <bcp14>SHOULD</bcp14> define how the proxy communicates the following metadata to the protected receiver:</t>
        <ul spacing="normal">
          <li>
            <t>original sender IP address;</t>
          </li>
          <li>
            <t>submitted source URI;</t>
          </li>
          <li>
            <t>canonical source URI after redirects, if different;</t>
          </li>
          <li>
            <t>target URI;</t>
          </li>
          <li>
            <t>PPF evaluation result;</t>
          </li>
          <li>
            <t>source-verification result;</t>
          </li>
          <li>
            <t>verification timestamp;</t>
          </li>
          <li>
            <t>cached source representation or a cache URL;</t>
          </li>
          <li>
            <t>proxy identity; and</t>
          </li>
          <li>
            <t>any policy or abuse result the protected receiver needs in order to process the linkback.</t>
          </li>
        </ul>
        <t>The metadata format is protocol-specific. This document does not define HTTP fields, JSON members, XML-RPC extensions, form parameters, signatures, or other protocol-specific serialization.</t>
      </section>
      <section anchor="cache-urls-and-cached-representations">
        <name>Cache URLs and Cached Representations</name>
        <t>When a proxy provides a cache URL or cached source representation to a protected receiver, the cache object <bcp14>MUST</bcp14> correspond to the source representation used by the proxy when it performed source verification.</t>
        <t>Cache URLs <bcp14>MUST</bcp14> be unguessable or access-controlled. A protected receiver <bcp14>MUST</bcp14> authenticate the proxy before dereferencing a proxy-provided cache URL.</t>
        <t>The proxy <bcp14>SHOULD</bcp14> make cached representations available long enough for the protected receiver to complete linkback processing. The protocol binding or deployment profile can define specific lifetimes.</t>
        <t>A protected receiver <bcp14>MUST NOT</bcp14> fetch the submitted source URI directly. If it requires the source representation, it <bcp14>MUST</bcp14> use the proxy-provided cached representation or cache URL, or reject the linkback. A receiver that can rely on authenticated proxy-provided validation metadata without reading the source representation <bcp14>MAY</bcp14> do so.</t>
      </section>
      <section anchor="proxy-authentication">
        <name>Proxy Authentication</name>
        <t>A protected receiver <bcp14>MUST</bcp14> authenticate the linkback proxy before relying on proxy-provided metadata, validation results, or cache URLs.</t>
        <t>This document does not define a single proxy-authentication mechanism. Deployments can use IP allowlists, shared secrets, request signatures, mutual TLS, private network paths, or equivalent mechanisms. Protocol bindings or deployment profiles can define a specific authentication method.</t>
        <t>A protected receiver that is configured to require a linkback proxy <bcp14>MUST</bcp14> reject direct linkback requests that bypass the configured proxy.</t>
      </section>
      <section anchor="endpoint-advertisement">
        <name>Endpoint Advertisement</name>
        <t>A protected receiver using a linkback proxy advertises a proxy endpoint rather than its origin endpoint. The way this is done is protocol-specific and <bcp14>MUST</bcp14> be defined by the protocol binding.</t>
        <t>Clients normally do not need to know whether the advertised endpoint is an origin receiver or a proxy.</t>
      </section>
      <section anchor="proxy-as-sender">
        <name>Proxy as Sender</name>
        <t>A proxy that sends linkbacks on behalf of source domains is a sender for PPF purposes. The source domain's PPF policy needs to authorize the proxy's sending addresses.</t>
        <t>A proxy that receives linkbacks on behalf of protected receivers is not automatically authorized to send linkbacks for arbitrary source domains. Authorization is always determined from the source domain's PPF policy and the sender IP address evaluated for the linkback.</t>
      </section>
    </section>
    <section anchor="sender-behavior">
      <name>Sender Behavior</name>
      <t>Senders and proxies using PPF with linkback protocols <bcp14>SHOULD</bcp14>:</t>
      <ul spacing="normal">
        <li>
          <t>avoid retry storms;</t>
        </li>
        <li>
          <t>respect protocol-specific retry and status guidance;</t>
        </li>
        <li>
          <t>implement exponential backoff after temporary protocol or transport failures; and</t>
        </li>
        <li>
          <t>avoid repeatedly sending linkbacks to receivers that persistently reject or fail requests.</t>
        </li>
      </ul>
      <t>A sender <bcp14>MUST NOT</bcp14> treat PPF <tt>pass</tt> as evidence that a receiver will accept or display the linkback. PPF authorizes the sender; it does not grant any right to appear on the receiver's site.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="reflected-fetches">
        <name>Reflected Fetches</name>
        <t>PPF is designed to prevent unauthorized senders from causing receivers or linkback proxies to fetch claimed source URIs. Authorization is obtained from DNS before fetching the source resource. In strict mode, linkbacks that do not pass PPF evaluation do not cause source-resource fetching.</t>
        <t>Permissive mode weakens this protection for domains without usable PPF policies. It is intended for transition and compatibility.</t>
      </section>
      <section anchor="dns-tarpitting-and-resource-exhaustion">
        <name>DNS Tarpitting and Resource Exhaustion</name>
        <t>PPF introduces DNS lookups into the linkback path. Attackers can use slow or unresponsive authoritative name servers to consume receiver or proxy resources. Receivers and linkback proxies <bcp14>SHOULD</bcp14> enforce resolver timeouts, use caching, limit concurrency, and process linkbacks asynchronously where appropriate.</t>
        <t>The DNS lookup and include-depth limits in this document are mandatory resource-exhaustion controls.</t>
      </section>
      <section anchor="http-tarpitting">
        <name>HTTP Tarpitting</name>
        <t>PPF reduces unauthorized source-resource fetching, but it does not remove the need to protect the subsequent source verification step. Authorized senders can still link to resources that respond slowly, redirect repeatedly, or attempt other HTTP-level resource exhaustion attacks. Receivers and proxies <bcp14>SHOULD</bcp14> enforce timeouts, redirect limits, content-size limits, and content-type policies when verifying source resources.</t>
      </section>
      <section anchor="server-side-request-forgery">
        <name>Server-Side Request Forgery</name>
        <t>Receivers and proxies that fetch source URIs need SSRF protections independent of PPF. A PPF-authorized sender might submit a source URI that redirects to private or internal address space, changes DNS answers between authorization and fetch, or serves malicious content.</t>
        <t>Receivers and proxies <bcp14>SHOULD</bcp14> reject or carefully control fetches to loopback, link-local, private, and otherwise restricted address ranges unless explicitly configured to permit them. Receivers and proxies <bcp14>SHOULD</bcp14> resolve and re-check addresses after redirects and immediately before connecting.</t>
      </section>
      <section anchor="dns-rebinding">
        <name>DNS Rebinding</name>
        <t>PPF authorization and source-resource fetching are separate operations. A source hostname can resolve differently during PPF evaluation and later HTTP fetching. Receivers and proxies <bcp14>MUST NOT</bcp14> assume that an <tt>a</tt> mechanism match implies that fetching the source URI is safe. SSRF protections apply regardless of PPF result.</t>
      </section>
      <section anchor="origin-ip-exposure">
        <name>Origin IP Exposure</name>
        <t>Sites using CDNs or DDoS-protection services often proxy inbound traffic but not outbound verification fetches. A receiver that performs direct source-resource fetching can expose its origin IP address through outbound connections.</t>
        <t>Sites requiring origin hiding <bcp14>MUST</bcp14> use proxied operation or disable linkback receiving. An origin receiver configured to require a linkback proxy <bcp14>MUST</bcp14> reject linkback requests that bypass the configured proxy.</t>
      </section>
      <section anchor="dnssec">
        <name>DNSSEC</name>
        <t>PPF does not require DNSSEC. Deployments that use validating resolvers can obtain stronger protection against DNS spoofing. If DNSSEC validation returns a Bogus result for a PPF lookup, receivers and proxies <bcp14>SHOULD</bcp14> treat the lookup as <tt>temperror</tt> unless local policy dictates stricter handling.</t>
      </section>
      <section anchor="abuse-and-spam">
        <name>Abuse and Spam</name>
        <t>PPF does not prevent spam or abuse from authorized senders. A valid PPF <tt>pass</tt> only means that the source domain authorizes the sender IP address for linkbacks. Receivers still need moderation, reputation systems, rate limits, and content filtering.</t>
      </section>
      <section anchor="policy-delegation">
        <name>Policy Delegation</name>
        <t>The <tt>include</tt> mechanism delegates authorization decisions to another domain. A source domain that uses <tt>include</tt> depends on the included domain's DNS security and operational practices. Compromise or misconfiguration of the included domain can authorize unintended senders.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="dns-query-metadata">
        <name>DNS Query Metadata</name>
        <t>PPF lookups reveal that a receiver or proxy is processing a linkback claiming to originate from a source domain. This metadata can be visible to recursive resolvers, authoritative DNS operators, and network observers.</t>
        <t>Caching reduces query volume but does not eliminate metadata exposure. Receivers and proxies concerned about DNS privacy should consider encrypted DNS transport to their recursive resolver, local caching resolvers, and query minimization where available.</t>
      </section>
      <section anchor="proxy-trust">
        <name>Proxy Trust</name>
        <t>Linkback proxies can observe linkback metadata, source-resource content fetched for verification, timing patterns, and relationships among participating sites. Sites using proxied operation should treat linkback proxies as trusted infrastructure providers.</t>
      </section>
      <section anchor="cache-urls">
        <name>Cache URLs</name>
        <t>Cache URLs can reveal source content and linkback-processing state. Cache URLs need to be unguessable or access-controlled, and protected receivers need to authenticate the proxy before using them.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="underscored-and-globally-scoped-dns-node-name">
        <name>Underscored and Globally Scoped DNS Node Name</name>
        <t>IANA is requested to register the following entry in the "Underscored and Globally Scoped DNS Node Names" registry established by <xref target="RFC8552"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">RR Type</th>
              <th align="left">_NODE NAME</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TXT</td>
              <td align="left">_pingback</td>
              <td align="left">RFC-to-be</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="self-hosted-site">
        <name>Self-Hosted Site</name>
        <t>A site that sends linkbacks from the same addresses used by its source host publishes:</t>
        <sourcecode type="dns"><![CDATA[
_pingback.example.com. IN TXT "v=ppf1 a"
]]></sourcecode>
      </section>
      <section anchor="static-site-with-external-linkback-service">
        <name>Static Site with External Linkback Service</name>
        <t>A site that uses a third-party linkback service publishes:</t>
        <sourcecode type="dns"><![CDATA[
_pingback.blog.example.com. IN TXT "v=ppf1 a:linkback.example.net"
]]></sourcecode>
      </section>
      <section anchor="multiple-authorized-sources">
        <name>Multiple Authorized Sources</name>
        <t>A site that sends from its own host and from a managed service publishes:</t>
        <sourcecode type="dns"><![CDATA[
_pingback.news.example.com. IN TXT (
  "v=ppf1 a ip4:192.0.2.0/24 "
  "include:linkback.example.net"
)
]]></sourcecode>
      </section>
      <section anchor="domain-that-sends-no-linkbacks">
        <name>Domain That Sends No Linkbacks</name>
        <t>A domain that does not send linkbacks publishes:</t>
        <sourcecode type="dns"><![CDATA[
_pingback.docs.example.com. IN TXT "v=ppf1 none"
]]></sourcecode>
        <t>This explicitly declares that no sender is authorized to send linkbacks for source URIs on that domain.</t>
      </section>
      <section anchor="site-using-a-linkback-proxy">
        <name>Site Using a Linkback Proxy</name>
        <t>A site using a linkback proxy publishes:</t>
        <sourcecode type="dns"><![CDATA[
_pingback.example.org. IN TXT "v=ppf1 include:linkback.example.net"
]]></sourcecode>
        <t>The site advertises linkback endpoints hosted by the proxy and configures the origin receiver to reject direct linkback requests.</t>
      </section>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <section anchor="caching">
        <name>Caching</name>
        <t>Receivers and proxies <bcp14>SHOULD</bcp14> cache positive PPF results according to DNS TTLs. They <bcp14>MAY</bcp14> cache <tt>fail</tt>, <tt>none</tt>, <tt>permerror</tt>, and <tt>temperror</tt> results for short periods to protect themselves from repeated expensive lookups, subject to local policy and the considerations in <xref target="RFC2308"/>.</t>
        <t>Caches need to account for the sender IP address, source domain, and relevant DNS answers. A cached authorization result for one sender IP address <bcp14>MUST NOT</bcp14> be reused for a different sender IP address unless the cached policy evaluation proves that the different address is covered by the same matching mechanism.</t>
      </section>
      <section anchor="managed-hosting-providers">
        <name>Managed Hosting Providers</name>
        <t>Managed hosting providers can publish PPF records for customer domains or provide DNS guidance for customers. A provider that sends linkbacks on behalf of customers can publish a provider-level PPF policy and instruct customers to include it.</t>
        <t>Providers that operate linkback proxies for protected receivers can publish provider-level endpoint guidance and origin-protection guidance in the protocol bindings they support.</t>
        <t>Providers that do not support outbound linkbacks can publish <tt>v=ppf1 none</tt> for hosted domains where they control DNS and where doing so reflects customer intent.</t>
      </section>
      <section anchor="transition">
        <name>Transition</name>
        <t>Permissive mode allows gradual deployment. Receivers and proxies can start by checking PPF records and rejecting only explicit <tt>fail</tt> results. As publication becomes common, receivers and proxies can move selected protocols, domains, or local policies to strict mode.</t>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>PPF borrows the DNS-based authorization pattern from SPF while adapting it to linkback protocols.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC5891">
          <front>
            <title>Internationalized Domain Names in Applications (IDNA): Protocol</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is the revised protocol definition for Internationalized Domain Names (IDNs). The rationale for changes, the relationship to the older specification, and important terminology are provided in other documents. This document specifies the protocol mechanism, called Internationalized Domain Names in Applications (IDNA), for registering and looking up IDNs in a way that does not require changes to the DNS itself. IDNA is only meant for processing domain names, not free text. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5891"/>
          <seriesInfo name="DOI" value="10.17487/RFC5891"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2308">
          <front>
            <title>Negative Caching of DNS Queries (DNS NCACHE)</title>
            <author fullname="M. Andrews" initials="M." surname="Andrews"/>
            <date month="March" year="1998"/>
            <abstract>
              <t>RFC1034 provided a description of how to cache negative responses. It however had a fundamental flaw in that it did not allow a name server to hand out those cached responses to other resolvers, thereby greatly reducing the effect of the caching. This document addresses issues raise in the light of experience and replaces RFC1034 Section 4.3.4. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2308"/>
          <seriesInfo name="DOI" value="10.17487/RFC2308"/>
        </reference>
        <reference anchor="RFC7208">
          <front>
            <title>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</title>
            <author fullname="S. Kitterman" initials="S." surname="Kitterman"/>
            <date month="April" year="2014"/>
            <abstract>
              <t>Email on the Internet can be forged in a number of ways. In particular, existing protocols place no restriction on what a sending host can use as the "MAIL FROM" of a message or the domain given on the SMTP HELO/EHLO commands. This document describes version 1 of the Sender Policy Framework (SPF) protocol, whereby ADministrative Management Domains (ADMDs) can explicitly authorize the hosts that are allowed to use their domain names, and a receiving host can check such authorization.</t>
              <t>This document obsoletes RFC 4408.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7208"/>
          <seriesInfo name="DOI" value="10.17487/RFC7208"/>
        </reference>
        <reference anchor="RFC8552">
          <front>
            <title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Formally, any DNS Resource Record (RR) may occur under any domain name. However, some services use an operational convention for defining specific interpretations of an RRset by locating the records in a DNS branch under the parent domain to which the RRset actually applies. The top of this subordinate branch is defined by a naming convention that uses a reserved node name, which begins with the underscore character (e.g., "_name"). The underscored naming construct defines a semantic scope for DNS record types that are associated with the parent domain above the underscored branch. This specification explores the nature of this DNS usage and defines the "Underscored and Globally Scoped DNS Node Names" registry with IANA. The purpose of this registry is to avoid collisions resulting from the use of the same underscored name for different services.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="222"/>
          <seriesInfo name="RFC" value="8552"/>
          <seriesInfo name="DOI" value="10.17487/RFC8552"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8196XbbSJLufz4FRv2jlkvSlst2u+Sq6lF56dI9XjSSqpdT
x6cFgiCFMQiwkYBkzvT0s8yzzJNNfBGRGwBKKk/PPbd+lCkSyIyMjD0iI2ez
2aQt2jI/Sg5Oi2q9SLOPyWnebIq2zZfJ66beJF+enr7+6mCSLhZNfo3nTl8f
TJZ1VqUbem3ZpKt2VubZx7JY5s1su13NHj6cZGmbr+tmd5Tkn7YT0y02hTFF
XbW7Lb108uri9aTYNkdJ23SmffTw4bcPH03SJk+PkuPttizodXrYJGm1TM7y
tJxdFJt8clM3H9dN3W1phGpZXBfLLi2Tczf45GO+o2eWR5MkmSVlUX3Eetwf
SVW3xUrH5m9fvjvnf01eEexJ2rVXdVP8mzxgWpr9L2lZVznDmU+2BUZu60z/
ThJTN22Tr4z/YrcJ/pYBjyazRJD14iptytwkbyy66I26WfNy8i2AqFr6Kt+k
RXmUZPJ0+c9FdV2YeZXjt64pjpKrtt2aowcP/A9V3WwI7OscEJ69fvHNt8+e
6scnj755bD8++/ah/3h4NCmqVe/FR988fKYff/vIfXz25Mmjo8lkNpsl6cK0
TZq1k8mtBJMs81VR0VpTYHm2SA39vMlpTVVhNglN69BNw+gOmKReuX1Lmvyv
XW5aM0+Ok2VNOKmS+qaifdp2i7IwVzz4xZ8u6MGMdp1mzMq0wWg3V0V2lVzV
9HJCVJVsHYBtzVO5SQxDYuquyfLk57MTgqBK2qu01RnnRH5ZTuhphBgdcNum
/lQQBFmK5/OKgPjXPGuTrrLLysNZFjnNkyervM2uACG9khC0RNXLYPY5IfX0
dVKYpKhaYGTJ4IWTEvXVJX7XRaaWeHk0I7ATySY3+YJg0rExgsHiU+KBK5A6
rQUwNLq65KbuymXCP94URiEdA9ONSaPRi8VqJ3PyY/ME8BOYxJuEnDG+ep4U
QC79SqDQaNsypcGyGgtuZURl0Wmyqel1/QyCWXSArCjbHNs8F4LcFMtlmU8m
vyEuapt62WXMvpM3Q6ylZVnfMHZM0fIKWCTsHFp4JelgqR59SZs267x1P81p
0oSEGoFcEgFuy3q3oXWYaYxdWVZu+Fu3nYvdXQTB+5RdkbiQZwg6wh6QRbQJ
8me5RoDhdQVN6OjiiqjIzj8ztB0RbhPT5tskI4nbMhuN7RQQtyhz2tQ/FvR1
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
onPn6GUqfaPl2r6xoyr/DSLdj+mFlwAA

-->

</rfc>
