Issue Description
RSA DKIM TXT is being cut into two sections when using Cloudflare automatic DNS.
Expected Behavior
DKIM record created in one blob instead of two.
Actual Behavior
A line break occurs, causing Cloudflare to close quote the blob and re-open a second section when publishing the RSA DKIM TXT record.
Reproduction Steps
- Run bootstrap and configure automatic DNS for Cloudflare
- systemctl restart stalwart
- tail -f /var/log/stalwart/stalwart.2026-05-25 and wait
Relevant Log Output
2026-05-25T01:23:58Z WARN DNS record propagation timeout (dns.record-propagation-timeout) hostname = "v1-rsa-20260525._domainkey.example.ca.", details = "example.ca", type = "TXT", value = "v=DKIM1; k=rsa; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoyDvXVu/vClrEkhQhMM6xTnlfrOXi6iZuj+j6aicMv26uEl/wG3qYTu8iyPu6bYMk7D+0YspFIvKuwP3D2zc2YrlV7MKXY7TPgs0otZTT1mHde3/tP/s0WGgChlkBMVYhtlKRbOAtdY/6ZoEC9UBhp6xOLT65TrNsYHKDZ2NZPRho37fz4LAST2aDV+xq+mr/71hwHkAdi8ChGzoOyEVKT5mq6S9v04biUgIlwMkGQ4V6iGVyFqW+mQ6ZqSAVZWxbUYxIEbwmbk+/zDUzyB1XCL/RQGYpTbdgCNVL2T93AwDka/x/xkX/FDOk6ym11HF7VvfNdvhAXQyVgp+wOD7lQIDAQAB"
2026-05-25T01:24:59Z WARN DNS record propagation timeout (dns.record-propagation-timeout) hostname = "v1-ed25519-20260525._domainkey.example.ca.", details = "example.ca", type = "TXT", value = "v=DKIM1; k=ed25519; h=sha256; p=47bj6n7ZSYYRW5G/j/bfnGDA0cFq+8/ZYRwIj0IS9og="
2026-05-25T01:26:00Z WARN DNS record propagation timeout (dns.record-propagation-timeout) hostname = "v1-rsa-20260525._domainkey.example.ca.", details = "example.ca", type = "TXT", value = "v=DKIM1; k=rsa; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoyDvXVu/vClrEkhQhMM6xTnlfrOXi6iZuj+j6aicMv26uEl/wG3qYTu8iyPu6bYMk7D+0YspFIvKuwP3D2zc2YrlV7MKXY7TPgs0otZTT1mHde3/tP/s0WGgChlkBMVYhtlKRbOAtdY/6ZoEC9UBhp6xOLT65TrNsYHKDZ2NZPRho37fz4LAST2aDV+xq+mr/71hwHkAdi8ChGzoOyEVKT5mq6S9v04biUgIlwMkGQ4V6iGVyFqW+mQ6ZqSAVZWxbUYxIEbwmbk+/zDUzyB1XCL/RQGYpTbdgCNVL2T93AwDka/x/xkX/FDOk6ym11HF7VvfNdvhAXQyVgp+wOD7lQIDAQAB"
2026-05-25T01:28:29Z WARN DNS record propagation timeout (dns.record-propagation-timeout) hostname = "v1-ed25519-20260525._domainkey.example.ca.", details = "example.ca", type = "TXT", value = "v=DKIM1; k=ed25519; h=sha256; p=47bj6n7ZSYYRW5G/j/bfnGDA0cFq+8/ZYRwIj0IS9og="
2026-05-25T01:29:30Z WARN DNS record propagation timeout (dns.record-propagation-timeout) hostname = "v1-rsa-20260525._domainkey.example.ca.", details = "example.ca", type = "TXT", value = "v=DKIM1; k=rsa; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoyDvXVu/vClrEkhQhMM6xTnlfrOXi6iZuj+j6aicMv26uEl/wG3qYTu8iyPu6bYMk7D+0YspFIvKuwP3D2zc2YrlV7MKXY7TPgs0otZTT1mHde3/tP/s0WGgChlkBMVYhtlKRbOAtdY/6ZoEC9UBhp6xOLT65TrNsYHKDZ2NZPRho37fz4LAST2aDV+xq+mr/71hwHkAdi8ChGzoOyEVKT5mq6S9v04biUgIlwMkGQ4V6iGVyFqW+mQ6ZqSAVZWxbUYxIEbwmbk+/zDUzyB1XCL/RQGYpTbdgCNVL2T93AwDka/x/xkX/FDOk6ym11HF7VvfNdvhAXQyVgp+wOD7lQIDAQAB"
2026-05-25T01:33:23Z WARN DNS record propagation timeout (dns.record-propagation-timeout) hostname = "v1-ed25519-20260525._domainkey.example.ca.", details = "example.ca", type = "TXT", value = "v=DKIM1; k=ed25519; h=sha256; p=47bj6n7ZSYYRW5G/j/bfnGDA0cFq+8/ZYRwIj0IS9og="
2026-05-25T01:34:25Z WARN DNS record propagation timeout (dns.record-propagation-timeout) hostname = "v1-rsa-20260525._domainkey.example.ca.", details = "example.ca", type = "TXT", value = "v=DKIM1; k=rsa; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoyDvXVu/vClrEkhQhMM6xTnlfrOXi6iZuj+j6aicMv26uEl/wG3qYTu8iyPu6bYMk7D+0YspFIvKuwP3D2zc2YrlV7MKXY7TPgs0otZTT1mHde3/tP/s0WGgChlkBMVYhtlKRbOAtdY/6ZoEC9UBhp6xOLT65TrNsYHKDZ2NZPRho37fz4LAST2aDV+xq+mr/71hwHkAdi8ChGzoOyEVKT5mq6S9v04biUgIlwMkGQ4V6iGVyFqW+mQ6ZqSAVZWxbUYxIEbwmbk+/zDUzyB1XCL/RQGYpTbdgCNVL2T93AwDka/x/xkX/FDOk6ym11HF7VvfNdvhAXQyVgp+wOD7lQIDAQAB"
2026-05-25T01:40:19Z WARN Task failed during processing (task-manager.task-failed) id = 309103926817325568, details = "DkimManagement", reason = "DKIM record v1-ed25519-20260525._domainkey.example.ca. did not propagate, will retry.; DKIM record v1-rsa-20260525._domainkey.example.ca. did not propagate, will retry."```
### Stalwart Version
v0.16.x
### Installation Method
Binary (Linux)
### Database Backend
PostgreSQL
### Blob Storage
S3-compatible
### Search Engine
Internal
### Directory Backend
Internal
### Additional Context
The ed25519 TXT record appears to be created correctly, but the RSA key is created as:
```"v=DKIM1; k=rsa; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoyDvXVu/vClrEkhQhMM6xTnlfrOXi6iZuj+j6aicMv26uEl/wG3qYTu8iyPu6bYMk7D+0YspFIvKuwP3D2zc2YrlV7MKXY7TPgs0otZTT1mHde3/tP/s0WGgChlkBMVYhtlKRbOAtdY/6ZoEC9UBhp6xOLT65TrNsYHKDZ2NZPRho37fz4LAST2" "aDV+xq+mr/71hwHkAdi8ChGzoOyEVKT5mq6S9v04biUgIlwMkGQ4V6iGVyFqW+mQ6ZqSAVZWxbUYxIEbwmbk+/zDUzyB1XCL/RQGYpTbdgCNVL2T93AwDka/x/xkX/FDOk6ym11HF7VvfNdvhAXQyVgp+wOD7lQIDAQAB"```
It looks like a line break was introduced, causing Cloudflare to quote encapsulate two separate blobs, as Cloudflare recently started enforcing quote-enclosed TXT records.
### 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