Issue Description
When enabling automatic DNS management and explicitly enabling TLSA records under Record Types, the Perform DNS management for a domain fails, giving an API error.
Expected Behavior
Stalwart should create the relevant TLSA records, as it does with the rest of the DNS records when set to automatically manage them.
Actual Behavior
TLSA records and any DNS records that are queued afterwards within the same task do not get created, updated, etc. Thus, this breaks all auto DNS management.
Reproduction Steps
- Acquire a Spaceship domain name.
- Under Management → Domains → , enable Automatic DNS management.
- Set it to use the Spaceship API and explicitly enable TLSA records under
Record Types. - Save the settings, causing the task to automatically start.
- Observe the task fail.
Relevant Log Output
Failed to set DNS RRSet for _995._tcp.mail.example.com./TLSA: Failed to set DNS RRSet: API error: HTTP 422: {"detail":"Request validation error.","data":[{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[0].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[1].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[2].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[3].port"}]}; Failed to set DNS RRSet for _443._tcp.mta-sts.example.com./TLSA: Failed to set DNS RRSet: API error: HTTP 422: {"detail":"Request validation error.","data":[{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[0].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[1].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[2].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[3].port"}]}; Failed to set DNS RRSet for _25._tcp.mail.example.com./TLSA: Failed to set DNS RRSet: API error: HTTP 422: {"detail":"Request validation error.","data":[{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[0].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[1].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[2].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[3].port"}]}; Failed to set DNS RRSet for _443._tcp.mail.example.com./TLSA: Failed to set DNS RRSet: API error: HTTP 422: {"detail":"Request validation error.","data":[{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[0].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[1].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[2].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[3].port"}]}; Failed to set DNS RRSet for _443._tcp.autodiscover.example.com./TLSA: Failed to set DNS RRSet: API error: HTTP 422: {"detail":"Request validation error.","data":[{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[0].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[1].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[2].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[3].port"}]}; Failed to set DNS RRSet for _443._tcp.ua-auto-config.example.com./TLSA: Failed to set DNS RRSet: API error: HTTP 422: {"detail":"Request validation error.","data":[{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[0].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[1].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[2].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[3].port"}]}; Failed to set DNS RRSet for _443._tcp.autoconfig.example.com./TLSA: Failed to set DNS RRSet: API error: HTTP 422: {"detail":"Request validation error.","data":[{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[0].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[1].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[2].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[3].port"}]}; Failed to set DNS RRSet for _465._tcp.mail.example.com./TLSA: Failed to set DNS RRSet: API error: HTTP 422: {"detail":"Request validation error.","data":[{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[0].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[1].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[2].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[3].port"}]}; Failed to set DNS RRSet for _993._tcp.mail.example.com./TLSA: Failed to set DNS RRSet: API error: HTTP 422: {"detail":"Request validation error.","data":[{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[0].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[1].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[2].port"},{"details":"Port should be equal asterisk or must start with an underscore and have a number between 1 and 65535","field":"items[3].port"}]}
Stalwart Version
v0.16.x
Installation Method
Docker
Database Backend
RocksDB
Blob Storage
RocksDB
Search Engine
Internal
Directory Backend
Internal
I have reviewed the documentation and FAQ and confirm that my issue is NOT addressed there.
on
I have searched this support forum (open and closed topics) and confirm this is not a duplicate.
on
I understand that topics in this category are triaged by a bot first but a human reply will follow up. If I’d prefer a human-only reply, I’ll add the no-ai tag to my topic.
on