"""Reserved localparts that may not be registered (SPEC §4/§6.1). Mail-grade from day one: role addresses (RFC 2142) plus common admin/system handles. Comparison is case-insensitive; keep entries lowercase. """ from __future__ import annotations RESERVED_LOCALPARTS: frozenset[str] = frozenset( { # RFC 2142 role addresses "postmaster", "abuse", "hostmaster", "webmaster", "usenet", "news", "www", "uucp", "ftp", "noc", "security", "mailer-daemon", # Common system/admin handles "admin", "administrator", "root", "noreply", "no-reply", "donotreply", "do-not-reply", "support", "help", "info", "contact", "sales", "billing", "system", "daemon", "nobody", "null", "void", "test", } ) def is_reserved(localpart: str) -> bool: """Return True if ``localpart`` is reserved (case-insensitive).""" return localpart.lower() in RESERVED_LOCALPARTS