I added the RFC2136 provider from libdns, following the pattern from the other already-integrated providers.
I figure it can make sense for others to have it, if they host their emails they might host their DNS too.
It builds and the tests pass, I believe, I have no experience so I just executed the commands from the CI/CD workflow and nothing failed.
```bash
/src # go test ./... -coverprofile=coverage.out -covermode=atomic
? github.com/foxcpp/maddy [no test files]
? github.com/foxcpp/maddy/cmd/maddy [no test files]
? github.com/foxcpp/maddy/cmd/maddy-pam-helper [no test files]
? github.com/foxcpp/maddy/cmd/maddy-shadow-helper [no test files]
ok github.com/foxcpp/maddy/framework/address 0.003s coverage: 73.6% of statements
? github.com/foxcpp/maddy/framework/buffer [no test files]
ok github.com/foxcpp/maddy/framework/cfgparser 0.003s coverage: 91.7% of statements
ok github.com/foxcpp/maddy/framework/config 0.003s coverage: 42.9% of statements
ok github.com/foxcpp/maddy/framework/config/lexer 0.001s coverage: 88.5% of statements
? github.com/foxcpp/maddy/framework/config/module [no test files]
? github.com/foxcpp/maddy/framework/config/tls [no test files]
ok github.com/foxcpp/maddy/framework/dns 1.006s coverage: 25.2% of statements
? github.com/foxcpp/maddy/framework/exterrors [no test files]
ok github.com/foxcpp/maddy/framework/future 1.005s coverage: 75.8% of statements
? github.com/foxcpp/maddy/framework/hooks [no test files]
? github.com/foxcpp/maddy/framework/log [no test files]
ok github.com/foxcpp/maddy/framework/logparser 0.001s coverage: 87.5% of statements
? github.com/foxcpp/maddy/framework/module [no test files]
ok github.com/foxcpp/maddy/internal/auth 0.004s coverage: 51.3% of statements
? github.com/foxcpp/maddy/internal/auth/dovecot_sasl [no test files]
? github.com/foxcpp/maddy/internal/auth/external [no test files]
? github.com/foxcpp/maddy/internal/auth/ldap [no test files]
? github.com/foxcpp/maddy/internal/auth/netauth [no test files]
? github.com/foxcpp/maddy/internal/auth/pam [no test files]
ok github.com/foxcpp/maddy/internal/auth/pass_table 0.094s coverage: 30.7% of statements
ok github.com/foxcpp/maddy/internal/auth/plain_separate 0.011s coverage: 28.3% of statements
? github.com/foxcpp/maddy/internal/auth/shadow [no test files]
? github.com/foxcpp/maddy/internal/authz [no test files]
? github.com/foxcpp/maddy/internal/check [no test files]
? github.com/foxcpp/maddy/internal/check/authorize_sender [no test files]
? github.com/foxcpp/maddy/internal/check/command [no test files]
ok github.com/foxcpp/maddy/internal/check/dkim 0.004s coverage: 89.3% of statements
ok github.com/foxcpp/maddy/internal/check/dns 0.009s coverage: 81.6% of statements
ok github.com/foxcpp/maddy/internal/check/dnsbl 0.003s coverage: 45.7% of statements
ok github.com/foxcpp/maddy/internal/check/milter 0.003s coverage: 7.3% of statements
? github.com/foxcpp/maddy/internal/check/requiretls [no test files]
? github.com/foxcpp/maddy/internal/check/rspamd [no test files]
? github.com/foxcpp/maddy/internal/check/spf [no test files]
? github.com/foxcpp/maddy/internal/cli [no test files]
? github.com/foxcpp/maddy/internal/cli/clitools [no test files]
? github.com/foxcpp/maddy/internal/cli/ctl [no test files]
ok github.com/foxcpp/maddy/internal/dmarc 0.007s coverage: 91.1% of statements
? github.com/foxcpp/maddy/internal/dsn [no test files]
? github.com/foxcpp/maddy/internal/endpoint/dovecot_sasld [no test files]
? github.com/foxcpp/maddy/internal/endpoint/imap [no test files]
? github.com/foxcpp/maddy/internal/endpoint/openmetrics [no test files]
ok github.com/foxcpp/maddy/internal/endpoint/smtp 1.775s coverage: 70.6% of statements
? github.com/foxcpp/maddy/internal/imap_filter [no test files]
? github.com/foxcpp/maddy/internal/imap_filter/command [no test files]
? github.com/foxcpp/maddy/internal/libdns [no test files]
? github.com/foxcpp/maddy/internal/limits [no test files]
? github.com/foxcpp/maddy/internal/limits/limiters [no test files]
ok github.com/foxcpp/maddy/internal/modify 0.003s coverage: 37.0% of statements
ok github.com/foxcpp/maddy/internal/modify/dkim 0.776s coverage: 70.6% of statements
ok github.com/foxcpp/maddy/internal/msgpipeline 0.007s coverage: 74.2% of statements
? github.com/foxcpp/maddy/internal/proxy_protocol [no test files]
ok github.com/foxcpp/maddy/internal/smtpconn 0.008s coverage: 35.3% of statements
? github.com/foxcpp/maddy/internal/smtpconn/pool [no test files]
? github.com/foxcpp/maddy/internal/storage/blob [no test files]
ok github.com/foxcpp/maddy/internal/storage/blob/fs 0.088s coverage: 40.0% of statements
ok github.com/foxcpp/maddy/internal/storage/blob/s3 0.113s coverage: 65.7% of statements
ok github.com/foxcpp/maddy/internal/storage/imapsql 0.002s coverage: 0.8% of statements [no tests to run]
ok github.com/foxcpp/maddy/internal/table 1.577s coverage: 32.2% of statements
? github.com/foxcpp/maddy/internal/target [no test files]
ok github.com/foxcpp/maddy/internal/target/queue 1.506s coverage: 75.4% of statements
ok github.com/foxcpp/maddy/internal/target/remote 0.049s coverage: 65.1% of statements
ok github.com/foxcpp/maddy/internal/target/smtp 0.011s coverage: 82.4% of statements
? github.com/foxcpp/maddy/internal/testutils [no test files]
? github.com/foxcpp/maddy/internal/tls [no test files]
? github.com/foxcpp/maddy/internal/tls/acme [no test files]
? github.com/foxcpp/maddy/internal/updatepipe [no test files]
? github.com/foxcpp/maddy/internal/updatepipe/pubsub [no test files]
? github.com/foxcpp/maddy/tests [no test files]
/src # cd tests/
/src/tests # ./run.sh
warning: no packages being tested depend on matches for pattern github.com/foxcpp/maddy/pkg/...
PASS
ok github.com/foxcpp/maddy/tests 9.672s
```
Hi!
I added the RFC2136 provider from libdns, following the pattern from the other already-integrated providers.
I figure it can make sense for others to have it, if they host their emails they might host their DNS too.
It builds and the tests pass, I believe, I have no experience so I just executed the commands from the CI/CD workflow and nothing failed.