Issue Description
When performing automatic DNS updates on the TransIP API, several commands fail.
The API reports back:
Failed to set DNS RRSet for mta-sts.onderzone.nl./CNAME: Failed to set DNS RRSet: API error: HTTP 409: {“error”:“Error fetching Dns Entries: DNS Entries are currently being saved”};
Failed to set DNS RRSet for _imaps._tcp.onderzone.nl./SRV: Failed to set DNS RRSet: API error: HTTP 409: {“error”:“Error fetching Dns Entries: DNS Entries are currently being saved”};
Failed to set DNS RRSet for _pop3s._tcp.onderzone.nl./SRV: Failed to set DNS RRSet: API error: HTTP 409: {“error”:“Error setting Dns Entries”}
This suggests - but i’m no expert! - that there needs to be a small pause or confirmation between commands.
Reproduction Steps
- Setup TransIP automatic DNS management
- Add a domain and let Stalwart update it’s DNS records
Stalwart Version
v0.16.x
Installation Method
Binary (Linux)
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
The TransIP provider is supported in the Stalwart source but doesn’t have provider-specific documentation yet. However, there is a general mechanism that directly addresses your problem.
The DnsServer object (for all providers including TransIP) has a propagationDelay field specifically described as “Initial delay before first propagation check (useful for slow providers)”. The TransIP API is returning HTTP 409 conflicts because Stalwart is firing consecutive API calls before TransIP has finished processing the previous write (“DNS Entries are currently being saved”). Setting a propagationDelay on your TransIP DNS server object should introduce a pause between operations and give the API time to settle.
You can configure this in the WebUI under Settings › Network › DNS › DNS Providers, editing your TransIP server entry and setting a propagationDelay (e.g. "5s" or "10s") to introduce a wait before the next propagation check begins.
The relevant fields on the DnsServer object are:
| Field |
Default |
Purpose |
propagationDelay |
(none) |
Initial delay before first propagation check |
pollingInterval |
15s |
How often to poll for record propagation |
propagationTimeout |
1m |
Max time to wait for propagation |
If propagationDelay alone doesn’t fully resolve it (since the 409 happens during the write phase, not the check phase), this may be a provider-specific rate-limiting issue in Stalwart’s TransIP integration that requires a code fix. A human will be able to confirm which path is needed.
Reference: DnsServer object reference
This is an automated reply from the Stalwart Help Bot. Other community members may follow up if this answer is incomplete or wrong.
Stalwart was on it’s default settings.
propogationDelay: none
pollingInterval: 15s
propagationTimeout: 1m
I have now set Initial Propagation Delay to 5s. Hope this works, but I’m not sure is the 5s is done between each DNS mutation or just once.
EDIT: Re-ran the task and no failed messages this time.