Download
One signed package per release. The installer fetches it for you; the files are here for anyone who wants to verify them first.
Current release
| Version | 0.25.41 |
| Published | 2026-10-20 |
| Package | mailtronx-0.25.41-linux-amd64.tar.gz (119.6 MB, Linux amd64: both binaries, schema updates, runtime scripts, VERSION, source commit) |
| SHA-256 | a70c560a0e66e975b2bbc88a661960cc9f72a39b279303ddea023f8bde3e09a7 |
| Manifest | feed.json · signature feed.json.sig (ed25519 over the exact manifest bytes) |
| Release key | mailtronx-release-key.pem · ed25519 public key EuviQN5Ku55X+N4WZMEDdxRU8WkcxKMrXrUHtjDtUbY= · SHA-256 of the DER form dc0bc32b299cff197086b179edb78224b1fe39b1bef0b4830c7cb323ed6e71bd |
| Notes | Support MariaDB-only appliances in authoritative role checks |
Only the current release is downloadable here. An appliance keeps every release it has installed and can roll back to any of them from Configure Server → Patches.
Install
On a fresh Debian 13 server, as root:
curl -fsSL https://mailtronx.com/install.sh | sudo bash The bootstrap downloads the manifest and its signature, verifies the signature against the release key built into it, downloads the package, checks its SHA-256, unpacks it under /root/mailtronx-install/<version>/ and runs the installer. The installer installs the mail stack from Debian's own packages, configures everything, obtains the certificate and prints the console address with a one-time administrator password. Re-running the installer is safe: it upgrades the software and never overwrites what you configured.
Requirements
- A fresh Debian 13 server, 64-bit, root access. The bootstrap stops on any other system.
- 2 GB RAM minimum. When the system has no swap the installer creates a swapfile (the size of the memory, at least 2 GB, at most 4 GB).
- A public DNS name for the appliance that resolves to it, so Let's Encrypt can issue the first certificate over HTTP-01; or your own certificate and key handed to the installer. No self-signed certificate is installed.
- Reachable ports: 25 (SMTP), 80 (certificate issuance and renewal), 443 (console); 587 and 465 once Submission is enabled. Outbound TCP 25 for the sender-domain mail-server check.
- Optional: a separate disk for the mail store (
MTX_MAIL_DISK).
Installer variables
Set in the environment to skip the prompts: MTX_HOSTNAME (the appliance's fully qualified name), MTX_DOMAIN (the first mail domain), MTX_ADMIN_PASSWORD, MTX_TIMEZONE (default America/Los_Angeles), MTX_ACME_EMAIL, MTX_ACME_ACCOUNT_KEY and MTX_ACME_ACCOUNT_URL (issue the first certificate under an existing Let's Encrypt account), MTX_TLS_CERT and MTX_TLS_KEY (your own certificate instead of Let's Encrypt), MTX_DNS, MTX_MAIL_DISK, MTX_SSH_PORT.
Verify a release yourself
The installer does this on every run. To check by hand on any Linux machine with curl and OpenSSL:
curl -fsSLO https://mailtronx.com/releases/feed.json
curl -fsSLO https://mailtronx.com/releases/feed.json.sig
curl -fsSLO https://mailtronx.com/mailtronx-release-key.pem
base64 -d feed.json.sig > feed.sig
openssl pkeyutl -verify -pubin -inkey mailtronx-release-key.pem -rawin -in feed.json -sigfile feed.sig
# prints "Signature Verified Successfully"
curl -fsSLO https://mailtronx.com/releases/mailtronx-0.25.41-linux-amd64.tar.gz
grep -o '"sha256":"[0-9a-f]*"' feed.json
sha256sum mailtronx-0.25.41-linux-amd64.tar.gz
# the two values must match Release history
One line per release since the first published package. The manifest always points at the newest.
| Version | Date | Change |
|---|---|---|
| 0.25.41 | 2026-10-20 | Support MariaDB-only appliances in authoritative role checks |
| 0.25.40 | 2026-10-20 | Preserve legacy RBL and populated destination baselines |
| 0.25.39 | 2026-10-20 | Read legacy empty backup destinations without rewriting configuration |
| 0.25.38 | 2026-10-20 | Initialize native agent for configuration administration |
| 0.25.34 | 2026-10-20 | Preserve deployed mail-flow navigation in synchronization candidate (0.25.34) |
| 0.25.32 | 2026-10-20 | Restore page descriptions above mail-flow details (0.25.32) |
| 0.25.31 | 2026-10-20 | Group mail controls by processing stage and explain native owners |
| 0.25.29 | 2026-10-19 | Share cluster rejection history with durable collection and replay-safe synchronization |
| 0.25.28 | 2026-10-19 | Remove unrelated relay exemption section from Greylisting page |
| 0.25.27 | 2026-10-19 | Remove remaining redundant greylisting policy sentence |
| 0.25.26 | 2026-10-19 | Remove redundant mandatory greylisting UI notices |
| 0.25.25 | 2026-10-19 | Manage greylisting with fixed MailtronX defaults |
| 0.25.24 | 2026-10-19 | Clarify default country greylisting on GeoIP scoring page |
| 0.25.23 | 2026-10-19 | Require greylisting and reject application disable requests |
| 0.25.22 | 2026-10-19 | Remove advanced sender grouping fields from Greylisting controls |
| 0.25.21 | 2026-10-19 | Show country greylisting defaults and selected country coverage |
| 0.25.20 | 2026-10-19 | Add default country-based greylisting with native retry handling |
| 0.25.19 | 2026-10-19 | Preserve implicit greylisting defaults on unchanged Apply |
| 0.25.18 | 2026-10-19 | Build operational greylisting policy controls and truthful rejection history |
| 0.25.17 | 2026-10-19 | Support native MariaDB dump command for protected policy backups |
| 0.25.16 | 2026-10-19 | Provide private cleanup service in SMTP handoff regression fixture |
| 0.25.15 | 2026-10-19 | Avoid repeated SMTP reconnect and trusted-relay greylisting deferrals |
| 0.25.13 | 2026-10-15 | Add cluster topology map with scoped health and verified flow evidence |
| 0.25.12 | 2026-10-15 | Separate security event logging from policy and show native penalty progression |
| 0.25.11 | 2026-10-15 | Keep client log identifiers on one line and expose security block timelines |
| 0.25.10 | 2026-10-15 | Fix persistent abuse native schema test comment parsing |
| 0.25.9 | 2026-10-15 | Add persistent client abuse history and seven/thirty-day firewall escalation |
| 0.25.8 | 2026-10-15 | Protect mail clients from repeated protocol probes and failed chat logins |
| 0.25.7 | 2026-10-15 | Preserve Full Mail upgrades and support imported certificate updates |
| 0.25.6 | 2026-10-15 | Accept full mailbox addresses during cold DAV authentication |
| 0.25.5 | 2026-10-15 | Match SOGo native MySQL session schema without an oversized index |
| 0.25.4 | 2026-10-15 | Handle unused packaged chat host during native certificate validation |
| 0.25.3 | 2026-10-15 | Preserve native firewall state when enabling groupware client ports |
| 0.25.2 | 2026-10-15 | Migrate existing Full Mail DAV routing and domain authentication safely |
| 0.25.1 | 2026-10-15 | Normalize vendored groupware schema formatting |
| 0.25.0 | 2026-10-15 | Add Full Mail groupware provider configuration and administration |
| 0.24.50 | 2026-10-14 | Add MX management authority and scoped external recipient feeds |
| 0.24.49 | 2026-10-12 | Size Rspamd analysis from its content and keep each label on one line |
| 0.24.48 | 2026-10-12 | Separate the Rspamd support text from complete lower cell borders |
| 0.24.47 | 2026-10-12 | Align Rspamd groups in a centered table and open the incoming connector gap |
| 0.24.46 | 2026-10-12 | Add vertical spacing to the mail flow stages and analysis text |
| 0.24.45 | 2026-10-12 | Fit the outer Rspamd analysis box around its compact groups |
| 0.24.44 | 2026-10-12 | Size the four Rspamd analysis boxes to their content without stretching |
| 0.24.43 | 2026-10-12 | Remove the obsolete clickable-stage hint from the mail flow page |
| 0.24.42 | 2026-10-12 | Remove navigation from all mail flow diagram stages |
| 0.24.41 | 2026-10-12 | Remove the documentation shortcut from the mail flow footer |
| 0.24.40 | 2026-10-12 | Let Rspamd analysis groups wrap in a flexible two-column layout |
| 0.24.39 | 2026-10-12 | Center the compact mail flow panel and diagram within the application |
| 0.24.38 | 2026-10-12 | Fit the mail processing diagram to the normal application page scale |
| 0.24.37 | 2026-10-12 | Override the global mouse focus frame within the mail flow diagram |
| 0.24.36 | 2026-10-12 | Place release-stage lifecycle documentation under application updates |
| 0.24.35 | 2026-10-12 | Retire duplicate release stages after signed package recovery verification |
| 0.24.34 | 2026-10-12 | Compact the mail processing diagram and remove server-role branches |
| 0.24.33 | 2026-10-12 | Give the mail flow navigation item its required icon |
| 0.24.32 | 2026-10-12 | Add mail security flow diagram first under Anti-Spam |
| 0.24.31 | 2026-10-11 | Make validation fixtures track current pages and use portable scratch directories |
| 0.24.30 | 2026-10-11 | Keep developer tests separate from Olefy-enabled production releases |
| 0.24.29 | 2026-10-11 | Manage Olefy security runtime in signed appliance releases and upgrades |
| 0.24.28 | 2026-10-11 | Keep scoped MX security rollout in the existing Ansible workflow |
| 0.24.27 | 2026-10-11 | Correct Fail2ban journal time and MX submission settings; disable SSH compression |
| 0.24.26 | 2026-10-11 | Supply appliance-local nameserver glue through generic DNS metadata |
| 0.24.25 | 2026-10-11 | Prepare writable rbldnsd query log while preserving systemd state ownership |
| 0.24.24 | 2026-10-11 | Protect Rspamd controller with appliance authentication and roles; support patched ClamAV rollout |
| 0.24.23 | 2026-10-11 | Move Rspamd Console navigation into Anti-Spam |
| 0.24.22 | 2026-10-11 | Move misplaced Mail Server and Anti-Spam navigation items |
| 0.24.21 | 2026-10-06 | Treat local RBL positive DNS answers as hits |
| 0.24.20 | 2026-10-06 | Keep local RBL rules available without remote monitoring |
| 0.24.19 | 2026-10-06 | Match local RBL positive DNS response explicitly |
| 0.24.18 | 2026-10-06 | Mark local RBL namespace insecure in Unbound |
| 0.24.17 | 2026-10-06 | Allow loopback queries for local RBL resolver |
| 0.24.16 | 2026-10-06 | Route local RBL lookups through rbldnsd |
| 0.24.15 | 2026-10-06 | Explain RBL scoring and greylist retries |
| 0.24.14 | 2026-10-06 | Score listed RBL senders at greylist threshold |
| 0.24.13 | 2026-10-06 | Preserve saved configuration across application patches |
| 0.24.12 | 2026-10-06 | Enable AbuseIPDB RBL by default |
| 0.24.11 | 2026-10-06 | Add AbuseIPDB-only RBL sync action |
| 0.24.10 | 2026-10-06 | Add AbuseIPDB as a local weighted RBL |
| 0.24.9 | 2026-10-06 | RBL page: center public zone entry fields |
| 0.24.8 | 2026-10-06 | RBL page: refine save and public zone layout |
| 0.24.7 | 2026-10-06 | RBL page: save zone settings together |
| 0.24.6 | 2026-10-05 | Protect ManageSieve alongside IMAP and submission from login abuse |
| 0.24.5 | 2026-10-05 | Enforce SMTP framing safeguards across trusted and submission paths |
| 0.24.4 | 2026-10-05 | Preserve diagnostic search links and distinguish message totals |
| 0.24.3 | 2026-10-05 | Show SMTPS client connections and missing map warnings |
| 0.24.2 | 2026-10-05 | Expose mail client activity with account and connection details |
| 0.24.1 | 2026-10-05 | Show real messages with correlated fields and searchable log colors |
| 0.24.0 | 2026-10-05 | Add MAILLOG2 mail and spam event viewer with keyword highlighting |
| 0.23.15 | 2026-10-05 | Match Dovecot 2.4 authentication worker failures without duplicate bans |
| 0.23.14 | 2026-10-05 | Add native Dovecot abuse protection with expiring mail-client bans |
| 0.23.13 | 2026-10-05 | Route complete socketmap recipient addresses directly to backend |
| 0.23.12 | 2026-10-05 | Show deployment mode in System Information and simplify Home description |
| 0.23.11 | 2026-10-05 | Serialize installer and automatic configuration rendering |
| 0.23.10 | 2026-10-05 | Preserve valid existing certificates during installer reruns |
| 0.23.9 | 2026-10-05 | Add durable recipient directory and fresh MX gateway deployment |
| 0.23.8 | 2026-10-05 | Display initial administrator credentials at successful interactive installation |
| 0.23.7 | 2026-10-05 | Store the first certificate before configuring fresh appliance TLS |
| 0.23.6 | 2026-10-05 | Keep installer credentials on private input streams and retain release staging |
| 0.23.5 | 2026-10-05 | Show node mode only in the banner and retire its console page |
| 0.23.4 | 2026-10-05 | Fix deployment types and show node mode in the console banner |
| 0.23.3 | 2026-10-05 | Preserve concurrent v0.21.60 certificate and recovery changes in node roles |
| 0.23.2 | 2026-10-05 | Prepare MX service isolation and guard privileged submission enable |
| 0.23.1 | 2026-10-05 | Merge committed appliance policy transaction foundation into node roles |
| 0.23.0 | 2026-10-05 | Add read-only appliance inventory for node-role migration planning |
| 0.22.0 | 2026-10-05 | Add node-role policies and safe deployment previews |
| 0.21.60 | 2026-10-05 | Align network save spacing and use provider-neutral certificate description |
| 0.21.59 | 2026-10-05 | Apply matching appliance certificates automatically with verified recovery |
| 0.21.58 | 2026-10-05 | Simplify certificate filters and center search |
| 0.21.57 | 2026-10-05 | Move Quota Groups navigation to Mail Server |
| 0.21.56 | 2026-10-05 | Add administrator policy validation and safe transaction foundation |
| 0.21.55 | 2026-10-04 | Align proportional login logo and balance OS patch panels |
| 0.21.54 | 2026-10-04 | Shorten matching NTP panels with compact server input |
| 0.21.53 | 2026-10-04 | Use black background behind login header logo |
| 0.21.52 | 2026-10-04 | Compact OS patch status and scheduler into adjacent panels |
| 0.21.51 | 2026-10-03 | Align shared blue page descriptions with each content layout |
| 0.21.50 | 2026-10-03 | Center dashboard introduction inside a blue bordered panel |
| 0.21.49 | 2026-10-03 | Remove duplicate operating system metric panel from dashboard |
| 0.21.48 | 2026-10-03 | Restore live operating system metric tiles in shared banner |
| 0.21.47 | 2026-10-03 | Move RBL Management to its descriptive page route |
| 0.21.46 | 2026-10-03 | Rename Manage Users route and retire DNS Configuration page |
| 0.21.45 | 2026-10-03 | Replace legacy network navigation with Network Settings |
| 0.21.44 | 2026-10-03 | Frame DNS routing description in an aligned blue panel |
| 0.21.43 | 2026-10-03 | Show acknowledged RBL hub submission statistics |
| 0.21.42 | 2026-10-03 | Support shared domain DKIM keys and validate effective signing configuration |
| 0.21.41 | 2026-10-03 | fix: load shared network validation before page scripts |
| 0.21.40 | 2026-10-03 | fix: validate network fields and support internal-only DNS |
| 0.21.39 | 2026-10-03 | Use active release helper for root scheduling |
| 0.21.38 | 2026-10-03 | Move MailtronX schedules to root cron and expose network recovery progress |
| 0.21.37 | 2026-10-03 | Hide container networks and clarify DNS routing |
| 0.21.36 | 2026-10-03 | Blend disabled Gateway background with appliance fields |
| 0.21.35 | 2026-10-03 | Darken disabled Gateway fields |
| 0.21.34 | 2026-10-03 | Show disabled gateways clearly on secondary interfaces |
| 0.21.33 | 2026-10-03 | Preserve dnsmasq resolver comments without false DNS drift |
| 0.21.32 | 2026-10-02 | Protect resolver files on new appliance deployments |
| 0.21.31 | 2026-10-02 | Retain MailtronX ownership header in resolver configuration |
| 0.21.30 | 2026-10-02 | Document DNS routing blocks and preserve section spacing |
| 0.21.29 | 2026-10-02 | Set default network confirmation timeout to30seconds |
| 0.21.27 | 2026-10-02 | Remove resolver configuration path from network DNS field help |
| 0.21.26 | 2026-10-02 | Show managed internal DNS upstreams instead of the public loopback resolver |
| 0.21.25 | 2026-10-02 | Guard main gateway recovery and initialize appliance backup encryption |
| 0.21.24 | 2026-10-02 | Keep network interface fields compact and give Node more room |
| 0.21.23 | 2026-10-02 | Explain missing backup encryption prerequisite when saving DNS |
| 0.21.22 | 2026-10-02 | Label internal DNS servers clearly and widen network label column |
| 0.21.21 | 2026-10-02 | Preserve dotted subnet mask notation when loading network addresses |
| 0.21.20 | 2026-10-02 | Inherit parent link MTU for configured interface aliases |
| 0.21.19 | 2026-10-02 | Accept configured interface aliases in network validation |
| 0.21.18 | 2026-10-02 | Accept dotted network hostnames and clarify FQDN guidance |
| 0.21.17 | 2026-10-02 | Structure all network section headers with left center right div areas |
| 0.21.16 | 2026-10-02 | Make DNS provider encryption explicit in selector labels |
| 0.21.15 | 2026-10-02 | Remove Custom from public DNS provider selector |
| 0.21.14 | 2026-10-02 | Explain use of internal resolvers when public TLS is not configured |
| 0.21.13 | 2026-10-02 | Clarify internal search domains in network settings hint |
| 0.21.12 | 2026-10-02 | Clarify configurable and live network interface section headers |
| 0.21.11 | 2026-10-02 | Explain recommended TLS use in public DNS selector hint |
| 0.21.10 | 2026-10-02 | Align public DNS badge with TLS configuration state |
| 0.21.9 | 2026-10-02 | Explain split DNS and show verified public TLS status in network header |
| 0.21.8 | 2026-10-02 | Widen new network settings label column by 25 percent |
| 0.21.7 | 2026-10-02 | Normalize saved provider settings for network form dirty tracking |
| 0.21.6 | 2026-10-02 | Copy original network page with only public DNS TLS selector added |
| 0.21.5 | 2026-10-02 | Keep DNS comments column at original network form width |
| 0.21.4 | 2026-10-02 | Use one public DNS provider selector without add or remove controls |
| 0.21.3 | 2026-10-02 | Match network DNS form spacing and compact provider controls |
| 0.21.2 | 2026-10-02 | Simplify network DNS form and align public TLS provider row |
| 0.21.1 | 2026-10-02 | fix: allow DNS TLS validation and recovery time before activation |
| 0.21.0 | 2026-10-02 | feat: add isolated network DNS page with private routing and verified TLS providers |
| 0.20.97 | 2026-10-02 | ui: theme Rspamd page selectors |
| 0.20.96 | 2026-10-02 | ui: darken Rspamd form fields and clarify tabs |
| 0.20.95 | 2026-10-02 | ui: version embedded Rspamd theme assets |
| 0.20.94 | 2026-10-02 | ui: preserve Rspamd directory requests and navy palette |
| 0.20.93 | 2026-10-02 | ui: embed and theme Rspamd console |
| 0.20.92 | 2026-10-02 | ui: move Manage Users into Configure Server |
| 0.20.91 | 2026-10-02 | ui: restore usable user hover menu and reorder navigation |
| 0.20.90 | 2026-10-02 | ui: show plain username in shared banner |
| 0.20.89 | 2026-10-02 | ui: unify Cancel styling and simplify GeoIP footer |
| 0.20.88 | 2026-10-02 | ui(geo): add shared gray Cancel button style |
| 0.20.87 | 2026-10-02 | ui: standardize blue and red action buttons on ADC styles |
| 0.20.86 | 2026-10-02 | ui(geo): remove duplicate count and share green primary style |
| 0.20.85 | 2026-10-02 | ui(geo): arrange country header and add button hover glows |
| 0.20.84 | 2026-10-02 | ui(geo): clarify Democratic Republic of the Congo label |
| 0.20.83 | 2026-10-02 | ui(geo): add blue control bars and open five-column layout |
| 0.20.82 | 2026-10-02 | ui(geo): add flags and one persistent country scoring form |
| 0.20.81 | 2026-10-02 | ui(geo): consolidate country restrictions into searchable grid |
| 0.20.80 | 2026-10-02 | ui(nav): use colored emoji for submenu icons |
| 0.20.79 | 2026-10-01 | ui(nav): tighten hover glow and brighten edge |
| 0.20.78 | 2026-10-01 | Make submenu icons and navigation backgrounds consistent |
| 0.20.77 | 2026-10-01 | DNS-01 panel: the RFC 2136 form is shown when the page opens again (the blank first entry and hidden fields are reverted); the DNS provider list is as in 0.20.74 |
| 0.20.76 | 2026-10-01 | DNS provider list: first entry blank |
| 0.20.75 | 2026-10-01 | DNS provider list: RFC 2136 entry renamed "RFC 2136 (your own name server)" and moved to the end; the list opens on a choose-the-provider placeholder; a save without a provider is refused |
| 0.20.74 | 2026-10-01 | Agent socket: acme-issue, acme-dns01-test and acme-renew-now get the 10-minute connection deadline (the 30 s default closed the socket before a DNS provider test could answer) |
| 0.20.73 | 2026-10-01 | Long agent calls (DNS-01 test, issue, run-now): the handler extends its own response write deadline; the server-wide 30 s WriteTimeout dropped the response after a ClouDNS propagation wait (nginx 502) |
| 0.20.72 | 2026-10-01 | DNS-01 via providers: web waits up to 5-6 min on the agent for DNS-01 test, issue and run-now (provider propagation waits run for minutes); nginx console location proxy_read_timeout 600s in the installer template; agent logs DNS-01 test results; page texts say DNS-01 can take minutes |
| 0.20.71 | 2026-10-01 | DNS-01 through a DNS provider API: lego's provider catalog (221 providers, generated by scripts/gen-dnsproviders.py) with per-provider credential fields on the Certificates page; Other: RFC 2136 kept with its existing fields; existing dns01.json files migrate as rfc2136; HTTP-01 untouched. Test connection takes a domain for API providers. Last scan shown in the browser's local time. |
| 0.20.70 | 2026-10-01 | Renew after: input validation, digits only and a whole number from 7 to 60, enforced in the field (digit filter, maxlength 2), on submit, and in the web handler (400); the agent keeps its own range check |
| 0.20.69 | 2026-10-01 | Certificates page: Renew after field 4 characters wide and centred, hint reworded (Renew after this many days. Range: (7 to 60)); Registered at shown in the browser's local time; Contact email centred |
| 0.20.68 | 2026-10-01 | Auto-Renewal panel: status display restored (status tag, Run Renewal Now, Running, Scan interval, Last scan, Due now, Renewed / failed); it had been removed without being asked in 0.20.67. The single Renew after N days control stays. |
| 0.20.66 | 2026-10-01 | Certificates page: schedule table helpers scoped to the Let's Encrypt script block (rows were not rendered) |
| 0.20.65 | 2026-10-01 | ACME auto-renewal made configurable: on/off, mode (within window | every N days), cadence days, window days, scan interval, per-certificate override (inherit/window/cadence/never), once-a-day retry after a failure, schedule table on the Certificates page; settings in /etc/ssl/mailtronx/acme/renewal.json |
| 0.20.64 | 2026-10-01 | ACME: Let's Encrypt production is the default directory everywhere (register form, agent default); staging is never offered. Docs: default wording, the import/forget paragraph separated from the Issue sentence, account API list updated (import/forget) |
| 0.20.63 | 2026-10-01 | ACME: Test directory button and its command removed (not required for anything; registration and issuance fetch the directory themselves) |
| 0.20.62 | 2026-10-01 | ACME: account deactivation at the CA removed from the product; Forget account removes the account from this appliance only (key and record kept as .bak, nothing sent to the CA) |
| 0.20.61 | 2026-10-01 | Certificates page: an Import account button opens the import section, which states whether an account was already imported (date and URL) or which account the appliance made itself |
| 0.20.60 | 2026-10-01 | ACME: the account record carries its origin (installer, page, imported); the Certificates page tag reads IMPORTED ACCOUNT or APPLIANCE-CREATED with an Origin row; the import form is a visible block instead of a collapsed line |
| 0.20.58 | 2026-10-01 | Domain SMTP Validation: a list answer counts as a listing only when it means blocked (Hostkarma codes from its wiki: only 127.0.0.2; white, yellow and NOBL answers and texts saying white listed or not listed are not listings) |
| 0.20.57 | 2026-10-01 | Domain SMTP Validation: not listed is PASS even when a list did not answer; Blocklists header reads Checking N lists, listed on (L of N); no counts for a stored result without per-list data |
| 0.20.56 | 2026-10-01 | Domain SMTP Validation: Blocklists panel shows totals in its header, the listings in full with Delist, and the clean lists folded into one collapsed row per address |
| 0.20.54 | 2026-10-01 | Left menu: a group header opens and closes its group in place instead of jumping to its first page (clicking DIAGNOSTICS landed on Mail Log, which is filed under MAIL SERVER, so the group never opened); the duplicate Live Mail Log entry leaves Diagnostics (Mail Log stays under Mail Server) |
| 0.20.53 | 2026-10-01 | Mail Tests: a tag fragment left at a section boundary is not shown as a detail line |
| 0.20.52 | 2026-10-01 | Mail Tests: build fix (no firstNonEmpty in the web package); 0.20.50 and 0.20.51 did not compile and were never released |
| 0.20.51 | 2026-10-01 | Domain SMTP Validation: the last domain and its finished result are kept per user (mt_domainsmtp_results) and shown again on the next visit until Validate is clicked; the Domains validate link runs at once (run=1); line break before the filtering-service clause of the SPF MX text |
| 0.20.50 | 2026-10-01 | Mail Tests (Diagnostics): send a DKIM-signed test message from the appliance to mail-tester.com (fresh one-time address, result page read every 10 s, score and every section with removal links) or to any address; sender = a mailbox on the appliance (convention outbound-smtp-test@<domain>); history in mt_mailtests |
| 0.20.49 | 2026-09-30 | Domain SMTP Validation: line break after the forward-confirmed reverse DNS sentence (a newline in a result text renders as a line break) |
| 0.20.48 | 2026-09-30 | Domain SMTP Validation: no TLS session, no connection: and no route to host in red |
| 0.20.47 | 2026-09-30 | Domain SMTP Validation: wording, This MX host is not listed |
| 0.20.46 | 2026-09-30 | Domain SMTP Validation: its mail goes out unsigned in red; red result text bold |
| 0.20.45 | 2026-09-30 | Domain SMTP Validation: sub-rows inherit their record's status and level and show a badge only where they deviate |
| 0.20.44 | 2026-09-30 | Domain SMTP Validation: derived SPF and DMARC checks shown as indented sub-rows under their record; the record's Propagation cell spans the group |
| 0.20.43 | 2026-09-30 | Domain SMTP Validation: the phrases zone not signed, not published and no signing key shown in red |
| 0.20.42 | 2026-09-30 | Domain SMTP Validation: no fact rows in the tables (DNS source and the appliance role become notes under the panel titles; DMARC report addresses folded into the DMARC reports line; DKIM one REQUIRED line per case incl. domains not hosted here; SPF receive-only MX is a PASS; unchecked blocklists folded into the summary line); Propagation column only in the DNS panel |
| 0.20.41 | 2026-09-30 | Domain SMTP Validation: Propagation reads N/A on lines that are not DNS records |
| 0.20.40 | 2026-09-30 | Domain SMTP Validation: IPv6 matcher covers :: compression as one address |
| 0.20.39 | 2026-09-30 | Domain SMTP Validation: IPv4 and IPv6 addresses shown in cyan on every line |
| 0.20.38 | 2026-09-30 | Domain SMTP Validation: fact lines (status INFO) show a dash in the Level column instead of a second INFO |
| 0.20.37 | 2026-09-30 | scripts/mailtester: every result section expanded and recorded (title, badge, details); --result <url> re-reads an existing result page without sending |
| 0.20.36 | 2026-09-30 | scripts/mailtester: the send step can run through an external command (MTX_MT_SEND_CMD), so the message leaves from the appliance itself |
| 0.20.35 | 2026-09-30 | Domain SMTP Validation: every MX address tested at the same time (a domain with seven MX addresses outlasted the web proxy when tested one after another); scripts/mailtester: deliverability test against mail-tester.com (Playwright driver, template message with List-Unsubscribe, sent through the appliance) |
| 0.20.34 | 2026-09-30 | Domain SMTP Validation: the propagation step accepts the underscore labels of service records (_dmarc, _mta-sts, _smtp._tls, _25._tcp); the agent refused them on 0.20.33 |
| 0.20.33 | 2026-09-30 | Domain SMTP Validation: the four check groups run at the same time and each panel fills as its answer arrives; propagation is a second step (part prop, questions kept server-side under a token) so the record lines appear first with Working... in the Propagation column; blocklist lookups concurrent; RECOMMENDED badge yellow when NOT SET; blocklist counts as (n of m) |
| 0.20.32 | 2026-09-30 | Domain SMTP Validation: Level badge neutral unless a REQUIRED line fails or warns, NOT SET as a yellow badge, Propagation column reduced to Yes / Partial / No (resolvers without an answer left out) |
| 0.20.30 | 2026-09-30 | Domain SMTP Validation: progress text of the page script repaired (an apostrophe ended the string; the checks never started on 0.20.28 and 0.20.29) |
| 0.20.29 | 2026-09-30 | Domain SMTP Validation: the MTA-STS policy host is resolved at the authoritative name servers like every other in-zone name and pinned for the fetch, never through the appliance's own resolver |
| 0.20.28 | 2026-09-30 | Domain SMTP Validation: in-zone records read from the domain's authoritative name servers (no resolver cache: what is published now); public resolvers only for reverse DNS, other zones and DNSSEC validation; the panel names the servers asked |
| 0.20.27 | 2026-09-30 | Domain SMTP Validation: reverse DNS judged as forward-confirmed (MX name required only for this appliance), SPF authorisation of the MX informational unless the MX is this appliance, a front-end filtering MX reported as such |
| 0.20.26 | 2026-09-30 | Domain SMTP Validation: DMARC report addresses listed once |
| 0.20.25 | 2026-09-30 | Domain SMTP Validation (Domains): one per-domain view of the public e-mail presence — MX hosts, reverse DNS, port 25 + STARTTLS certificates, blocklists, SPF, DKIM (own selector verified against the local key), DMARC, MTA-STS, TLS-RPT, DANE, DNSSEC, appliance-side checks; replaces MX Record Validation and Domain Diagnostics (redirected); public resolvers only, failed lookups never count as listings |
| 0.20.24 | 2026-09-30 | Certificate assignment mirrored into the database (cfg_cert_assignment): recorded on every assignment, seeded from the store, re-applied by renderAll |
| 0.20.23 | 2026-09-30 | Settings in the database: thresholds, greylisting, message size, logging, time, LDAP, patch/update/backup settings recorded on every change (cfg_*), seeded once from the live state, re-applied by renderAll |
| 0.20.22 | 2026-09-30 | Schema: seed the postscreen zones the installer template configures, so the database holds the installed defaults and regeneration reproduces them |
| 0.20.21 | 2026-09-30 | Regeneration from the database: renderAll at console start, as the installer last step (mailtronx-web render-all) and on POST /api/system/render |
| 0.20.20 | 2026-09-30 | canary: the quota policy row carries the mail group name |
| 0.20.19 | 2026-09-30 | canary: banned-phrases check matches the rendered regex |
| 0.20.18 | 2026-09-30 | canary: quota group tied to the canary mail group; the mail group gets a member so the Postfix map answers |
| 0.20.17 | 2026-09-30 | Configuration canary (deploy/canary.py): seed one test item per page, snapshot every configured value, verify after a patch or installer run |
| 0.20.16 | 2026-09-30 | Certificates: the assignment record always names every service (filled from the live configuration) |
| 0.20.15 | 2026-09-30 | Installer: swap block rewritten (was mangled at write time); Postfix started before Dovecot so the spool sockets exist |
| 0.20.14 | 2026-09-30 | Installer: create /etc/aliases when the image has none (newaliases failed on a fresh DigitalOcean image) |
| 0.20.13 | 2026-09-30 | Installer: wait for the agent socket after the restart; keep distro-started Dovecot/Postfix/nginx down until configured |
| 0.20.12 | 2026-09-30 | Certificates: drop the last import left by the removed self-signed generator |
| 0.20.11 | 2026-09-30 | Certificates: a real certificate at install (Let's Encrypt HTTP-01, or MTX_TLS_CERT/MTX_TLS_KEY), installer stops when neither is possible; the self-signed generator is removed from installer, console and agent |
| 0.20.10 | 2026-09-30 | Installer: swapfile on every appliance without swap (RAM size, 2-4 GB) — golden standard |
| 0.20.8 | 2026-09-30 | Certificates: record the live assignment at agent start and before the installer rewrites service files, so pre-existing assignments survive the first upgrade |
| 0.20.7 | 2026-09-30 | Certificates: persist the service assignment and restore it after installer runs (cert-reapply); the installer no longer forces the appliance certificate |
| 0.20.6 | 2026-09-30 | Installer: America/Los_Angeles default zone (MTX_TIMEZONE) and five NTS time sources on every appliance; schema re-run no longer collides on quota-group Default rows |
| 0.20.5 | 2026-09-30 | Replay: re-render the settings rules when the set is outdated; /replay?run=<id> opens a report |
| 0.20.4 | 2026-09-30 | Replay: placeholder source address for messages without one, host rules off for them; one settings rule per header combination; rules rendered at run start when missing |
| 0.20.3 | 2026-09-30 | Replay: XCLIENT with an unavailable address for messages without Received headers; DATE_IN_PAST off for replays |
| 0.20.2 | 2026-09-30 | Replay: detect the listener from the master.cf service list, not from a postconf warning |
| 0.20.1 | 2026-09-30 | Replay: setup renders the rspamd settings rules and reloads rspamd (upgraded appliances) |
| 0.20.0 | 2026-09-30 | Replay Corpus (Diagnostics): replay real spam archives locally with original client identity |
| 0.19.2 | 2026-09-30 | Installer: handle systemd-resolved on cloud images (DigitalOcean) |
| 0.19.1 | 2026-09-29 | Routing: error: and discard: text may contain spaces |
| 0.19.0 | 2026-09-29 | Sender Relay, per-recipient routes and relay credentials |
| 0.18.0 | 2026-09-29 | BCC by Sender, BCC by Recipient and the archive address |
| 0.17.1 | 2026-09-29 | Domain alias map: match the @domain key as a whole |
| 0.17.0 | 2026-09-29 | Catch-all and alias domains on the Domains page |
| 0.16.1 | 2026-09-29 | Template test: the Users page replaces Admin Accounts |
| 0.16.0 | 2026-09-29 | Users page: accounts, LDAP / Active Directory sign-in, group-to-role mappings and API tokens on one page |
| 0.15.1 | 2026-09-29 | Routing page: the entry example uses the arrow form the page documents |
| 0.15.0 | 2026-09-29 | Mail Routing, default relay host and Allow Relaying enforced in Postfix |
| 0.14.3 | 2026-09-29 | Lists: whitelisted senders and addresses are exempt from the banned lists |
| 0.14.2 | 2026-09-29 | Lists: the From-header rules read their own copies of the banned maps |
| 0.14.1 | 2026-09-29 | Lists: envelope-sender rules use the default extraction; the From-header twins read their own map copies |
| 0.14.0 | 2026-09-29 | Anti-Spam lists enforced by the scanner: banned domains, addresses, words, phrases, character sets, whitelist |
| 0.13.1 | 2026-09-29 | API tokens: expiry stored and compared on the database clock |
| 0.13.0 | 2026-09-29 | API tokens: bearer authentication for scripts and other systems |
| 0.12.8 | 2026-09-29 | Installer: update feed on mailtronx.com by default; README: Get started with the one-line install |
| 0.12.7 | 2026-09-29 | Installer: create the database users before loading the schema |