Skip to content

Email domains guide says Void preserves foreign MX records, but domain add refuses apexes that have MX records #509

Closed

Description

@iPLAYCAFE-dev

Summary

The platform section of the email domains guide says Void "preserves foreign MX records" (docs/guide/email/domains.md L19). Read on its own, that suggests registering an apex whose mail is hosted elsewhere (for example Microsoft 365 or Google Workspace) is supported and leaves that mail alone.

The code refuses that case. Registering a custom apex fails when the domain already has MX records:

platform/packages/api/src/email/connection-service.ts L1459-L1474: "already has MX records; use an unused domain apex or a platform shared email address". On a fresh assignment any MX counts, including Cloudflare's own. On an existing assignment, any non-Cloudflare MX counts.

Use case

I operate a self-hosted Void platform serving several brands whose apex domains use Microsoft 365 for mail. I read the sentence as "register the apex, keep your mailboxes, add Void". It took a failed registration to learn that was not the intent.

What the rest of the docs say

Other text already matches the code. The same paragraph tells readers to choose an apex without another mail provider, the own-account section says Void refuses to replace another provider's MX records (L47), and docs/reference/cli/platform-email.md L76 says to use the shared address or another zone when the MX belongs to another provider. So the sentence may mean "Void does not modify them because it refuses the domain". If so, it is easy to misread.

Question

Which behaviour is intended?

  1. Refusal is intended. I can send a docs PR that rewords the sentence, for example to say that registration is refused when the apex has MX records, and that existing catch-alls on a Void-managed apex are left in place.
  2. Coexistence is intended and the refusal is a bug. In that case I would like to understand the intended design before touching code.

There is also a middle path, outbound-only custom domains, where an apex with foreign MX can send through Void while Void manages no inbound. I intend to raise that separately. If you prefer to solve the mismatch there, I can word the docs change to point at it once it lands.

Activity

  1. Brooooooklyn commented on Oct 21, 2026

    @Brooooooklyn
    Member

    Thanks for the clear report. Option 1: the refusal is intended. A platform-managed custom apex needs Cloudflare Email Routing to own its MX and catch-all, so domain add refuses an apex that already has MX records (or a catch-all that routes elsewhere) instead of taking over its mail. "Preserves" meant "never replaces", which reads the wrong way. #518 rewords the guide to match the CLI reference. Outbound-only custom domains for apexes with foreign MX would be a separate feature, so a separate issue for it is welcome.

  2. iPLAYCAFE-dev commented on Oct 21, 2026

    @iPLAYCAFE-dev
    Author

    Thanks, that clears it up. #518's wording matches what we saw, so this can close when it lands.

    The outbound-only case (custom apex whose MX stays with another provider, e.g. Microsoft 365) is already filed separately as #510.

  3. added a commit that references this issue on Oct 21, 2026
    4a81795
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions