域名现在可以通过 DNS 声明其正在出售。
_for-sale DNS records

原始链接: https://specification.website/spec/foundations/for-sale-dns/

RFC 10023 引入了一种标准化的 DNS 惯例,旨在无需停放域名或替换现有内容的情况下,标示域名处于待售状态。域名所有者只需发布一条 `_for-sale` 的 TXT 记录(例如 `_for-sale.example.com`),即可直接向经纪人和自动化服务传达域名的可用性、价格或联系 URI。 与传统的域名停放不同,此方法允许现有的网站和服务保持完全正常运行。该记录主要用于机器可读的发现,而非供人类浏览器使用。实现时需遵循特定格式:必须包含 `v=FORSALE1;` 标签,后跟一个属性(例如用于价格的 `fval` 或用于联系的 `furi`)。若需包含多项详细信息,所有者应在同一 DNS RRset 中发布多条记录,而非将其挤入单条记录中。 安全性和可靠性的关键要求包括:使用较短的 TTL(≤3600 秒)、通过 DNSSEC 对区域进行签名以防止伪造,并确保在域名不再可售时立即移除该记录。此惯例填补了 WHOIS 数据与实际可用性之间的空白,为域名收购提供了一种透明且非侵入式的渠道。

本次讨论探讨了关于 `_for-sale` DNS 记录的争议性提议,旨在简化潜在买家寻找待售域名的方式。支持者认为这规范了一种常见做法,而批评者则认为这会进一步助长“域名抢注”和互联网的金融化。 讨论的核心大多围绕出售域名的法律风险。用户辩论了公开挂牌出售域名是否会向仲裁小组释放“恶意”信号,尤其是在商标持有者质疑所有权的情况下。专家指出,虽然公开挂牌并不意味着在 UDRP 仲裁中自动败诉,但专家组会权衡商标显著性、定价及注册人的意图等因素。 该贴文还强调了人们对当前域名管理现状的普遍不满。参与者批评了将域名视为有限房地产这种“反常”的做法,即常用词汇被投机者扣押以索要高价。一些人建议进行系统性变革,例如对超额持有的域名采取分级年费,或实施“不用即失”税,以抑制囤积行为。最终,许多人对这项新提议持怀疑态度,认为这是由人工智能驱动的、不必要的尝试,旨在将一种许多人认为已经导致网络退化的寄生行为专业化。
相关文章

原文

What it is

_for-sale is a reserved DNS leaf node name, defined by RFC 10023 (Informational, July 2026) and registered with IANA. A TXT record published at _for-sale.example.com signals that example.com, although registered and resolving normally, is available for purchase.

_for-sale IN TXT "v=FORSALE1;furi=https://example.com/for-sale"

The record carries a mandatory version tag followed by at most one tag=value pair:

Tag Meaning Example
ftxt= Free human-readable text ftxt=Eligibility criteria apply.
furi= Contact or information URI furi=mailto:[email protected]
fval= Asking price, currency + amount fval=EUR2500.00
fcod= Proprietary code, by prior agreement fcod=XX-aHR0cHM...

The wrong belief to clear first is that this is a way of parking a domain. It is close to the opposite. Parking replaces the site with a sales page, which costs you every visitor the domain still has. _for-sale sits beside a live site in DNS and says nothing to a browser: the homepage keeps serving, the mail keeps flowing, and the record can be added and removed at will. RFC 10023 makes the point explicitly — the convention is designed to work while the domain is still in active use.

It is also not the same thing as registration data. WHOIS and RDAP answer “is this name registered?”; a registered name may still be purchasable, and an unregistered one may not be worth having. That gap is the whole reason the convention exists, and it is why brokers and automated availability services are the intended audience rather than people.

Why it matters

The signal a domain owner most wants to send is the one there has never been a channel for. If you are willing to sell, the interested buyer has no way to learn that short of a cold email to a WHOIS contact that privacy redaction has probably removed. Enquiries that would have been welcome never arrive, and the ones that do arrive are indistinguishable from spam.

Putting the signal in DNS rather than on the page is what makes it useful to the parties who can act on it. A broker or an availability service checking a name resolves it anyway; one extra lookup tells them what a rendered page could not, because nothing on a working homepage says “the domain under this is negotiable”. It is externally checkable, costs one record, and carries no risk to the site itself — a browser never sees it.

How to implement

Publish a single TXT record at the _for-sale leaf of the zone you are selling, and only while you mean it.

; Free text
_for-sale IN TXT "v=FORSALE1;ftxt=Serious offers only"

; A URI to negotiate through — https, mailto and tel are the usable schemes
_for-sale IN TXT "v=FORSALE1;furi=https://example.com/fs?d=eHl6"

; An asking price: uppercase currency code, then the amount
_for-sale IN TXT "v=FORSALE1;fval=USD12500"

Rules worth getting right the first time:

  • The version tag is mandatory and case-sensitive: every record starts v=FORSALE1;. It exists so a processor can tell a real _for-sale record from an unrelated TXT record that a DNS wildcard happened to expand into that name.
  • One tag-value pair per record. To publish a price and a contact URI, publish two records in the same RRset and let the processor pick what it understands. This is not SPF; the pairs do not concatenate.
  • One character-string per record, 255 octets maximum, so nothing has to be reassembled during parsing.
  • Keep the TTL at 3600 seconds or less. A stale record advertising a price you have withdrawn, or a domain you already sold, is worse than no record.
  • Place it at a leaf. _for-sale.example.com is valid at any level of the tree, but xyz._for-sale.example.com is not, and records under .arpa must be ignored — an offer to sell address space is out of scope.
  • Remove it when the domain is no longer for sale. The convention has no “not for sale” value; absence is the only way to say no.

Sign the zone with DNSSEC if you can. An unsigned TXT record asserting your domain is for sale, at a price, with a contact URI, is a comfortable thing for someone else to forge.

This site does not ship a _for-sale record: specification.website is not for sale.

Common mistakes

  • Cramming several pairs into one record. "v=FORSALE1;fval=EUR2500;furi=https://…" looks reasonable and is not what the format defines. Use one pair per record, multiple records per RRset.
  • Publishing it aspirationally. The indicator is only for domains actually available. It is not a marketing banner, and a record that exists to lure enquiries is an abuse the RFC calls out by name.
  • Assuming it obliges anyone. Publishing the record does not commit the holder to sell, and an advertised fval= price is indicative — the RFC tells processors to display a disclaimer and never to treat it as a purchase commitment.
  • Expecting a wildcard to cover a whole zone. _for-sale.*.example.com is not a valid wildcard. There is no way to put every domain under a TLD up for sale with one record.
  • Trusting the content. If you are on the reading side, ftxt= is attacker-controlled text and furi= is an attacker-controlled URI. Sanitise before display — the RFC’s own example content is <script>...</script> — and never auto-navigate a user to a furi= target without an explicit confirmation step.

Verification

dig +short TXT _for-sale.example.com
  • The answer begins with v=FORSALE1; and contains at most one tag=value pair per string.
  • The TTL is 3600 or lower: dig TXT _for-sale.example.com | grep _for-sale.
  • If the zone is signed, dig +dnssec TXT _for-sale.example.com returns a validating RRSIG.
  • The record resolves at all. During a redemption or pendingDelete period, or when DNSSEC validation is bogus, the name will not resolve and the signal silently disappears.

Related topics

Sources & further reading

联系我们 contact @ memedata.com