Skip to content

[TransIP] Cannot create NEW MX records: "illegal target" validation error or silent failure #6033

@djieno

Description

@djieno

What happened? I am unable to create new MX records using the TransIP provider in external-dns v0.16.1. Existing MX records (created manually or previously) are managed correctly, but creating a new DNSEndpoint with type MX fails in one of two ways depending on the target format:

  1. Standard Format ("10 mail.example.com"): Fails validation with an "illegal target" error in the logs, seemingly because it treats the whole string (priority + host) as a hostname to validate.
  2. External Target ("10 mx1.smtp.goog."): Passes validation (no error logs), but the record is not created on TransIP (silent failure).
  3. No Priority ("mail.example.com"): Fails validation with "illegal target".
  4. ProviderSpecific Priority: Setting priority via providerSpecific and using a clean hostname also fails validation.

A records and TXT records in the same zone work perfectly, proving credentials and connectivity are fine.

What you expected to happen? I expected external-dns to parse the priority and hostname from the target string (e.g., "10 mail.example.com") and successfully create the MX record on TransIP, similar to how it handles other providers or how it manages existing TransIP MX records.

How to reproduce it (as minimally and precisely as possible):
Deploy external-dns v0.16.1 configured with --provider=transip.

  • Apply a DNSEndpoint for a zone that does not currently have an MX record (or a fresh subdomain):
apiVersion: externaldns.k8s.io/v1alpha1
kind: DNSEndpoint
metadata:
  name: test-mx-creation
spec:
  endpoints:
    - dnsName: test-mx.example.com
      recordType: MX
      targets:
        - "10 mail.example.com"
      recordTTL: 600

Observe logs for validation errors: level=warning msg="Endpoint ... has an illegal target. The subdomain must consist of lower case alphanumeric characters..."

Anything else we need to know?

  • Existing Records: If I manually create the MX record in the TransIP control panel, external-dns sees it and does not complain. It only fails when it has to execute the create logic.
  • Workaround: Manual creation is the only way to get unblocked.

Environment:

  • External-DNS version: v0.16.1 (registry.k8s.io/external-dns/external-dns:v0.16.1)
  • DNS Provider: TransIP
  • Kubernetes version: v1.31.3+rke2r1 (Ubuntu 24.04)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions