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 2696ad83d..cd8cefedf 100644 --- a/content/momentum/changelog/5/5-3-0.md +++ b/content/momentum/changelog/5/5-3-0.md @@ -10,20 +10,26 @@ This section will list all of the major changes that happened with the release o | Type | Ticket | Description | | --- | --- | --- | +| 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-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). | -| 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 | 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). |