Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions content/momentum/4/console-commands/delay.md
Original file line number Diff line number Diff line change
@@ -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"
---

<a name="console_commands.delay"></a>
## 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`* ]

<a name="idp_delay_desc"></a>
## 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.
```

<a name="delay_scoping"></a>
### 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.

<a name="delay_selective"></a>
### 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)
1 change: 1 addition & 0 deletions content/momentum/4/console-commands/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down
8 changes: 7 additions & 1 deletion content/momentum/changelog/5/5-3-0.md
Original file line number Diff line number Diff line change
Expand Up @@ -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). |

<a name="changelog.5.3.0.openssl-removals"></a>

Expand Down
Loading