From f27b7aff694bf97d624e8bf6845e9c14965a77d9 Mon Sep 17 00:00:00 2001 From: Doug Koerich Date: Tue, 30 Jun 2026 17:16:32 -0300 Subject: [PATCH 1/3] doc: Adding `delay` to 5.3 changelog (SparkPost/Momentum#1266) Signed-off-by: Doug Koerich --- content/momentum/4/console-commands/delay.md | 68 ++++++++++++++++++++ content/momentum/4/console-commands/index.md | 1 + content/momentum/changelog/5/5-3-0.md | 6 ++ 3 files changed, 75 insertions(+) create mode 100644 content/momentum/4/console-commands/delay.md diff --git a/content/momentum/4/console-commands/delay.md b/content/momentum/4/console-commands/delay.md new file mode 100644 index 000000000..1a5f14c14 --- /dev/null +++ b/content/momentum/4/console-commands/delay.md @@ -0,0 +1,68 @@ +--- +lastUpdated: "06/30/2026" +title: "delay" +description: "delay ec_console move messages from the active queue into the delayed queue deferring the next delivery attempt by a number of seconds optional --domain --binding scoping and --meta --header filter" +--- + + +## Name + +delay — defer active-queue messages into the delayed queue + +## Synopsis + +`delay` { *`seconds`* } [ `--domain` *`name`* ] [ `--binding` *`name`* ] [ `--meta` *`key`* *`value`* | `--header` *`header_name`* *`header_line`* ] + + +## Description + +The **delay** command moves messages from the **active queue** into the **delayed queue**, deferring their next delivery attempt by *`seconds`* seconds. Messages already in the delayed queue are not affected. + +*`seconds`* is required and must be a whole number greater than zero. The command also requires **at least one** selector — `--domain`, `--binding`, `--meta`, or `--header` — so it never delays the entire active queue implicitly. + +On success the command reports how many messages were moved: + +``` +10:47:35 /tmp/2025> delay 300 --domain relay.com +Delayed 42 messages. +``` + +When a `--domain` is named but has no messages in the active queue, the command reports: + +``` +10:47:35 /tmp/2025> delay 300 --domain relay.com +No messages for relay.com found. +``` + + +### Scoping by domain and binding + +Use **`--domain`** *`name`* to restrict the operation to a single domain's active queue, and **`--binding`** *`name`* to restrict it to a single binding. The binding name is validated against the configured bindings; an unknown binding is rejected: + +``` +10:47:35 /tmp/2025> delay 600 --binding outbound-pool +Delayed 18 messages. +``` + +`--domain` and `--binding` can be combined to target a single domain on a single binding. + + +### Selective delay (optional filter) + +Optional **`--meta`** / **`--header`** filtering uses the same matching rules as the `fail` family of commands. **`--header`** compares **physical header lines** only — see [**folded headers**](/momentum/4/console-commands/fail-domain-quiet#header_filter_physical_lines). With a filter, only matching messages are delayed; non-matching messages stay in the active queue. + +You cannot combine `--meta` and `--header` in the same command. + +``` +10:47:35 /tmp/2025> delay 300 --meta mo_campaign_id summer-sale +Delayed 12 messages. +``` + +``` +10:47:35 /tmp/2025> delay 120 --domain relay.com --header X-Delay-Pick alpha +Delayed 4 messages. +``` + +## See Also + +The same `--meta` / `--header` filtering clause is accepted by the [reroute queue](/momentum/4/console-commands/reroute-queue) command and the fail-family commands: [fail domain](/momentum/4/console-commands/fail-domain) · [fail domain quiet](/momentum/4/console-commands/fail-domain-quiet) · [fail all](/momentum/4/console-commands/fail-all) · [fail all quiet](/momentum/4/console-commands/fail-all-quiet) · [binding fail domain](/momentum/4/console-commands/binding-fail-domain) · [binding fail domain quiet](/momentum/4/console-commands/binding-fail-domain-quiet) diff --git a/content/momentum/4/console-commands/index.md b/content/momentum/4/console-commands/index.md index 4392bcde4..5c9677207 100644 --- a/content/momentum/4/console-commands/index.md +++ b/content/momentum/4/console-commands/index.md @@ -24,6 +24,7 @@ description: "This section documents all the non module specific console command | [config](/momentum/4/console-commands/config) | online configuration tuning for Momentum | | [count](/momentum/4/console-commands/count) | count open connections | | [counter](/momentum/4/console-commands/counter) | manage counters | +| [delay](/momentum/4/console-commands/delay) | defer active-queue messages into the delayed queue | | [delayed](/momentum/4/console-commands/delayed) | show domains with delayed queue size bigger than threshold | | [dig](/momentum/4/console-commands/dig) | submit a domain for DNS MX query | | [dns_cache](/momentum/4/console-commands/dns-cache) | manage Momentum's DNS cache | diff --git a/content/momentum/changelog/5/5-3-0.md b/content/momentum/changelog/5/5-3-0.md index 2c0dbfcc6..3938b012e 100644 --- a/content/momentum/changelog/5/5-3-0.md +++ b/content/momentum/changelog/5/5-3-0.md @@ -14,12 +14,18 @@ This section will list all of the major changes that happened with the release o | Feature | I-1064 | Added support for [license](/momentum/4/before-you-begin#momentum-license) signatures using ECDSA P-256 with SHA-256. | | Feature | I-1141 | Added an optional `limit` query parameter to the [`/stats/queues/mailq`](/momentum/4/http-api-stats/queues-mailq) HTTP API, controlling how many binding/domain pairs are ranked and returned. | | Feature | I-1152 | Added new [`fail all`](/momentum/4/console-commands/fail-all) and [`fail all quiet`](/momentum/4/console-commands/fail-all-quiet) console commands, plus optional `--meta` / `--header` filtering on other `fail` commands to selectively fail queued messages by metadata or RFC822 header match. | +| Feature | I-1162 | Added a [`delay`](/momentum/4/console-commands/delay) console command that moves messages from the active queue into the delayed queue, deferring their next delivery attempt by a given number of seconds. | | Feature | I-1172 | Added the [`ec_spool_check`](/momentum/4/executable/ec-spool-check) utility, which performs a read-only scan of a spool directory and reports metadata, body, and orphan-marker failures without driving traffic through Momentum. | | Feature | I-1214 | Removed `msys-nodejs` RPM from the Momentum bundle, to be replaced with the 3rd-party `nodejs` package. Node.js LTS 24+ must be installed separately from the system or a vendor repository. | | Feature | I-1216 | Added the [log_hires_timestamp](/momentum/4/config/ref-log-hires-timestamp) option to emit microsecond-resolution timestamps in the `mainlog`, `bouncelog`, `rejectlog`, `paniclog`, custom logs, chunk logs, and message generation logs, preserving event ordering when reading multiple log files together. | | Feature | I-1225 | Added optional `--meta` / `--header` filtering to the [`reroute queue`](/momentum/4/console-commands/reroute-queue#reroute_queue_selective) console command, to selectively move queued messages by metadata or RFC822 header match. | | Feature | I-1228 | Added the [`curfew`](/momentum/4/modules/curfew) module, scheduling recurring quiet hours during which delivery is suspended for selected bindings, binding groups, or domains. It can replace operator workflows that toggle [`suspend_delivery`](/momentum/4/config/ref-suspend-delivery). | +| Feature | I-1259 | Added **experimental** support for DKIM2 signing and verification through a new `dkim2` validate module. | | Feature | I-1345 | Added a `--dry-run` preview option to the `fail` family of console commands and the `reroute queue` command, which lists the messages that would be failed or moved while leaving the queues untouched. | | Feature | TASK-144964 | The [tls_ec_curve_names](/momentum/4/config/tls-ec-curve-names) option now accepts a colon-separated list of curve or TLS group short names in preference order, instead of a single curve. | | Feature | TASK-198522 | New DNS configuration options to [rate-limit MX lookups](/momentum/4/config/ref-dns-rate-limit), preventing query bursts from overwhelming the DNS infrastructure. | +| Fix | I-1030 | Fixed multiline SMTP responses being silently requeued with no log entries when the final response line carries a different status code than the preceding continuation lines (for example, a `220-` banner continuation followed by a `521` rejection). | +| Fix | I-1047 | Improved message transfer between nodes over XFER. The XFER server rejects bodyless reconstructed messages so the client retries instead of losing the message. | +| Fix | I-1058 | Fixed a buffer underread that occurred when a MIME part body consisted entirely of CR/LF characters, which could cause render failures in the paniclog. | | Fix | TASK-227757 | [`ha_proxy_client`](/momentum/4/modules/ha-proxy-client) now re-resolves a hostname-based `ha_proxy_server` during each health check, so backend IP changes are picked up automatically without restart. | +| Fix | TASK-259740 | Fixed [custom_logger](/momentum/4/modules/custom-logger) reception log lines being dropped when `reception_format` includes the `%H` (remote IP) macro and the message is injected over a UNIX domain socket (with no IP). | From 15f69c8172a559398a36a40bbca59419c72f73b0 Mon Sep 17 00:00:00 2001 From: Doug Koerich Date: Thu, 9 Jul 2026 14:37:31 -0300 Subject: [PATCH 2/3] doc: Adding FIPS clarification to I-1064 entry in changelog (SparkPost/Momentum#1266) Signed-off-by: Doug Koerich --- content/momentum/changelog/5/5-3-0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/momentum/changelog/5/5-3-0.md b/content/momentum/changelog/5/5-3-0.md index ee0b41728..33f542332 100644 --- a/content/momentum/changelog/5/5-3-0.md +++ b/content/momentum/changelog/5/5-3-0.md @@ -12,7 +12,7 @@ This section will list all of the major changes that happened with the release o | --- | --- | --- | | Enhancement | I-1276 | The supported range of OpenSSL covers 1.1.1 (RHEL 8) through the 3.x series — all pre-1.1.1 compatibility code has been retired. A few obsolete TLS settings were removed as part of this change; see the note below. | | Feature | — | [`spamassassin`](/momentum/4/modules/spamassassin) module is a supported SpamAssassin client (SPAMC protocol over `spamd`), replacing the legacy, Sieve-based `spamc` module. | -| Feature | I-1064 | Added support for [license](/momentum/4/before-you-begin#momentum-license) signatures using ECDSA P-256 with SHA-256. | +| Feature | I-1064 | Added support for [license](/momentum/4/before-you-begin#momentum-license) signatures using ECDSA P-256 with SHA-256 ([FIPS 186-4](https://csrc.nist.gov/pubs/fips/186-4/final)), so licenses validate on deployments that enforce FIPS 140-3 at the crypto-library level. Affected deployments require a re-issued license in the new format; all others continue to validate existing DSA-2048 / SHA-1 licenses unchanged. | | Feature | I-1141 | Added an optional `limit` query parameter to the [`/stats/queues/mailq`](/momentum/4/http-api-stats/queues-mailq) HTTP API, controlling how many binding/domain pairs are ranked and returned. | | Feature | I-1152 | Added new [`fail all`](/momentum/4/console-commands/fail-all) and [`fail all quiet`](/momentum/4/console-commands/fail-all-quiet) console commands, plus optional `--meta` / `--header` filtering on other `fail` commands to selectively fail queued messages by metadata or RFC822 header match. | | Feature | I-1162 | Added a [`delay`](/momentum/4/console-commands/delay) console command that moves messages from the active queue into the delayed queue, deferring their next delivery attempt by a given number of seconds. | From 08ce31566c26a762fd7754965be3cee00afb6ed6 Mon Sep 17 00:00:00 2001 From: Doug Koerich Date: Mon, 20 Jul 2026 11:13:28 -0300 Subject: [PATCH 3/3] doc: Final changelog and document (SparkPost/Momentum#1266) Signed-off-by: Doug Koerich --- content/momentum/changelog/5/5-3-0.md | 2 +- content/momentum/manuals/index.md | 1 + content/momentum/manuals/release-notes.md | 81 +++++++++++++++++++++++ content/momentum/navigation.yml | 2 + 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 content/momentum/manuals/release-notes.md diff --git a/content/momentum/changelog/5/5-3-0.md b/content/momentum/changelog/5/5-3-0.md index 33f542332..c63dcc1b3 100644 --- a/content/momentum/changelog/5/5-3-0.md +++ b/content/momentum/changelog/5/5-3-0.md @@ -21,7 +21,7 @@ This section will list all of the major changes that happened with the release o | Feature | I-1216 | Added the [log_hires_timestamp](/momentum/4/config/ref-log-hires-timestamp) option to emit microsecond-resolution timestamps in the `mainlog`, `bouncelog`, `rejectlog`, `paniclog`, custom logs, chunk logs, and message generation logs, preserving event ordering when reading multiple log files together. | | Feature | I-1225 | Added optional `--meta` / `--header` filtering to the [`reroute queue`](/momentum/4/console-commands/reroute-queue#reroute_queue_selective) console command, to selectively move queued messages by metadata or RFC822 header match. | | Feature | I-1228 | Added the [`curfew`](/momentum/4/modules/curfew) module, scheduling recurring quiet hours during which delivery is suspended for selected bindings, binding groups, or domains. It can replace operator workflows that toggle [`suspend_delivery`](/momentum/4/config/ref-suspend-delivery). | -| Feature | I-1259 | Added **experimental** support for DKIM2 signing and verification through a new `dkim2` validate module. | +| Feature | I-1259 | Added **experimental** support for DKIM2 [signing](/momentum/4/dkim2/sign) and [verification](/momentum/4/dkim2/verify) through a new `dkim2` validate [module](/momentum/4/dkim2). | | Feature | I-1345 | Added a `--dry-run` preview option to the `fail` family of console commands and the `reroute queue` command, which lists the messages that would be failed or moved while leaving the queues untouched. | | Feature | TASK-144964 | The [tls_ec_curve_names](/momentum/4/config/tls-ec-curve-names) option now accepts a colon-separated list of curve or TLS group short names in preference order, instead of a single curve. | | Feature | TASK-198522 | New DNS configuration options to [rate-limit MX lookups](/momentum/4/config/ref-dns-rate-limit), preventing query bursts from overwhelming the DNS infrastructure. | diff --git a/content/momentum/manuals/index.md b/content/momentum/manuals/index.md index df923b8e8..1216e851b 100644 --- a/content/momentum/manuals/index.md +++ b/content/momentum/manuals/index.md @@ -12,6 +12,7 @@ customers — installation guides, upgrade guides, and release notes — for ## Available manuals +- [Release Notes](/momentum/manuals/release-notes) - [Installation Manual](/momentum/manuals/installation-manual) - [Upgrade Manual](/momentum/manuals/upgrade-manual) — MTA-only - [Enabling APIs & Message Generation](/momentum/manuals/enabling-apis-message-generation) — Transmissions API, SMTPAPI, Message Generation diff --git a/content/momentum/manuals/release-notes.md b/content/momentum/manuals/release-notes.md new file mode 100644 index 000000000..2765f0647 --- /dev/null +++ b/content/momentum/manuals/release-notes.md @@ -0,0 +1,81 @@ +--- +title: "Release Notes" +subtitle: "Momentum" +version: "5.3" +date: "July 2026" +description: "Release notes for Momentum 5.3 — summary, new features, defects fixed, installation and upgrade pointers, and known issues for Red Hat Enterprise Linux (RHEL) 8, 9, and 10." +lastUpdated: "07/20/2026" +--- + +# 1. Summary + +The Momentum 5.3 release in July 2026 is available for Red Hat Enterprise Linux (RHEL) 8, 9, and 10. If you still need to run Momentum on RHEL 7 (and its CentOS equivalent), which reached its EOL in 2024, the latest release for that was Momentum 4.6. + +The Momentum 5.3 [changelog](https://support.sparkpost.com/momentum/changelog/5/5-3-0) provides details of all changes since the previous major release, organized in the list by "Feature", "Fix", or "Security Fix". + +# 2. New Features + +- A new **spamassassin** client module (SPAMC protocol over **spamd**), replacing the legacy Sieve-based **spamc** module. +- A new **curfew** module for scheduling recurring quiet hours during which delivery is suspended for selected bindings, binding groups, or domains. +- A new, ***experimental*** support for DKIM2 signing and verification through a **dkim2** module. +- Optional **limit** query parameter to the **/stats/queues/mailq** HTTP API. +- Enhancements in the **fail** family of **ec_console** commands: + - New "**fail all**" and "**fail all quiet**" commands. + - Optional **--meta** and **--header** filtering to selectively fail messages. + - **--dry-run** preview option to list the messages that would fail. +- Optional **--meta** and **--header** filtering to selectively reroute messages using the "**reroute queue**" **ec_console** command, together with a **--dry-run** preview option to list the messages that would be moved. +- New **delay** **ec_console** command to move messages from the active queue into the delayed queue. +- **tls_ec_curve_names** now accepts a list of curves/groups in preference order. +- New **ec_spool_check** utility, for a read-only scan of a spool directory. +- The **outbound_throttle_messages** and **outbound_throttle_connections** can now be declared in a host stanza for per-MX-host rate-limiting. +- The supported range of OpenSSL now covers 1.1.1 (RHEL 8) through the 3.x series. +- Support for license signatures using ECDSA P-256, for enhanced FIPS compliance. +- New DNS family of configuration options to rate-limit MX lookups, preventing query bursts. +- Added the **log_hires_timestamp** option to emit microsecond-resolution timestamps in the log files. +- Removed the **msys-nodejs** package from the webhooks bundle, to be replaced with a 3rd-party Node.js 24 LTS package. +- Other changes and improvements. + +# 3. Defects Fixed + +The following defects were fixed in Momentum 5.3: + +- Fixed an issue with **ha_proxy_client** not re-resolving a hostname when the remote server changed the IP address. +- Fixed **custom_logger** log lines being dropped when the format includes the **%H** (remote IP) macro and the message is injected with no IP (e.g., over a UNIX domain socket). + +# 4. Installation & Upgrade + +## 4.1. Installation + +1. Instructions for new installations of Momentum 5.3 MTA bundles are available in a PDF document under the entry for this release on our support site: [Product Downloads page](https://support.messagesystems.com/). + +2. Following the initial installation and configuration of Momentum 5.3, the 5.3 Webhooks, REST Transmissions API, and Inline Message Generation functions can be added with separate procedures. Instructions for these operations are available from our Customer Support. Please contact them before upgrading if the additional functionality is desired. + +## 4.2. Upgrade + +Instructions for upgrading from previous releases to the Momentum 5.3 MTA release configuration are located in a PDF document under the entry for this release on the Support site's [Product Downloads page](https://support.messagesystems.com/). + +# 5. Known Issues and Changed Behaviors + +There are none for this release. + +# 6. Final Note + +If you are still using the Momentum cluster configuration server (**ecconfigd_ctl**) and its client (**eccfg**), *which have been deprecated since version 4.3.1*, you must manually install some dependencies: + +```bash +cd /var/tmp/momentum-mta-5.3.x.yyyyy +sudo dnf install -y msys-ecelerity-config-server-5.3*.rpm +sudo dnf install -y msys-ecelerity-config-client-5.3*.rpm +sudo dnf install -y gcc +sudo cpan install Params::Validate YAML::XS Expect + +# create the private key and a self-signed certificate, +# or specify your own at /opt/msys/ecelerity/etc/ecconfigd.conf +sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ + -keyout /var/ecconfigd/apache/server.key \ + -out /var/ecconfigd/apache/server.crt + +# use ecconfigd_ctl and eccfg as earlier +sudo /opt/msys/ecelerity/bin/ecconfigd_ctl start +/opt/msys/ecelerity/bin/eccfg # shows usage +``` diff --git a/content/momentum/navigation.yml b/content/momentum/navigation.yml index 2d41e8592..6250aa3e0 100644 --- a/content/momentum/navigation.yml +++ b/content/momentum/navigation.yml @@ -1,6 +1,8 @@ - link: /momentum/manuals title: Online manuals items: + - link: /momentum/manuals/release-notes + title: Release Notes - link: /momentum/manuals/installation-manual title: Installation Manual - link: /momentum/manuals/upgrade-manual