Skip to content

DNS record validation improvements

Hello ISPConfig team,

I've noticed that the DNS record format validation in ISPConfig has improved a lot recently. It now reports some errors when users try to create invalid records. This is very helpful.

However, I'd like to report a few more cases where invalid DNS configurations are not being flagged properly, or where the error reporting could be improved. Would you consider adding detection for these cases in a future release?


Case 1

  1. Create a CNAME record:
    • Hostname: test1
    • Target Hostname: abc.com.
  2. Create a TXT record:
    • Hostname: test1
    • Text: abc

Result: UI returns data_error_duplicate


Case 2

  1. Create a CNAME record:
    • Hostname: test1
    • Mailserver hostname: abc.com.
  2. Create a MX record:
    • Hostname: test1
    • Mailserver hostname: abc.com.

Result: UI returns data_error_duplicate


Case 3

  1. Create a CNAME record:
    • Hostname: test1
    • Target Hostname: abc.com.
  2. Create an SPF or DKIM (TXT) record:
    • Hostname: test1

Result: No error returned in UI but pri.example.com.err is created because CNAME and TXT records conflict.


Case 4

  1. Create a CNAME record:
    • Hostname: test1
    • Mailserver hostname: abc.com.
  2. Create a SRV record:
    • Hostname: test1
    • Target: abc.com.
    • Weight: 1
    • Port: 1
    • Priority: 1

Result: UI returns data_error_duplicate


Case 5

  1. Create a CNAME record:
    • Hostname: (blank)
    • Target Hostname: abc.com.

Result: No error returned in UI but pri.example.com.err is created because CNAME is not allowed at the apex domain.


Case 6

  1. Create a SRV record with all fields blank.

Result: No error returned in UI but pri.example.com.err is created because SRV fields are invalid.

Suggestion: The form should enforce required fields and validate ranges:

  • Port: 0 – 65535
  • Weight: 0 – 65535
  • Priority: 0 – 65535
  • Target: must be a valid hostname

Case 7

When creating a DMARC record, the "Active" option is not selected by default.
Is this expected behavior? For other record types, "Active" is selected by default.