Skip to content

Update contact email for nyc.mn, add cn.st#2675

Merged
simon-friedberger merged 2 commits intopublicsuffix:mainfrom
publiczonenoc:publiczonenoc-patch-1
Dec 21, 2025
Merged

Update contact email for nyc.mn, add cn.st#2675
simon-friedberger merged 2 commits intopublicsuffix:mainfrom
publiczonenoc:publiczonenoc-patch-1

Conversation

@publiczonenoc
Copy link
Copy Markdown
Contributor

@publiczonenoc publiczonenoc commented Nov 26, 2025

Public Suffix List (PSL) Submission

Checklist of required steps

  • Description of Organization

  • Robust Reason for PSL Inclusion

  • DNS verification via dig

  • Each domain listed in the PRIVATE section has and shall maintain at least two years remaining on registration, and we shall keep the _psl TXT record in place in the respective zone(s).

Submitter affirms the following:

  • We are listing any third-party limits that we seek to work around in our rationale such as those between IOS 14.5+ and Facebook (see Issue #1245 as a well-documented example)
  • This request was not submitted with the objective of working around other third-party limits.
  • The submitter acknowledges that it is their responsibility to maintain the domains within their section. This includes removing names which are no longer used, retaining the _psl DNS entry, and responding to e-mails to the supplied address. Failure to maintain entries may result in removal of individual entries or the entire section.
  • The Guidelines were carefully read and understood, and this request conforms to them.
  • The submission follows the guidelines on formatting and sorting.
  • A role-based email address has been used and this inbox is actively monitored with a response time of no more than 30 days.

Abuse Contact:

  • Abuse contact information (email or web form) is available and easily accessible.

    URL where abuse contact or abuse reporting form can be found:


For PRIVATE section requests that are submitting entries for domains that match their organization website's primary domain, please understand that this can have impacts that may not match the desired outcome and take a long time to rollback, if at all.

To ensure that requested changes are entirely intentional, make sure that you read the affectation and propagation expectations, that you understand them, and confirm this understanding.

PR Rollbacks have lower priority, and the volunteers are unable to control when or if browsers or other parties using the PSL will refresh or update.

(Link: about propagation/expectations)

  • Yes, I understand. I could break my organization's website cookies and cause other issues, and the rollback timing is acceptable. Proceed anyways.

Description of Organization

PublicZone provides free subdomains and DNS management services to developers, open source projects, and communities. We are committed to supporting the open source ecosystem by making domain management accessible and affordable.

PublicZone has acquired the nyc.mn subdomain registry from the NYC.mn Subdomain Service team. (We want to extend our sincere thanks to the NYC.mn team for their years of service to the community and for entrusting us with this registry through a symbolic $1 token transfer.)

PublicZone will also operate cn.st, a subdomain registry designed to serve users in mainland China and the broader Chinese-speaking developer community. Based on our operational data from the past year, more than half of our registered users are located in mainland China. The cn.st domain was established to better serve this significant geographic user base with a censorship-free domain structure that is familiar and intuitive for Chinese users.

While our website displays a $5/year domain fee, we currently do not have any payment gateway connected and do not collect actual payments. We do not plan to profit from this service. In the future, we will follow the nyc.mn model: users will be asked to donate to charities of their choice, provide proof of donation, and we will add equivalent credits to their account. This allows us to support the open source community while encouraging charitable giving. We are also running the GitHub developer credits program (free credit of $50 for projects with 100+ stars), which is designed to support legitimate open source developers.

Organization Website:

https://publiczone.org/

Reason for PSL Inclusion

This pull request serves two purposes: (1) updating the contact information for our existing nyc.mn entry, and (2) adding a new domain, cn.st, to the Public Suffix List.

Existing Entry: nyc.mn

The reason for nyc.mn being on the Public Suffix List remains unchanged: accurate domain boundary recognition across all modern browsers, protecting the safety of our subdomain registrants and users.
Our service is similar to eu.org, providing subdomains to Internet users.

New Entry: cn.st

We are requesting the addition of the wildcard *.cn.st to the Public Suffix List. The {tag}.cn.st domain uses a hierarchical structure where the second level serves as a registrant type tag (e.g., org, net, dev), while registrations occur at the third level. For example, users register subdomains like myusername.org.cn.st, myusername.net.cn.st, or myusername.dev.cn.st. The second-level identifiers are not open for direct registration but instead categorize the type of project or registrant.

Based on our operational data from the past year, the operator has observed that more than half of our active users are located in mainland China. The {tag}.cn.st domain was established to better serve this geographic user base with a domain naming convention that is intuitive and familiar to Chinese-speaking developers.

Fun fact: .cn.st once served as a subdomain registry suffix back in 2006, according to https://web.archive.org/web/20060601000000*/cn.st

Abuse Prevention and Monitoring

We recognize that free subdomain services are often targets for abuse, as seen with services like eu.org. To address this challenge, we have invested heavily in proactive abuse detection and prevention:

  • Public Statistics Dashboard: Our abuse monitoring statistics are publicly accessible at https://stats.publiczone.org/, demonstrating our commitment to transparency and responsible operation.
  • VirusTotal API Integration: We scan all subdomains against VirusTotal periodically to detect any security threats. Subdomains flagged by any security vendor are subject to immediate suspension without notice.
  • Real-Time Blacklist (RBL) Monitoring: We monitor real-time blocklists every 30 minutes and automatically suspend domains detected in RBLs.

Our goal is to make subdomain services accessible and affordable for developers in developing countries while maintaining a strong stance against abuse. This proactive approach differentiates us from other free subdomain providers and ensures the integrity of our service.

Both nyc.mn and cn.st have registration terms exceeding two years, and we are committed to maintaining the _psl TXT records for the duration of our PSL listing.

Note on int.al: PublicZone also operates the int.al subdomain registry (intended for international users). However, we have chosen not to include int.al in this pull request. Based on our current usage projections, the user base for int.al remains limited, and we believe in adhering to the PSL's principle of adding entries only when genuinely necessary. Should int.al see significant adoption in the future, we will submit a separate request at that time with appropriate justification and user data.

Number of users this request is being made to serve:

usercount

DNS Verification

dig @8.8.8.8 _psl.nyc.mn. TXT
_psl.nyc.mn.	60	TXT	"https://github.com/publicsuffix/list/pull/2675"
dig @1.1.1.1 _psl.nyc.mn. TXT
_psl.nyc.mn.	60	TXT	"https://github.com/publicsuffix/list/pull/2675"
dig @8.8.8.8 _psl.cn.st. TXT
_psl.nyc.mn.	60	TXT	"https://github.com/publicsuffix/list/pull/2675"
dig @1.1.1.1 _psl.cn.st. TXT
_psl.nyc.mn.	60	TXT	"https://github.com/publicsuffix/list/pull/2675"

Domain Expiry

nycmn whois cnst whois

@publiczonenoc publiczonenoc marked this pull request as ready for review November 26, 2025 10:02
@publiczonenoc
Copy link
Copy Markdown
Contributor Author

publiczonenoc commented Nov 26, 2025

@awsjulian initially created this pull request last year. For ownership, I am asking her to comment on this thread to confirm this one, if this is something that is required since we are not using the same GitHub account.

@awsjulian
Copy link
Copy Markdown
Contributor

Yes, authorization confirmed.

@publiczonenoc publiczonenoc changed the title PublicZone Submission: Update contact name for nyc.mn PublicZone Submission Nov 27, 2025
@publiczonenoc publiczonenoc marked this pull request as draft November 27, 2025 09:27
@publiczonenoc publiczonenoc marked this pull request as ready for review November 27, 2025 09:39
@fakeboboliu
Copy link
Copy Markdown
Contributor

fakeboboliu commented Nov 27, 2025

Please do not put transfer and addition in the same PR, as this may cause confusion; or rather, please do not intentionally cause confusion.

cn.st seems to have been registered recently: created-date: 2025-06-20 07:05:57
Moreover, it can be confirmed through various channels that this domain name is actually inactive.

Therefore, your Number of users this request is being made to serve claim is completely irrelevant to your new domain name, which should be placed in a separate PR.

By the way, there're records matching *.cn.st available on the wild and they're: com.cn.st / edu.cn.st / gov.cn.st.
Sounds suspicious.

{
  "Status": 0 /* NOERROR */,
  "TC": false,
  "RD": true,
  "RA": true,
  "AD": false,
  "CD": false,
  "Question": [
    {
      "name": "edu.cn.st.",
      "type": 2 /* NS */
    }
  ],
  "Answer": [
    {
      "name": "edu.cn.st.",
      "type": 2 /* NS */,
      "TTL": 21600,
      "data": "ns-global.kjsl.com."
    },
    {
      "name": "edu.cn.st.",
      "type": 2 /* NS */,
      "TTL": 21600,
      "data": "ns0.nic.publiczone.org."
    },
    {
      "name": "edu.cn.st.",
      "type": 2 /* NS */,
      "TTL": 21600,
      "data": "ns4.nic.publiczone.org."
    },
    {
      "name": "edu.cn.st.",
      "type": 2 /* NS */,
      "TTL": 21600,
      "data": "ns3.nic.publiczone.org."
    },
    {
      "name": "edu.cn.st.",
      "type": 2 /* NS */,
      "TTL": 21600,
      "data": "ns1.nic.publiczone.org."
    },
    {
      "name": "edu.cn.st.",
      "type": 2 /* NS */,
      "TTL": 21600,
      "data": "ns2.nic.publiczone.org."
    }
  ],
  "Comment": "Response from ns1.nic.publiczone.org.(2607:7c80:53::53)."
}

@publiczonenoc
Copy link
Copy Markdown
Contributor Author

publiczonenoc commented Nov 27, 2025

Please do not put transfer and addition in the same PR, as this may cause confusion; or rather, please do not intentionally cause confusion.

cn.st seems to have been registered recently: created-date: 2025-06-20 07:05:57 Moreover, it can be confirmed through various channels that this domain name is actually inactive.

Therefore, your Number of users this request is being made to serve claim is completely irrelevant to your new domain name, which should be placed in a separate PR.

By the way, there're records matching *.cn.st available on the wild and they're: com.cn.st / edu.cn.st / gov.cn.st. Sounds suspicious.

@fakeboboliu I'd like to address your concerns:

I'm not sure what you mean by this accusation :-(

The diff in this PR is self-explanatory: one section updates contact information for nyc.mn, the other adds cn.st. We also well explained the changes in the PR template above.

There's no room for confusion when the changes are clearly separated in the diff.

https://github.com/publicsuffix/list/pull/2675/files

diff

The reason I included both was that they share the same abuse monitoring infrastructure and operational context. However, I understand your concern. If the maintainers can confirm what they prefer, I'm happy to split this into two separate PRs: one for updating nyc.mn contact information, and another for the cn.st addition. I've also seen similar combined PRs in this repository where maintainers handle updates and new additions together without issue.

We have already requested a registry extension to 2028-06-20 to meet the PSL's two-year minimum requirement. The WHOIS data has not yet updated to reflect this extension. We have already contacted Dynadot (our registrar), and they confirmed this is a registry-level issue or delay.

ticket

The user statistics I referenced are from our existing PublicZone infrastructure (primarily nyc.mn and our other services). Since cn.st WILL BE newly launched, it does not yet have independent usage data.

NS records for edu.cn.st, gov.cn.st, etc.:

Yes! We are happy that you found them. These records exist, and they are supposed to exist. These are reserved second-level domains that are not available for public registration. We have intentionally created NS records for sensitive labels like edu, gov, and mil as a DNS-level safeguard.

We just also added mil.cn.st in the blocking zone file.

blocks

Our zone updater script is designed so that if an NS record exists for a domain, it cannot be registered - even if someone successfully injects our database or compromises our PHP codebase. This is our last line of defense against abuse. It's a fail-safe that operates at the DNS layer, independent of application logic.

The specific SLDs we've reserved are based on CNNIC-used official suffixes (China Internet Network Information Center standards), which are particularly sensitive for our Chinese user base. See below:

list/public_suffix_list.dat

Lines 814 to 821 in d3567de

cn
ac.cn
com.cn
edu.cn
gov.cn
mil.cn
net.cn
org.cn

This prevents bad actors from registering subdomains like bank.gov.cn.st or university.edu.cn.st that could be used for phishing or impersonation—exactly the kind of abuse documented in #2599.

If you have specific technical concerns about our submission, I'm happy to address them.

But please, keep the tone constructive and professional.


IF you are genuinely interested to learn more, here's how our registration validation system works:

┌─────────────────────────────────────────────────────────────────┐
│ Client submits domain registration request (e.g., mysite.org.cn.st) │
└────────────────────────────┬────────────────────────────────────┘
                             │
                             ▼
                ┌────────────────────────────┐
                │      SERVER A              │
                │   FossBilling (PHP Layer)  │
                │                            │
                │  • Input validation        │
                │  • Business logic          │
                │  • Write to MySQL          │
                └────────────┬───────────────┘
                             │
                             ▼
                    ┌────────────────┐
                    │     MySQL      │
                    │   (Database)   │
                    │                │
                    │ Registration marked as "pending"
                    └────────────────┘
                             
                             
        ═══════════════════════════════════════════════════
                   ASYNCHRONOUS AND PHYSICALLY SEPARATE SERVER
        ═══════════════════════════════════════════════════
                             
                             
                    ┌────────────────┐
                    │   SERVER B     │
                    │  Cron Script   │
                    │  (Independent) │
                    │                │
                    │ Runs every N minutes
                    └────────┬───────┘
                             │
                             ▼
                    ┌────────────────┐
                    │     MySQL      │
                    │   Query new    │
                    │   "pending"    │
                    │   registrations│
                    └────────┬───────┘
                             │
                             ▼
              ┌──────────────────────────────┐
              │  DNS VALIDATION SAFEGUARD    │
              │  (Second validation layer)   │
              │                              │
              │  Query authoritative DNS:    │
              │  dig @ns1.nic.publiczone.org │
              │      mysite.org.cn.st NS     │
              │                              │
              │  IF NS record exists:        │
              │     REJECT registration    │
              │    (Domain already reserved) │
              │    Delete from MySQL         │
              │                              │
              │  IF no NS record:            │
              │     PROCEED with creation  │
              └──────────────┬───────────────┘
                             │
                             ▼
                    ┌────────────────┐
                    │  Generate zone │
                    │   file & NS    │
                    │   records      │
                    └────────────────┘

@awsjulian
Copy link
Copy Markdown
Contributor

It's a fail-safe that operates at the DNS layer, independent of application logic.

ok, but why don't you just put something like

edu.cn.st.   IN  A  192.0.2.1
*.edu.cn.st.   IN  A  192.0.2.1
gov.cn.st.   IN  A  192.0.2.1
*.gov.cn.st.   IN  A  192.0.2.1

in the cn.st zone file? Seems easier - just a thought

https://www.rfc-editor.org/rfc/rfc5737

[RFC1166] reserves the first of the three address blocks,
192.0.2.0/24. The other two address blocks have recently been
allocated for this purpose, primarily to ease the writing of examples
involving addresses from multiple networks.

Other documentation ranges have been defined in the IETF, including
the IPv6 documentation prefix [RFC3849] and example domain names
[RFC2606]. Documentation also makes use of the ranges reserved in
[RFC1918].

Also, some special strings like www, ftp, mail, and others of this nature should also be blocked.

But users are not allowed to register xx.cn.st anyway right? up to you to implement them or not.

I guess putting these in DNS could help solve DNS pollution like unauthorized resolving to malicious IPs, which is pretty common in mainland China by the way.

@publiczonenoc
Copy link
Copy Markdown
Contributor Author

@awsjulian Thank you for the suggestion, I've implemented it.

I've removed NS and replaced them with A records pointing to 192.0.2.1 (TEST-NET-1) for reserved labels including gov, www, nic, ftp, root, admin, webmaster, and their wildcards. This invalidates these subdomains at the DNS layer.

I had two options:

  1. Keep the wildcard *.cn.st (current approach) - single-line in the PSL
  2. List individual SLDs like net.cn.st, com.cn.st, org.cn.st, ngo.cn.st, me.cn.st, dev.cn.st - would require multiple lines in the PSL

I prefer option 1 (the wildcard) because it's more elegant and avoids cluttering the PSL.

eu.org had a huge part in the PSL so I want to avoid that. The wildcard accomplishes the same security goal without the maintenance overhead.

list/public_suffix_list.dat

Lines 13319 to 13373 in d3567de

// EU.org : https://eu.org/
// Submitted by Pierre Beyssac <hostmaster@eu.org>
eu.org
al.eu.org
asso.eu.org
at.eu.org
au.eu.org
be.eu.org
bg.eu.org
ca.eu.org
cd.eu.org
ch.eu.org
cn.eu.org
cy.eu.org
cz.eu.org
de.eu.org
dk.eu.org
edu.eu.org
ee.eu.org
es.eu.org
fi.eu.org
fr.eu.org
gr.eu.org
hr.eu.org
hu.eu.org
ie.eu.org
il.eu.org
in.eu.org
int.eu.org
is.eu.org
it.eu.org
jp.eu.org
kr.eu.org
lt.eu.org
lu.eu.org
lv.eu.org
me.eu.org
mk.eu.org
mt.eu.org
my.eu.org
net.eu.org
ng.eu.org
nl.eu.org
no.eu.org
nz.eu.org
pl.eu.org
pt.eu.org
ro.eu.org
ru.eu.org
se.eu.org
si.eu.org
sk.eu.org
tr.eu.org
uk.eu.org
us.eu.org

Users are not allowed to register second-level domains like xx.cn.st directly anyway: all registrations happen at the third level (e.g., username.xxx.cn.st).

The A records provide an additional safeguard against unauthorized resolution.

@groundcat
Copy link
Copy Markdown
Contributor

DNS pollution like unauthorized resolving to malicious IPs

DNSSEC exists for this purpose.

@fakeboboliu
Copy link
Copy Markdown
Contributor

But please, keep the tone constructive and professional.

I apologize if you found my tone harsh. I've gotten used to a more direct way of communicating in recent weeks.

Since cn.st WILL BE newly launched, it does not yet have independent usage data.
The user statistics I referenced are from our existing PublicZone infrastructure.

This is precisely the reason for my doubt: the number of users acquired through acquisition actually belongs to nyc.mn.

And I think that new domains should be processed in the seperate PR, even you have transfered or re-registered a listed domain.
US.KG's new domains for example: #2462 , since it also re-registered and transfered a listed domain to gain advantage from PSL.

Users are not allowed to register second-level domains like xx.cn.st directly anyway

Well this is actually 4th-level, but that doesn't matter.

@publiczonenoc publiczonenoc changed the title PublicZone Submission Update contact email for nyc.mn, add cn.st Dec 20, 2025
@groundcat
Copy link
Copy Markdown
Contributor

  • Expiration (Must STAY >2y)
    • nyc.mn - expires 2028-08-05 (~2.6 years)
    • cn.st - expires 2028-06-20 (~2.5 years)
  • Organization description
    • PublicZone provides subdomain services
    • Explains acquisition of nyc.mn from NYC.mn team
    • Detailed explanation of cn.st purpose
  • Reasoning/PSL Inclusion
    • Valid use case for subdomain isolation
    • 2,700+ users
    • Not attempting to bypass third-party limits
  • Abuse contact

@simon-friedberger

@simon-friedberger simon-friedberger merged commit 59cdd76 into publicsuffix:main Dec 21, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants