<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc version="3" ipr="trust200902" docName="draft-davids-forsalereg-10" submissionType="IETF" category="bcp" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" indexInclude="true" tocDepth="3">

<front>
<title abbrev="forsalereg">The "_for-sale" Underscored and Globally Scoped DNS Node Name</title><seriesInfo value="draft-davids-forsalereg-10" stream="IETF" status="bcp" name="Internet-Draft"></seriesInfo>
<author initials="M." surname="Davids" fullname="Marco Davids"><organization abbrev="SIDN Labs">SIDN Labs</organization><address><postal><street>Meander 501</street>
<city>Arnhem</city>
<code>6825 MD</code>
<country>Netherlands</country>
</postal><phone>+31 26 352 5500</phone>
<email>marco.davids@sidn.nl</email>
</address></author><date/>
<area>Internet</area>
<workgroup>Internet Engineering Task Force (IETF)</workgroup>

<abstract>
<t>This document defines an operational convention for using the reserved
underscored DNS leaf node name &quot;_for-sale&quot; to indicate that the
parent domain name is available for purchase. This approach offers
the advantage of easy deployment without affecting ongoing operations.
As such, the method can be applied to a domain name that is still in full use.</t>
</abstract>

<note><name>About This Document</name>
<t>This note is to be removed before publishing as an RFC.</t>
<t>This document contains several &quot;Notes to the RFC Editor&quot;, including this section.
These should be reviewed and resolved prior to publication.</t>
</note>

</front>

<middle>

<section anchor="introsect"><name>Introduction</name>
<t>Well-established services <xref target="RFC3912"></xref><xref target="RFC9083"></xref> exist to determine whether a domain name is registered. However, the fact that a domain name exists does not necessarily mean it
is unavailable; it may still be for sale.</t>
<t>Some registrars and other entities offer mediation services between domain name holders and interested parties
(often referred to as brokers). For domain names that are not for sale, such services may be
of limited value, whereas they may be beneficial for domain names that are clearly being offered for sale.</t>
<t>This specification defines a lightweight method to ascertain whether a domain name, although registered, is available for purchase. It enables a domain name holder to add a reserved underscored
leaf node name <xref target="RFC8552"></xref> in the zone, indicating that the domain name is for sale.</t>
<t>The TXT RR type <xref target="RFC1035"></xref> created for this purpose <bcp14>MUST</bcp14> follow the formal definition of
<xref target="conventions"></xref>. Its content <bcp14>MAY</bcp14> contain a pointer, such as a Uniform Resource Identifier (URI)
<xref target="RFC3986"></xref>, or another string, allowing interested parties to obtain information or
contact the domain name holder for further negotiations.</t>
<t>With due caution, such information can also be incorporated into automated availability services. When checking a domain name for availability, the service may indicate whether it is for sale and provide a pointer to the seller's information.</t>
<t>Note: In this document, the term &quot;for sale&quot; is used in a broad sense and
<bcp14>MAY</bcp14> also refer to cases where the domain name is available for lease,
or where the contractual right to use the domain name is offered to another party.</t>

<section anchor="terminology"><name>Terminology</name>
<t>The key words &quot;<bcp14>MUST</bcp14>&quot;, &quot;<bcp14>MUST NOT</bcp14>&quot;, &quot;<bcp14>REQUIRED</bcp14>&quot;, &quot;<bcp14>SHALL</bcp14>&quot;, &quot;<bcp14>SHALL NOT</bcp14>&quot;,
&quot;<bcp14>SHOULD</bcp14>&quot;, &quot;<bcp14>SHOULD NOT</bcp14>&quot;, &quot;<bcp14>RECOMMENDED</bcp14>&quot;, &quot;<bcp14>NOT RECOMMENDED</bcp14>&quot;, &quot;<bcp14>MAY</bcp14>&quot;, and
&quot;<bcp14>OPTIONAL</bcp14>&quot; in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"></xref> <xref target="RFC8174"></xref>
when, and only when, they appear in all capitals, as shown here.</t>
</section>
</section>

<section anchor="rationale"><name>Rationale</name>
<t>There are undoubtedly more ways to address this problem space. The reasons for the approach defined in this document are primarily accessibility and simplicity. The indicator can be easily turned on and off at will and moreover, it is immediately deployable and does not require significant changes in existing services. This allows for a smooth introduction of the concept.</t>
<t>Furthermore, the chosen approach aligns with ethical considerations by promoting a more equitable domain aftermarket and minimizing potential for unintended commercial entanglements by registries, as detailed in <xref target="ethicalconsids"></xref>.</t>
</section>

<section anchor="conventions"><name>Conventions</name>

<section anchor="general-record-format"><name>General Record Format</name>
<t>Each &quot;_for-sale&quot; TXT record <bcp14>MUST</bcp14> begin with a version tag, optionally followed by a string containing content that follows a simple &quot;tag=value&quot; syntax.</t>
<t>The formal definition of the record format, using ABNF <xref target="RFC5234"></xref><xref target="RFC7405"></xref>, is as follows:</t>

<artwork><![CDATA[forsale-record  = forsale-version [forsale-content]
                  ; referred to as content or RDATA
                  ; in a single character-string

forsale-version = %s"v=FORSALE1;"
                  ; %x76.3D.46.4F.52.53.41.4C.45.31.3B
                  ; version tag, case sensitive, no spaces

forsale-content = fcod-pair / ftxt-pair / furi-pair
                  ; referred to as tag-value pairs
                  ; only one tag-value pair per record

fcod-pair       = fcod-tag fcod-value
ftxt-pair       = ftxt-tag ftxt-value
furi-pair       = furi-tag furi-value
                  ; the tags are referred to as content tags
                  ; the values are referred to as content values

fcod-tag        = %s"fcod="
ftxt-tag        = %s"ftxt="
furi-tag        = %s"furi="
                  ; case sensitive lowercase

fcod-value      = 1*239OCTET
                  ; must be at least 1 OCTET

ftxt-value      = 1*239ftxt-char
ftxt-char       = %x20-21 / %x23-5B / %x5D-7E
                  ; excluding " and \ to avoid escape issues

furi-value      = URI
                  ; Only http, https, mailto and tel schemes
                  ; exactly one URI

URI             = <as defined in RFC3986, Appendix A>
]]></artwork>
<t>See <xref target="tagdefs"></xref> for more detailed format definitions per content tag type.</t>
<t>Each &quot;_for-sale&quot; TXT record <bcp14>MUST NOT</bcp14> contain more than one tag-value pair.</t>
<t>See <xref target="rrsetlimits"></xref> for additional RRset limitations.</t>
<t>The content value provides information to interested parties as explained
in <xref target="introsect"></xref>.</t>
<t>If no tag-value pair is present but a valid version tag is,
processors <bcp14>MAY</bcp14> assume that the domain is for sale.
In such cases, processors <bcp14>SHOULD</bcp14> determine how to proceed.
One possible approach is to indicate that the domain is for
sale and to use traditional methods, such as WHOIS or RDAP,
to obtain contact information:</t>

<artwork><![CDATA[_for-sale.example.com. IN TXT "v=FORSALE1;"
]]></artwork>
<t>If a tag-value pair is present but invalid, this constitutes a syntax error
and <bcp14>SHOULD</bcp14> be treated as if it were absent.</t>
<t>In such cases, if the version tag itself is valid, processors <bcp14>MAY</bcp14> assume that the domain is for sale.
For example:</t>

<artwork><![CDATA[_for-sale.example.com. IN TXT "v=FORSALE1;lorumipsum"
_for-sale.example.com. IN TXT "v=FORSALE1;fcod="
_for-sale.example.com. IN TXT "v=FORSALE1;foo=bar"
]]></artwork>
<t>TXT records in the same RRset, but without a version tag, <bcp14>MUST NOT</bcp14> be interpreted or processed as a valid &quot;_for-sale&quot; indicator.
However, they may still offer some additional information for humans when considered alongside a valid
record. For example:</t>

<artwork><![CDATA[_for-sale.example.com. IN TXT "I am for sale"
_for-sale.example.com. IN TXT "v=FORSALE1;fcod=XX-NGYyYjEyZWY"
]]></artwork>
<t>If no TXT records at a leaf node contain a valid version tag, processors <bcp14>MUST</bcp14> consider the node name invalid and discard it.</t>
<t>See <xref target="contentlimits"></xref> for additional content limitations.</t>
</section>

<section anchor="tagdefs"><name>Content Tag Type Definitions</name>
<t>A new registry for known content tags is created in <xref target="ianaconsid"></xref>, with
this document registering the initial set. Implementations <bcp14>SHOULD</bcp14>
process only registered tags they support, and <bcp14>MAY</bcp14> ignore any others.</t>
<t>The following content tags are defined as the initial valid content tags.</t>

<section anchor="fcoddef"><name>fcod</name>
<t>This content tag is intended to contain a code that is meaningful only to processors
that understand its semantics. The content value MUST consist of at least one octet.</t>
<t>The manner in which the &quot;fcod=&quot; content tag is used is determined by agreement among cooperating parties.</t>
<t>For example, a registry may allow registrars to enter a &quot;for sale&quot; URL into their system.
From that URL, a unique code is generated. This code is inserted as the value of
the &quot;fcod=&quot; content tag of the &quot;_for-sale&quot; TXT record of a domain name, as shown in the example below.</t>
<t>When a user checks the availability of the domain name using a registry-provided tool
(e.g., a web interface), the registry may use the code to redirect the user to the
appropriate &quot;for sale&quot; URL, which may include a query component containing the domain name, for example:</t>

<artwork><![CDATA[https://forsale-url.example.com/acme?d=example.org
]]></artwork>
<t>The rationale for this approach is that controlling parties retain
authority over redirection URLs and any other information derived
from the content tag, thereby preventing users from being sent
to unintended or malicious destinations or from being presented
with unintended content.</t>
<t>The following example shows a base64-encoded <xref target="RFC4648"></xref> string preceded
by the prefix &quot;ACME-&quot; as the value of the content tag:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;fcod=ACME-S2lscm95IHdhcyBoZXJl"
]]></artwork>
<t>Note: As an implementation consideration, when multiple parties are involved in
the domain sale process and use the same mechanism, it may be difficult to identify
the relevant content in an RRset. Adding a recognizable prefix to the content (e.g.,
&quot;ACME-&quot;) is one possible approach. However, this is left to the implementor,
as it is not enforced in this document. In this case, ACME would recognize its
content tag and interpret it as intended. This example uses base64 encoding
to avoid escaping and ensure printable characters, though this is also not required.</t>
</section>

<section anchor="ftxt"><name>ftxt</name>
<t>This content tag is intended to contain human-readable text that conveys information to interested parties. For example:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;ftxt=price:$500,info[at]example.com"
]]></artwork>
<t>While a single visible character is the minimum, it is <bcp14>RECOMMENDED</bcp14> to provide more context.</t>
<t>While a URI in this field is not syntactically prohibited, its
interpretation as a URI is not guaranteed. Use of URIs in this
field <bcp14>SHOULD</bcp14> be avoided in favor of the furi content tag.</t>
</section>

<section anchor="furi"><name>furi</name>
<t>This content tag is intended to contain a human-readable and machine-parseable URI that conveys information to interested parties.</t>
<t>While the syntax allows any URI scheme, only the following schemes are <bcp14>RECOMMENDED</bcp14>
for use: <tt>http</tt> and <tt>https</tt> <xref target="RFC9110"></xref>, <tt>mailto</tt> <xref target="RFC6068"></xref>, and <tt>tel</tt> <xref target="RFC3966"></xref>.</t>
<t>The content value <bcp14>MUST</bcp14> contain exactly one URI. For example:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;furi=https://example.com/foo%20bar"
]]></artwork>
<t>URIs <bcp14>MUST</bcp14> conform to the syntax and encoding requirements specified in
<xref target="RFC3986" sectionFormat="of" section="2.1"></xref>, including the percent-encoding of characters
not allowed unencoded (for example, spaces <bcp14>MUST</bcp14> be encoded as <tt>%20</tt> in a URL).</t>
<t>See the <xref target="security" format="title"></xref> section for possible risks.</t>
</section>
</section>

<section anchor="contentlimits"><name>Content Limitations</name>
<t>The &quot;_for-sale&quot; TXT record <xref target="RFC8553" sectionFormat="parens" section="2.1"></xref> <bcp14>MUST</bcp14> contain content deemed valid under this specification.</t>
<t>Any text that suggests that the domain is not for sale is invalid content. If a domain name is not for sale,
a &quot;_for-sale&quot; indicator is pointless and any existence of a valid &quot;_for-sale&quot; TXT record <bcp14>MAY</bcp14>
therefore be regarded as an indication that the domain name is for sale.</t>
<t>The existence of a &quot;_for-sale&quot; leaf node does not obligate the holder to sell the domain name;
it may have been published in error, or withdrawn later for other reasons.</t>
<t>This specification does not dictate the exact use of any content values in the &quot;_for-sale&quot; TXT record.
Parties - such as registries and registrars - <bcp14>MAY</bcp14> use it in their tools, perhaps even by defining specific requirements that the content
value must meet. Content values can also be represented in a human-readable format for individuals to
interpret. See the <xref target="examples" format="title"></xref> section for clarification.</t>
<t>Since the content value in the TXT record has no strictly defined meaning, it is up to the processor of the content to decide how to handle it.</t>
<t>See <xref target="guidelines"></xref> for additional guidelines.</t>
</section>

<section anchor="rrsetlimits"><name>RRset Limitations</name>
<t>This specification does not define restrictions on the number of TXT records in the RRset,
but limiting it to one per content tag is <bcp14>RECOMMENDED</bcp14>.</t>
<t>If this is not the case, the processor <bcp14>SHOULD</bcp14>  determine which content to use.</t>
<t>The RDATA <xref target="RFC9499"></xref> of each TXT record <bcp14>MUST</bcp14> consist of a single character-string
<xref target="RFC1035"></xref> with a maximum length of 255 octets, in order to avoid the need to concatenate multiple
character-strings during processing.</t>
<t>The following example illustrates an invalid TXT record due to the presence of multiple
character-strings:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;" "ftxt=foo" "bar" "invalid"
]]></artwork>
<t>When multiple content TXT records are present, the processor <bcp14>MAY</bcp14> select one or more of them.</t>
<t>For example, a registry might extract content from an RRset that includes
a recognizable &quot;fcod=&quot; content tag and use it to direct visitors to a sales page as
part of its services. An individual, on the other hand, might extract a
phone number (if present) from a &quot;furi=&quot; tag in the same RRset and use it to contact a potential seller.</t>
<t>An example of such a combined record is provided in <xref target="combiexample"></xref>.</t>
</section>

<section anchor="rr-type-limitations"><name>RR type Limitations</name>
<t>Adding any resource record (RR) types under the &quot;_for-sale&quot; leaf, other than TXT (such as AAAA or HINFO), is unnecessary for the
purposes of this document and therefore discouraged.</t>
</section>

<section anchor="wildcard-limitation"><name>Wildcard Limitation</name>
<t>Wildcards are only interpreted as leaf names, so _for-sale.*.example is not a valid wildcard and is non-conformant.</t>
</section>

<section anchor="placement-of-the-leaf-node-name"><name>Placement of the Leaf Node Name</name>
<t>The &quot;_for-sale&quot; leaf node name is primarily intended to indicate that a domain name is available for
purchase.</t>
<t>For that, the leaf node name is to be placed on the top-level domain, or any domain directly
below. It can also be placed at a lower level, when that level is mentioned in the Public Suffix List <xref target="PSL"></xref>.</t>
<t>When the &quot;_for-sale&quot; leaf node name is placed elsewhere, the intent is ambiguous.</t>
<t><xref target="placements"></xref> illustrates this:</t>
<table anchor="placements"><name>Placements of TXT record </name>
<thead>
<tr>
<th>Name</th>
<th>Situation</th>
<th>Verdict</th>
</tr>
</thead>

<tbody>
<tr>
<td>_for-sale.example.</td>
<td>root zone</td>
<td>For sale</td>
</tr>

<tr>
<td>_for-sale.aaa.example.</td>
<td>second level</td>
<td>For sale</td>
</tr>

<tr>
<td>_for-sale.acme.bbb.example.</td>
<td>bbb.example in PSL</td>
<td>For sale</td>
</tr>

<tr>
<td>_for-sale.www.ccc.example.</td>
<td>ccc.example not in PSL</td>
<td>See note 1</td>
</tr>

<tr>
<td>_for-sale.51.198.in-addr.arpa.</td>
<td>infrastructure TLD</td>
<td>See note 2</td>
</tr>

<tr>
<td>xyz._for-sale.example.</td>
<td>Invalid placement</td>
<td>non-conformant</td>
</tr>
</tbody>
</table><t>Note 1:
When the &quot;_for-sale&quot; leaf node name is placed in front of a label of a
domain that is not in the PSL, it suggests that this label (and everything
underneath) is for sale, and not the domain name as a whole. There may be use cases for this, but this
situation is considered unusual in the context of this document.
Processors <bcp14>MAY</bcp14> ignore such records.</t>
<t>Note 2:
If a &quot;_for-sale&quot; leaf node were to appear under the .arpa infrastructure top-level
domain, it might be interpreted as an offer to sell IP address space.
However, such use is explicitly out of scope for this document, and processors
<bcp14>MUST</bcp14> ignore any such records.</t>
</section>
</section>

<section anchor="examples"><name>Additional Examples</name>

<section anchor="example-1-code-format"><name>Example 1: Code Format</name>
<t>A proprietary format, defined and used by agreement between parties - for example,
a registry and its registrars - without a clearly specified meaning for third parties.
For example, it may be used to automatically redirect visitors to a web page, as described in
<xref target="fcoddef"></xref>:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;fcod=XX-aHR0cHM...wbGUuY29t"
]]></artwork>
</section>

<section anchor="example-2-free-text-format"><name>Example 2: Free Text Format</name>
<t>Free format text, with some additional unstructured information, aimed at
being human-readable:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;ftxt=price:EU500, call for info"
]]></artwork>
<t>The content in the following example could be malicious, but it is not in violation of this specification (see
the <xref target="security" format="title"></xref>):</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;ftxt=<script>...</script>"
]]></artwork>
</section>

<section anchor="example-3-uri-format"><name>Example 3: URI Format</name>
<t>The holder of &quot;example.com&quot; wishes to signal that the domain is for sale and adds this record to the &quot;example.com&quot; zone:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;furi=https://example.com/fs?d=eHl6"
]]></artwork>
<t>An interested party notices this signal and can visit the URI mentioned for further information. The TXT record
may also be processed by automated tools, but see the <xref target="security" format="title"></xref> section for possible risks.</t>
<t>As an alternative, a mailto: URI could also be used:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;furi=mailto:seller@example.com"
]]></artwork>
<t>Or a telephone URI:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;furi=tel:+1-201-555-0123"
]]></artwork>
<t>There can be a use case for these URIs, especially since WHOIS (or RDAP) often has privacy restrictions.
But see the <xref target="privacy" format="title"></xref> section for possible downsides.</t>
</section>

<section anchor="combiexample"><name>Example 4: Combinations</name>
<t>An example of multiple valid TXT records from which a processor can choose:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;furi=https://fs.example.com/"
          IN TXT "v=FORSALE1;ftxt=starting price:EU500"
          IN TXT "v=FORSALE1;fcod=ACME-ZGVhZGJlZWYx"
          IN TXT "v=FORSALE1;fcod=XYZ1-MTExLTIyMi0zMzMtNDQ0"
]]></artwork>
</section>
</section>

<section anchor="guidelines"><name>Operational Guidelines</name>
<t>DNS wildcards interact poorly with underscored names, and their
use is <bcp14>NOT RECOMMENDED</bcp14> with this mechanism. However, wildcards
may still be encountered in practice, especially with operators who
are not implementing this mechanism. This is why the version
tag is a <bcp14>REQUIRED</bcp14> element: it allows processors to distinguish
valid &quot;_for-sale&quot; records from unrelated TXT records.</t>
<t>Nonetheless, any assumptions about the content of &quot;_for-sale&quot; TXT
records <bcp14>SHOULD</bcp14> be made with caution, particularly in edge
cases where wildcard expansion - possibly combined with DNS aliases
(e.g., CNAMEs) or redirections (e.g., DNAMEs <xref target="RFC6672"></xref>) - might
result in misleading listings or unintended references to third-party domains.</t>
<t>It is also <bcp14>RECOMMENDED</bcp14> that the content value be limited to visible US-ASCII characters,
excluding the double quote (&quot;) and backslash (\).</t>
<t>In ABNF syntax, this would be:</t>

<artwork><![CDATA[forsale-content     = 0*244recommended-char
recommended-char    = %x20-21 / %x23-5B / %x5D-7E
]]></artwork>
<t>Long TTLs <xref target="RFC1035" sectionFormat="parens" section="3.2.1"></xref> are discouraged as they increase the risk of outdated data misleading buyers into thinking the domain is still available.</t>
<t>Ambiguous constructs in content values <bcp14>SHOULD</bcp14> be avoided, as illustrated by the following
example:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;fcod=TRIP-confusing;ftxt=dont-do-this"
]]></artwork>
<t>The above example is a valid &quot;fcod=&quot; content tag that includes the
string &quot;;ftxt=&quot; in the content value, which may be confusing,
as it does not actually represent an &quot;ftxt=&quot; content tag.</t>
<t>Because the format of the content part is not strictly defined in this
document, processors <bcp14>MAY</bcp14> apply the robustness principle of being
liberal in what they accept. This also applies to space
characters (<tt>%x20</tt>) immediately following the version tag.
Alternatively, parties may mutually agree on a more strictly defined proprietary format
for the content value to mitigate ambiguity.</t>
<t>Note that this mechanism relies on the domain name being resolvable in the DNS.
This is not guaranteed, for example during a redemption period, in pending delete status <xref target="STD69"></xref>,
or when the domain is DNSSEC-signed but fails validation (i.e., has a bogus state).</t>
<t>When a sale price is stated, prospective buyers are expected to initiate contact
only if they are prepared to pay an amount in that range for the domain name concerned.
</t>
</section>

<section anchor="ianaconsid"><name>IANA Considerations</name>
<t></t>
<t>IANA has established the &quot;Underscored and Globally Scoped DNS Node Names&quot; registry <xref target="RFC8552"></xref><xref target="IANA"></xref>. The underscored
leaf node name defined in this specification should be added as follows:</t>
<table><name>Entry for the &quot;Underscored and Globally Scoped DNS Node Names&quot; registry
</name>
<thead>
<tr>
<th>RR Type</th>
<th>_NODE NAME</th>
<th>Reference</th>
</tr>
</thead>

<tbody>
<tr>
<td>TXT</td>
<td>_for-sale</td>
<td>&lt;this memo&gt;</td>
</tr>
</tbody>
</table><t>&lt;NOTE TO RFC EDITOR: Adjust the text in the table above before publication with a citation for the (this) document making the addition as per RFC8552.&gt;</t>
<t>A registry group called &quot;The '_for-sale' Underscored and Globally Scoped DNS Node Name&quot; <xref target="FORSALEREG"></xref> is to be created,
along with a registry called &quot;Content Tags&quot; within it. This registry group will be maintained independently of IANA.</t>
<t>The registry is publicly accessible at:</t>

<artwork><![CDATA[https://forsalereg.sidnlabs.nl/
]]></artwork>
<t>The registry entries consist of content tags as defined in
<xref target="tagdefs"></xref>.</t>
<t>The initial set of entries in this registry is as follows:</t>
<table><name>Initial set of entries in the &quot;Content Tags&quot; registry
</name>
<thead>
<tr>
<th>Tag Name</th>
<th>Reference</th>
<th>Status</th>
<th>Description</th>
</tr>
</thead>

<tbody>
<tr>
<td>fcod</td>
<td>RFCXXXX</td>
<td>active</td>
<td>For Sale Proprietary Code</td>
</tr>

<tr>
<td>ftxt</td>
<td>RFCXXXX</td>
<td>active</td>
<td>For Sale Free Format Text</td>
</tr>

<tr>
<td>furi</td>
<td>RFCXXXX</td>
<td>active</td>
<td>For Sale URI</td>
</tr>
</tbody>
</table><t>&lt;NOTE TO RFC EDITOR: Adjust the text in the table above before publication with a citation for the (this) document making the addition as per RFC8552.&gt;</t>
<t>Future updates will be managed by the Designated Expert.</t>
<t>Entries are assigned only for values that have been documented in
a manner consistent with the &quot;Specification Required&quot; registration
policy defined in <xref target="RFC8126"></xref>.</t>
<t>Newly defined content tags MUST NOT alter the semantics of existing content tags.</t>
<t>The addition of a new content tag to the registered list does not require the
definition of a new version tag. However, any modification to existing content tags does.</t>
<t>The &quot;status&quot; column can have one of the following values:</t>

<ul spacing="compact">
<li>active - the tag is in use in current implementations.</li>
<li>historic - the tag is deprecated and not expected to be used in current implementations.</li>
</ul>
<t>This registry group is not maintained by IANA as per <xref target="RFC8726"></xref>.</t>
</section>

<section anchor="privacy"><name>Privacy Considerations</name>
<t>The use of the &quot;_for-sale&quot; leaf node name publicly indicates the intent to sell a domain name.
Domain holders should be aware that this information is accessible to anyone querying the
DNS and may have privacy implications.</t>
<t>There is a risk of data scraping, such as email addresses and phone numbers.</t>
</section>

<section anchor="security"><name>Security Considerations</name>
<t>One use of the TXT record type defined in this document is to parse the content it contains and to automatically publish certain information from it on a website or elsewhere. However, there is a risk if the domain name holder  publishes a malicious URI or one that points to improper content. This may result in reputational damage for the party parsing the record.</t>
<t>An even more serious scenario arises when the content of the TXT record is insufficiently validated and sanitized, potentially enabling attacks such as XSS or SQL injection.</t>
<t>Therefore, it is <bcp14>RECOMMENDED</bcp14> that any parsing and publishing is conducted with the utmost care.</t>
<t>There is also a risk that this method will be abused as a marketing tool, or to lure individuals into visiting certain sites or making contact by other
means, without there being any intention to actually sell the domain name. Therefore, this method is best suited for use by professionals.</t>
</section>

<section anchor="ethicalconsids"><name>Ethical Considerations</name>
<t>Although not specifically designed for this purpose, the mechanisms
described in this document may also facilitate domain name
transactions by professional speculators, often referred to
as domainers, and those commonly referred to as domain drop catchers.
Some may view this as controversial.</t>
<t>However, by enabling domain holders to more explicitly
signal their intent to sell, the proposed approach
aims to introduce greater clarity and predictability
into the domain lifecycle. This potentially reduces the
advantage currently held by these professionals, and
fosters a more equitable environment for all.</t>
<t>Furthermore, this mechanism avoids creating unnecessary
dependencies on registries for market transactions,
which could otherwise introduce complexities and
potential for unintended commercial entanglements.</t>
</section>

<section anchor="implementation-status"><name>Implementation Status</name>
<t>The concept described in this document has been in use at the .nl ccTLD registry since 2022,
when it initially started as a pilot. Since then, several hundred thousand domain names have
been marked with the &quot;_for-sale&quot; indicator. See for example:</t>

<artwork><![CDATA[https://www.sidn.nl/en/whois?q=example.nl
]]></artwork>
<t>The Dutch registry SIDN offers registrars the option to register a sales
landing page via its registrar dashboard following the &quot;fcod=&quot; method.
When this option is used, a unique code is generated, which can be included in the &quot;_for-sale&quot; record.
If such a domain name is entered on the domain finder page of SIDN, a &quot;for sale&quot;
button is displayed accordingly.</t>
<t>A simple demonstration of a validator is present at:</t>

<artwork><![CDATA[https://forsalereg.sidnlabs.nl/demo
]]></artwork>
<t>&lt;NOTE TO RFC EDITOR: Please remove this section before publication as per RFC7942.&gt;</t>
</section>

<section anchor="acknowledgements"><name>Acknowledgements</name>
<t>The author would like to thank Thijs van den Hout, Caspar Schutijser, Melvin
Elderman, Paul Bakker, Ben van Hartingsveldt, Jesse Davids, Juan Stelling,
John Levine, and the ISE Editor for their valuable feedback.</t>
</section>

</middle>

<back>
<references><name>References</name>
<references><name>Normative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7405.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8552.xml"/>
</references>
<references><name>Informative References</name>
<reference anchor="FORSALEREG" target="https://forsalereg.sidnlabs.nl/forsale-parameters">
  <front>
    <title>The &#34;_for-sale&#34; Underscored and Globally Scoped DNS Node Name</title>
    <author>
      <organization>SIDN Labs</organization>
    </author>
  </front>
</reference>
<reference anchor="IANA" target="https://www.iana.org/assignments/dns-parameters/dns-parameters.xml#underscored-globally-scoped-dns-node-names">
  <front>
    <title>Underscored and Globally Scoped DNS Node Names</title>
    <author>
      <organization>IANA</organization>
    </author>
  </front>
</reference>
<reference anchor="PSL" target="https://publicsuffix.org/">
  <front>
    <title>Public Suffix List</title>
    <author>
      <organization>Mozilla Foundation</organization>
    </author>
  </front>
</reference>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3912.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3966.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6068.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6672.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8553.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8726.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9083.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9499.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml9/reference.STD.69.xml"/>
</references>
</references>

</back>

</rfc>
