
What’s Changed in v1.12.1 (2026-07-18)

-   fix(server): harden socketmap control surface by @DragonWork
-   fix(server): drain workers before final cache save by @DragonWork
-   test: stabilize concurrency validation by @DragonWork
-   perf(cache): bound policy cache growth by @DragonWork
-   fix(mta-sts): enforce RFC 8461 discovery rules by @DragonWork
-   fix(server): close active clients during shutdown by @DragonWork
-   fix(docker): supervise resolver and harden runtime by @DragonWork
-   fix(build): preserve source configuration on install by @DragonWork
-   fix(cache): preserve newest concurrent snapshot by @DragonWork
-   perf(server): reduce saturation and scrape overhead by @DragonWork
-   fix(dane): reject unreachable MX hosts by @DragonWork
-   fix(cli): preserve jq startup errors by @DragonWork
-   refactor: simplify version normalization by @DragonWork
-   docs: clarify DANE discovery behavior by @DragonWork
-   feat(grafana): refine operations dashboard by @DragonWork
-   fix(mtasts): retain unexpired policy on refresh failure by
    @DragonWork
-   fix(dane): support authenticated implicit MX hosts by @DragonWork
-   fix(runtime): fail closed on recovery and startup errors by
    @DragonWork
-   perf(runtime): reduce cache and request overhead by @DragonWork
-   feat(observability): add cache health dashboard panels by
    @DragonWork
-   fix(build): normalize binary permissions by @DragonWork
-   chore: add Grafana dashboard screenshot by @DragonWork
-   fix(logging): reduce non-actionable runtime warnings by @DragonWork
-   refactor: field-align structs by @DragonWork
-   fix(logging): restore query result visibility by @DragonWork
-   fix(prefetch): desynchronize scheduler batches by @DragonWork
-   build(docker): bump golang from 1.26.4-alpine3.23 to
    1.26.5-alpine3.23 in /deployments by @dependabot [bot] in #168
-   build(deps): bump the golang-x group across 1 directory with 5
    updates by @dependabot [bot] in #170
-   chore: update README.md by @DragonWork
-   chore: update assets/README.md by @DragonWork
-   fix(cli): accept dump pager cancellation by @DragonWork
-   docs(config): remove redundant listener guidance by @DragonWork
-   Treat unsigned MX NXDOMAIN as non-temporary by @croessner in #173
-   build: update toolchain to go1.26.5
-   fix(config): ignore unknown keys with warnings


New Contributors

-   @croessner made their first contribution in #173

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.11.0…v1.12.1


What’s Changed in v1.11.0 (2026-07-05)

-   build(deps): update toolchain to go1.26.3 by @DragonWork
-   build(deps): bump the golang-x group with 2 updates by @dependabot
    [bot] in #146
-   build(deps): update toolchain to go1.26.4 by @DragonWork
-   build(docker): bump golang from 1.26.3-alpine3.23 to
    1.26.4-alpine3.23 in /deployments by @dependabot [bot] in #149
-   build(deps): bump the golang-x group across 1 directory with 5
    updates by @dependabot [bot] in #153
-   build(deps): bump go.yaml.in/yaml/v4 from 4.0.0-rc.4 to 4.0.0-rc.5
    by @dependabot [bot] in #154
-   build(deps): bump go.yaml.in/yaml/v4 from 4.0.0-rc.5 to 4.0.0-rc.6
    by @dependabot [bot] in #159
-   build(deps): bump golang.org/x/tools from 0.46.0 to 0.47.0 in the
    golang-x group by @dependabot [bot] in #160
-   build(docker): bump golang from f23e8b2 to eb5a920 in /deployments
    by @dependabot [bot] in #157
-   fix(docker): fix unbound auto-trust-anchor ownership problems by
    @DragonWork
-   feat: auto-setup systemd socket address when upgrading from a legacy
    version that did not support systemd sockets by @DragonWork
-   fix: return TEMP on MX address lookup failures and prevent
    downgrades in DANE path by @DragonWork
-   fix: back off failed policy prefetch retries by @DragonWork
-   build(docker): bump golang from eb5a920 to 18b460d in /deployments
    by @dependabot [bot] in #164
-   fix: prevent accept errors from putting the server in a state of
    no-operation by @DragonWork
-   fix: harden netstring length parsing by @DragonWork
-   fix: harden resolv.conf reloads and prevent sticking to stale
    configuration by @DragonWork
-   feat: optimize prefetch renewal for near-expiry policies and batch
    them to use resources more efficiently by @DragonWork
-   fix: prune unused cache hit counters by @DragonWork
-   fix: harden metrics HTTP handling with timeouts and limits by
    @DragonWork
-   fix: harden DANE MX lookup concurrency by @DragonWork
-   fix: tighten MTA-STS policy input validation by @DragonWork
-   fix: harden DNS UDP payload sizing by @DragonWork
-   fix: validate MTA-STS extensions by RFC grammar by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.10.0…v1.11.0


What’s Changed in v1.10.0 (2026-04-28)

-   fix: use relative stats, remove superfluous stats persistence by
    @DragonWork
-   fix: optimize retry logic and check for DANE even if a previous
    MTA-STS result exists in cache by @DragonWork
-   feat: enable configuration of an http-only metrics endpoint by
    @DragonWork
-   perf(cache): reduce cache-hit writes by @DragonWork
-   perf(policy): refresh stale cache branches selectively by
    @DragonWork
-   perf(dns): parallelize MX validation by @DragonWork
-   perf(prefetch): schedule cache refreshes by expiry by @DragonWork
-   build(deps): update toolchain to go1.26.2 by @DragonWork
-   fix: don’t enforce systemd socket usage if the socket is
    disabled/masked on install by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.9.1…v1.10.0


What’s Changed in v1.9.1 (2026-04-17)

-   fix: fix Docker workflow by @DragonWork
-   fix: systemd socket activation for Unix Domain Sockets by
    @DragonWork
-   fix: harden forced cache save and log errors by @DragonWork
-   refactor: optimize struct alignment by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.9.0…v1.9.1


What’s Changed in v1.9.0 (2026-04-17)

-   refactor: modernize interface{} -> any by @DragonWork
-   build(deps): bump the golang-x group with 2 updates by @dependabot
    [bot] in #130
-   build(deps): bump the golang-x group with 2 updates by @dependabot
    [bot] in #131
-   build(deps): bump the golang-x group with 2 updates by @dependabot
    [bot] in #133
-   feat: set systemd OOMPolicy to continue by @DragonWork
-   test: add testing for netstring module by @DragonWork
-   test: tighten testing for valid module by @DragonWork
-   test: add testing to cache module by @DragonWork
-   refactor: switch to native structured logging using log/slog by
    @DragonWork
-   refactor: modernize shell scripts and allow setting an installation
    prefix by @DragonWork
-   refactor: make logging more parser-friendly by @DragonWork
-   build(deps): bump the golang-x group across 1 directory with 4
    updates by @dependabot [bot] in #137
-   feat: add systemd socket activation support by @DragonWork
-   fix: return seconds as integers in logging by @DragonWork
-   feat: expose metrics by @DragonWork
-   refactor: improve overall memory and heap behavior by @DragonWork
-   feat: coalesce multiple concurrent queries for same domain into one
    lookup (singleflight) by @DragonWork
-   fix: add missing singleflight module by @DragonWork
-   refactor: further minor code rewrite by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.27…v1.9.0


What’s Changed in v1.8.27 (2026-03-07)

-   build(deps): bump golang.org/x/net from 0.50.0 to 0.51.0 in the
    golang-x group by @dependabot [bot] in #126
-   build: update toolchain to go1.26.1 (includes important security
    fixes) by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.26…v1.8.27


What’s Changed in v1.8.26 (2026-02-19)

-   build(deps): bump the golang-x group with 5 updates by @dependabot
    [bot] in #124
-   build: update toolchain to go1.26.0 by @DragonWork
-   build(docker): update golang to 1.26.0 by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.25…v1.8.26


What’s Changed in v1.8.25 (2026-02-03)

-   build(deps): bump the golang-x group with 2 updates by @dependabot
    [bot] in #112
-   build(deps): bump github.com/miekg/dns from 1.1.69 to 1.1.70 by
    @dependabot [bot] in #113
-   refactor: micro-optimize parallel lookup by @DragonWork
-   build: update toolchain to go1.25.6 by @DragonWork
-   build(deps): update indirect dependencies by @DragonWork
-   build(docker): bump golang from bc25967 to d9b2e14 in /deployments
    by @dependabot [bot] in #117
-   build(deps): bump github.com/miekg/dns from 1.1.70 to 1.1.72 by
    @dependabot [bot] in #118
-   build(deps): bump go.yaml.in/yaml/v4 from 4.0.0-rc.3 to 4.0.0-rc.4
    by @dependabot [bot] in #119
-   build(docker): bump golang from d9b2e14 to 98e6cff in /deployments
    by @dependabot [bot] in #121

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.24…v1.8.25


What’s Changed in v1.8.24 (2025-12-22)

-   fix: reorder cleanup by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.23…v1.8.24


What’s Changed in v1.8.23 (2025-12-22)

-   build(deps): bump golang.org/x/sys from 0.38.0 to 0.39.0 in the
    golang-x group by @dependabot [bot] in #103
-   build(docker): bump golang from 1.25.4-alpine3.22 to
    1.25.5-alpine3.22 in /deployments by @dependabot [bot] in #102
-   build(deps): bump golang.org/x/term from 0.37.0 to 0.38.0 in the
    golang-x group by @dependabot [bot] in #105
-   build(deps): bump github.com/miekg/dns from 1.1.68 to 1.1.69 by
    @dependabot [bot] in #106
-   build(deps): update indirect dependencies by @DragonWork
-   build: update toolchain to go1.25.5 by @DragonWork
-   fix: remove existing unix socket file if it exists before server
    startup by @DragonWork
-   fix: return non-zero exit code when server fails to start by
    @DragonWork
-   fix: fix race-conditions in parallel lookup leading to write on
    closed channel by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.22…v1.8.23


What’s Changed in v1.8.22 (2025-11-16)

-   fix: reject MTA-STS policies with no MX hosts by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.21…v1.8.22


What’s Changed in v1.8.21 (2025-11-14)

-   build(deps): bump golang.org/x/sys from 0.37.0 to 0.38.0 in the
    golang-x group by @dependabot [bot] in #89
-   build(docker): bump golang from 1.25.3-alpine3.22 to
    1.25.4-alpine3.22 in /deployments by @dependabot [bot] in #88
-   build(deps): bump go.yaml.in/yaml/v4 from 4.0.0-rc.2 to 4.0.0-rc.3
    by @dependabot [bot] in #90
-   refactor: small concurrency fixes by @DragonWork
-   build(deps): update indirect dependencies by @DragonWork
-   build(deps): update toolchain to go1.25.4 by @DragonWork
-   fix: fix MTA-STS wildcard hosts failing with recent postfix versions
    by @DragonWork
-   build(deps): update dependencies by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.20…v1.8.21


What’s Changed in v1.8.21 (2025-11-14)

-   build(deps): bump golang.org/x/sys from 0.37.0 to 0.38.0 in the
    golang-x group by @dependabot [bot] in #89
-   build(docker): bump golang from 1.25.3-alpine3.22 to
    1.25.4-alpine3.22 in /deployments by @dependabot [bot] in #88
-   build(deps): bump go.yaml.in/yaml/v4 from 4.0.0-rc.2 to 4.0.0-rc.3
    by @dependabot [bot] in #90
-   refactor: small concurrency fixes by @DragonWork
-   build(deps): update indirect dependencies by @DragonWork
-   build(deps): update toolchain to go1.25.4 by @DragonWork
-   fix: fix MTA-STS wildcard hosts failing with recent postfix versions
    by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.20…v1.8.21


What’s Changed in v1.8.20 (2025-10-17)

-   fix: eliminate potential deadlock by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.19…v1.8.20


What’s Changed in v1.8.19 (2025-10-16)

-   build(docker): bump golang from 1.25.0-alpine3.22 to
    1.25.1-alpine3.22 in /deployments by @dependabot [bot] in #78
-   build(deps): bump golang.org/x/term from 0.34.0 to 0.35.0 by
    @dependabot [bot] in #79
-   build(deps): update dependencies by @DragonWork
-   build(deps): bump the golang-x group with 2 updates by @dependabot
    [bot] in #84
-   build(docker): bump golang from 1.25.1-alpine3.22 to
    1.25.3-alpine3.22 in /deployments by @dependabot [bot] in #85
-   build(deps): update toolchain and dependencies by @DragonWork
-   refactor: optimize mutex usage in cache and avoid recreation of
    struct entries by @DragonWork
-   fix: fix race conditions and optimize handling of timeouts (closes
    #82) by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.18…v1.8.19


What’s Changed in v1.8.18 (2025-09-05)

-   fix: fix IPv6 nameserver setup from /etc/resolv.conf by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.17…v1.8.18


What’s Changed in v1.8.17 (2025-09-05)

-   fix: do not re-read /etc/resolv.conf on every single DNS request by
    @DragonWork
-   build(deps): update toolchain to go1.25.1 by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.16…v1.8.17


What’s Changed in v1.8.16 (2025-08-31)

-   fix: correctly cap 10-digit values (which are valid since 9ad53de)
    to upper limit in MTA-STS max_age per RFC 8461, 3.2 by @DragonWork
-   feat: fallback to system resolver without dns.address by @mweinelt
    in #73
-   refactor: rearrange imports by @DragonWork
-   fix: fix MTA-STS policy parsing by @DragonWork
-   build(deps): bump go.yaml.in/yaml/v4 from 4.0.0-rc.1 to 4.0.0-rc.2
    by @dependabot [bot] in #74


New Contributors

-   @mweinelt made their first contribution in #73

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.15…v1.8.16


What’s Changed in v1.8.15 (2025-08-26)

-   feat: allow -exporting in-memory database in postfix hash format
-   refactor: lowercase domain names to standardize data as they are
    case-insensitive per RFC 4343
-   fix: fine-tune prefetch algorithm
-   fix: cap max_age to math.MaxUint32 to prevent overflow
-   fix: reject literal IP addresses in MTA-STS policy validation

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/7f83569…v1.8.15


What’s Changed in v1.8.14 (2025-08-23)

-   Add CHANGELOG.md by @DragonWork
-   Add release dates to CHANGELOG.md by @DragonWork
-   Update toolchain to go1.25.0 by @DragonWork
-   Remove external govalidator lib and use faster vanilla code by
    @DragonWork
-   Fix DANE domains escaping prefetch algorithm because of low TTL
    returned from DNS resolver by @DragonWork
-   Bump golang from 1.24.6-alpine3.22 to 1.25.0-alpine3.22 in
    /deployments in the docker group by @dependabot [bot] in #68
-   Bump actions/checkout from 4.2.2 to 5.0.0 in the github-actions
    group by @dependabot [bot] in #69

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.13…v1.8.14


What’s Changed in v1.8.13 (2025-08-08)

-   Bump docker/metadata-action from 5.7.0 to 5.8.0 in the
    github-actions group by @dependabot [bot] in #61
-   Bump golang from ddf5200 to daae04e in /deployments in the docker
    group by @dependabot [bot] in #62
-   Bump the go-modules group with 2 updates by @dependabot [bot] in #63
-   Update dependencies by @DragonWork
-   Make systemd service file more compatible by @DragonWork
-   Optimize prefetching and add counter for queries (use -dump to view)
    by @DragonWork
-   Bump golang from 1.24.5-alpine3.22 to 1.24.6-alpine3.22 in
    /deployments in the docker group by @dependabot [bot] in #65
-   Bump the github-actions group with 2 updates by @dependabot [bot] in
    #66

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.12…v1.8.13


What’s Changed in v1.8.12 (2025-07-09)

-   Bump the github-actions group with 2 updates by @dependabot [bot] in
    #58
-   Bump golang from 1.24.3-alpine3.21 to 1.24.4-alpine3.21 in
    /deployments in the docker group by @dependabot [bot] in #57
-   Update and reduce dependencies by @DragonWork
-   Make version tagging less strict for easier packaging on Debian by
    @DragonWork
-   Update toolchain to go1.24.5 by @DragonWork
-   Update Docker container base by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.11…v1.8.12


What’s Changed in v1.8.11 (2025-06-04)

-   Bump docker/build-push-action from 6.16.0 to 6.18.0 in the
    github-actions group by @dependabot [bot] in #53
-   Fix version tag regression by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.10…v1.8.11


What’s Changed in v1.8.10 (2025-05-12)

-   Fix automated Docker build for x86-64-v1 by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.9…v1.8.10


What’s Changed in v1.8.9 (2025-05-08)

-   Make log level (verbosity) configurable by @DragonWork
-   Code cleanup by @DragonWork
-   Finetune x86_64 feature level detection in build.sh by @DragonWork
-   Fix minor typo in interactive build.sh when whiptail is not
    available by @DragonWork
-   Bump the github-actions group with 3 updates by @dependabot [bot] in
    #47
-   Update dependencies by @DragonWork
-   Improve version tag derivation by @DragonWork
-   Bump golang from 1.24.2-alpine3.21 to 1.24.3-alpine3.21 in
    /deployments in the docker group by @dependabot [bot] in #48
-   Bump actions/setup-go from 5.4.0 to 5.5.0 in the github-actions
    group by @dependabot [bot] in #49
-   Update toolchain to go1.24.3 by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.8…v1.8.9


What’s Changed in v1.8.8 (2025-04-09)

-   Bump the github-actions group with 3 updates by @dependabot [bot] in
    #41
-   Bump github.com/miekg/dns from 1.1.63 to 1.1.64 in the go-modules
    group by @dependabot [bot] in #42
-   Bump golang from 1.24.1-alpine3.21 to 1.24.2-alpine3.21 in
    /deployments in the docker group by @dependabot [bot] in #43
-   Update dependencies by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.7…v1.8.8


What’s Changed in v1.8.7 (2025-03-17)

-   Bump docker/login-action from 3.3.0 to 3.4.0 in the github-actions
    group by @dependabot [bot] in #40
-   Further optimizations, eliminate dangling goroutines and remove GC
    hacks by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.6…v1.8.7


What’s Changed in v1.8.6 (2025-03-17)

-   Fix for wrong age calculation of cached entries by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.5…v1.8.6


What’s Changed in v1.8.5 (2025-03-17)

-   Fix ever-increasing memory utilization by spawning ephemeral
    goroutines by @DragonWork
-   Minor fix by @DragonWork
-   Fix memory leak and further decrease memory usage down to ~10-15 MB
    by @DragonWork
-   Fine tune GC by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.4…v1.8.5


What’s Changed in v1.8.4 (2025-03-15)

-   Dump cache into pager when in terminal by @DragonWork
-   Set maximum cache TTL to 30d and reject invalid format (overflowing
    uint32 considered invalid) in max_age attribute in MTA-STS policy by
    @DragonWork
-   Minor bug fix and optimizations by @DragonWork
-   Fix dysfunctional -purge command by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.3…v1.8.4


What’s Changed in v1.8.3 (2025-03-14)

-   Fix missing version tag in automated Docker build by @DragonWork
-   (Micro-)Optimize field alignment for better memory utilization by
    @DragonWork
-   Disable caching of temporary errors and let Postfix decide when to
    retry by @DragonWork
-   Fix undeleted socket file after termination by properly closing the
    socketmap server by @DragonWork
-   Improve mutex in cache manager by @DragonWork
-   Add -dump flag to view the cache and further optimizations by
    @DragonWork
-   Even out prefetching attempts by @DragonWork
-   Autoremove stale cached entries by @DragonWork
-   Fix workflow by @DragonWork
-   Fix prematurely deleted cache entries during dumping/viewing the
    cache contents. by @DragonWork
-   Make queries retry once before responding with a temporary error by
    @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.2…v1.8.3


What’s Changed in v1.8.2 (2025-03-10)

-   Minor fix by @DragonWork
-   Fix restarting systemd after build by @DragonWork
-   Allow NO_COLOR and NO_TIMESTAMP environment variables for logging by
    @DragonWork
-   Small improvements in Docker image building by @DragonWork
-   Allow setting socket file permissions in config.yaml by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.1…v1.8.2


What’s Changed in v1.8.1 (2025-03-09)

-   Hotfix for duplicated TLSRPT extensions by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.8.0…v1.8.1


What’s Changed in v1.8.0 (2025-03-08)

-   Bump the github-actions group with 5 updates by @dependabot [bot] in
    #21
-   Update README.md by @DragonWork
-   Replace stuck dependency status badge by @DragonWork
-   Bump actions/attest-build-provenance from 2.2.2 to 2.2.3 in the
    github-actions group by @dependabot [bot] in #30
-   Bump golang from 1.24.0-alpine3.21 to 1.24.1-alpine3.21 in
    /deployments in the docker group by @dependabot [bot] in #29
-   Update indirect dependencies by @DragonWork
-   Remove Valkey/Redis database in favor of a new in-memory cache by
    @DragonWork
-   Prefetch after expiration (and not before) to circumvent need for
    serve-original-ttl by @DragonWork
-   Color output in logs only if bound to journald by @DragonWork
-   Support selecting systemd/docker variant through first argument in
    scripts/build.sh by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.7.3…v1.8.0


What’s Changed in v1.7.3 (2025-03-01)

-   Don‘t serve stale DNS answers in Docker image by @DragonWork
-   Expired records break DNSSEC, thus DANE detection by @DragonWork
-   Add packaging repositories to README.md by @DragonWork
-   Bump the minor group with 2 updates by @dependabot [bot] in #19
-   Bump the minor group with 2 updates by @dependabot [bot] in #18
-   Configure Dependabot for less frequent updates by @DragonWork
-   Relax Go version requirement and use more standardized install paths
    by @DragonWork
-   The file configs/config.yaml gets moved to
    /etc/postfix-tlspol/config.yaml by @DragonWork
-   The built executable is now installed to /usr/bin by @DragonWork
-   Update Dockerfile for changed install paths by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.7.2…v1.7.3


What’s Changed in v1.7.2 (2025-02-22)

-   Drop root permissions for Unbound in Docker build by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.7.1…v1.7.2


What’s Changed in v1.7.1 (2025-02-21)

-   Bump golang from 3d74d23 to 2d40d4f in /deployments by @dependabot
    [bot]
-   Update README.md by @DragonWork
-   Reduced cache latency by utilizing client-side caching of subsequent
    queries by @DragonWork
-   Parallelized manual querying and testing by @DragonWork
-   Added QUERYwithTLSRPT command to configure TLSRPT function via
    Postfix main.cf by @DragonWork
-   Optimized compilation for amd64 processors by @DragonWork
-   Bump docker/build-push-action from 6.13.0 to 6.14.0 in the minor
    group by @dependabot [bot]
-   Format shell scripts and fix wrong CPU arch display (no functional
    effect) by @DragonWork
-   Fix failing Docker container launch by @DragonWork


New Contributors

-   @dependabot [bot] made their first contribution

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.6.4…v1.7.1


What’s Changed in v1.6.4 (2025-02-17)

-   Update README.md by @DragonWork
-   Switch to Redis-compatible and open-source Valkey (Redis and KeyDB
    backends still work) by @DragonWork
-   Update go-test.yaml by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.6.3…v1.6.4


What’s Changed in v1.6.3 (2025-02-15)

-   Update GitHub Actions workflows by @DragonWork
-   Add provenance attestation for built Docker images to harden supply
    chain by @DragonWork
-   Update dependencies, including several security bug fixes within
    Docker base image by @DragonWork
-   Create SECURITY.md by @DragonWork
-   Add instructions for verifying automated Docker builds by
    @DragonWork
-   Update dependabot.yaml by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.6.2…v1.6.3


What’s Changed in v1.6.2 (2025-02-12)

-   Update build-docker.yaml by @DragonWork
-   Parallelize multi-arch building for automated Docker releases by
    @DragonWork
-   Update build-docker.yaml by @DragonWork
-   Update toolchain to go1.24 by @DragonWork
-   Code cleanup and Docker improvements by @DragonWork
-   Fix hanging Docker build by @DragonWork
-   Fix for failing Docker for good by @DragonWork
-   Rollback to redis as keydb isn’t available for all architectures yet
    by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.6.1…v1.6.2


What’s Changed in v1.6.1 (2025-02-10)

-   Support listening on Unix Domain Sockets by @DragonWork
-   Remove deprecated policy_ttl from TLSRPT extension by @DragonWork
-   Code simplification by @DragonWork
-   Add recommendation about explicitly setting
    smtp_tls_dane_insecure_mx_policy to dane by @DragonWork
-   Update default config in README by @DragonWork
-   Add flag for manual cache purging by @DragonWork
-   Add instructions on how to persist Docker state/cache between
    updates by @DragonWork
-   Update build-docker.yaml by @DragonWork
-   Revert 1011736 by @DragonWork
-   Minor changes by @DragonWork
-   Update dependencies by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.6.0…v1.6.1


What’s Changed in v1.6.0 (2025-02-06)

-   Fixed an issue of premature closing of the connection to Postfix
    after each request by @DragonWork
-   Improved query parsing by @DragonWork
-   Updated toolchain to go1.23.6 (includes security fixes) by
    @DragonWork
-   Minor bug fix by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.5.5…v1.6.0


What’s Changed in v1.5.5 (2025-02-05)

-   GitHub repository maintenance by @DragonWork
-   Further cleanup by @DragonWork
-   Fixes a MTA-STS policy parsing bug by @DragonWork
-   Updated a dependency by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.5.4…v1.5.5


What’s Changed in v1.5.4 (2025-02-04)

-   Return dane instead of dane-only when only some MX servers support
    DANE by @DragonWork
-   Minor bug fix by @DragonWork
-   Consider DANE-supporting MX records of a non-DNSSEC domain, and
    return dane (according to RFC 7672 Section 2.2.1 Paragraph 4) ->
    More DANE 🎉 by @DragonWork
-   Minor bug fix and better code readability by using enums by
    @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.5.2…v1.5.4


What’s Changed in v1.5.2 (2025-02-03)

-   Add automated testing workflow for GitHub by @DragonWork
-   Update go-test.yaml by @DragonWork
-   Better testing by @DragonWork
-   Updated build script by @DragonWork
-   More detailed query script for manual debugging by @DragonWork
-   Relaxed DNS error handling (strict option configurable) by
    @DragonWork
-   Improved debugging with new query shell script by @DragonWork
-   Updated dependencies by @DragonWork
-   Minor bug fixes by @DragonWork
-   Fix strict mode by @DragonWork
-   Improved detection of domains that point to third-party MX servers
    with no proper DNSSEC support. This pre-detection prevents DNS
    errors and makes the new strict option obsolete, which is thus
    removed by @DragonWork
-   Fixes false-positive DANE detection on non-DNSSEC domains (bug
    introduced in v1.5.0) by @DragonWork
-   Minor bug fixes by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.4.4…v1.5.2


What’s Changed in v1.4.4 (2025-01-25)

-   Added unit testing to ensure the core functions work before building
    (to prevent malfunction through a buggy version) by @DragonWork
-   Reduced cyclomatic complexity for readability by @DragonWork
-   Optimized prefetching by distributing the requests over time by
    @DragonWork
-   Evaluation won’t fail on first malformed MX record by @DragonWork
-   Small bug fixes by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.4.3…v1.4.4


What’s Changed in v1.4.3 (2025-01-23)

-   Build static binary by @DragonWork
-   Replace mutex locking with channels by @DragonWork
-   Fix wrong remaining TTL in logs for failing queries by @DragonWork
-   Increase negative cache TTL by @DragonWork
-   Introduce vendor folder for unifying dependencies inside the project
    by @DragonWork
-   Optimized algorithm with cancelation of ongoing checks as soon as
    the policy is evaluated (DANE cancels ongoing TLSA checks and
    MTA-STS) by @DragonWork
-   Reduced resource usage through recycling of objects by @DragonWork
-   Better error handling by @DragonWork
-   Fix version detection at build time for Docker by @DragonWork
-   Small bug fixes by @DragonWork
-   Hotfix for deadlocks and failing MTA-STS queries by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.4.0…v1.4.3


What’s Changed in v1.4.0 (2025-01-21)

-   Restructured project to follow Go best practices by @DragonWork
-   Added colored logging to stderr by @DragonWork
-   More verbose error messages (e. g. details of DNS errors) by
    @DragonWork
-   Small bug fixes by @DragonWork
-   Fix automated Docker builds by @DragonWork
-   Minor bug fixes by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.3.1…v1.4.0


What’s Changed in v1.3.1 (2025-01-20)

-   Optimize prefetching algorithm by @DragonWork
-   Enable prefetching by default by @DragonWork
-   Update dependencies by @DragonWork
-   Harden systemd service exposure by @DragonWork

FULL CHANGELOG:
https://github.com/Zuplu/postfix-tlspol/compare/v1.3.0…v1.3.1


All Other Changes from the initial upload until v1.3.0 (2025-01-17)

-   Initial commit by @DragonWork
-   Fix shell script permissions by @DragonWork
-   Create FUNDING.yml by @DragonWork
-   Update README.md by @DragonWork
-   Disallow HTTP 3xx forwarding for MTA-STS and other code
    simplifications by @DragonWork
-   Add preliminary support for Postfix 3.10+ TLSRPT feature for MTA-STS
    policies (must be explicitly enabled) and prohibit non-whitelisted
    chars in MTA-STS by @DragonWork
-   Reformat config.yaml by @DragonWork
-   Improved validation by @DragonWork
-   Add option to disable caching; add further checks by @DragonWork
-   Restructured codebase for readability by @DragonWork
-   Fix typos in README.md by @DragonWork
-   Increase minimum requirements by @DragonWork
-   Bump minimum Go version to 1.23.0 to include security fixes by
    @DragonWork
-   Require TLSv1.2 or higher when fetching the MTA-STS policy by
    @DragonWork
-   Add code quality badge to README.md by @DragonWork
-   Support prefetching (must be enabled, see README) by @DragonWork
-   Search multiple TLSA records per MX server for dane-only support
    before returning dane in case of unsupported parameters by
    @DragonWork
-   Log remaining cache TTL for queries by @DragonWork
-   Optimizations for prefetching by @DragonWork
-   Add CodeQL badge in README.md by @DragonWork
-   Override config.yaml only if it does not exist and add support for
    Go 1.22.7+ by @DragonWork
-   Fixed cached tempfail response by @DragonWork
-   Add badges to README.md by @DragonWork
-   Merge branch ‘main’ of github.com:Zuplu/postfix-tlspol by
    @DragonWork
-   Adding Docker support by @DragonWork
-   Fixed a bug in the Dockerfile by @DragonWork
-   Fix failing automated CodeQL build by @DragonWork
-   Minor fix in Docker image creation by @DragonWork
-   Add instructions to pull and use prebuilt Docker images by
    @DragonWork
-   Fix default port in docker run command in the instructions by
    @DragonWork
-   Add workflow to automate Docker image deployment by @DragonWork
-   Fix workflow context by @DragonWork
-   Resetting workflow by @DragonWork
-   Make workflow manually dispatchable by @DragonWork
-   Fix typo in workflow file by @DragonWork
-   Add missing checkout to workflow by @DragonWork
-   Pin workflow actions to harden security by @DragonWork
-   Update build-docker.yaml by @DragonWork
-   Support more architectures in multi-platform Docker image by
    @DragonWork
-   Enable workflow only for tagged releases by @DragonWork
-   Harden Docker container by running everything as non-root by
    @DragonWork
-   Make TLSRPT option changeable without disrupting cache by
    @DragonWork
-   Allow configuring Prefetch and TLSRPT option via environment
    variables (useful for Docker) by @DragonWork
-   Update dependencies (includes security fixes) by @DragonWork

------------------------------------------------------------------------

🐉 Proudly developed by Ömer Güven (aka DragonWork) for Zuplu and the
Open Source Community. ☕ Support my work: paypal.me/drgnwrk
