hMailServer 6.2.24

Signed 4 September 2026 6.2 series

This is not the current release. hMailServer 6.3.3 is the one to install unless you need this exact version.

Downloads for 6.2.24

Windows

Windows 10 (version 1607 or later) and Windows 11, or Windows Server 2016 and newer; 64-bit only. Run the installer as an administrator: it upgrades an installation older than this version in place, and it cannot go backwards — an older server refuses a database a newer one has upgraded, so back up the database and the data directory first. It is not Authenticode-signed, so Windows names an unknown publisher and SmartScreen warns before it will run it.

  • hMailServer-6.2.24-x64.exex64 · 73.5 MB
    Download
    SHA-256f1e0d0e5a756…0f92a947Signature: cosign bundle

What’s new in 6.2.24

The first stable release since 6.2.21. It is the code of 6.2.23 Alpha 2, cut the same day, plus NuGet lock files for the .NET tools and the CI changes that hold every restore to them. Nothing that ships changed between the two; the alpha's regression gate stands, and this release ran the full gate again on its own stamped binary. Schema 6025, unchanged since Alpha 1.

Full release notes for 6.2.24 8 sections

If you are on 6.2.21, everything the two pre-release lines introduced arrives at once. The section after next is written for you.

What is in it since 6.2.21

Two pre-release lines, 6.2.22 (pre1 to pre6) and 6.2.23 (Alpha 1 and 2), carried the work. Their notes are the detailed record - 6.2.22 pre-releases, Alpha 1, Alpha 2 - and this is the shape of it:

  • Mail that was silently lost is not any more. A delegated APPEND, COPY or MOVE filed bytes under the wrong account; a MOVE destroyed the only readable copy. Thunderbird's every Sent copy was refused once UTF8=ACCEPT was enabled (#53). A kept-open log was never flushed (#33). The ACME client had never worked against real Let's Encrypt (#34).
  • Anti-spam bypasses closed. A sender could steer a per-account spam override into un-marking their own mail by forging a header; a sender could choose which address the DNSBL, SPF and HELO tests ran against through the HELO literal in the Received header; RSET before EHLO or STARTTLS without a fresh EHLO opened a transaction with the HELO host empty, skipping the HELO-host test and the script events.
  • Features. Shared and delegated IMAP mailboxes, full-text search, RFC 3464 machine-readable bounces, BINARYMIME, per-account spam thresholds, a sender blacklist, domain-wide out-of-office, distribution-list moderation, Windows Event Log integration, OTLP metrics and logs, a reverse-proxy PROXY-protocol front for SMTP, an external HTTP filter hook, eleven IMAP extensions (APPENDLIMIT, LITERAL-, LIST-STATUS, UNAUTHENTICATE, QUOTA, PREVIEW, MULTIAPPEND, REPLACE, SAVEDATE, METADATA, BINARY), Microsoft 365 XOAUTH2 in both directions, app passwords, TOTP for the Control Panel, a quarantine, password history, message trace, per-domain outbound relay, a disk-space floor, and a substantial Control Panel overhaul.
  • Hardening. Control Flow Guard on the server; a reproducible build (two clean builds give the same bytes); signed release tags; SBOMs and Sigstore bundles on every release; a COM vtable layout repaired to be binary-compatible with 6.2.21; an unattended install that fails its database step now exits non-zero; an unattended upgrade can no longer hang on a password dialog.

Upgrading from 6.2.21

The database schema moves from 6011 to 6025 in fourteen steps, one way. DBUpdater runs them in order and resumes from wherever a partial upgrade stopped. There is no downgrade: an older server refuses a newer database rather than misreading it, so take a database backup and a data-directory backup before you install, with your backend's own tools. Rollback is only as good as that snapshot.

Two of the steps are worth planning for:

StepWhat it does
6024 → 6025Rewrites hm_messages.messageflags from tinyint to smallint on MS SQL, SQL Server Compact and MySQL/MariaDB - a table-rewriting operation on the largest table you have, holding locks for its duration. Size the maintenance window by your message count. PostgreSQL is unaffected (already smallint).
6022 → 6023Creates the full-text index tables. Empty and inert until you enable indexing; costs nothing on upgrade.

Behaviour that changes on upgrade, without a switch

  • A client that sends MAIL FROM or AUTH straight after the STARTTLS handshake, without saying EHLO again, now receives 503 Bad sequence of commands. RFC 3207 has required the second EHLO all along and every mainstream client sends it; a home-grown submission script that skips it will find out here.
  • For mail arriving through an incoming relay or fetched from an external account, the anti-spam tests run against the address the relay actually observed, not the first bracketed value in the Received header (which was the client's HELO literal). If you tuned scores around the old behaviour, expect verdicts to move.
  • Mail is refused with a temporary error when the data volume falls below 100 MB free (MinimumFreeDiskSpaceMB, Control Panel: Server settings). Set it to 0 to restore the old behaviour of writing until the disk is full.
  • Critical and high-severity errors also go to the Windows Event Log (source hMailServer, throttled). A service account that cannot create the event source logs a single line saying so and continues.
  • Existing per-account out-of-office replies now honour the RFC 3834 suppressions (no reply to bulk, list, auto-submitted or bounce mail) that previously applied only to the domain-wide one.
  • A bulk prune of old hm_imapexpunged rows runs once at first start (IMAPExpungeRetentionRecords, default 5000; set 0 to defer).
  • Early-bound COM clients compiled against a 6.2.22 pre-release interop assembly must be recompiled against this release's type library; the pre-release layout was the broken one. Late-bound scripts (VBScript, PowerShell, PHP) are unaffected, and so is anything compiled against 6.2.21.

Everything else keeps its previous default. The full list of the 23 new INI settings, all shipped off or inert, is in the Alpha 1 notes and in README.md.

What changed since Alpha 2

  • NuGet lock files beside all nine .NET tool projects, and every restore in CI held to them (--locked-mode, RestoreLockedMode), so a package bump without its lock-file update fails the build rather than building against a graph nobody reviewed. This was the last OpenSSF Scorecard finding that code could fix; the other four are dismissed on the security page with the reason on each, and eight required status checks were added to the master branch ruleset.
  • The version stamp. Nothing compiled into the server, the tools or the installer changed otherwise.

Known limitations

The Alpha 1 and Alpha 2 lists still apply. The three worth repeating for a stable release:

  • Statement timeouts were built for PostgreSQL and MySQL and have been exercised only against SQL Server Compact, the bench backend.
  • The weekly C++ CodeQL analysis is not running: it targets a self-hosted runner that is no longer registered. The C# analysis runs on every push and pull request.
  • SCRAM-SHA-1 is not offered (#49, with the reason); clients without SCRAM-SHA-256 use PLAIN or LOGIN over TLS.

Downloads and verification

AssetWhat it is
hMailServer-6.2.24-x64.exeThe installer (Inno Setup). Not Authenticode-signed.
*.spdx.json, *.cdx.jsonSBOMs, SPDX and CycloneDX, covering the .NET and native dependencies.
*.cosign.bundleA Sigstore bundle per asset, keyless, bound to this repository's workflow identity.

Verify the tag, from any clone

git -c gpg.ssh.allowedSignersFile=.github/allowed_signers verify-tag v6.2.24

Verify an asset with cosign

cosign verify-blob --bundle hMailServer-6.2.24-x64.exe.cosign.bundle \
--certificate-identity-regexp '^https://github\.com/Progressiverobot/hmailserver/' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
hMailServer-6.2.24-x64.exe

The server binary is reproducible: two clean Release builds of this tag produce a byte-identical hMailServer.exe, SHA-256 64406163b1a3a8a865e34d74883b5e2a05a5a1c476b500b26745cde67d8a989b, with the v145 toolset (MSVC 14.51), Windows SDK 10.0.26100 and the library layout in README.md. The regression suite on that binary: 1838/1838, nothing skipped, 31 minutes. Control Panel unit suite: 645/645.

Release facts

Version
6.2.24
Signed
4 September 2026Sigstore transparency log
Packages
1Windows, x86-64
Database schema
6025upgrades in place
Installer SHA-256
f1e0d0e5a756…0f92a947hMailServer-6.2.24-x64.exe

Every file in 6.2.24

Full SHA-256 of each file as recomputed on this server, with its Sigstore bundle beside it. The SBOM is not needed to install; it lists every component in the build.

FileWhat it isSizeSHA-256Signature
hMailServer-6.2.24-x64.exeWindows installer · x6473.5 MBf1e0d0e5a756bdff99de2059bbeacbcdd69979eae04312015536589a0f92a947Signature: cosign bundle
hmailserver.spdx.jsonSBOM (SPDX)Every component in the build, in SPDX JSON.243 KBe290e76da3a076045eddfd09b01bbb9391940081ccc4fb4128b2f5065d985b15Signature: cosign bundle
hmailserver.cyclonedx.jsonSBOM (CycloneDX)The same inventory in CycloneDX JSON.149 KBbee99ced55c6194b81b46079a407b9ba4800302b249f39f621fc375c59dd520eSignature: cosign bundle
Progressiverobot-hmailserver-attestation-45322913.sigstore.jsonBuild attestationGitHub artifact attestation for the release, as a Sigstore bundle.4 KB6e9ddae83461fb6cb055d2a6844b3d6cb877c165405232a862677eb9c724d2cb