\ No newline at end of file
diff --git a/content/momentum/3/3-reference/default-policy-scriptlets.md b/content/momentum/3/3-reference/default-policy-scriptlets.md
deleted file mode 100644
index 5b92b8064..000000000
--- a/content/momentum/3/3-reference/default-policy-scriptlets.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Default Policy Scriptlets"
-description: "As of version 3 2 default Lua policy scripts are included with Momentum for receiving These scriptlets are found in the opt msys ecelerity libexec scriptlets msys default policy lua file These files are discussed in detail in the Default Policy User Guide In order to use the default policy..."
----
-
-As of version 3.2, default Lua policy scripts are included with Momentum for receiving. These scriptlets are found in the `/opt/msys/ecelerity/libexec/scriptlets/msys/default_policy.lua` file. These files are discussed in detail in the [Default Policy User Guide](/momentum/3/3-policy).
-
-In order to use the default policy scriptlets you must add the `/opt/msys/ecelerity/etc/sample-configs/default_policy.conf` file to your configuration. For instructions on adding a configuration file see [“Best Practices for Adding Configuration Files”](/momentum/3/3-reference/conf-adding-configuration-files).
-
-You will likely need to alter the `default_policy.conf` file to suit your circumstances—by only enabling specific scanners, for example.
-
-In the `default_policy.conf` file you should also enable the datasource(s) suitable for your language encoding. A datasource is necessary for the keyword filter, which is described at the bottom of the `/opt/msys/ecelerity/etc/conf/default/dp_config.lua` file. As of version 3.4, the keyword file, `dp_config.lua`, and `custom_policy.lua` must be copied from `/opt/msys/ecelerity/etc/sample-configs/` to `/opt/msys/ecelerity/etc/conf/default/`.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/disclaimer.md b/content/momentum/3/3-reference/disclaimer.md
deleted file mode 100644
index 9110260ed..000000000
--- a/content/momentum/3/3-reference/disclaimer.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Disclaimer"
-description: "Except as expressly set forth in your license agreement Momentum and associated materials including this manual are provided without any warranty of any kind express or implied including without limitation any warranty of merchantability fitness for a particular purpose or non infringement which warranties are expressly disclaimed Without limiting the..."
----
-
-## Disclaimer
-
-## Deliverables
-
-Except as expressly set forth in your license agreement, Momentum and associated materials, including this manual, are provided without any warranty of any kind (express or implied) including, without limitation, any warranty of merchantability, fitness for a particular purpose or non-infringement, which warranties are expressly disclaimed. Without limiting the foregoing, and except as expressly set forth in your license agreement, Message Systems, Inc, does not warrant, guarantee, or make any representations regarding the use, or the results of the use, of the deliverables, or documentation associated therewith in terms of correctness, accuracy, reliability, or otherwise.
-
-Message Systems, Inc. does not warrant that the operation of the deliverables will be uninterrupted or error-free. Message Systems is not responsible for and shall have no liability for hardware, software, or other items or services provided by any persons other than Message Systems, Inc.
-
-## Operation or Use
-
-Message Systems, Inc. does not warrant that Momentum or any part thereof will be secure or operate in an uninterrupted fashion.
-
-No warranty is made regarding the results of Momentum usage, that Momentum will operate uninterrupted or error-free or that Momentum's functionality will meet licensee's requirements.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/eccluster-conf-3.md b/content/momentum/3/3-reference/eccluster-conf-3.md
deleted file mode 100644
index 6201b4fb8..000000000
--- a/content/momentum/3/3-reference/eccluster-conf-3.md
+++ /dev/null
@@ -1,170 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "eccluster.conf"
-description: "eccluster conf Momentum Cluster Manager configuration file Whereas the ecelerity conf file configures the behavior of a node eccluster conf configures the behavior of the Momentum Cluster Manager eccmgr This file is found in the opt msys ecelerity etc conf default directory Configuration changes to eccluster conf cannot be made..."
----
-
-
-## Name
-
-eccluster.conf — Momentum Cluster Manager configuration file
-
-
-## Description
-
-Whereas the `ecelerity.conf` file configures the behavior of a node, `eccluster.conf` configures the behavior of the Momentum Cluster Manager, **eccmgr**. This file is found in the `/opt/msys/ecelerity/etc/conf/default/` directory.Configuration changes to `eccluster.conf` cannot be made through the web UI. You must manually change this file if the default values need changing. For instructions on doing this see [“Best Practices for Manually Changing Configuration Files”](/momentum/3/3-reference/conf-manual-changes).
-
-
-
-
-```
-Security {
- User = "ecuser"
- Group = "ecuser"
-}
-
-# Centralized logs are deposited here
-Logs {
- logfile = "/var/log/eccluster/%Y/%m/%d/%{l}/%{s}/%{n}"
- file_mode = "0640"
- dir_mode = "0755"
-}
-
-Control_Listener {
- AuthDigestMD5Parameters = [
- uri = "ecauth://"
- ]
- Enable_Authentication = "true"
-
- Enable_Authorization = "false"
- AuthorizationParameters = [
- uri = "ecauth://"
- ]
-
- Listen "/tmp/2025" {
- Enable_Authentication = "false"
- }
- Listen "127.0.0.1:2025" {
- }
-}
-
-# troubleshoot the eccmgr instance by looking for its logs
-# in /var/log/eccluster/paniclog.ec
-ec_logger "ec_logger"
-{
- rejectlog = "/var/log/eccluster/rejectlog.ec"
- mainlog = "/var/log/eccluster/mainlog.ec"
- heartbeat = "0"
- paniclog = "/var/log/eccluster/paniclog.ec"
-# acctlog = "/var/log/eccluster/acctlog.ec"
-}
-
-include "webui-common.conf"
-
-# Pull in auxillary information prepared by the installer; this must be the
-# last thing in the top level eccluster.conf file, as it is intended to overlay
-# the webui-common.conf file (for example)
-readonly_include "/opt/msys/etc/installer/eccmgr.d/ecdb.conf"
-```
-
-Using the system console from the cluster manager, you can view the contents of the `eccluster.conf` file. For instance, if your configuration matches [“The `eccluster.conf` file”](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.example), the output of **config show Logs** is as follows:
-
-```
-10:47:34 /tmp/2025> config show Logs
-dir_mode = "0755"
-logfile = "/var/log/eccluster/%Y/%m/%d/%{l}/%{s}/%{n}"
-file_mode = "0640"
-```
-
-Since the `eccluster.conf` file is specific to the cluster manager, you cannot view the `Logs` scope from the system console on a cluster node.
-
-
-## Included Files
-
-The `webui-common.conf` contains the `ecauth` authentication scheme defined in an auth_ds module. For a discussion of the `ecauth` scheme see [webui-common.conf](/momentum/3/3-reference/webui-common-conf).
-
-The `/opt/msys/etc/installer/eccmgr.d/ecdb.conf` file contains the definition of the `ecdb` datasource file. This definition of `ecdb` overrides the definition of `ecdb` found in the `webui-common.conf` file because it is the last included file.
-
-
-## Logs
-
-The `Logs` scope must be configured in order to aggregate node logs on the cluster manager. This topic is discussed at length in [“Log Aggregation”](/momentum/3/3-reference/cluster-config-logging).
-
-If you wish to change options defined within the scope of the `Logs` stanza you must do this manually—you cannot change them through the web UI. For instructions on manually changing configuration files see [“Best Practices for Manually Changing Configuration Files”](/momentum/3/3-reference/conf-manual-changes).
-
-
-
-- Logfile
-
--
-
-This describes the full pathname of the log file to be written. As eccmgr is capable of writing log files into several distinct locations, a simple interpolation set is provided. All of the POSIX strftime macros are supported (see the POSIX strftime standard) as well as two special interpolations. %{n} will interpolate to the name of the Momentum cluster node that generated the log line in question. %{l} will interpolate to the name of the log as named in the logs section of the cluster configuration in the `ecelerity.conf`. For more information about the POSIX strftime macros see [strftime](http://www.opengroup.org/onlinepubs/009695399/functions/strftime.html).
-
-There is no restriction on the value assigned to this option as long as it creates a valid path after all the macros get expanded; it does not have to exist beforehand, eccmgr will create directories as needed, hence the `Dir_Mode`.
-
-
-
-- Max_Open
-
--
-
-The maximum number of concurrently open log files.
-
-
-
-- Max_Idle
-
--
-
-The maximum number of seconds a log file may be left open without writing a new log entry to it.
-
-
-
-- File_Mode
-
--
-
-The octal representation of the file permissions of newly created log files.
-
-
-
-- Dir_Mode
-
--
-
-The octal representation of the file permissions of newly created log directories.
-
-
-
-- Control_Cache
-
--
-
-The name of the cache file storing asynchronous responses to clusterwide Momentum inquiries.
-
-
-
-
-
-
-## Control Listener
-
-In version 3.0, the `Enable_Authentication` option has been added with the usual fallback semantics applying. In [“The `eccluster.conf` file”](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.example), for example, access to the control listener via TCP requires authentication because the fallback value of "Enable_Authentication" is "true". On the other hand, authentication is disabled for access via a Unix domain socket because `Enable_Authentication` is set to `false` in the scope defined by `Listen "/tmp/2025"`. The `Enable_Authorization` option is used in the same way as the `Enable_Authentication` option.
-
-The 'uri = "ecauth://"' inside both AuthDigestMD5Parameters and AuthorizationParameters references an authentication scheme named "`ecauth`" defined in an auth_ds module. A scheme named `ecauth` is created during installation and uses the `webconsole` PostgreSQL datastore. For a discussion of the `ecauth` scheme see [webui-common.conf](/momentum/3/3-reference/webui-common-conf).
-
-
-## ec_logger Stanza
-
-This logger logs events that occur on the cluster manager. Values are specified for the reject log and main log because eccmgr runs inside the ecelerity process and will otherwise try to open the default log files.
-
-Since eccmgr does not transit messages, only the panic log will have entries. For this same reason, the `heartbeat` option is turned off, otherwise the reject and main logs will be filled with heartbeat markers.
-
-### Note
-
-This ec_logger module is for logging the cluster manager only. The ec_logger module defined in `ecelerity-cluster.conf` and typically given the instance name `ec_logger_cluster` configures logs aggregated from the cluster nodes.
-
-
-## See Also
-
-[eccmgr](/momentum/3/3-reference/executable-eccmgr), [mbus.conf](/momentum/3/3-reference/mbus-conf), [“ec_logger – Momentum-Style Logging”](/momentum/3/3-reference/3-reference-modules-ec-logger).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/ecelerity-cluster-conf.md b/content/momentum/3/3-reference/ecelerity-cluster-conf.md
deleted file mode 100644
index 833850dd8..000000000
--- a/content/momentum/3/3-reference/ecelerity-cluster-conf.md
+++ /dev/null
@@ -1,340 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ecelerity-cluster.conf"
-description: "ecelerity cluster conf The cluster specific configuration file included from within ecelerity conf ecelerity cluster conf configures cluster behavior The configuration options of the ecelerity cluster conf file are discussed here Example 10 2 The ecelerity cluster conf file I Pv 6 addresses are much more flexible than I Pv..."
----
-
-
-## Name
-
-ecelerity-cluster.conf — The cluster-specific configuration file included from within `ecelerity.conf`
-
-
-## Description
-
-`ecelerity-cluster.conf` configures cluster behavior. The configuration options of the `ecelerity-cluster.conf` file are discussed here.
-
-
-
-
-```
-# Ensure that we have appropriate privileges
-Security {
- user = "ecuser"
- group = "ecuser"
- # Linux
- Capabilities = "cap_net_admin+ep cap_net_bind_service+ep cap_net_raw+ep cap_sys_resource+ep"
- # Solaris
- Privileges = "basic net_privaddr net_bindmlp sys_resource sys_net_config net_rawaccess"
-}
-
-ec_logger "ec_logger_cluster" {
- mainlog = "cluster:///var/log/ecelerity/mainlog.cluster=>master"
- paniclog = "cluster:///var/log/ecelerity/paniclog.cluster=>master"
- rejectlog = "cluster:///var/log/ecelerity/rejectlog.cluster=>master"
- acctlog = "cluster:///var/log/ecelerity/acctlog.cluster=>master"
-}
-
-bounce_logger "bounce_logger_cluster" {
- bouncelog = "cluster:///var/log/ecelerity/bouncelog.cluster=>master"
-}
-# The ECCluster_Listener stanza is available as of version 3.0.15
-ECCluster_Listener {
- Listen "*:4802" {}
-}
-
-cluster {
- #cluster_listener = *:4802 Replaced by the ECCluster_Listener stanza
- #mbus_daemon = 4803 Deprecated in version 3.4
- cluster_group = "ec_cluster"
- control_group = "ec_console"
- logs = [
- rejectlog = "/var/log/ecelerity/rejectlog.cluster"
- paniclog = "/var/log/ecelerity/paniclog.cluster"
- mainlog = "/var/log/ecelerity/mainlog.cluster"
- acctlog = "/var/log/ecelerity/acctlog.cluster"
- bouncelog = "/var/log/ecelerity/bouncelog.cluster"
- ]
- Replicate "inbound_cidr" {}
- Replicate "outbound_cidr" {}
- Replicate "outbound_domains" {}
- Replicate "outbound_binding_domains" {}
- Replicate "shared_named_throttles" {}
-
- # DuraVIP network topology hints
- Topology "10.1.1.0/24" {
- cidrmask = "32"
- interface = "eth1"
- }
-}
-```
-
-### Note
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-You **cannot** view the contents of the `ecelerity-cluster.conf` file using the system console from the cluster manager. You can only view the contents of this file from a cluster node because it is included from the `ecelerity.conf` file. The ec_logger module defined here applies to cluster nodes only. The ec_logger module defined in the `eccluster.conf` file on the cluster manager records events that occur on the cluster manager. Since mail does not transit the cluster manager, only the paniclog will have entries.
-
-
-### The `Security` Stanza
-
-The definition of the `Security` stanza in the `ecelerity-cluster.conf` file applies to the cluster nodes only and usually differs from the configuration found in the `eccluster.conf` file.
-
-For a discussion of the Security stanza options see [security](/momentum/3/3-reference/3-reference-conf-ref-security).
-
-
-### Clustered Logging
-
-The ec_logger defined in the `ecelerity-cluster.conf` file is typically one of three ec_loggers used in a cluster configuration. These loggers, with their conventional instance names, are as follows:
-
-* `ec_logger "ec_logger_cluster"` – typically defined in the `ecelerity-cluster.conf` file and used when creating consolidated log files on the cluster manager
-
-* `ec_logger "ec_logger"` – the node-specific log files
-
-* `ec_logger "ec_logger_rt"` – the node-specific log files used by the web UI
-
-Here we are only concerned with the ec_logger "ec_logger_cluster" logger.
-
-The Momentum clustering module provides two facilities that aid administrators in setting up cluster-wide consolidated logging. The first of these is a node-local clustered I/O layer which is provided by the clustering module as the `cluster://` URI schema. A typical log destination looks like `cluster:///var/log/ecelerity/mainlog.cluster=>master` where `cluster://` tells the I/O abstraction layer to use node-local segmented data format, `/var/log/ecelerity/mainlog.cluster` is the directory in which the node-local log stream will be stored (created on demand), and `=>master` specifies that a subscriber named "master" should be added to the node-local log stream if it is created on demand.
-
-The second part of the clustered logging solution is the log file service (provided over the `ECCluster_Listener`). This service lets subscribers connect to Momentum and request a "replay" of logs since their last checkpoint and then checkpoint the reader. This is a durable logging mechanism for aggregation. The log file server is configured in the `logs` dictionary of the cluster module configuration.
-
-Each logfile that should be serviced in this fashion is given a key name and a corresponding local path that should match the path portion of the `cluster://` log destination specified in the other Loggers throughout your configuration.
-
-For an in-depth discussion of consolidated cluster logging see [“Log Aggregation”](/momentum/3/3-reference/cluster-config-logging).
-
-
-### ECCluster_Listener
-
-Any direct, point-to-point communication between cluster nodes that does not require membership-wide ordering semantics will be performed over TCP/IP via the port specified in the Listen stanza within the ECCluster_Listener stanza. Any node can establish a connection to the destination node at the address specified by the `ECCluster_Listener` and point-to-point communication will ensue.
-
-**Configuration Change. ** This option is available as of version 3.0.15 and replaces the `cluster_listener` option.
-
-The following table displays all options valid in the ECCluster_Listener scope and within a Listen stanza within an ECCluster_Listener scope.
-
-
-
-
-| Option/Description | Default | Scopes |
-| --- | --- | --- |
-| **[accept_queue_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.accept_queue_backlog)** – The accept queue backlog | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[concurrency](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Define number of available threads | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, threadpool, xmpp_listener |
-| **[disable_nagle_algorithm](/momentum/3/3-reference/3-reference-conf-ref-disable-nagle-algorithm)** – Disable nagle algorithm on sockets | false | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, global, http_listener, listen, xmpp_listener |
-| **[enable](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Enable or disable a listener scope | true | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[events_per_iter](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.events_per_iter)** – Employ when using a Concurrency greater than 1 | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[file_mode](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener)** – File access rights in octal notation | 0660 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[listen_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listen_backlog)** – The listen backlog | 500 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[pool_name](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Associate a threadpool with a listener | | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tcp_recv_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_recv_buffer_size)** – The size of the TCP receive buffer size | 4096 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tcp_send_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_send_buffer_size)** – The size of the TCP send buffer | 4096 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-
-For information regarding IPv6 addresses and Listen stanzas, see [the section called “Listeners and IPv6 Addresses”](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ipv6).
-
-
-### Cluster Communications
-
-
-
-- mbus_daemon
-
--
-
-The most important underlying component of the clustering system is the underlying messaging bus. The Momentum clustering module utilizes a messaging bus that provides extended virtual synchrony (EVS) messaging semantics. The Momentum instance will attach to this node over some form of inter-process communication socket (IPC) (currently either AF_INET or AF_UNIX) as specified by the `mbus_daemon` configuration option.
-
-**Configuration Change. ** As of version 3.4, cluster communication is handled by the msgc modules rather than by mbus. For more information see [“msgc – Modules”](/momentum/3/3-reference/3-reference-modules-msgc).
-
-
-
-- cluster_group
-
--
-
-The DuraVIP™ system will coordinate IP ownership responsibilities via the `cluster_group` EVS group.
-
-
-
-- control_group
-
--
-
-Each node can respond to normal console commands received on the `control_group`. The cluster console manager utilizes this group to issue cluster-wide configuration commands to update and discover changes in configuration information. For more information about cluster console commands see [“Cluster Management Using Console Commands”](/momentum/3/3-reference/3-reference-cluster-config-replication#cluster.logging.console).
-
-
-
-
-
-Under normal circumstances, the `mbus_daemon`, `cluster_group` and `control_group` should be left at their default values (as shown in the configuration above).
-
-
-### Replication
-
-The replication component of the clustering module is considered its most powerful and versatile feature. The `replicate` directive allows you to employ a sound and efficient replication framework to the data managed within Momentum. Such metrics as the number of current connections from a specific netblock are calculated locally by referencing an internal structure called a CIDR tree. By specifying `Replicate = "inbound_cidr" {}`, we tell the clustering subsystem to share all the local information about inbound connections tracked in its CIDR tree with every other node in the cluster (and vice versa). Using this shared information, the replication system will maintain an aggregated "cluster-wide" CIDR tree representing **all** inbound connections to the cluster.
-
-The same is possible for outbound connections via `Replicate "outbound_cidr" {}` as well as outbound connections grouped by destination domain via `Replicate "outbound_domains" {}`. For outbound connections, it may be desirable to be more granular than aggregating on a cluster-wide premise. This is discussed in more detail in the cluster data replication section.
-
-The `Replicate "outbound_binding_domains" {}` stanza ensures that the Cluster_Scope_Max_Outbound_Connections option works cluster-wide. This option was introduced in Momentum 3.2 and is included in the default `ecelerity-cluster.conf` file.
-
-In addition to native Momentum data, it is possible to replicate user controlled data sets as well (such as caches). This provides a transparent and convenient mechanism to cache data from a module level in a medium that is accessible via every node participating in the cluster. This is discussed in more detail in [“Data Replication”](/momentum/3/3-reference/3-reference-cluster-config-replication).
-
-
-### DuraVIP™ Network Topology
-
-The DuraVIP™ featureset maintains the availability of MultiVIP© bindings and listener services on IP addresses despite node failures. Each binding or listener that should be managed in this fashion should be marked with a `Enable_Duravip = true` option.
-
-Because Momentum is responsible for adding and removing the corresponding IP addresses, more information must be known about the IP networks and physical interfaces on which these IPs will reside. Within the cluster module configuration, options in the `Topology` scope provide this additional information.
-
-
-
-- interface
-
--
-
-In the Topology configuration shown in [“The `ecelerity-cluster.conf` file”](/momentum/3/3-reference/ecelerity-cluster-conf#ecelerity-cluster.conf.example), `10.1.1.0/24` informs the clustering module that IPs in the range specified will be added to the `eth1` ethernet interface.
-
-
-
-- cidrmask
-
--
-
-When bringing an IP address online, you must also know the netmask it will be using. The cidrmask option indicates the number of bits in the netmask for a given IP address. Above, we see that the IP address should be added with a /32 netmask (i.e. 255.255.255.255). It is most common to add IP aliases with a 255.255.255.255 netmask, but this can vary between operating systems.
-
-
-
-
-
-
-### Other Cluster Configuration Options
-
-Find below a list of all cluster options not covered by the categories discussed above. For a complete list of all cluster options see [Table 9.4, “cluster options”](/momentum/3/3-reference/options-summary#cluster-options-table).
-
-
-
-- log_group
-
--
-
-When this is enabled, the panic log messages are broadcast over spread, using the specified group name. Another spread enabled application, or the `spuser` tool, can then listen in on paniclog events.
-
-
-
-- nodename
-
--
-
-Override the node name that is used to canonically identify this cluster node. The `nodename` is determined according to the following logic: When ec_ctl runs, it determines the node name (and subcluster) as configured from `cluster.boot` and exports EC_SUB_CLUSTER and EC_NODE_NAME to the environment. If you do not explicitly configure the nodename option, the cluster module will look for the EC_NODE_NAME environment variable and take that as the value. If EC_NODE_NAME is not set in the environment, it will use the system hostname, truncated at the first ‘`.`’. Note also that modules can use the cluster_nodename hook to determine the effective value of the `nodename`.
-
-
-
-- nodeaddr
-
--
-
-`nodeaddr` is the canonical cluster address for the node. If not specified, gethostbyname(*`nodename`*) is used to determine the address. The address must be routable via the cluster network, and must not be 127.0.0.1.
-
-
-
-- log_active_interval
-
--
-
-This option, along with `log_idle_interval`, is used to tune centralized logging (logmove). When logmove is actively sending data to the manager, it will sleep for `log_active_interval` seconds between each segment send. When the job idles (no segments are pending), then it will sleep for `log_idle_interval` seconds before looking for another segment, The default value for this option is `1`.
-
-
-
-- log_idle_interval
-
--
-
-The amount of time to sleep before looking for another segment. The default value for this option is `10`.
-
-
-
-- heartbeat_start_delay
-
--
-
-How many seconds to wait after startup before the cluster heartbeat is activated. The default value for this option is `15`.
-
-
-
-- heartbeats_per_sec
-
--
-
-How often to send a heartbeat. The heartbeat is used to help detect "byzantine" nodes in the cluster. The default value for this option is `1`.
-
-
-
-- if_check_interval
-
--
-
-How often to run through a maintenance cycle to make sure that the interfaces plumbed on the system match up to the cluster internal view. The default value for this option is `30`.
-
-
-
-- if_down_limit
-
--
-
-As part of the maintenance cycle, when detecting that we need to plumb an IP address, how long to wait before deciding that we should bring it online. This avoids rapid "flapping". The default value for this option is `4`.
-
-
-
-- duravip_balance_set_size
-
--
-
-When balancing DuraVIP™s, how many to process as a batch in response to a balance request. Clusters with large numbers of DuraVIP™s (especially when they are not explicitly preferenced) will take less time to converge if this number is increased. It is imperative that this number be set consistently across all nodes, as inconsistent values across the nodes will result in a cluster that will not converge (since the nodes will not all agree on the same parameters). Therefore, it is strongly recommended that all the nodes be brought down before changing this option. The value of this option must be greater than `1`.
-
-
-
-- arp_all_hosts
-
--
-
-When plumbing a DuraVIP™, you can either aggressively send out ARP information to ensure that the network knows about the IP address assignment (true), or target the ARP to specific hosts of interest (false). You may consider changing this to `false` if your network experiences problems with the burst of ARP traffic around the DuraVIP™ move. The default value for this option is `true`.
-
-
-
-- view_mature_time
-
--
-
-How long a DuraVIP™ view needs to remain unchanged before considering it "mature". Increasing the value will make the cluster take longer to fully converge and balance DuraVIP™s. Reducing the value will make it take less time. This option should not generally need to be altered, but you may consider doing so if the cluster is experiencing instability. Best to seek advice from support if that is the case. The default value for this option is `5`.
-
-
-
-- view_balance_interval
-
--
-
-How often DuraVIP™ views are subject to balancing. This option is similar to `view_mature_time` and should to be adjusted without consultation with support. The default value for this option is `10`.
-
-
-
-- unconditional_rebind
-
--
-
-Whether the full set_binding logic is invoked when assessing messages for internal cluster message moves or whether to use an optimization that avoids calling out to whatever set_binding logic is in place. The default value for this option is `true`.
-
-
-
-- view_broadcast_interval
-
--
-
-When non-zero, how often to speculatively broadcast a view announcement to the cluster. Should not be needed except in rare cases when the cluster does not seem to be in sync with views; only enable as directed by support. The default value for this option is `0`.
-
-
-
-
-
-
-### See Also
-
-[mbusd](/momentum/3/3-reference/executable-mbusd), [mbus.conf](/momentum/3/3-reference/mbus-conf).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/ecelerity-conf.md b/content/momentum/3/3-reference/ecelerity-conf.md
deleted file mode 100644
index 541d7f008..000000000
--- a/content/momentum/3/3-reference/ecelerity-conf.md
+++ /dev/null
@@ -1,1015 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ecelerity.conf"
-description: "ecelerity conf Momentum configuration file The ecelerity conf file is the master configuration file for the Momentum application server The easiest way to manipulate this file is through the web UI If you make manual changes to this file be sure to use eccfg to commit your changes For more..."
----
-
-
-## Name
-
-ecelerity.conf — Momentum configuration file
-
-
-## Description
-
-The `ecelerity.conf` file is the master configuration file for the Momentum application server.
-
-The easiest way to manipulate this file is through the web UI. If you make manual changes to this file be sure to use **eccfg** to commit your changes. For more information see [eccfg](/momentum/3/3-reference/executable-eccfg) and [“Best Practices for Manually Changing Configuration Files”](/momentum/3/3-reference/conf-manual-changes).
-
-The default search path for config files is:
-
-```
-/opt/msys/ecelerity/etc/conf/global:/opt/msys/ecelerity/etc/conf/{NODENAME}:»
- /opt/msys/ecelerity/etc/conf/default
-```
-
-## The Contents of `ecelerity.conf`
-
-Options such as `max_outbound_connections` are simple configuration options while other configuration options define data structures. For example, the `security` option (or scope) has user and group options. Complex configuration options are as follows:
-
-
-
-
-| Option/Description | Type | Scopes |
-| --- | --- | --- |
-| **[adaptive_backstore_leveldb](/momentum/3/3-reference/3-reference-conf-ref-adaptive-backstore-leveldb)** – Use LevelDB as the backing store for Adaptive Delivery | sending | global |
-| **[adaptive_backstore_riak](/momentum/3/3-reference/3-reference-conf-ref-adaptive-backstore-riak)** – Define the characteristics of the Riak backing store | sending | global |
-| **[adaptive_sweep_rule](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_sweep_rule)** – Set the thresholds and actions for adaptive fbl and bounce rules | sending | binding, binding_group, domain, global |
-| **[authorization](/momentum/3/3-reference/3-reference-conf-ref-authorization)** – Configure the console commands applicable to users | na | global |
-| **[binding](/momentum/3/3-reference/3-reference-conf-ref-binding)** – Configure binding-specific options | sending | binding_group, global |
-| **[binding_group](/momentum/3/3-reference/3-reference-conf-ref-binding-group)** – Logically group a set of bindings | sending | global |
-| **[control_listener](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener)** – The listener for incoming control connections | na | global |
-| **[debug_flags](/momentum/3/3-reference/3-reference-conf-ref-debug-flags)** – Configure debug verbosity | na | global |
-| **[domain](/momentum/3/3-reference/3-reference-conf-ref-domain)** – Configure domain-specific options | sending | binding, binding_group, global |
-| **[eccluster_listener](/momentum/3/3-reference/ecelerity-cluster-conf#ecelerity-cluster.conf.eccluster_listener)** – Control communication between cluster nodes | na | global |
-| **[ecstream_listener](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener)** – The listener for incoming ECSTREAM connections | receiving | global |
-| **[esmtp_listener](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.esmtp_listener)** – The listener for incoming SMTP connections | receiving | global |
-| **[eventloop](/momentum/3/3-reference/conf-ref-eventloop)** – Define a pool of event loops to enable multiple event loop configuration | both | global |
-| **[host](/momentum/3/3-reference/3-reference-conf-ref-host)** – Configure host-specific options | sending | binding, binding_group, global |
-| **[http_listener](/momentum/3/3-rest/rest-http-listener)** – The listener used with the REST injector | sending | global |
-| **[listen](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.attributes)** – Specify the socket that a listener listens on | receiving | control_listener, ecstream_listener, esmtp_listener, http_listener, msgcserver_listener, xmpp_listener |
-| **[logs](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs)** – Configure centralized log files on the cluster manager | na | global |
-| **[manager](/momentum/3/3-reference/cluster-config-logging#cluster.config.logging.complex)** – Define managers for subclusters | na | logs |
-| **[pathway](/momentum/3/3-reference/3-reference-conf-ref-pathway)** – A grouping of inbound configuration options | receiving | global, pathway_group |
-| **[pathway_group](/momentum/3/3-reference/3-reference-conf-ref-pathway-group)** – A container for pathway scopes | receiving | global |
-| **[peer](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.config.acls)** – Create an ACL within a specific listener | receiving | control_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[ecelerity-cluster.conf](/momentum/3/3-reference/ecelerity-cluster-conf)** – Define the cluster replication framework | na | cluster |
-| **[authorization](/momentum/3/3-reference/3-reference-conf-ref-authorization)** – Define a role within an authorization stanza | na | authorization |
-| **[security](/momentum/3/3-reference/3-reference-conf-ref-security)** – Scope for defining which permissions are retained by which user | na | global |
-| **[SNMP](/momentum/3/3-reference/3-reference-conf-ref-snmp)** – Simple Network Management Protocol Support scope options | na | global |
-| **[SNMP](/momentum/3/3-reference/3-reference-conf-ref-snmp)** – Enable and configure generation of SNMP traps | na | global |
-| **[threadpool](/momentum/3/3-reference/3-reference-conf-ref-threadpool)** – Configure thread pool specific options | na | global |
-| **[“DuraVIP™: IP Fail over”](/momentum/3/3-reference/3-reference-cluster-config-duravip)** – Define the cluster network topology | na | cluster |
-| **[xmpp_listener](/momentum/mobile/mobile-reference/mobility-xmpp-modules#modules.xmpp.xmpp_listener)** – The listener for incoming XMPP connections (Mobile Momentum) | receiving | global |
-
-Configuration options defined at the top level of the `ecelerity.conf` file are defined in a global scope. Many of these options can be defined in other scopes for a more fine-grained configuration. For example, the `max_outbound_connections` option can be set globally to apply to all outbound connections or within a domain scope to apply to a specific domain only. You can also set it in both scopes if you wish. For a discussion of which value applies in which circumstances see [“Configuration Scopes and Fallback”](/momentum/3/3-reference/3-reference-ecelerity-conf-fallback).
-
-The various modules that extend the functionality of Momentum are also scopes. The clamav module for example, makes it possible to use ClamAV anti-virus scanning from within Momentum. Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/3/3-reference/3-reference-modules) .
-
-
-## Comments, Whitespace and Includes
-
-In common with many other Unix configuration files, the `ecelerity.conf` file uses the `#` (commonly referred to as "hash", "pound" or "octothorpe") symbol to introduce a single line comment. Whitespace is unimportant in the various configuration stanza; feel free to pad the whitespace as you see fit for maximum readability.
-
-### Note
-
-If the values assigned to any options contain whitespace or any of the characters ‘`#`’, ‘`/`’, ‘`"`’, ‘`'`’, ‘`=`’, ‘`{`’, ‘`}`’, ‘`[`’, ‘`]`’, ‘`(`’, ‘`)`’ they must be enclosed by quotation marks. Note that binding names cannot contain spaces.
-
-All configuration options are case insensitive. For example, you can define an SMTP listener as `ESMTP_Listener` or `esmtp_listener`.
-
-You may use C-style comments in your `ecelerity.conf`. C-style comments begin with `/*` and end with `*/`. Any text between those two markers will be ignored by Momentum. C-style comments do not nest.
-
-You may also break apart your configuration into multiple files and reference them using the `include` statement.
-
-`include "/opt/msys/ecelerity/etc/other.conf"`
-
-If you break up your configuration file into a number of different files you will need to add these new files to the repository. For instructions on adding configuration files to the repository see [“Best Practices for Adding Configuration Files”](/momentum/3/3-reference/conf-adding-configuration-files).
-
-For included files, the directory that holds the file being included **from** is checked before the default search path.
-
-You may also use the include statement to allow the inclusion of a directory. When the referenced path is a directory, all the files within that directory are included in lexical order. Hidden files (those whose names begin with a single period) are not included. Sub-directories are not automatically processed.
-
-```
-# assuming that /opt/msys/ecelerity/etc/config.d is a directory
-# each file in that directory will be included
-include "/opt/msys/ecelerity/etc/config.d"
-```
-
-In a cluster configuration, the `eccluster.conf` file is "included" from the `ecelerity.conf` file and configures cluster-related options.
-
-
-### Using the "readonly_include" Directive
-
-
-
-You may split the configuration into multiple files using not only an 'include' directive but also the 'readonly_include' directive. As with the 'include' directive, 'readonly_include' is valid in any scope. 'readonly_include' also supports making online changes to the configuration with the '**config set** ' and '**config unset** ' commands. For more information see [config](/momentum/3/3-reference/3-reference-console-commands-config).
-
-When making an online change, Momentum must decide which of the multiple configuration files to save online changes to. This decision is controlled by the following factors:
-
-* The `Local_Changes_File` option
-
-* The `Local_Changes_Only` option,
-
-* The read-only status of a particular configuration file
-
-* Whether the operation being performed is replacing an old value with a new one, or setting a value that has not previously been set
-
- **Readonly 'include' Files. ** Any configuration files included with the 'readonly_include' directive are read-only. Any configuration files included multiple times (overall, not necessarily from the same file) are read-only. Any configuration files loaded from a URI with a scheme other than 'file://', 'persist://', for example, are read-only. All other configuration files are considered writable.
-
-The `Local_Changes_File` option sets the name of a configuration file which must be writable, and which is implicitly loaded after all other configuration files regardless of its placement in the configuration file. Since it must be writable and files included twice are read-only, the `Local_Changes_File` option cannot point to the same file as any 'include' directive, and it cannot point to the main configuration file. Since the `Local_Changes_File` is effectively loaded at the end of the main configuration file, options set in it are able to override any setting in any other configuration file; if it were loaded at some other point, options set after that point could not be overridden by it.
-
-If the `Local_Changes_File` option is not defined, and the main configuration file is writable, then changes are written to the main configuration file. If `Local_Changes_File` is not defined, and the main configuration file is read-only, then a virtual file, not associated with any real path is used to hold changes; in this case, the **config writeback** command will issue a warning stating that not all portions of the configuration could be saved, and show the contents of the virtual file. This situation can be remedied by setting the `Local_Changes_File` to a valid path and issuing the **config writeback** command again, at which point changes in the virtual file will be saved to the newly configured location.
-
-The `Local_Changes_Only` option defaults to 'false'. If it is 'true', the `Local_Changes_File` option must be defined and all changes are saved to the `Local_Changes_File`. If it is 'false', changes are distributed as described below:
-
-* When replacing a value that has previously been set, if the file it was last set in is writable then the change is made in-place; the new option value replaces the old option value at the same location in the writable file.
-
-* If replacing a value that was last set in a read-only file or setting a value that was not set previously, then the change will go to the lexically first writable file in which the scope instance containing the change was defined.
-
-For an example of the lexically first writable file assume that `ecelerity.conf` is configured as follows:
-
-```
-readonly_include "foo.conf"
-include "baz.conf"
-```
-
-and `foo.conf` contains:
-
-```
-Domain yahoo.com {
- Gateway = "server.yahoo.com"
- include "bar.conf"
-}
-```
-
-Options set for the first time by commands starting with **config set Domain yahoo.com** will be saved in `bar.conf`, since `foo.conf` is read-only and `baz.conf` occurs after `bar.conf`. The change made by **config set Domain yahoo.com gateway "server2.yahoo.com"** would also end up in `bar.conf,` since the original location, `foo.conf`, is read-only, and `bar.conf` is the first writable location after it.
-
-Finally, if the scope instance containing the change was only encountered in read-only files or not at all, then the change will be saved to the file defined by the `Local_Changes_File` option. Note that changes, even committed changes, are accumulated in in-memory representations of the configuration files and are not saved to disk until a **config writeback** command is issued.
-
-
-### Bypassing Validation Modules
-
-It is possible to bypass validation modules by adding a context variable to your listener. Do this by creating a context variable with the name __bypass_*`module_name`* and setting its value to `true`. For example, to bypass the spf_v1 module create a variable called `__bypass_spf_v1` and set its value to `true`. To determine whether a module is a validation module see [“All Modules”](/momentum/3/3-reference/modules-summary#modules.summary.all.modules).
-
-
-## Listeners
-
-Momentum is built around a powerful event based scheduling engine. A key part of that engine is responding to events that occur on inbound sockets, known as *listeners*.
-
-The basic listener syntax is as follows:
-
-```
-Esmtp_Listener {
- Listen "*:25" {}
-}
-```
-
-The `*:25` is an example of an address; multiple addresses can be specified for a given listener, allowing you to configure service on multiple IP/port or Unix sockets.
-
-### Warning
-
-When using any listener, if you change from listening on a specific IP address to listening on the "wildcard" address (*) or the reverse, you must issue the **config reload** command twice in order to reactivate the listener. This applies to Linux systems only.
-
-Momentum supports three major types of listener for serving SMTP, Control and ECStream clients.
-
-### Note
-
-As of version 3.1.4, Momentum also supports an HTTP_Listener that is used with the REST Injection API. For more information see "[HTTP_Listener](/momentum/3/3-rest/rest-http-listener)".
-
-For a complete list of the options that are valid within a listener see [Table 9.25, “listener options”](/momentum/3/3-reference/ecelerity-conf#table-listener-options).
-
-
-## Control_Listener
-
-```
-Control_Listener {
- Listen "/tmp/2025" {
- File_Mode = 0666
- }
-}
-```
-
-Configures the end-point(s) on which Momentum should listen for incoming control connections (made via `ec_console` or the web console). For local-only configurations, a Unix domain socket may be appropriate. If your network is reasonably secure, you can specify an IPv4 address and port for TCP/IP services.
-
-In this case the `file_mode` option is set to `0666`. With the socket file permission set to 0666, every user who can log in to the system can use ec_console to connect to the server.
-
-The Control_Listener supports a number of extended properties including `ALWAYS-ALLOW`, `LOGIN` and `DIGEST-MD5`. For more information see [“Configuring Authentication for the Control Listener”](/momentum/3/3-reference/conf-aaa#conf.control_authen).
-
-For information regarding IPv6 addresses and Listen stanzas, see [the section called “Listeners and IPv6 Addresses”](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ipv6).
-
-
-## ESMTP_Listener
-
-Configures the end-point(s) on which Momentum should listen for incoming SMTP connections. This list can contain any number of Unix domain sockets and/or IP:port addresses for TCP/IP service.
-
-The ESMTP_Listener supports all of the extended properties and extensions described below.
-
-
-
-
-```
-ESMTP_Listener {
- Listen ":25" {
- **Listen_Backlog = 500** # new default, can be set > 200 now
- TCP_Recv_Buffer_Size = 4096
- TCP_Send_Buffer_Size = 4096
- Disable_Nagle_Algorithm = false
- }
- Listen ":587" {
- Enable = "false"
- Accept_Queue_Backlog = 200
- Events_Per_Iter = 20
- Concurrency = 4
- # you need to also create this pool in your configuration,
- # otherwise you get a warning and use the IO pool instead
- Pool_Name = "accept-pool"
- }
- # serve inbound SMTP on port 25 in IPv6
- #Listen "[::1]:25" {}
-
- # serve inbound SMTP at 192.168.0.1 on port 25 in IPv6
- #Listen "[::192.168.0.1]:25" {}
- # or
- #Listen "[::C0A8:1]:25" {}
-}
-ThreadPool accept-pool {
- Concurrency = 4
-}
-```
-
-The `Pool_Name` option associates the `accept-pool` ThreadPool with the listener. Concurrency should have a value that is equal to or less than the concurrency defined in the ThreadPool.
-
-When using threaded accepts for listeners, you must now explicitly provision the thread pool you intend to use via the ThreadPool directive. If the thread pool you name is not found, or is unspecified, the IO pool will be used and a critical message will appear in your log. In version 2.2 if the pool didn't exist, the listener subsystem would create it for you.
-
-Listen stanzas map 1:1 to an underlying socket, this means that `:25` (which is the same as *:25) binds to IPv4 (and perhaps IPv6, depending on the kernel); for explicit IPv6, use `[*]:25` instead. This change makes it possible to suspend and enable listener sockets individually on the fly. If you wish to disable the listener on port 25, as shown in [“ESMTP_Listener”](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3), issue the command **`config set esmtp_listener listen :25 enable false`** from the system console. You can use **config set, get** or **eval** with any one of the listener subsystem options. This applies to ESMTP_Listeners and Control_Listeners.
-
-Note that `Listen_Backlog` has a new default value and can now be set higher than `200`. Also note that the `enable` option is used in the listener scope to enable or disable a listener or listen scope and *not `enabled`* .
-
-
-### Listeners and IPv6 Addresses
-
-IPv6 addresses are case insensitive and can use ‘`::`’ for zero suppression. For this reason, the same address can be expressed in a variety of ways. The following examples all represent the same IPv6 address (example adapted from [http://tools.ietf.org/html/rfc5952](http://tools.ietf.org/html/rfc5952) ):
-
-```
-2001:db8:0:0:1:0:0:1
-
- 2001:DB8:0:0:1:0:0:1
-
- 2001:0DB8:0:0:1:0:0:1
-
- 2001:db8::1:0:0:1
-
- 2001:db8::0:1:0:0:1
-
- 2001:0db8::1:0:0:1
-
- 2001:db8:0:0:1::1
-
- 2001:db8:0000:0:1::1
-
- 2001:DB8:0:0:1::1
-```
-
-The ‘`::`’ can only appear once in an address.
-
-When a Listen stanza uses an IPv6 address, you are required to enclose the IPv6 address in square brackets, followed by a colon and the port, with quotes around the entire address:port. For example:
-
-```
-Listen "[::]:25" {...}
-Listen "[0:0:0:0:0:0:0:0]:25" {...} # equivalent to the previous entry
-Listen "[fd82:7796:815b:af9d:230:48ff:fef2:aa4a]:587" {...}
-```
-
-Use of square brackets is also required when defining IPv6 ECCluster_listeners and and Control_Listeners.
-
-### Note
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-
-### The `Reconfig_Message` Option
-
-
-
-Inbound SMTP connections check if the configuration has changed between messages and while handling the RSET command. If the connection discovers that it is using an old configuration, a 421 code will be returned in response to the MAIL FROM or RSET command that triggered the check, and the connection will be closed. The message that accompanies the 421 code is configurable via the `Reconfig_Message` setting in the ESMTP_Listener scope, and defaults to "4.3.2 Reconfiguration in progress".
-
-Issuing the system console command **config reload** while receiving email will trigger this message.
-
-
-## ECStream_Listener
-
-Configures the end-point(s) on which Momentum should listen for incoming ECStream connections. This list can contain any number of Unix domain sockets and/or IP:port addresses for TCP/IP service.
-
-The ECStream protocol is a bare-bones, high performance injection mechanism. It does not support any extended properties.
-
-```
-ECStream_Listener {
- Listen ":1825" {
- ECStream_Idle_Time = 300
- ECStream_Max_Batch_Size = 10000
- }
-}
-```
-
-The `ECStream_Idle_Time` is the number of seconds of inactivity before a client is disconnected. This option is valid in the ECStream_Listener and within the Listen and the Peer scopes within an ECStream_Listener. The default value is `300`. The `ECStream_Max_Batch_Size` option specifies the maximum number of ECStream messages to accept before dropping back into the scheduler. If users are having problems with the MTA becoming unresponsive when injecting messages via ECStream, it can be useful to set this to `1`. The default value for this option is `10000`.
-
-### Warning
-
-When delivering mail via ecstream, do not use the [routes](/momentum/3/3-reference/3-reference-conf-ref-routes) option. Use [gateway](/momentum/3/3-reference/3-reference-conf-ref-gateway) instead.
-
-Not all listener options are valid within the ECStream_Listener or the Listen scope within an ECStream_Listener. Find below a table of those that are valid.
-
-
-
-
-| Option/Description | Default | Scopes |
-| --- | --- | --- |
-| **[accept_queue_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.accept_queue_backlog)** – The accept queue backlog | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[concurrency](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Define number of available threads | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, threadpool, xmpp_listener |
-| **[disable_nagle_algorithm](/momentum/3/3-reference/3-reference-conf-ref-disable-nagle-algorithm)** – Disable nagle algorithm on sockets | false | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, global, http_listener, listen, xmpp_listener |
-| **[ecstream_idle_time](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener)** – The number of seconds of inactivity before a client is disconnected (ECStream only) | 300 | ecstream_listener, listen, pathway, pathway_group, peer |
-| **[ecstream_max_batch_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener)** – The maximum number of ECStream messages to accept before dropping back into the scheduler (ECStream only) | 10000 | ecstream_listener, listen, pathway, pathway_group, peer |
-| **[enable](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Enable or disable a listener scope | true | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[event_loop](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listeners.multi-core)** – Associate a listener with an eventloop | | ecstream_listener, esmtp_listener, listen |
-| **[events_per_iter](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.events_per_iter)** – Employ when using a Concurrency greater than 1 | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[file_mode](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener)** – File access rights in octal notation | 0660 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[listen](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.attributes)** *(scope)* – Specify the socket that a listener listens on | | control_listener, ecstream_listener, esmtp_listener, http_listener, msgcserver_listener, xmpp_listener |
-| **[listen_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listen_backlog)** – The listen backlog | 500 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[pathway](/momentum/3/3-reference/3-reference-conf-ref-pathway)** – A means for associating a Listener with a pathway scope | | ecstream_listener, esmtp_listener, listen, peer |
-| **[peer](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.config.acls)** *(scope)* – Create an ACL within a specific listener | | control_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[pool_name](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Associate a threadpool with a listener | | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tcp_recv_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_recv_buffer_size)** – The size of the TCP receive buffer size | 4096 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tcp_send_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_send_buffer_size)** – The size of the TCP send buffer | 4096 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tls_allow_renegotiation](/momentum/3/3-reference/conf-ref-tls-allow-renegotiation)** – Whether to enable OpenSSL TLS renegotiation | true | ecstream_listener, esmtp_listener, http_listener, listen, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_certificate](/momentum/3/3-reference/conf-ref-tls-certificate)** – Certificate to use for inbound and outbound mail | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_ciphers](/momentum/3/3-reference/conf-ref-tls-ciphers)** – Allowable ciphers for a TLS session | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_client_ca](/momentum/3/3-reference/conf-ref-tls-client-ca)** – Certificate authority for inbound mail | | ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_key](/momentum/3/3-reference/conf-ref-tls-key)** – the TLS key to use for outbound mail or inbound mail | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_protocols](/momentum/3/3-reference/conf-ref-tls-protocols)** – Allowable ciphers for TLS inbound and outbound sessions | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer |
-| **[tls_verified_peer_can_relay](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options)** – Verification that peer can relay | false | ecstream_listener, esmtp_listener, listen, pathway, pathway_group, peer |
-| **[tls_verify_mode](/momentum/3/3-reference/conf-ref-tls-verify-mode)** – Determine whether a TLS certificates is required | | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[use_ssl](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.use_ssl)** – Whether to use SSL verification | false | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-
-The `ecstream_idle_time` and `ecstream_max_batch_size` options are only valid within the ECStream scope or a listen scope within this scope. They are also the only options valid in the ECStream::Peer scope or ECStream_Listener::Listen::Peer scopes. For more information about these options see [Table 9.25, “listener options”](/momentum/3/3-reference/ecelerity-conf#table-listener-options).
-
-For information regarding IPv6 addresses and Listen stanzas, see [the section called “Listeners and IPv6 Addresses”](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ipv6).
-
-
-### Configuring the ECStream_Listener in the Web UI
-
-If you are adding an ECStream_Listener using the web UI, you must first add the `ecstream` module. You cannot configure ECStream options until the `ecstream` module has been added.
-
-If you are using the web UI and you manually change the `ecelerity.conf` file, be sure that the `ecstream` module appears before the ECStream_Listener.
-
-
-## Listener Options and Multiple Event Loops
-
-**Configuration Change. ** This feature available as of version 3.6.
-
-In version 3.6, multiple event loops are introduced. If you have purchased a multiple event loop license (the "Supercharger" license) you can associate mail delivery and reception with an event loop threadpool so that performance scales with multi-core CPUs.
-
-### Note
-
-The "Supercharger" license specifies a maximum number of event loops. When configuring an event loop, the `concurrency` option in the eventloop scope cannot exceed the licensed number of event loops. For more information see [“Configuring for Multiple Event Loops in Momentum 3.6”](/momentum/3/3-reference/conf-multi-core).
-
-A typical configuration would be as follows:
-
-```
-eventloop "pool" {
- concurrency = 10
-}
-threadpool "accept" {
- concurrency = 1
-}
-delivery_pool = "pool"
-
-esmtp_listener {
- listen ":25" {
- concurrency = 1
- pool_name = "accept"
- event_loop = "pool"
- }
-}
-```
-
-The `event_loop` option is valid in the esmtp_listener, the ecstream_listener, the http_listener and the listen scopes within those scopes. These options should not be used in the control_listener scope. You cannot currently configure an XMPP listener to use the event loop.
-
-### Note
-
-In order to use this option you must have a "Supercharger" license. For more information see [“Configuring for Multiple Event Loops in Momentum 3.6”](/momentum/3/3-reference/conf-multi-core).
-
-Changing the value of `event_loop` at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-
-## TCP/IP Listen Address Syntax
-
-```
-Esmtp_Listener {
- Listen "*:25" {}
- Listen "127.0.0.1:25" {}
- Listen "[*]:25" {}
-}
-```
-
-
-
-- *:25
-
--
-
-This configures Momentum to listen on `INADDR_ANY` on port 25.
-
-When using any listener, if you change from listening on a specific IP address to listening on the "wildcard" address (*) or the reverse, you must issue the **config reload** command twice in order to reactivate the listener. This applies to Linux systems only.
-
-
-
-- 127.0.0.1:25
-
--
-
-Listens on port 25 of the IP address `127.0.0.1`.
-
-
-
-- [*]:25
-
--
-
-Listens on port 25 of the IPv6 address.
-
-
-
-
-
-For a detailed discussion of IPv6 syntax see [the section called “Listeners and IPv6 Addresses”](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ipv6).
-
-
-## Unix Domain Listener Address Syntax
-
-```
-Control_Listener {
- Listen "/tmp/2025" {
- File_Mode = 0666
- Listen_Backlog = 500
- }
-}
-```
-
-This example shows a Listener configured on a Unix domain socket located at `/tmp/2025` with a maximum backlog of `500`.
-
- **Timeout Option. ** A '`Timeout`' option that specifies a timeout for idle control connections has been added to Control_Listeners. This option has a default value of `60` seconds and makes the `control_listener_timeout` option obsolete.
-
-
-## Listener `Enable` Option
-
-It may be necessary to temporarily disable a listener; the `enable` option provides a convenient way to express this, without completely removing the listener from the configuration file, and without having to comment out the entire listener stanza.
-
-The following stanza configures listeners on port 25 and port 587; Momentum will bind a listener to port 25 but will skip port 587 because it is marked as disabled.
-
-```
-Esmtp_Listener {
- Listen "*:25" {
- }
- Listen "*:587" {
- Enable = false
- }
-}
-```
-
-Note that the `enable` option is used to enable or disable a listener or listen scope and **not `enabled`** . The `enabled` option applies only to modules and the `enable` applies only to listen or listener stanzas.
-
-
-## Extended Listener Configuration Using Access Control Lists (ACLs)
-
-
-
-ACLs are implemented via the Peer scope, which uses the existing matching infrastructure to find the most specific CIDR match for a given configured value. Fallback works here too, allowing for some expressive configurations that are easily understood. For more information about fallback see [“Configuration Scopes and Fallback”](/momentum/3/3-reference/3-reference-ecelerity-conf-fallback).
-
-
-
-
-```
-ESMTP_Listener {
- Peer "10.0.0.0/16" {
- # general options for this netblock here
- }
- Listen ":25" {
- Peer "10.0.0.1" {
- # options for 10.0.0.1 here
- SMTP_Extensions = ( "ENHANCEDSTATUSCODES" "AUTH LOGIN" )
- }
- }
-}
-```
-
-### Note
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-Options defined in the Peer CIDR block `10.0.0.0/16` will apply to all IP addresses defined by this block unless the connecting IP address is `10.0.0.1`. In that case, anything defined in the peer scope `10.0.0.1` takes precedence.
-
-Note that SMTP extensions are defined using the `SMTP_Extensions` array. SMTP extensions are discussed in [the section called “SMTP Extensions”](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.extensions).
-
-The options that are valid within the Peer scope are listed in the following section.
-
-
-
-
-| Option/Description | Default | Scopes |
-| --- | --- | --- |
-| **[allow_ip_literal](/momentum/3/3-reference/3-reference-conf-ref-allow-ip-literal)** – Allow IP addresses in email addresses | true | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[allow_null_envelope_sender](/momentum/3/3-reference/3-reference-conf-ref-allow-null-envelope-sender)** – Allow the null envelope sender in email addresses | true | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[allow_trailing_whitespace_in_commands](/momentum/3/3-reference/3-reference-conf-ref-allow-trailing-whitespace-in-commands)** – Allow trailing white space at the end of an SMTP command | false | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[always_allow](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding)** – When set to true, authentication is considered to have succeeded, unless always_deny is set | false | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[always_deny](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding)** – If set to true, authentication is considered to have failed | false | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[authdigestmd5parameters](/momentum/3/3-reference/conf-aaa#conf.inbound-authdigest-md5)** – Configure DIGEST-MD5 authentication | | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[banner_hostname](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.banner_hostname)** – Specifies the banner hostname that will be displayed to the remote client upon connecting | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[context](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.context)** – Use to set arbitrary connection context key value pairs | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[disable_chunked](/momentum/mobile/mobile-reference/mobility-mm-7-listener)** – An option used with aggregators who do not support chunked transfer-coding (Mobile Momentum) | false | http_listener, listen, pathway, pathway_group, peer |
-| **[domain_for_unqualified_recipient_addresses](/momentum/3/3-reference/3-reference-conf-ref-domain-for-unqualified-recipient-addresses)** – Configure a domain which will be used to resolve delivery for unqualified addresses | | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[domain_for_unqualified_sender_address](/momentum/3/3-reference/3-reference-conf-ref-domain-for-unqualified-sender-address)** – Configure a domain which will be used to substitute for unqualified sender addresses | | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[ecstream_idle_time](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener)** – The number of seconds of inactivity before a client is disconnected (ECStream only) | 300 | ecstream_listener, listen, pathway, pathway_group, peer |
-| **[ecstream_max_batch_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener)** – The maximum number of ECStream messages to accept before dropping back into the scheduler (ECStream only) | 10000 | ecstream_listener, listen, pathway, pathway_group, peer |
-| **[enable_authentication](/momentum/3/3-reference/conf-ecelerity-conf#conf.inbound-mail)** – Whether or not to enable authentication | | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[enable_authorization](/momentum/3/3-reference/conf-aaa#conf.control_authz)** – Whether or not to enable authorization for console commands | | control_listener, listen, peer |
-| **[idle_time](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.idle_time)** – The number of seconds of inactivity before a client is disconnected | 0 | esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[listener_sessions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listener_sessions)** – Specifies the maximum number of concurrent sessions that can be established to a listener | 0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[log_requests_to_paniclog](/momentum/3/3-rest/rest-http-listener)** – Whether to log REST injection requests | false | http_listener, listen, pathway, pathway_group, peer |
-| **[max_message_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_message_size)** – The maximum number of bytes allowed in a single message | 0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[max_receptions_per_connection](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_receptions_per_connection)** – The maximum number of messages allowed in a single session | 0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[max_recipients_per_connection](/momentum/3/3-reference/conf-ref-max-recipients-per-connection)** – The maximum number of recipients to send on a connection | 0 | binding, binding_group, domain, esmtp_listener, global, listen, peer |
-| **[max_recipients_per_message](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_recipients_per_message)** – The maximum number of recipients allowed in a message | 0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[max_request_size](/momentum/3/3-rest/rest-http-listener)** – Limit the size of an HTTP request | | http_listener, listen, pathway, pathway_group, peer |
-| **[mcmt_reception](/momentum/mobile/mobile-reference/mm-7-mcmt-reception)** – Configure a listener to accept the Multi-Channel Message Type (Mobile Momentum) | passthru | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[open_relay](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.open_relay)** – Whether the MTA is an open relay or not | false | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[pathway](/momentum/3/3-reference/3-reference-conf-ref-pathway)** – A means for associating a Listener with a pathway scope | | ecstream_listener, esmtp_listener, listen, peer |
-| **[received_hostname](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.received_hostname)** – The hostname that is placed in the received headers | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[relay_for_sending_domains](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.relay_for_sending_domains)** – Domains that may use the MTA as a relay | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[relay_hosts](/momentum/3/3-reference/3-reference-conf-ref-relay-hosts)** – Configure the list of hosts for which Momentum relays mail | | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[require_ehlo](/momentum/3/3-reference/3-reference-conf-ref-require-ehlo)** – Reject mail from clients that do not say HELO | false | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[service_sessions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.service_sessions)** – The maximum number of concurrent sessions that can be established to all listeners | 0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[smtp_extensions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.extensions)** – Array of SMTP extensions | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[starttls_injection_policy](/momentum/3/3-reference/conf-ref-starttls-injection-policy)** – Protect against SMTP injections prior to TLS | reject | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[static_banner](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.static_banner)** – The banner that is displayed to the remote client | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[tls_allow_renegotiation](/momentum/3/3-reference/conf-ref-tls-allow-renegotiation)** – Whether to enable OpenSSL TLS renegotiation | true | ecstream_listener, esmtp_listener, http_listener, listen, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_certificate](/momentum/3/3-reference/conf-ref-tls-certificate)** – Certificate to use for inbound and outbound mail | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_ciphers](/momentum/3/3-reference/conf-ref-tls-ciphers)** – Allowable ciphers for a TLS session | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_client_ca](/momentum/3/3-reference/conf-ref-tls-client-ca)** – Certificate authority for inbound mail | | ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_key](/momentum/3/3-reference/conf-ref-tls-key)** – the TLS key to use for outbound mail or inbound mail | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_protocols](/momentum/3/3-reference/conf-ref-tls-protocols)** – Allowable ciphers for TLS inbound and outbound sessions | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer |
-| **[tls_verified_peer_can_relay](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options)** – Verification that peer can relay | false | ecstream_listener, esmtp_listener, listen, pathway, pathway_group, peer |
-| **[tls_verified_peer_is_authorized](/momentum/3/3-rest/rest-http-listener)** – Mark requests that use a verified SSL Client certificate as being authorized | false | http_listener, listen, pathway, peer |
-| **[tls_verify_mode](/momentum/3/3-reference/conf-ref-tls-verify-mode)** – Determine whether a TLS certificates is required | | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[use_ssl](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.use_ssl)** – Whether to use SSL verification | false | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-
-
-## Listener Options
-
-The following Listener options can also appear in both the Listen and the Peer scopes.
-
-```
-ESMTP_Listener {
- Relay_Hosts = ( "127.0.0.1" )
- Listener_Sessions = 100
- Service_Sessions = 100
- Idle_Time = 100
- Max_Receptions_Per_Connection = 100
- Max_Recipients_Per_Connection = 100
- Max_Recipients_Per_Message = 100
- Max_Message_Size = 102400
- Banner_Hostname = "string"
- Received_Hostname = "string"
- Static_Banner = "string"
- Context = [
- name = value
- ]
- **# replaces boolean use of relay_for_sending_domains
- Open_Relay = false**
- Relay_For_Sending_Domains = (
- "*.foo.com"
- )
- SMTP_Extensions = ( "XCLIENT" )
- Use_SSL = false
- Allow_NULL_Envelope_Sender = true
- Domain_For_Unqualified_Sender_Address = "example.com"
- Domain_For_Unqualified_Recipient_Addresses = "example.com"
- Require_EHLO = false
- TLS_Verified_Peer_Can_Relay = true
- TLS_Certificate = "string"
- TLS_Key = "string"
- TLS_Client_CA = "string"
- TLS_Ciphers = "string"
- TLS_Verify_Mode = "string"
-}
-```
-
-These options are explained in the following:.
-
-
-
-- Listener_Sessions
-
--
-
-specifies the maximum number of concurrent sessions that can be established to this listener.
-
-
-
-- Service_Sessions
-
--
-
-specifies the maximum number of concurrent sessions that can be established to all listeners for this service (e.g. ESMTP, ECStream).
-
-
-
-- Idle_Time
-
--
-
-The number of seconds of inactivity before a client is disconnected. The default for this option is `0`. In the default `ecelerity.conf` file this option is given a value of `300`. This is the recommended value.
-
-
-
-- Max_Receptions_Per_Connection
-
--
-
-The maximum number of messages allowed in a single session, after which a 421 error will be returned.
-
-
-
-- Max_Recipients_Per_Connection
-
--
-
-The maximum number of recipients allowed in a single session, after which a 421 error will be returned.
-
-
-
-- Max_Recipients_Per_Message
-
--
-
-The maximum number of recipients allowed in a message, after which a 421 error will be returned.
-
-
-
-- Max_Message_Size
-
--
-
-The maximum number of bytes allowed in a single message before a "resources exhausted" message is returned to the client.
-
-
-
-- Banner_Hostname
-
--
-
-Specifies the banner hostname that will be displayed to the remote client upon connecting. This is specific to the ESMTP service.
-
-
-
-- Static_Banner
-
--
-
-Specifies the entire banner that will be displayed to the remote client upon connecting. You must include 220 as the beginning of your replacement string. Example replacement: `220 my.mail.server ESMTP`
-
-
-
-- Context
-
--
-
-Provides a mechanism to set arbitrary connection context key value pairs. The connection context is visible to all validation modules, the Sieve infrastructure and scriptlets. It allows the efficient assignment of metadata to connections based on the listener and arbitrary ACLs. See also [the section called “Bypassing Validation Modules”](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.config.bypass) and [“Setting Context Based on Connecting IP”](/momentum/3/3-reference/policy-context-based-on-ip).
-
-
-
-- Relay_For_Sending_Domains
-
--
-
-Provides a mechanism for finer control over SMTP relaying. If specified with no parameters, it allows unrestricted use of the instance as an SMTP relay (a.k.a. open relay) from the IP ACL that was matched.
-
-If parameters of the form `"domainname" "other_domainname"` are specified, then relaying will be allowed from that IP ACL if the sender domain matches one of the specified domain names. You can also use wildcards to specify a series of domain names, for example, `"*.foo.com"`. The Relay_Hosts options will override any restrictions enacted by this option for the IP addresses specified in Relay_Hosts.
-
-
-
-- Open_Relay
-
--
-
-In version 3.x the *boolean* use of `relay_for_sending_domains` has been replaced by `Open_Relay`. In version 2.2 the boolean use is simply a line that says "relay_for_sending_domains" with no equals sign or dictionary following it. For more information see [Relay_For_Sending_Domains](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.relay_for_sending_domains) .
-
-### Note
-
-It is strongly recommended that this option be set to `false`. Otherwise the MTA could be used by spammers as an open relay.
-
-
-
-- Received_Hostname
-
--
-
-This is the hostname that will be placed in the received headers that are added to the messages as it transits Momentum.
-
-
-
-- SMTP_Extensions
-
--
-
-Use this array to include desired SMTP extensions. SMTP extension are discussed in [the section called “SMTP Extensions”](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.extensions).
-
-
-
-- TLS_Certificate
-
--
-
-Specifies the path to the certificate file. See also [tls_certificate](/momentum/3/3-reference/conf-ref-tls-certificate).
-
-
-
-- TLS_Key
-
--
-
-Specifies the path to the key that matches the certificate file.
-
-
-
-- TLS_Client_CA
-
--
-
-Specifies the path to the cabundle that specifies the list of allowed certificate issuers to use when verifying a client that presents a certificate. See also [tls_client_ca](/momentum/3/3-reference/conf-ref-tls-client-ca).
-
-
-
-- TLS_Ciphers
-
--
-
-Specifies which ciphers to use. The list is a standard OpenSSL cipher list, as described in `ciphers` in the OpenSSL documentation. See also [tls_ciphers](/momentum/3/3-reference/conf-ref-tls-ciphers).
-
-
-
-- TLS_Verify_Mode
-
--
-
-Set the TLS verify mode string. The `TLS_Verify_Mode` option can be set to `require` or `none`. When set to `none`, if the SMTP client presents a certificate, it is ignored. When set to `require`, the SMTP client must present a certificate. When set to anything else, the client certificate will be verified if it is presented. By default no certificate is required. See also [tls_verify_mode](/momentum/3/3-reference/conf-ref-tls-verify-mode).
-
-
-
-- accept_queue_backlog
-
--
-
-The accept queue backlog. Its default value is `0`. This option is valid in the control and ESMTP listener and the listen scope but not in the Peer scope.
-
-
-
-- listen_backlog
-
--
-
-The listen backlog. The default value for this option is `500`. This option is valid in the control and ESMTP Listener and the Listen scope but not in the Peer scope. In version 2.2 this option did not exist but you could specify the listen backlog as a number immediately following the listener IP/port combination.
-
-
-
-- events_per_iter
-
--
-
-events_per_iter may be used when using a concurrency greater than 1 (a threaded accept). When running in this mode, `accept()` is called on a secondary thread (specified by the Pool_Name) and the accepted connection put on a queue to be dispatched from the main thread. events_per_iter limits the number of these items that can be dispatched in a single scheduler iteration. If unspecified, or less than 1, then events_per_iter will be treated as though it was set to 1.The default value for this option is `0`. This option is not applicable to the Peer scope.
-
-
-
-- use_ssl
-
--
-
-Whether or not to use SSL. The default value for this option is `false`. This option is not valid in the control listener scope.
-
-
-
-- tcp_send_buffer_size
-
--
-
-This option sets the TCP send buffer size. Its default value is `4096`. This option is valid in the control and ESMTP listener and the listen scopes but not in the Peer scope.
-
-**Configuration Change. ** As of version 3.6, when this option is set to `0`, the operating system automatically manages the buffer size. Also as of version 3.6, the default value for this option within the HTTP_Listener scope is 32768.
-
-
-
-- tcp_recv_buffer_size
-
--
-
-This option sets the TCP receive buffer size. Its default value is `4096`. This option is valid in the control and ESMTP listener and the listen scopes but not in the Peer scope.
-
-**Configuration Change. ** As of version 3.6, when this option is set to `0`, the operating system automatically manages the buffer size. Also as of version 3.6, the default value for this option within the HTTP_Listener scope is 32768.
-
-
-
-
-
-If client certificate verification fails, the SMTP session does not terminate. The TLS status is stored in pre-defined context validation variables so it is possible to drive TLS policy from policy scripts. You can use this to reject messages when client verification failed. For more information regarding the TLS-related context variables see [*Validation Context Variables*](/momentum/3/3-reference/3-reference-policy-context-variables) .
-
-A complete list of the options that can be used within the listener scopes follows:
-
-
-
-
-| Option/Description | Default | Scopes |
-| --- | --- | --- |
-| **[accept_queue_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.accept_queue_backlog)** – The accept queue backlog | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[allow_ip_literal](/momentum/3/3-reference/3-reference-conf-ref-allow-ip-literal)** – Allow IP addresses in email addresses | true | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[allow_null_envelope_sender](/momentum/3/3-reference/3-reference-conf-ref-allow-null-envelope-sender)** – Allow the null envelope sender in email addresses | true | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[allow_trailing_whitespace_in_commands](/momentum/3/3-reference/3-reference-conf-ref-allow-trailing-whitespace-in-commands)** – Allow trailing white space at the end of an SMTP command | false | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[always_allow](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding)** – When set to true, authentication is considered to have succeeded, unless always_deny is set | false | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[always_deny](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding)** – If set to true, authentication is considered to have failed | false | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[authcrammd5parameters](/momentum/3/3-reference/conf-aaa#conf.inbound-auth.cram-md5)** – Configure CRAM-MD5 authentication | | control_listener, esmtp_listener, listen, pathway, pathway_group |
-| **[authdigestmd5parameters](/momentum/3/3-reference/conf-aaa#conf.inbound-authdigest-md5)** – Configure DIGEST-MD5 authentication | | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[authloginparameters](/momentum/3/3-reference/conf-aaa#conf.control_authen.clear.text)** – Configure clear text login authentication | | control_listener, esmtp_listener, listen, pathway, pathway_group |
-| **[authorizationparameters](/momentum/3/3-reference/conf-aaa#conf.control_authz.ecauth)** – AuthorizationParameters dictionary points to authorization information | | control_listener, esmtp_listener, listen |
-| **[authplainparameters](/momentum/3/3-reference/conf-aaa#conf.inbound-auth.plain.text)** – Configure plain text login authentication | | esmtp_listener, http_listener, listen, pathway, pathway_group, xmpp_listener |
-| **[banner_hostname](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.banner_hostname)** – Specifies the banner hostname that will be displayed to the remote client upon connecting | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[concurrency](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Define number of available threads | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, threadpool, xmpp_listener |
-| **[context](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.context)** – Use to set arbitrary connection context key value pairs | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[disable_chunked](/momentum/mobile/mobile-reference/mobility-mm-7-listener)** – An option used with aggregators who do not support chunked transfer-coding (Mobile Momentum) | false | http_listener, listen, pathway, pathway_group, peer |
-| **[disable_nagle_algorithm](/momentum/3/3-reference/3-reference-conf-ref-disable-nagle-algorithm)** – Disable nagle algorithm on sockets | false | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, global, http_listener, listen, xmpp_listener |
-| **[domain_for_unqualified_recipient_addresses](/momentum/3/3-reference/3-reference-conf-ref-domain-for-unqualified-recipient-addresses)** – Configure a domain which will be used to resolve delivery for unqualified addresses | | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[domain_for_unqualified_sender_address](/momentum/3/3-reference/3-reference-conf-ref-domain-for-unqualified-sender-address)** – Configure a domain which will be used to substitute for unqualified sender addresses | | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[ecstream_idle_time](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener)** – The number of seconds of inactivity before a client is disconnected (ECStream only) | 300 | ecstream_listener, listen, pathway, pathway_group, peer |
-| **[ecstream_max_batch_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener)** – The maximum number of ECStream messages to accept before dropping back into the scheduler (ECStream only) | 10000 | ecstream_listener, listen, pathway, pathway_group, peer |
-| **[enable](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Enable or disable a listener scope | true | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[enable_authentication](/momentum/3/3-reference/conf-ecelerity-conf#conf.inbound-mail)** – Whether or not to enable authentication | | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[event_loop](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listeners.multi-core)** – Associate a listener with an eventloop | | ecstream_listener, esmtp_listener, listen |
-| **[events_per_iter](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.events_per_iter)** – Employ when using a Concurrency greater than 1 | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[file_mode](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener)** – File access rights in octal notation | 0660 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[idle_time](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.idle_time)** – The number of seconds of inactivity before a client is disconnected | 0 | esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[listen](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.attributes)** – Specify the socket that a listener listens on | | control_listener, ecstream_listener, esmtp_listener, http_listener, msgcserver_listener, xmpp_listener |
-| **[listen_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listen_backlog)** – The listen backlog | 500 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[listener_sessions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listener_sessions)** – Specifies the maximum number of concurrent sessions that can be established to a listener | 0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[log_requests_to_paniclog](/momentum/3/3-rest/rest-http-listener)** – Whether to log REST injection requests | false | http_listener, listen, pathway, pathway_group, peer |
-| **[max_message_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_message_size)** – The maximum number of bytes allowed in a single message | 0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[max_receptions_per_connection](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_receptions_per_connection)** – The maximum number of messages allowed in a single session | 0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[max_recipients_per_connection](/momentum/3/3-reference/conf-ref-max-recipients-per-connection)** – The maximum number of recipients to send on a connection | 0 | binding, binding_group, domain, esmtp_listener, global, listen, peer |
-| **[max_recipients_per_message](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_recipients_per_message)** – The maximum number of recipients allowed in a message | 0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[max_request_size](/momentum/3/3-rest/rest-http-listener)** – Limit the size of an HTTP request | | http_listener, listen, pathway, pathway_group, peer |
-| **[mcmt_reception](/momentum/mobile/mobile-reference/mm-7-mcmt-reception)** – Configure a listener to accept the Multi-Channel Message Type (Mobile Momentum) | passthru | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[open_relay](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.open_relay)** – Whether the MTA is an open relay or not | false | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[pathway](/momentum/3/3-reference/3-reference-conf-ref-pathway)** – A means for associating a Listener with a pathway scope | | ecstream_listener, esmtp_listener, listen, peer |
-| **[peer](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.config.acls)** – Create an ACL within a specific listener | | control_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[pool_name](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Associate a threadpool with a listener | | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[received_hostname](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.received_hostname)** – The hostname that is placed in the received headers | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[reconfig_message](/momentum/3/3-reference/ecelerity-conf#reconfig_message)** – The message if the configuration has changed | 4.3.2 Reconfiguration in progress | esmtp_listener |
-| **[relay_for_sending_domains](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.relay_for_sending_domains)** – Domains that may use the MTA as a relay | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[relay_hosts](/momentum/3/3-reference/3-reference-conf-ref-relay-hosts)** – Configure the list of hosts for which Momentum relays mail | | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[require_ehlo](/momentum/3/3-reference/3-reference-conf-ref-require-ehlo)** – Reject mail from clients that do not say HELO | false | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| **[service_sessions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.service_sessions)** – The maximum number of concurrent sessions that can be established to all listeners | 0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[smtp_extensions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.extensions)** – Array of SMTP extensions | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[starttls_injection_policy](/momentum/3/3-reference/conf-ref-starttls-injection-policy)** – Protect against SMTP injections prior to TLS | reject | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[static_banner](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.static_banner)** – The banner that is displayed to the remote client | | esmtp_listener, listen, pathway, pathway_group, peer |
-| **[tcp_recv_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_recv_buffer_size)** – The size of the TCP receive buffer size | 4096 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tcp_send_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_send_buffer_size)** – The size of the TCP send buffer | 4096 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tls_allow_renegotiation](/momentum/3/3-reference/conf-ref-tls-allow-renegotiation)** – Whether to enable OpenSSL TLS renegotiation | true | ecstream_listener, esmtp_listener, http_listener, listen, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_certificate](/momentum/3/3-reference/conf-ref-tls-certificate)** – Certificate to use for inbound and outbound mail | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_ciphers](/momentum/3/3-reference/conf-ref-tls-ciphers)** – Allowable ciphers for a TLS session | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_client_ca](/momentum/3/3-reference/conf-ref-tls-client-ca)** – Certificate authority for inbound mail | | ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_key](/momentum/3/3-reference/conf-ref-tls-key)** – the TLS key to use for outbound mail or inbound mail | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_protocols](/momentum/3/3-reference/conf-ref-tls-protocols)** – Allowable ciphers for TLS inbound and outbound sessions | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer |
-| **[tls_verified_peer_can_relay](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options)** – Verification that peer can relay | false | ecstream_listener, esmtp_listener, listen, pathway, pathway_group, peer |
-| **[tls_verified_peer_is_authorized](/momentum/3/3-rest/rest-http-listener)** – Mark requests that use a verified SSL Client certificate as being authorized | false | http_listener, listen, pathway, peer |
-| **[tls_verify_mode](/momentum/3/3-reference/conf-ref-tls-verify-mode)** – Determine whether a TLS certificates is required | | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[use_ssl](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.use_ssl)** – Whether to use SSL verification | false | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-
-
-## SMTP Extensions
-
-
-### XCLIENT Extension for SMTP
-
-Implements the receiving side of an XCLIENT capable interaction. XCLIENT allows trusted senders to alter the connecting IP address and other connection-level identifiers to appear to be someone they are not. This is used for internally trusted re-mailing. More information on XCLIENT can be found at [http://www.postfix.org/XCLIENT_README.html](http://www.postfix.org/XCLIENT_README.html) .
-
-Advertise support for the Enhanced-Status-Codes extension as defined in RFC 2034\. `ENHANCEDSTATUSCODE` is the EHLO keyword value associated with this extension. This capability makes reporting of success and errors more precise.
-
-
-### XDUMPCONTEXT Extension for SMTP
-
-Enables the dumping of connection and message contexts during an SMTP conversation via an XDUMPCONTEXT command. This is mainly useful for debugging.
-
-```
-% telnet 10.80.116.84 25
-Trying 10.80.116.84...
-Connected to ecbuild-14.int.omniti.net (10.80.116.84).
-Escape character is '^]'.
-220 ecbuild-14 ESMTP ecelerity HEAD r(9610M) Wed, 08 Mar 2006 16:21:51 -0500
-ehlo there
-250-ecbuild-14 says EHLO to 10.80.116.73
-250-PIPELINING
-250-XDUMPCONTEXT
-250-8BITMIME
-250-AUTH=LOGIN
-250-AUTH LOGIN
-250 STARTTLS
-XDUMPCONTEXT
-250-[connection] ehlo_domain there
-250-[connection] ehlo_string ehlo there
-250 XDUMPCONTEXT complete
-```
-
-### XREMOTEIP Extension for SMTP
-
-This extension enables a connecting client to change the perceived IP address from which it connected. This is useful when the Momentum instance is deployed behind a trusted SMTP gateway. If enabled, then the remote client may, at anytime, present **XREMOTEIP *`IP_address`*** and Momentum will alter all identifying information to appear as if the client originally connected from the provided IP address.
-
-
-### XSETCONTEXT Extension for SMTP
-
-XSETCONTEXT lets a client set name/value pairs in the connection level validation context. The extension takes a series of RFC1891 encoded parameters; each name=value pair sets the connection level validation context key "name" to value "value", overriding whatever other value was previously set (if any).
-
-Since the extension can set arbitrary items in the validation context, it should be considered a trusted extension and should not be enabled for public Internet facing listeners, because there is a risk that an attacker can manipulate their way through a policy script. This also holds true for XCLIENT.
-
-Set a name/value pair in the folowing way:
-
-`XSETCONTEXT option1=value1 option2=value2`
-### ALWAYS-ALLOW Property
-
-If present, the connection will succeed and will automatically be authenticated as the `anonymous` user.
-
-
-## ESMTP_Listener and Authentication
-
-
-### CRAM-MD5 Authentication
-
-Implements the CRAM-MD5 authentication mechanism specified in RFC 2195\. A "uri" parameter is required specifying which uri to use for authentication. As the CRAM-MD5 protocol does not make use of any secure precalculated values, the passwords stored in the file (if it is a `file://` uri) must be stored in clear text.
-
-To advertise this auth mechanism over SMTP, the "extension = AUTH" and "extension_argument = CRAM-MD5" must be specified.
-
-
-### DIGEST-MD5 Authentication
-
-Implements the DIGEST-MD5 authentication mechanism specified in RFC 2831\. A "uri" parameter is required specifying which uri to use for authentication. DIGEST-MD5 supports secure precomputed values, so the passwords may be stored "hashed" or in clear text. By default, passwords returned from the provided uri should be hashed. If the parameter "stored_cleartext" is set to "true", the passwords will be expected in clear text and the hash will be computed internally before matching.
-
-DIGEST-MD5 authenticates users within a given realm. This realm can be specified by adding a "realm" parameter valued as needed. If left unspecified, the server hostname will be used.
-
-To advertise this auth mechanism over SMTP, the "extension = AUTH" and "extension_argument = DIGEST-MD5" must be specified.
-
-
-### Cleartext LOGIN Authentication
-
-Implements the LOGIN authentication mechanism specified in RFC 2222\. A "uri" parameter is required specifying which uri to use for authentication. As the LOGIN protocol does not make use of any secure precalculated values, the passwords stored in the file (if it is a file:// uri) must be stored in clear text.
-
-To advertise this auth mechanism over SMTP, the "extension = AUTH" and "extension_argument = LOGIN" must be specified.
-
-### Warning
-
-Note that the LOGIN mechanism both stores passwords in clear text locally and transmits the username and password credentials in clear text over the network. This authentication mechanism (as defined by standards) is in no way "secure." It should be avoided unless absolutely necessary; if you must use it, use it in conjunction with TLS.
-
-
-## Configuration Option Types
-
-The various configuration options can be broken out into specific types. All the listener-related options are found in [Table 9.25, “listener options”](/momentum/3/3-reference/ecelerity-conf#table-listener-options) and module-specific options are documented in [*Modules Reference*](/momentum/3/3-reference/3-reference-modules) . The remaining types are:
-
-* **Bounce Processing Options** – For a listing of bounce-related options see [Table 9.3, “bounce options”](/momentum/3/3-reference/options-summary#bounce-options-table).
-
-* **Compliance/Conformance Options** – E-mail is built on top of a large number of different standards documents. By default, Momentum is configured to conform to and support all of those standards. However, in some deployments, it is sometimes desirable to detour from those standards in the interests of performance and manageability.
-
- These options allow you to detour from the various standards-defined behavior. In some cases this is partially allowed by the standards, but in others, it is frowned upon. Make sure you understand the impact of such changes before deploying them. For a complete list of RFC-related options see [Table 9.13, “RFC options”](/momentum/3/3-reference/options-summary#rfc-options-table).
-
-* **Logging** – For a list of logging-related options see [Table 9.7, “logging options”](/momentum/3/3-reference/options-summary#logging-options-table).
-
-* **Miscellaneous** – A list of the remaining options is found at [Table 9.8, “misc options”](/momentum/3/3-reference/options-summary#misc-options-table).
-
-* **Module-related (in a global scope)** – There are *module-related* (as oppposed to *module-specific*) options visible in the global scope that affect specific modules. Find these options listed at [Table 9.9, “module options”](/momentum/3/3-reference/options-summary#module-options-table).
-
- Because there are so many adaptive options in the global scope, these options are listed separately at [“Adaptive Options”](/momentum/3/3-reference/options-summary#adaptive-options).
-
-* **Resource Budgeting Options** – Many options tune the resource consumption of Momentum, affecting memory consumption, disk I/O and concurrency. Find a listing of these options at [Table 9.12, “resource options”](/momentum/3/3-reference/options-summary#resource-options-table).
-
-* **Routing Options** – For a listing of routing-related options see [Table 9.14, “routing options”](/momentum/3/3-reference/options-summary#routing-options-table).
-
-* **Security Options** – For a listing of security-related options see [Table 9.15, “security options”](/momentum/3/3-reference/options-summary#security-options-table).
-
-* **SNMP Support** – Momentum features a built-in SNMP agent that exposes real-time metrics for consumption by SNMP capable consumers or by third-party SNMP Managers. Momentum's SNMP agent supports and provides information for Mail Monitoring MIB (MTA-MIB) objects as specified in RFC 2789\. Additionally, the agent provides Momentum product information objects, several system level MIB objects and extends the MTA-MIB. Momentum product objects, and MTA-MIB extensions are defined in Message System's enterprise MIB.
-
- SNMP configuration is described in detail in [SNMP](/momentum/3/3-reference/3-reference-conf-ref-snmp). For a complete list of SNMP options see [Table 9.17, “SNMP options”](/momentum/3/3-reference/options-summary#snmp-options-table).
-
-* **Timeout Configuration Options** – For the options used to configure various different timeouts see [Table 9.18, “timeout options”](/momentum/3/3-reference/options-summary#timeout-options-table).
-
-* **TLS Options** – For a listing of TLS-related options see [Table 9.19, “TLS options”](/momentum/3/3-reference/options-summary#tls-options-table).
-
-* **Traffic Shaping Options** – Many options affect the network traffic characteristics of Momentum, changing the rate at which inbound and outbound connections are accepted or initiated and the volume of traffic on those connections. Find a listing of these options at [Table 9.16, “shaping options”](/momentum/3/3-reference/options-summary#shaping-options-table).
-
-* **Virtual Hosting** – For a listing of virtual hosting related options see [Table 9.20, “virtual options”](/momentum/3/3-reference/options-summary#virtual-options-table).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/exe-commands-details.md b/content/momentum/3/3-reference/exe-commands-details.md
deleted file mode 100644
index 76decd543..000000000
--- a/content/momentum/3/3-reference/exe-commands-details.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Executable Commands"
-description: "This section details all executable commands..."
----
-
-This section details all executable commands.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/exe-summary-table.md b/content/momentum/3/3-reference/exe-summary-table.md
deleted file mode 100644
index dd8d1f2b3..000000000
--- a/content/momentum/3/3-reference/exe-summary-table.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Executable Command Summary"
-description: "This table lists all executable commands alphabetically giving a brief description Click the command name to see detailed information Table 11 1 Executable commands Command Description Class ad summary Summarize the adaptive module actions adaptive adaptivedb deprecated Create the SQ Lite database used by the adaptive module adaptive create ssl..."
----
-
-This table lists all executable commands alphabetically giving a brief description. Click the command name to see detailed information.
-
-
-
-
-| Command/Description | Class |
-| --- | --- |
-| [ad_summary](/momentum/3/3-reference/executable-ad-summary) – Summarize the adaptive module actions | adaptive |
-| [adaptivedb](/momentum/3/3-reference/executable-adaptivedb) *(deprecated)* – Create the SQLite database used by the adaptive module | adaptive |
-| [create_ssl_cert](/momentum/3/3-reference/executable-create-ssl-cert) – Create a new SSL certificate | security |
-| [credmgr](/momentum/3/3-reference/executable-credmgr) – Manipulate credentials used with the securecreds module | security |
-| [ec_admigrate](/momentum/3/3-reference/executable-ec-admigrate) – Migrate from the SQLite adaptive database to Riak | adaptive |
-| [ec_adtool](/momentum/3/3-reference/executable-ec-adtool) – Manipulate adaptive parameters in a Riak database | adaptive |
-| [ec_cmd](/momentum/3/3-reference/executable-ec-cmd) – Allow the web UI to manage nodes | service |
-| [ec_console](/momentum/3/3-reference/executable-ec-console) – Connect to Momentum to perform introspection and administration | console |
-| [ec_ctl](/momentum/3/3-reference/executable-ec-ctl) – Start, stop or restart the Momentum Application Server | service |
-| [ec_dkim_ctl](/momentum/3/3-reference/executable-ec-dkim-ctl) – Manipulate the DK/DKIM database | module |
-| [ec_dump_config](/momentum/3/3-reference/executable-ec-dump-config) – Output the ecelerity.conf file as XML | config |
-| [ec_lic](/momentum/3/3-reference/executable-ec-lic) – Fetch a new license file from Message Systems | misc |
-| [ec_log_trace](/momentum/3/3-reference/executable-ec-log-trace) – Parse Momentum log files | logs |
-| [ec_md5passwd](/momentum/3/3-reference/executable-ec-md-5-passwd) – Maintain digest password file(s) for Momentum | security |
-| [ec_migrate_conf](/momentum/3/3-reference/executable-ec-migrate-conf) – Migrate from Momentum version 2.2 to version 3.0 | config |
-| [ec_rotate](/momentum/3/3-reference/executable-ec-rotate) – Rotate Momentum ec_logger log files | logs |
-| [ec_sendmail](/momentum/3/3-reference/executable-ec-sendmail) – A sendmail(1) compatibility interface | misc |
-| [ec_show](/momentum/3/3-reference/executable-ec-show) – Show spool or message information | messages |
-| [ec_spp](/momentum/3/3-reference/executable-ec-spp) – Use this command to invoke a Sieve script | sieve |
-| [ec_uipasswd](/momentum/3/3-reference/executable-ec-uipasswd) – Manage users and groups for authentication | security |
-| [eccfg](/momentum/3/3-reference/executable-eccfg) – Subversion repository management | config |
-| [eccmgr](/momentum/3/3-reference/executable-eccmgr) – Momentum cluster manager | service |
-| [eccmgr_ctl](/momentum/3/3-reference/executable-eccmgr-ctl) – Start, stop or restart the Momentum cluster manager | service |
-| [ecconfigd](/momentum/3/3-reference/executable-ecconfigd) – The Momentum Configuration Server | service |
-| [ecconfigd_ctl](/momentum/3/3-reference/executable-ecconfigd-ctl) – Start, stop or restart the Momentum Configuration Server | service |
-| [ecelerity](/momentum/3/3-reference/executable-ecelerity) – The Momentum Application Server process | service |
-| [ecelerity_send](/momentum/3/3-reference/executable-ecelerity) – Alias for the Momentum Application Server process | service |
-| [jlog_change_endian](/momentum/3/3-reference/executable-jlog-change-endian) – Change the endianness of a jlog | logs |
-| [jlog_sanity_check](/momentum/3/3-reference/executable-jlog-sanity-check) – Validate that a jlog is free of errors | logs |
-| [jlogctl](/momentum/3/3-reference/executable-jlogctl) – Maintain and analyze jlogs | logs |
-| [lu_pull](/momentum/3/3-reference/executable-lu-pull) – Update the Live Updates database | adaptive |
-| [mbuscfg](/momentum/3/3-reference/executable-mbuscfg) *(deprecated)* – Cluster messaging bus configuration tool | service |
-| [mbusd](/momentum/3/3-reference/executable-mbusd) *(deprecated)* – Momentum cluster messaging bus | service |
-| [mbusd_monitor](/momentum/3/3-reference/executable-mbusd-monitor) *(deprecated)* – Momentum cluster messaging bus monitor | service |
-| [migrate_regex_binding2](/momentum/3/3-reference/executable-migrate-regex-binding-2) – Migrate regex_binding2 bindings from version 2.2 to version 3.0 | config |
-| [validate_config](/momentum/3/3-reference/executable-validate-config) – Check the validity of the configuration files | config |
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/images/callouts/1.png b/content/momentum/3/3-reference/images/callouts/1.png
deleted file mode 100644
index 7d473430b..000000000
Binary files a/content/momentum/3/3-reference/images/callouts/1.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/callouts/2.png b/content/momentum/3/3-reference/images/callouts/2.png
deleted file mode 100644
index 5d09341b2..000000000
Binary files a/content/momentum/3/3-reference/images/callouts/2.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/callouts/3.png b/content/momentum/3/3-reference/images/callouts/3.png
deleted file mode 100644
index ef7b70047..000000000
Binary files a/content/momentum/3/3-reference/images/callouts/3.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/callouts/4.png b/content/momentum/3/3-reference/images/callouts/4.png
deleted file mode 100644
index adb8364eb..000000000
Binary files a/content/momentum/3/3-reference/images/callouts/4.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/connagg.png b/content/momentum/3/3-reference/images/connagg.png
deleted file mode 100644
index e92f2fa8c..000000000
Binary files a/content/momentum/3/3-reference/images/connagg.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/counter.png b/content/momentum/3/3-reference/images/counter.png
deleted file mode 100644
index 1a5972a84..000000000
Binary files a/content/momentum/3/3-reference/images/counter.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/ecelerity-flow.png b/content/momentum/3/3-reference/images/ecelerity-flow.png
deleted file mode 100644
index 6b6e7339e..000000000
Binary files a/content/momentum/3/3-reference/images/ecelerity-flow.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/gr_dkeys_1.gif b/content/momentum/3/3-reference/images/gr_dkeys_1.gif
deleted file mode 100644
index 7b1dabde1..000000000
Binary files a/content/momentum/3/3-reference/images/gr_dkeys_1.gif and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/multivip.png b/content/momentum/3/3-reference/images/multivip.png
deleted file mode 100644
index 9573544c6..000000000
Binary files a/content/momentum/3/3-reference/images/multivip.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/access_snippets.png b/content/momentum/3/3-reference/images/web3/access_snippets.png
deleted file mode 100644
index 14166b650..000000000
Binary files a/content/momentum/3/3-reference/images/web3/access_snippets.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/ad_report_adjustments.jpg b/content/momentum/3/3-reference/images/web3/ad_report_adjustments.jpg
deleted file mode 100644
index d5abda1f0..000000000
Binary files a/content/momentum/3/3-reference/images/web3/ad_report_adjustments.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/ad_report_bindings.jpg b/content/momentum/3/3-reference/images/web3/ad_report_bindings.jpg
deleted file mode 100644
index 38db3095f..000000000
Binary files a/content/momentum/3/3-reference/images/web3/ad_report_bindings.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/ad_report_blackholes.jpg b/content/momentum/3/3-reference/images/web3/ad_report_blackholes.jpg
deleted file mode 100644
index 88d5ff6bd..000000000
Binary files a/content/momentum/3/3-reference/images/web3/ad_report_blackholes.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/ad_report_bounce_classes.jpg b/content/momentum/3/3-reference/images/web3/ad_report_bounce_classes.jpg
deleted file mode 100644
index 10e8392c0..000000000
Binary files a/content/momentum/3/3-reference/images/web3/ad_report_bounce_classes.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/ad_report_modified.jpg b/content/momentum/3/3-reference/images/web3/ad_report_modified.jpg
deleted file mode 100644
index a583626b8..000000000
Binary files a/content/momentum/3/3-reference/images/web3/ad_report_modified.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/ad_report_perm_failure.jpg b/content/momentum/3/3-reference/images/web3/ad_report_perm_failure.jpg
deleted file mode 100644
index 20cbe6511..000000000
Binary files a/content/momentum/3/3-reference/images/web3/ad_report_perm_failure.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/ad_report_summary.jpg b/content/momentum/3/3-reference/images/web3/ad_report_summary.jpg
deleted file mode 100644
index 6b9600468..000000000
Binary files a/content/momentum/3/3-reference/images/web3/ad_report_summary.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/ad_reports.jpg b/content/momentum/3/3-reference/images/web3/ad_reports.jpg
deleted file mode 100644
index 189f31771..000000000
Binary files a/content/momentum/3/3-reference/images/web3/ad_reports.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/add_condition.png b/content/momentum/3/3-reference/images/web3/add_condition.png
deleted file mode 100644
index e32d59154..000000000
Binary files a/content/momentum/3/3-reference/images/web3/add_condition.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/admin_options.png b/content/momentum/3/3-reference/images/web3/admin_options.png
deleted file mode 100644
index 56f68ebfa..000000000
Binary files a/content/momentum/3/3-reference/images/web3/admin_options.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/assign_groups.png b/content/momentum/3/3-reference/images/web3/assign_groups.png
deleted file mode 100644
index f96acb47f..000000000
Binary files a/content/momentum/3/3-reference/images/web3/assign_groups.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/binding_options.png b/content/momentum/3/3-reference/images/web3/binding_options.png
deleted file mode 100644
index f207befbe..000000000
Binary files a/content/momentum/3/3-reference/images/web3/binding_options.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/bounce_reports.jpg b/content/momentum/3/3-reference/images/web3/bounce_reports.jpg
deleted file mode 100644
index 6a76234fe..000000000
Binary files a/content/momentum/3/3-reference/images/web3/bounce_reports.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/cidr_results.png b/content/momentum/3/3-reference/images/web3/cidr_results.png
deleted file mode 100644
index c1404c025..000000000
Binary files a/content/momentum/3/3-reference/images/web3/cidr_results.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/condition.png b/content/momentum/3/3-reference/images/web3/condition.png
deleted file mode 100644
index 91e72de02..000000000
Binary files a/content/momentum/3/3-reference/images/web3/condition.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/config_snippets.png b/content/momentum/3/3-reference/images/web3/config_snippets.png
deleted file mode 100644
index 1b4da8cc5..000000000
Binary files a/content/momentum/3/3-reference/images/web3/config_snippets.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/confirm.png b/content/momentum/3/3-reference/images/web3/confirm.png
deleted file mode 100644
index 1d754bab6..000000000
Binary files a/content/momentum/3/3-reference/images/web3/confirm.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/copy_config.png b/content/momentum/3/3-reference/images/web3/copy_config.png
deleted file mode 100644
index 275005b6d..000000000
Binary files a/content/momentum/3/3-reference/images/web3/copy_config.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/custom_code.png b/content/momentum/3/3-reference/images/web3/custom_code.png
deleted file mode 100644
index edf202a29..000000000
Binary files a/content/momentum/3/3-reference/images/web3/custom_code.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/custom_reports.jpg b/content/momentum/3/3-reference/images/web3/custom_reports.jpg
deleted file mode 100644
index c3c12c1c7..000000000
Binary files a/content/momentum/3/3-reference/images/web3/custom_reports.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/dash_graphs.png b/content/momentum/3/3-reference/images/web3/dash_graphs.png
deleted file mode 100644
index 993b4cf98..000000000
Binary files a/content/momentum/3/3-reference/images/web3/dash_graphs.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/dash_time.png b/content/momentum/3/3-reference/images/web3/dash_time.png
deleted file mode 100644
index b7ebb5dff..000000000
Binary files a/content/momentum/3/3-reference/images/web3/dash_time.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/dashboard_stats.png b/content/momentum/3/3-reference/images/web3/dashboard_stats.png
deleted file mode 100644
index b4a747ed5..000000000
Binary files a/content/momentum/3/3-reference/images/web3/dashboard_stats.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/deliveries_receptions.jpg b/content/momentum/3/3-reference/images/web3/deliveries_receptions.jpg
deleted file mode 100644
index b3a77eadb..000000000
Binary files a/content/momentum/3/3-reference/images/web3/deliveries_receptions.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/delivery_reports.png b/content/momentum/3/3-reference/images/web3/delivery_reports.png
deleted file mode 100644
index c2aedda03..000000000
Binary files a/content/momentum/3/3-reference/images/web3/delivery_reports.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/domain_queues.png b/content/momentum/3/3-reference/images/web3/domain_queues.png
deleted file mode 100644
index 5ec75c51c..000000000
Binary files a/content/momentum/3/3-reference/images/web3/domain_queues.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/domain_reports.png b/content/momentum/3/3-reference/images/web3/domain_reports.png
deleted file mode 100644
index f22acbc36..000000000
Binary files a/content/momentum/3/3-reference/images/web3/domain_reports.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/email_alert.png b/content/momentum/3/3-reference/images/web3/email_alert.png
deleted file mode 100644
index 801828750..000000000
Binary files a/content/momentum/3/3-reference/images/web3/email_alert.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/fallback_value.png b/content/momentum/3/3-reference/images/web3/fallback_value.png
deleted file mode 100644
index 4a05ab59f..000000000
Binary files a/content/momentum/3/3-reference/images/web3/fallback_value.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/filter.png b/content/momentum/3/3-reference/images/web3/filter.png
deleted file mode 100644
index ea378dc3d..000000000
Binary files a/content/momentum/3/3-reference/images/web3/filter.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/global_options.png b/content/momentum/3/3-reference/images/web3/global_options.png
deleted file mode 100644
index c851f12c8..000000000
Binary files a/content/momentum/3/3-reference/images/web3/global_options.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/if_statement.png b/content/momentum/3/3-reference/images/web3/if_statement.png
deleted file mode 100644
index fe2f65a63..000000000
Binary files a/content/momentum/3/3-reference/images/web3/if_statement.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/listener.png b/content/momentum/3/3-reference/images/web3/listener.png
deleted file mode 100644
index e60cb7fef..000000000
Binary files a/content/momentum/3/3-reference/images/web3/listener.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/long_short_codes.jpg b/content/momentum/3/3-reference/images/web3/long_short_codes.jpg
deleted file mode 100644
index 64e3c0e95..000000000
Binary files a/content/momentum/3/3-reference/images/web3/long_short_codes.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/mobile_latency.jpg b/content/momentum/3/3-reference/images/web3/mobile_latency.jpg
deleted file mode 100644
index da4dc30a0..000000000
Binary files a/content/momentum/3/3-reference/images/web3/mobile_latency.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/module_options.png b/content/momentum/3/3-reference/images/web3/module_options.png
deleted file mode 100644
index f57963b3b..000000000
Binary files a/content/momentum/3/3-reference/images/web3/module_options.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/new_module.png b/content/momentum/3/3-reference/images/web3/new_module.png
deleted file mode 100644
index 248e589a5..000000000
Binary files a/content/momentum/3/3-reference/images/web3/new_module.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/overview.png b/content/momentum/3/3-reference/images/web3/overview.png
deleted file mode 100644
index 1d4a0a6d7..000000000
Binary files a/content/momentum/3/3-reference/images/web3/overview.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/paths.jpg b/content/momentum/3/3-reference/images/web3/paths.jpg
deleted file mode 100644
index 12e470c16..000000000
Binary files a/content/momentum/3/3-reference/images/web3/paths.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/pcre.png b/content/momentum/3/3-reference/images/web3/pcre.png
deleted file mode 100644
index a7b04f1df..000000000
Binary files a/content/momentum/3/3-reference/images/web3/pcre.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/policy_config_editor.png b/content/momentum/3/3-reference/images/web3/policy_config_editor.png
deleted file mode 100644
index 0e6bf35ee..000000000
Binary files a/content/momentum/3/3-reference/images/web3/policy_config_editor.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/queues_detail.png b/content/momentum/3/3-reference/images/web3/queues_detail.png
deleted file mode 100644
index d480bea1b..000000000
Binary files a/content/momentum/3/3-reference/images/web3/queues_detail.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/rejection_actions.png b/content/momentum/3/3-reference/images/web3/rejection_actions.png
deleted file mode 100644
index ef8bfd219..000000000
Binary files a/content/momentum/3/3-reference/images/web3/rejection_actions.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/rejection_condition.png b/content/momentum/3/3-reference/images/web3/rejection_condition.png
deleted file mode 100644
index 49138d957..000000000
Binary files a/content/momentum/3/3-reference/images/web3/rejection_condition.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/rejection_report.png b/content/momentum/3/3-reference/images/web3/rejection_report.png
deleted file mode 100644
index 4982090cc..000000000
Binary files a/content/momentum/3/3-reference/images/web3/rejection_report.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/report_data.jpg b/content/momentum/3/3-reference/images/web3/report_data.jpg
deleted file mode 100644
index c4cf196ac..000000000
Binary files a/content/momentum/3/3-reference/images/web3/report_data.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/report_parameters.jpg b/content/momentum/3/3-reference/images/web3/report_parameters.jpg
deleted file mode 100644
index 8b782149a..000000000
Binary files a/content/momentum/3/3-reference/images/web3/report_parameters.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/reporting_role.png b/content/momentum/3/3-reference/images/web3/reporting_role.png
deleted file mode 100644
index 269dc3d97..000000000
Binary files a/content/momentum/3/3-reference/images/web3/reporting_role.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/sample_script.png b/content/momentum/3/3-reference/images/web3/sample_script.png
deleted file mode 100644
index bd7c41f56..000000000
Binary files a/content/momentum/3/3-reference/images/web3/sample_script.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/script_scope.png b/content/momentum/3/3-reference/images/web3/script_scope.png
deleted file mode 100644
index d04a164c8..000000000
Binary files a/content/momentum/3/3-reference/images/web3/script_scope.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/selected_filters.png b/content/momentum/3/3-reference/images/web3/selected_filters.png
deleted file mode 100644
index ea29b6630..000000000
Binary files a/content/momentum/3/3-reference/images/web3/selected_filters.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/snmp_alert.png b/content/momentum/3/3-reference/images/web3/snmp_alert.png
deleted file mode 100644
index 6d5e1de90..000000000
Binary files a/content/momentum/3/3-reference/images/web3/snmp_alert.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/status.jpg b/content/momentum/3/3-reference/images/web3/status.jpg
deleted file mode 100644
index d03439461..000000000
Binary files a/content/momentum/3/3-reference/images/web3/status.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/summary_stats.jpg b/content/momentum/3/3-reference/images/web3/summary_stats.jpg
deleted file mode 100644
index 46f8e71cc..000000000
Binary files a/content/momentum/3/3-reference/images/web3/summary_stats.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/transient_failures.jpg b/content/momentum/3/3-reference/images/web3/transient_failures.jpg
deleted file mode 100644
index 49afe6fee..000000000
Binary files a/content/momentum/3/3-reference/images/web3/transient_failures.jpg and /dev/null differ
diff --git a/content/momentum/3/3-reference/images/web3/users.png b/content/momentum/3/3-reference/images/web3/users.png
deleted file mode 100644
index 696094529..000000000
Binary files a/content/momentum/3/3-reference/images/web3/users.png and /dev/null differ
diff --git a/content/momentum/3/3-reference/index.md b/content/momentum/3/3-reference/index.md
deleted file mode 100644
index 03c8e9529..000000000
--- a/content/momentum/3/3-reference/index.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Category File"
-type: "custom"
-name: "
- Momentum Reference Manual (3.x) "
-description: "Reference for Version 3 x Message Systems Inc Copyright 2001 2014 Message Systems Inc Confidential Proprietary Abstract This book documents Message Systems Momentum Document generated on 2018 Aug 28 Document revision 0 Table of Contents Preface I Configuration Guide II Command Reference III Appendices Glossary List of Figures List of..."
----
-
-## Reference for Version 3.x
-
-### Message Systems, Inc.
-
-Copyright © 2001-2014 Message Systems, Inc.
-
-
-
-Confidential & Proprietary.
-
-**Abstract**
-
-This book documents Message Systems Momentum.
-
-Document generated on: 2018-Aug-28
-
-Document revision 0
-
-* * *
-
-
diff --git a/content/momentum/3/3-reference/install-additional-packages.md b/content/momentum/3/3-reference/install-additional-packages.md
deleted file mode 100644
index 190fe93c0..000000000
--- a/content/momentum/3/3-reference/install-additional-packages.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Installing Additional Packages"
-description: "If you are installing Momentum with the mta role after entering your admin and service account password you will be asked whether you wish to install additional packages The additonal packages vary depending upon whether you are installing Momentum receiving or sending Not all packages are supported on all operating..."
----
-
-If you are installing Momentum with the `mta` role, after entering your admin and service account password you will be asked whether you wish to install additional packages.
-
-### Note
-
-The additonal packages vary depending upon whether you are installing Momentum receiving or sending. Not all packages are supported on all operating systems (OS). See the specific module documentation for more information.
-
-These packages are as follows:
-
-* The Policy Tools suite – This package contains tools for receivers and requires the pcap library. This gives you passive OS fingerprinting (p0f) and the url_ripper module, needed for SURBL. For more information see [“url_ripper – URL Extraction”](/momentum/3/3-reference/3-reference-modules-url-ripper) and [Passive operating system (OS) fingerprinting](glossary#gloss-p0f "Passive operating system (OS) fingerprinting").
-
-* Commtouch content scanning – This package provides the Commtouch spam protection technology. Only install this module if you have a license from Commtouch. For more information see [“commtouch_ctasd – Commtouch_ctasd Module”](/momentum/3/3-reference/3-reference-modules-commtouch).
-
-* Cloudmark content scanning – This package provides the Cloudmark spam technology. Only install this module if you have a license from Cloudmark. For more information see [“cloudmark – Cloudmark Authority Module”](/momentum/3/3-reference/3-reference-modules-cloudmark).
-
-* Eleven eXpurgate content scanning – This package provides the eXpurgate spam technology. For more information see [“eleven – Module”](/momentum/3/3-reference/3-reference-modules-eleven).
-
-* The Image Analyzer imageanalyzer – This package is only supported for Red Hat 5 32 bit operating systems.
-
-* Symantec CSAPI Antivirus support – This package provides integration of the Symantec content scanners. Only install this module if you have a license from Symantec. For more information see [“csapi – The Content Scanning API Module”](/momentum/3/3-reference/3-reference-modules-csapi).
-
-* Symantec Brightmail Engine Integration Kit – This package is an in-process version of the Brightmail module. Only install this module if you have a license from Symantec. For more information see [“beik – BEIK Module”](/momentum/3/3-reference/3-reference-modules-beik).
-
-* Symantec Brightmail content scanning support – This package checks inbound content against a Symantec Brightmail AntiSpam content server. Only install this module if you have a license from Symantec. For more information see [“brightmail – Brightmail Module”](/momentum/3/3-reference/3-reference-modules-brightmail).
-
-* Ecelerity developer tools – You only need to install these tools if you are compiling your own extensions on the machine on which it is installed. Files related to this pacakage are fiund under the `/opt/msys/ecelerity` directory.
-
-### Live Bounce Updates
-
-**Configuration Change. ** This feature is available starting from Momentum 3.1.
-
-As of version 3.1, the installer asks if you would like to enable the Live Bounce Updates uploading functionality.
-
-Enabling Live Bounce Updates means that your unclassified bounce data is submitted to the Message Systems online update service. These bounces are then classified and included in a future Live Bounce Updates override file that is automatically downloaded. The unknown bounces sent back to Message Systems are submitted anonymously. This service requires outbound port 443.
-
-For more information about Live Bounce Updates, see [“Live Bounce Updates – Module”](/momentum/3/3-reference/3-reference-modules-live-bounce-updates).
-
-As of version 3.1, the Live Bounce Updates service is provided free of charge with your support agreement. Previously this service was a paid subscription service.
-
-For your convenience, the question asked during installation is reproduced below:
-
-```
-Live Bounce Updates
- ===================
-
- Message Systems Live Bounce Updates ensures you automatically receive the
- latest bounce classification rules as quickly as possible. The Live Bounce
- Update rule set works in conjunction with any existing user bounce override
- rules, with user rules taking precedence. Message Systems' support offering
- for the Momentum product includes the Live Bounce Updates service at no
- additional cost.
-
- Live Bounce Updates is enabled by default when installing Momentum 3.1 or
- higher when bounce_logger is enabled in ecelerity.conf.
-
- To help improve the effectiveness of the Live Bounce Update classification
- rules, you can automatically upload your anonymized bounce data to Message
- Systems. That data will be analyzed and used to update and improve our
- classification rules. For additional information on this service, or to
- change options at any time in the future, please see the online support
- documentation.
-
- Do you want to enable LBU uploading of anonymized bounce data (Requires
- outbound TCP to support.messagesystems.com on port 443)? (y,n)
-```
-
-If, after enabling Live Bounce Updates during installation, you wish to disable this service see [“Disabling Live Bounce Updates”](/momentum/3/3-reference/3-reference-modules-live-bounce-updates#modules.live.bounce.updates.disabling).
-
-### Adaptive Delivery Rule Updates
-
-**Configuration Change. ** This feature is available as of version 3.2.
-
-As of version 3.2, the installer asks if you would like to enable the Apaptive delivery update functionality.
-
-To use this server you must have Adaptive Delivery enabled in your license. To enable this service, answer `y` to the following question:
-
-```
-Adaptive Delivery Rules Update
-==============================
-
-If you have Adaptive Delivery enabled in your license, you can set the
-server to automatically download Rule updates. Do you want to enable
-Adaptive Rules downloading (Requires outbound TCP to support.messagesystems.com
-on port 443)? (y,n)
-```
-
-You can also update Adaptive rules manually. To do this see [Automated Updates for the Adaptive Rules](/momentum/3/3-ad/ad-adaptive-update).
-
-To find out more about the adaptive module see [“adaptive – Adaptive Delivery”](/momentum/3/3-reference/3-reference-modules-adaptive). To disable updates after installation see [“Adaptive Rule Updates”](/momentum/3/3-reference/3-reference-modules-live-bounce-updates#modules.live.updates.adaptive).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-cluster.md b/content/momentum/3/3-reference/install-cluster.md
deleted file mode 100644
index 854df742a..000000000
--- a/content/momentum/3/3-reference/install-cluster.md
+++ /dev/null
@@ -1,120 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Installing a Cluster"
-description: "The clustering capabilities of the product enable the following features Centralized management of configuration for multiple MTA nodes Replicated redundant configuration repository with revision control Log aggregation pulls log files from MTA nodes to centralized location s on the network Replication of a variety of real time metrics to allow..."
----
-
-The clustering capabilities of the product enable the following features:
-
-* Centralized management of configuration for multiple MTA nodes
-
-* Replicated, redundant, configuration repository with revision control
-
-* Log aggregation pulls log files from MTA nodes to centralized location(s) on the network
-
-* Replication of a variety of real-time metrics to allow cluster-wide coordination for inbound and outbound traffic shaping
-
-* DuraVIP™ , our IP Failover mechanism.
-
-Before performing a clustered installation, we recommend that you read through [*Clustering*](/momentum/3/3-reference/3-reference-cluster), which discusses key concepts for clustering and goes into more detail than this section.
-
-A cluster is comprised of one or more Manager nodes and one or more MTA nodes. You must install the Manager node before installing MTA nodes. If you are installing the database role on a stand-alone machine, you must install this role before any others.
-
-### Installing the Cluster Manager
-
-The first Manager node that you install must also be provisioned with the `database` and `web` roles. If you have a more complex deployment with multiple Manager nodes, those secondary managers must not be installed with the `database` and `web` roles.
-
-To perform a cluster manager installation:
-
-1. Download and extract the installation bundle as discussed in the operating system specific installation sections.
-
-2. Run the **installer** script.
-
-3. When prompted, enter the role or roles that you intend to install on the specific machine.
-
-4. If you are installing the database role you will be prompted for a location for storing data. The default is `/var/db/msyspg`.
-
-5. If you are installing the web UI you will also be prompted for a password for the account named 'admin'.
-
- **Configuration Change. ** Prior to version 3.0.15, the web console role and the database role **must** be installed on the same machine.
-
-6. The MTA needs access to the database and to ecconfigd to manage authentication and replication. For this reason you must also provide a password for a service account. Record this password. It will be required when installing cluster nodes.
-
-7. If you are creating a subcluster, note that subcluster names must be lower case and must be one word. If you enter more than one word, the first word will be taken as the cluster name.
-
- Pay special attention to the instructions:
-
- In order to configure a cluster, you must create an `mbus.conf` file,
- to describe the nodes and manager(s) in each subcluster.
-
- A basic cluster install comprises a single subcluster (normally called
- "default") with a single manager node and one or more MTA nodes.
-
- More complex environments may have multiple subclusters to represent
- differences in location (WAN) or staging vs. production environments.
-
- Each node must belong to one and only one subcluster, but is aware of
- all the nodes across all subclusters. The manager must be a member node
- of one and only one subcluster.
-
- For a description of a subcluster see [“Subclusters”](/momentum/3/3-reference/subclusters). You will be asked for the cluster node names and then, subcluster node names
-
- **Configuration Change. ** As of version 3.4, cluster communication is handled by the msgc modules rather than by mbus so you should not create an `mbus.conf` file. For more information see [“msgc – Modules”](/momentum/3/3-reference/3-reference-modules-msgc).
-
-8. Enter node names (including the cluster manager) as prompted. The node names must be DNS-resolvable otherwise you will see the message:
-
- That hostname is not DNS resolvable: *`illegal_name`*
-9. If you are creating a subcluster, enter the subcluster node names when prompted. Any manager nodes that are part of the subcluster need to be entered too.
-
-10. When the installation completes you will be prompted to start the following services:
-
- ```
- shell> /etc/init.d/mbusd_monitor start
- shell> /etc/init.d/ecconfigd restart
- shell> /etc/init.d/eccmgr start
- shell> /etc/init.d/ecwebconsole start
- ```
-
-### Upgrading and msgc
-
-You can only upgrade to Momentum 3.4 from Momentum 3.3.
-
-As of version 3.4, cluster communication is handled by the msgc modules rather than by mbus so you do not need to use the **`mbusd_monitor`** command. For more information see [“msgc – Modules”](/momentum/3/3-reference/3-reference-modules-msgc).
-
-If you are *upgrading* to Momentum 3.4 from 3.3 and have manually changed the `mbus.conf` file after installation, you will need to manually create or edit the `msgc_server.conf` file after you upgrade. For more information see [“msgc – Modules”](/momentum/3/3-reference/3-reference-modules-msgc). You will also need to change `msgc_server.conf` manually if you are upgrading from version 3.4 to a higher version number.
-
-If you have multiple interfaces, for example, one for internal network usage (and blocked from the outside), and the other for external access (and unable to access the internal network), you should ensure that `msgc_server.conf` uses the names pointing to the correct network. The `-p` option to traceroute(8) may come in useful here.
-
-### Installing a Clustered MTA Node
-
-Clustered MTA nodes must be installed after you have brought the Manager node online. The procedure is:
-
-1. Download and extract the installation bundle as discussed in the operating system specific installation sections.
-
-2. Run the **installer** script.
-
-3. When prompted, enter `mta` for the role selection.
-
-4. Answer "y" when asked if the mta belongs to a cluster.
-
-5. Enter the hostname or the IP address of the database machine when prompted.
-
-6. Enter the password associated with the `admin` account and the service account password.
-
-7. If you have already configured the manager node and committed your configuration files, choose `yes` if you wish to automatically configure the node using the bootstrap process. To do this you will need to know the subcluster name, typically `default` and the IP address of the cluster manager.
-
- If you decline to run the bootstrap process, you cannot immediately start up the node. Before starting up the node you must run the command:
-
- shell> /opt/msys/ecelerity/bin/eccfg bootstrap --clustername *`name`* --username=admin --password=*`admin cluster_host`*
-8. When the installation completes you will be prompted to start the following services:
-
- ```
- shell> /etc/init.d/mbusd_monitor start
- shell> /etc/init.d/ecelerity start
- ```
-
- ### Note
-
- As of version 3.4, cluster communication is handled by the msgc modules rather than by mbus so you do not need to use the **`mbusd_monitor`** command. For more information see [“msgc – Modules”](/momentum/3/3-reference/3-reference-modules-msgc).
-
- Copy your license to the `/opt/msys/ecelerity/etc` directory before starting the services if you are not connected to the Internet.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-linux.md b/content/momentum/3/3-reference/install-linux.md
deleted file mode 100644
index dda040f8e..000000000
--- a/content/momentum/3/3-reference/install-linux.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Installation on Linux"
-description: "Momentum is packaged for a number of Linux distributions Choosing the correct package for your OS is critical to Momentum performing correctly as different Linux distributions utilize different versions of critical system libraries and Momentum also uses certain platform specific optimizations The installation package for Linux is distributed as a..."
----
-
-Momentum is packaged for a number of Linux distributions. Choosing the correct package for your OS is critical to Momentum performing correctly, as different Linux distributions utilize different versions of critical system libraries and Momentum also uses certain platform-specific optimizations.
-
-The installation package for Linux is distributed as a single compressed tar file, one for each supported Linux distribution. The file can be found on the Message Systems support web site, named momentum-*`type`*-bundle-*`version-platform.arch`*.tar.gz .
-
-`version` indicates the product version, `platform` the platform you're running on (for example, rhel5 for RedHat Enterprise Linux 5), and `arch` indicates the architecture. `type` indicates whether the package is for sending or receiving.
-
-To unpack and install after downloading the file, perform the following commands:
-
-**tar xzf momentum-*`type`*-bundle-*`version-platform.arch`*.tar.gz.tar.gz**
-
-**cd momentum-*`type-version`***
-
-**./installer**
-### Note
-
-For the options available with the **installer** command see [“Installer Options”](/momentum/3/3-reference/install-options).
-
-During installation the following roles are available:
-
-* `database` – data store (max 1 per deployment)
-
-* `manager` – cluster service manager for a cluster of MTAs
-
-* `mta` – for sending/receiving email
-
-* `singlenode` – shortcut for the mta, database and web roles
-
-* `web` – browser driven control panel
-
-When running the installer you will be asked a series of questions that vary depending upon the roles chosen. If you are installing the database on a separate machine, you *must* install this role first. Additionally, if you are installing a cluster configuration, the manager must be installed before the nodes.
-
-During installation a service account and an admin account are created. Be sure to record the passwords that you use for these accounts; they are required when installing different roles.
-
-At the end of the installation you will be told how to start the Momentum server. Before you do this you should read the [configuration guide](/momentum/3/3-reference/conf) and modify your `/opt/msys/ecelerity/etc/conf/default/ecelerity.conf` file appropriately.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-options.md b/content/momentum/3/3-reference/install-options.md
deleted file mode 100644
index df31527ba..000000000
--- a/content/momentum/3/3-reference/install-options.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Installer Options"
-description: "The following installation options may be used with the installer script upgrade Use the same answers as the last installation This option can only be used when upgrading within major versions for example when upgrading from 3 num to a higher version number It cannot be used for upgrading from..."
----
-
-The following installation options may be used with the installer script:
-
-* `--upgrade` – Use the same answers as the last installation. This option can only be used when upgrading within major versions, for example, when upgrading from 3.*`num`* to a higher version number. It *cannot* be used for upgrading from version 2.2 to 3.0.
-
-* `--dry-run` – Attempt the installation, but do not actually install any files.
-
-* --option-file *`/path/to/file`* – When Momentum is installed, the `/opt/msys/etc/installer/lastinstall` file is created. You can facilitate installation by pointing to a `lastinstall` file.
-
- Note that the `/opt/mys/etc/installer/lastinstall` file is used to recreate the Momentum configuration files. On upgrade, the installer will recreate the Momentum nodes that existed at the time of the last installation. Any new nodes added to a cluster after the original installation will **not** appear in the lastinstall file so will not be recreated. A warning notice will appear during installation alerting you to this fact. After an upgrade you must manually add any new nodes.
-
-* `––uninstall` – Remove all packages previously installed.
-
- This option does **not** return a machine to the state it was in prior to installation. It will remove all of the files that were added as part of each installed `msys-` package file, as well as any package-related directories that were created and are (as a result of uninstalling) now completely empty. (If you wish you can identify these directories by running **rpm -ql msys-*`package-name`*** .)
-
- Any configuration file added or changed after installation will be retained, as well as the numerous "generated" files such as the `/var/ecconfigd/repos` directory contents. The following directories (and files below these directories) are not removed:
-
- * `/opt/msys` and all files and directories below this directory
-
- * Any Momentum-related files in `/var/log` and `/var/spool`
-
- * The `/var/ecconfigd`directory and all files and directories below this directory
-
- * Any Momentum-related files in `/var/db`
-
-### Warning
-
-Reinstalling over top of an existing installation is not supported. You must manually uninstall before reinstalling. Remove the following directories:
-
-* `/opt/msys`
-
-* `/var/log/ecelerity`
-
-* `/var/ecconfigd`
-
-If the installer detects that you are reinstalling the database, you can choose to overwrite the existing database if you wish.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-os-specific.md b/content/momentum/3/3-reference/install-os-specific.md
deleted file mode 100644
index 64cdf2c22..000000000
--- a/content/momentum/3/3-reference/install-os-specific.md
+++ /dev/null
@@ -1,165 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Operating System Specific Preparation"
-description: "Additionally you may want to tune your operating system as well especially if you are running Momentum in a high throughput environment While many of the tuning options in Linux can be affected at run time we highly recommend rebooting the system after making changes to ensure that the changes..."
----
-
-Additionally you may want to tune your operating system as well, especially if you are running Momentum in a high-throughput environment.
-
-### Linux
-
-While many of the tuning options in Linux can be affected at run-time, we highly recommend rebooting the system after making changes to ensure that the changes take effect automatically upon reboot.
-
-** 1.5.1.1. Kernel Memory Options**
-
-Momentum uses system memory aggressively to reduce the amount of disk I/O it must perform while transmitting messages. This means that Momentum can consume large amounts of memory, especially if it has many messages enqueued. The Momentum memory manager makes heavy use of the mmap() system call. The default Linux limit for the maximum number of mmap segments is controlled by `vm.max_map_count` and is typically very low. `vm.max_map_count` is the maximum number of memory map areas a process may have. The hardware Memory Management Unit (MMU) allocates memory pages to the Virtual Memory Manger through a set of aliased lookup tables. This setting allows 768,000 addressable map areas to be available to the processes—about seven times the amount normally configured, but the intention is for Momentum to make maximum use of all available memory. This value needs to be raised in the `/etc/sysctl.conf` file.
-
-`vm.max_map_count = 768000`
-
-Once `vm.max_map_count` has been changed to this value, it need not be altered again.
-
-To make this setting take effect without rebooting, the following command needs to be executed:
-
-`**/sbin/sysctl -w "vm.max_map_count=768000"**`** 1.5.1.2. Required RPMs**
-
-When installing Momentum for Receiving on Red Hat 6 the complete list of required packages (beyond those installed with a stock installation) is as follows:
-
-* bzip2
-
-* cyrus-sasl (version 2.1 or higher)
-
-* expat
-
-* freetype
-
-* gmp
-
-* jre
-
-* libcap-devel
-
-* libjpeg
-
-* libpcap
-
-* libpng
-
-* openssl
-
-* zlib
-
-### Note
-
-Depending upon the options that you choose during installtion, all packages may not be required.
-
-** 1.5.1.3. PostgreSQL and Shared Memory**
-
-You may need to change the default Linux kernel settings, if, on start up, you see a message such as the following:
-
-```
-2011-09-14 17:43:39 CST::@:[2877]: FATAL: could not create shared memory
-segment: Invalid argument
-
-2011-09-14 17:43:39 CST::@:[2877]: DETAIL: Failed system call was shmget(key=1,
-size=219725824, 03600).
-
-2011-09-14 17:43:39 CST::@:[2877]: HINT: This error usually means that
-PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX
-parameter. You can either reduce the request size or reconfigure the kernel
-with larger SHMMAX. To reduce the request size (currently 219725824 bytes),
-reduce PostgreSQL's shared_buffers parameter (currently 25088) and/or its
-max_connections parameter (currently 103).
-```
-
-According to the PostgreSQL site:
-
-"The most important shared memory parameter is SHMMAX, the maximum size, in bytes, of a shared memory segment. If you get an error message from shmget like "Invalid argument", it is likely that this limit has been exceeded. The size of the required shared memory segment varies depending on several PostgreSQL configuration parameters, as shown in Table 17-2. (Any error message you might get will include the exact size of the failed allocation request.) You can, as a temporary solution, lower some of those settings to avoid the failure. While it is possible to get PostgreSQL to run with SHMMAX as small as 2 MB, you need considerably more for acceptable performance. Desirable settings are in the hundreds of megabytes to a few gigabytes."
-
-### Note
-
-For more information about configuring kernel resources for PostgreSQL see [Managing Kernel Resources](http://developer.postgresql.org/pgdocs/postgres/kernel-resources.html).
-
-On Red Hat type systems adjust the shared memory settings by changing `/etc/sysctl.conf` file. Find the `kernel.shmmax` setting as shown below:
-
-```
-...
-# Controls the maximum shared segment size, in bytes
-kernel.shmmax = 1073741824
-...
-```
-
-The PostgreSQL URL referenced above says, "For SHMMAX, the minimum required on x86 systems would be 268435456 (256 MB) and for 64-bit systems, it would be 1073741824 (1 GB)." SHMMAX needs to be a bit bigger than shared_buffers in bytes. You can determine the value of shared_buffers by executing the SQL statement: `SELECT setting,unit,current_setting(name) FROM pg_settings WHERE name='shared_buffers';`
-
-After changing `sysctl.conf,` load your changes by running the command **`sysctl -p`** .
-
-** 1.5.1.4. TCP Buffer Sizes**
-
-Momentum performs automatic tcp buffer scaling to ensure that messages it sends can be fit into a single tcp packet whenever possible. To make sure that your buffers can be grown correctly, you should set the following parameters in `/etc/sysctl.conf`
-
-```
-net.core.rmem_default = 32768
-net.core.wmem_default = 32768
-net.core.rmem_max = 262144
-net.core.wmem_max = 262144
-```
-
-These options are described below:
-
-* `net.core.rmem_default` – the default OS receive buffer size for all types of connections
-
-* `net.core.wmem_default` – the default OS send buffer size for all types of connections
-
-* `net.core.rmem_max` – the maximum OS receive buffer size for all types of connections. This is a typical tweak for high bandwidth applications particularly if using Gbit NICs.
-
-* `net.core.wmem_max` – the maximum OS send buffer size for all types of connections. This is a typical tweak for high bandwidth applications particularly if using Gbit NICs.
-
-If your messages are larger than 32 kilobytes, the numeric setting should be adjusted to a multiple of 4096 that is larger than your message size.
-
-** 1.5.1.5. File Limits**
-
-Momentum will automatically attempt to ensure that it can open enough file descriptors to handle all the socket connections and mail traffic it needs, but this ability is capped by an overall kernel parameter. Recommended settings in `/etc/sysctl.conf` are to allocate 4 to 5 times as many file descriptors as you will allow Momentum to have open connections, and to raise the system wide file descriptor limit to twice that. So, if you have Momentum's `Server_Max_Outbound_Connections` set to 50000, you would want the following tunings:
-
-`fs.file-max = 250000`
-
-This option sets the maximum number of file handles the kernel will allocate. With a setting of `250000` you can work with more simultaneous files.
-
-** 1.5.1.6. Local Port Reuse**
-
-Momentum uses a very large number of connections, and is able to establish them very quickly. This can overwhelm the operating system's local set of ports if special parameters are not used. These issues can be addressed by placing the following lines in `/etc/sysctl.conf`:
-
-```
-net.ipv4.ip_local_port_range = 5000 63000
-net.ipv4.tcp_tw_reuse = 1
-net.ipv4.tcp_tw_recycle = 1
-```
-
-These options are described below:
-
-* `net.ipv4.ip_local_port_range` – moves the local port range up to 5000-63000\. This pushes the public usable IP range above the normal internal ports to avoid conflicts.
-
-* `net.ipv4.tcp_tw_reuse` – reuse sockets in the TIME_WAIT state for new connections when it is safe from a protocol viewpoint. Setting this to `1` enables reuse of open connections, increasing efficiency.
-
-* `net.ipv4.tcp_tw_recycle` – this enables fast recycling of TIME_WAIT sockets. A setting of `1` enables the reuse of sockets without the normal wait time.
-
-You can also set `net.core.somaxconn = 1024` increasing the number of incoming connections backlog to `1024` and allowing Momentum to process more open connections.
-
-** 1.5.1.7. Disable SELinux**
-
-Some operating systems such as Red Hat make use of the Security-Enhanced Linux (SELinux) security policies.
-
-Running Momentum with SELinux enabled is not supported. Disable SELinux by editing `/etc/selinux/config` and setting `SELINUX=disabled` and then running **`setenforce 0`** .
-
-### Solaris
-
-** 1.5.2.1. Disabling Hardware IP Checksums**
-
-Certain OEM network cards (typically Broadcom) shipped with Sun x86/AMD54 servers can calculate TCP/IP checksums incorrectly for some packets, which can lead to poor performance. Normally, you would leave the checksum offloading enabled on the NIC, but if you suspect you are having problems, you can use external tools like TShark to look for checksum failures. If you are having problems, checksums can be disabled in the kernel by adding following setting to the `/etc/system` file to disable hardware TCP/IP checksums:
-
-`set ip:dohwcksum = 0`
-### Warning
-
-Do not use this option with Solaris Sparc, as it will lead to significant performance degradation on most Sparc hardware.
-
-Given the variety of different hardware combinations, disabling hardware IP checksums may require additional changes. Follow your manufacturer's recommendations.
-
-If you find that your controller returns an invalid checksum, it would also be prudent to look at other network parameters such as jumbo frame support, switch port speeds, etc. to ensure that the checksum issue is not a symptom of a larger issue.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-ports.md b/content/momentum/3/3-reference/install-ports.md
deleted file mode 100644
index 4d41749ff..000000000
--- a/content/momentum/3/3-reference/install-ports.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Ports Used by Momentum"
-description: "Depending upon the options you choose during installation and how you configure the application various ports are used by Momentum Find below a listing of the services along with the typical or default port setting Table 1 1 Momentum ports Service Port Description Required Link Adaptive Delivery Rules Update 443..."
----
-
-Depending upon the options you choose during installation and how you configure the application, various ports are used by Momentum. Find below a listing of the services along with the typical or default port setting.
-
-
-
-
-| Service | Port | Description | Required | Link |
-| --- | --- | --- | --- | --- |
-| Adaptive Delivery Rules Update | 443 | The port used for adaptive rule updates | | See [“adaptive – Adaptive Delivery”](/momentum/3/3-reference/3-reference-modules-adaptive) |
-| Antivirus engines | various | Antivirus engines connect to external daemons on specific ports | | See [“antivirus – Antivirus Modules”](/momentum/3/3-reference/3-reference-modules-antivirus) |
-| Apache | 80 | Used by the web UI | | See [*Using the Web Console*](/momentum/3/3-reference/web-3) |
-| cidr_server | 9000 | Used by the cidr_server | | See [“The `cidr_server`”](/momentum/3/3-reference/3-reference-cluster-cidr-server) |
-| cluster_listener | 4802 | Used in a cluster installation. Replaced by the ECCluster_Listener stanza as of version 3.0.15. | | See [*Clustering*](/momentum/3/3-reference/3-reference-cluster) |
-| control_listener | 2025 | Used to connect to the Momentum console | ✓ | See [“The Momentum System Console”](/momentum/3/3-reference/operations-console) |
-| Databases | various | Optional databases use their default ports | | See [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) |
-| ec_cmd | 2028 | The process that allows the web UI to manage cluster nodes | | See [ec_cmd](/momentum/3/3-reference/executable-ec-cmd) |
-| ECCluster_Listener | 4802 | Replaces `cluster_listener` as of version 3.0.15. | | See [the section called “ECCluster_Listener”](/momentum/3/3-reference/ecelerity-cluster-conf#ecelerity-cluster.conf.eccluster_listener) |
-| ECStream | 1825 | Incoming ECStream connections | | See [the section called “ECStream_Listener”](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener) |
-| Erlang (Riak) | 4369 | Riak port mapper | | See [“Riak Ports”](/momentum/3/3-reference/operations-riak#operations.riak.ports) |
-| HTTP_Listener | 8081 | The listener used by the REST injector | | See "[The Momentum REST Injector](/momentum/3/3-rest)" |
-| Live Bounce Updates | 443 | The port used to submit unclassified bounces | | See [“Live Bounce Updates – Module”](/momentum/3/3-reference/3-reference-modules-live-bounce-updates) |
-| LMTP | 2003 | The port for Local Mail Transport Protocol | | See [lmtp_port](/momentum/3/3-reference/3-reference-conf-ref-lmtp-port) |
-| MSGC | 4809 | Used for cluster communication as of version 3.4 | | See [“msgc – Modules”](/momentum/3/3-reference/3-reference-modules-msgc) |
-| PostgreSQL | 5432 | Used to authenticate users and for web UI data storage | ✓ | See [“PostgreSQL”](/momentum/3/3-reference/operations-postgresql) |
-| Riak | 8098, 8099 | Used by the Riak data store (as of version 3.3) | ✓ | See [“Riak Ports”](/momentum/3/3-reference/operations-riak#operations.riak.ports) |
-| SMTP | 25 | Incoming SMTP connections | ✓ | See [the section called “Listeners”](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listeners) |
-| SNMP | 8162 | Port used by Simple Network Management Protocol | | See [SNMP](/momentum/3/3-reference/3-reference-conf-ref-snmp) |
-| Spread (mbus_daemon) | 4803, 4804 | Used for cluster communication prior to version 3.4 | | See [mbus.conf](/momentum/3/3-reference/mbus-conf) |
-| Subversion | 2027 | Used for version control of configuration files | ✓ | See [“The Momentum Configuration Server: ecconfigd”](/momentum/3/3-reference/conf-ecconfigd) |
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-prepare.md b/content/momentum/3/3-reference/install-prepare.md
deleted file mode 100644
index 7a696de6d..000000000
--- a/content/momentum/3/3-reference/install-prepare.md
+++ /dev/null
@@ -1,320 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Preparing the System"
-description: "While Momentum will install and run out of the box with very little configuration some steps should be taken to remove or reduce obvious performance bottlenecks Like all MT As Momentum must journal the messages it receives to disk before responding to the sender with a positive reception code This..."
----
-
-While Momentum will install and run out of the box, with very little configuration, some steps should be taken to remove or reduce obvious performance bottlenecks.
-
-### Allocating Spool Space
-
-Like all MTAs, Momentum must journal the messages it receives to disk before responding to the sender with a positive reception code. This is typically the largest bottleneck in mailing systems. Momentum is specifically designed to reduce the negative effect that writing to and reading from the queue has on the overall speed of delivery. Nevertheless, it is important to note that you simply cannot deliver messages faster than the underlying hardware allows.
-
-### Note
-
-It is possible to circumvent the journaling of messages to disk (and thus boost performance) via the modular IO system. This is an advanced topic and requires real-time interaction with the message generation system to ensure complete and unduplicated delivery in the event of a system failure.
-
-The spool storage facility should be the fastest media available on your system. At a minimum, it should be a dedicated 10,000 RPM SCSI2 spindle. RAID1 and RAID10 are the only RAID levels supported. (RAID levels 4 and 5 are not recommended due to the access patterns on mail spools.)
-
-### Warning
-
-For the spool, Momentum only supports RAID 10.
-
-Serious performance degradation may occur if spool information is stored on the same disk or RAID volume as log information or system swap space.
-
-The base path for the spool directory used in all examples throughout this manual is `/var/spool/ecelerity`.
-
-Momentum uses a hashed, two-level directory structure for storing spool messages and headers. Two files are stored per message (one data and another metadata). The metadata file consists of various information concerning the reception and state of the message as well as the sender and the recipient. The data file contains the body of the message and should be viewable via typical system commands like **less** and **more**.
-
-The first level of the spool directory stores no files. It has 256 directories under which the spooled data/metadata files reside. Assuming a spool size of 10,000 messages, you will find 20,000 files evenly distributed across 256 directories resulting in approximately 78 files per directory. Any file system should support this structure.
-
-However, depending on your volume of your mail service and the immediate deliverability of your emails, the queue size can potentially grow quite large. A properly chosen file system is important for managing larger queues. A spool size of 1,000,000 messages will result in roughly 7800 files per directory.
-
-The metadata file is small (less than one disk block - 512 bytes). The data file represents the email message to be delivered and as such fluctuates with the content size of the emails sent - typically between 4k and 16k. If your spool volume is small and you wish to conserve space, a file system block size of 1k is appropriate. As this block size requires several blocks to be allocated per data file, it does not lead to the best I/O performance. Assuming spool space is not a reasonable restriction, an 8k block size may be more appropriate.
-
-Momentum does not require the creation, modification or access times on either the data or metadata files to be correct (or maintained). So mounting a volume with the `noatime` mount option will greatly reduce the number of unnecessary disk accesses. The spool array should be formatted using either the ext2 or ext4 file system. ext2 and ext4 have comparable performance, with ext4 being considered more reliable (because of journaling). ext3 can slow down performance, so is not recommended.
-
-### The NFS File System and Momentum
-
-### Warning
-
-We expressly recommend **against** using NFS, because of concerns about its reliability—especially on Linux—and its performance in general.
-
-* **Do not put the database on NFS** – Postgres does not seem to be stable under high load on NFS, and may shut down with database corruption. Linux's NFS is not reliable enough for storing Postgres databases.
-
-* **Do not put jlogs on NFS** – They are not designed to work on NFS.
-
-* **Do not put software on NFS** – Doing this will cause a lot of NFS traffic due to stat operations when various cron jobs start. Additionally, program start up will be really slow.
-
-### The XFS File System and Momentum 3.4.x
-
-Momentum 3.4.x *cannot* be installed on the XFS file system. If you have already installed Momentum and created links to an XFS file system, you can reinstall in the following way.
-
-### Warning
-
-Attempting the following recovery on a production server is *not* recommended.
-
-First follow these steps on the manager:
-
-1. Uninstall Momentum by navigating to the directory where Momentum was decompressed and issue the command: **`./installer --uninstall`** .
-
-2. Remove any symlinks but not the files themselves.
-
-3. Unmount the XFS file system partition(s) and use ext2 or ext3 partitions as appropriate.
-
-4. Reinstall Momentum and check that it can start up using the default configuration.
-
-5. Copy the current `/opt/msys/ecelerity/etc/conf/` from one of the MTAs:
-
- ```
- shell> cd /opt/msys/ecelerity/etc
- shell> tar -zcf running_conf.tgz conf/ --exclude=.svn
- ```
-
- (we will confirm later that there are no uncommitted changes on the other MTA's)
-
-6. Copy the archive file to the manager and uncompress it.
-
- ```
- shell> cd /opt/msys/ecelerity/etc
- shell> tar -zxf running_conf.tgz
- ```
-
-7. Confirm that the configuration is valid by issuing the command: **`/opt/msys/ecelerity/bin/ec_dump_config`**. If there are any errors, fix them.
-
-8. Commit the configuration to the repository:
-
- shell> /opt/msys/ecelerity/bin/eccfg commit -u admin -p *`password`*
-
-Perform the following steps for each MTA.
-
-1. Uninstall Momentum by navigating to the directory where Momentum was decompressed and issue the command: **`./installer --uninstall`** .
-
-2. Remove any symlinks but not the files themselves.
-
-3. Unmount the XFS file system partition(s) and use ext2 or ext3 partitions as appropriate.
-
-4. Install Momentum bootstrapping the configuration from the manager. Do not start services when installation completes.
-
-5. If the bootstrapped configuration differs from the desired configuration, copy the configuration from the to the `/opt/msys/ecelerity/etc` directory.
-
-6. Determine if there were any local uncommitted changes: **`/opt/msys/3rdParty/bin/svn diff /opt/msys/ecelerity/etc/conf`** .
-
-7. Commit valid changes or revert invalid ones.
-
-8. Start services and confirm that the MTA is functional.
-
-### Allocating Log Space
-
-Momentum can write logs in a variety of formats and can be customized through the use of custom loadable logging modules to log in any format. The default logging format used by Momentum is called "ec format" and is provided by the `ec_logger.so` logging module. This format requires approximately 300MB of log space per 1 million messages.
-
-The other officially supported logging format resembles closely the format produced by the Exim MTA. Aside from the spoolname length being slightly larger, it is identical. This log format provides slightly more information about transactions and requires 700MB of log space per 1 million messages.
-
-Storage allocated for logging must perform reasonably well for sequential write access.
-
-Storage space required for logs is completely dependent upon the data/log retention policies dictated at your facility. The above numbers can be used to make rough projections on capacity; however, we recommend that the sizes of your log files be reviewed periodically to ensure that capacity projections remain accurate based on your locally collected data.
-
-### Warning
-
-Serious performance degradation may occur if log information and spool information are stored on the same disk or RAID volume.
-
-### Configuring Domain Name Service
-
-Domain Name Service (DNS) is the fundamental network service that provides facilities for mapping "names" to "numbers." For email services, it is used to resolve the domain portion of email addresses to a set of publicized mail exchanges (MXs) and to subsequently resolve those MX hostnames to numeric IP addresses.
-
-Momentum is designed to utilize DNS information as efficiently as possible. In other words, no question is ever asked of a DNS server "unnecessarily." When DNS responses are received by Momentum, the data therein is cached and subsequent demands for that information are served immediately from the internal cache instead of attempting to resolve against the DNS server.
-
-Running a DNS server such as the Internet Software Consortium Berkley Internet Name Domain (BIND) server locally with respect to the Momentum instance has the advantage of reduced DNS query/response latency. Sending a high volume of email through Momentum can induce up to 200 DNS queries per second. If your DNS server is not capable of sustaining such a query rate, DNS service may become the limiting factor in delivery speed.
-
-If you already have a DNS server running on your server, you do not need to take any further steps. If you don't, the following configuration provides the minimum services to support Momentum using BIND9.
-
-Use your package manager to install BIND. On Red Hat-type systems you can do this by issuing the command: **`sudo yum install bind`** .
-
-A typical caching-only BIND `named.conf` configuration file is as follows:
-
-```
-options {
- directory "/var/named";
-};
-zone "." {
- type hint;
- file "named.ca";
-};
-zone "0.0.127.in-addr.arpa"{
- type master;
- file "named.local";
-};
-```
-
-On Red Hat-type systems this file is installed to the `/etc` directory.
-
-`/var/named` is the directory that the cache lives in. Inside that directory you need the files `named.ca` and `named.local`. named.ca contains the addresses of the root DNS servers. If you don't have one of these, you can generate it with the following command:
-
-`dig @[some working nameserver] > /var/named/named.ca`
-### Note
-
-Instead of using **`dig`**, you can get this file directly by going to [www.internic.net/domain/named.root](http://www.internic.net/domain/named.root).
-
-`named.local` just needs to provide lookups for localhost. You can use the following file:
-
-```
-@ IN SOA localhost. root.localhost. (
- 1997022700 ; serial
- 28800 ; refresh
- 14400 ; retry
- 3600000 ; expire
- 86400 ; default_ttl
- )
-@ IN NS localhost.
-1 IN PTR localhost.
-```
-
-### Stop Any MTAs That May be Running
-
-If another MTA is running, Momentum may fail after installation. To avoid this possibility, stop or remove any existing MTAs. For example, you can determine if **sendmail** is running by issuing the command **`ps aux | grep sendmail`** . If **sendmail** is running you should see output such as the following:
-
-```
-root 3078 0.0 0.3 7780 1656 ? Ss 15:15 »
- 0:00 sendmail: accepting connections
-mail 3120 0.0 0.2 6988 1436 ? Ss 15:15 »
- 0:00 sendmail: Queue control
-mail 3121 0.0 0.2 6988 1328 ? S 15:15 »
- 0:00 sendmail: running queue: /var/spool/clientmqueue
-```
-
-The same warnings apply if other mail servers such as Postfix are running. To determine if Postfix is running issue the command **`ps aux | grep postfix`** . (On some systems this process may be running as `smtpd`.)
-
-To determine if a mail server is currently running, you can also connect to port 25 using telnet. If you cannot connect then there is no service running on that port. If there is, the banner that is returned should indicate which service.
-
-To determine if sendmail is running on Solaris issue the command:
-
-`shell> svcs -x sendmail`
-
-If the service is running you will see output such as the following:
-
-```
-svc:/network/smtp:sendmail (sendmail SMTP mail transfer agent)
-State: online since Wed Jun 16 10:14:50 2009
-See: sendmail(1M)
-See: /var/svc/log/network-smtp:sendmail.log
-Impact: None.
-```
-** 1.4.6.1. Stopping and Removing Mail Servers**
-
-Remove **sendmail** or **postfix** by using the package manager appropriate to your operating system. On CentOS, for example, issue the command **yum remove *`mail_server`*** . On Solaris use the **pkgrm** command.
-
-Alternately, you can simply stop the *`mail_server`* daemon. On CentOS you can stop the sendmail service by issuing the command **service sendmail stop** . To make sure that the service doesn't restart after rebooting, use the **sudo chkconfig sendmail off** command.
-
-To stop the sendmail service on Solaris use the command:
-
-`shell> svcadm disable sendmail`
-
-You can stop Postfix on Solaris in the same way.
-
-### Cluster Nodes
-
-In a cluster configuration, the node names must be DNS-resolvable in order for nodes to communicate with each other and the cluster manager.
-
-### Note
-
-Prior to Momentum version 3.4, node names could not exceed nineteen characters. As of version 3.4, Momentum uses [“msgc – Modules”](/momentum/3/3-reference/3-reference-modules-msgc) for cluster communication and this limitation no longer applies.
-
-The preferred method is to use the machine name and not the fully qualified domain name. This can be achieved using the `/etc/hosts` file as shown below:
-
-```
-127.0.0.1 localhost.localdomain localhost
-10.79.0.30 manager.example.com manager
-10.79.24.120 mta1.example.com mta1
-10.79.24.125 mta2.example.com mta2
-```
-
-### Note
-
-The hostname and DNS resolution, especially overrides in `/etc/hosts`, must be consistent across the network. The `/etc/hosts` file is only for internal usage and hence should point to internal addresses; external DNS entries (e.g. with a load balancer or NAT host) may bear no relation to the internal mapping.
-
-You can confirm that your `hosts` file is correctly configured by issuing the command **ping *`unqualified_domain_name`*** . The output should display the FQDN and the IP address. For example, with an `/etc/hosts` file with the entry `192.168.0.50 centos.lan centos` output should be similar to the following:
-
-```
-shell> ping centos -c 1
-PING centos.lan (192.168.0.50) 56(84) bytes of data.
-64 bytes from centos.lan (192.168.0.50): icmp_seq=1 ttl=64 time=0.034 ms
-```
-
-This serves two purposes:
-
-1. It makes sure that the unqualified name can be resolved to an address
-
-2. Ensures that the address can be resolved back to a FQDN
-
-If your `hosts` file is not configured correctly and a node name is not resolvable, the installer will inform you immediately.
-
-### Installing the License File
-
-Momentum uses digitally signed software license keys. Momentum licenses can be keyed to a variety of system attributes including but not limited to the hardware address of an Ethernet interface (a.k.a. a MAC address) and the number of processors in the system. After installation, your license is automatically downloaded and installed to the appropriate directory.
-
-Momentum looks to `/opt/msys/ecelerity/etc/license` for the license to operate on this system. This file will be provided by Message Systems as a part of the software license agreement. As a digitally signed file, if the file is modified in any fashion it will be invalidated and Momentum will refuse to use it. If for some reason, your machine configuration changes contact your sales representative for a new license file.
-
-After installation, if you are not connected to the Internet, copy your license to the `/opt/msys/ecelerity/etc` directory before starting the services. If you are installing a cluster configuration, the cluster manager does not require a license.
-
-** 1.4.8.1. About Momentum's Licensing**
-
-Momentum licenses are generally tied to the MAC address of the server. They can be tied to the IP address in certain circumstances.
-
-When Momentum is started, it will try to validate the license. If the license is invalid, it will try to fetch the license using the HTTP protocol from http://licenses.messagesystems.com/ on port 80.
-
-If the license is set to expire in less than one week (7 days), then Momentum will try to fetch a new license. If a license cannot be fetched (invalid/expiring soon), then Momentum will fail to start.
-
-When the Momentum ecelerity process is running, it will check that the license is valid every 15 minutes. If the license has expired, the ecelerity process will shut down.
-
-A cron job also runs daily and attempts to fetch the latest license for the server, if one is available. See the ec_lic_cron command in the crontab file `/etc/cron.d/msys-ecelerity`.
-
-For a MAC address of `xx:00:xx:00:xx:00`, the license would be fetched from `http://licenses.messagesystems.com/all/xx00xx00xx00`.
-
-** 1.4.8.2. Connectivity to Message Systems' License Server**
-
-You can check whether a Momentum server has connectivity to Message Systems' license server using **curl**, a 3rd-party tool shipped with Momentum. Issuing the **`/opt/msys/3rdParty/bin/curl http://licenses.messagesystems.com/`** command should return the following output:
-
-```
-
-
- 301 Moved Permanently
-
- Moved Permanently
- The document has moved here.
-
-```
-
-To fetch the license manually for a server with the MAC address `1c:c1:de:07:bf:d6`, issue the command: **`/opt/msys/3rdParty/bin/curl http://licenses.messagesystems.com/all/1cc1de07bfd6`** .
-
-** 1.4.8.3. Access via an HTTP Proxy**
-
-**ec_lic_wrapper** is a shell script that executes the script **/opt/msys/ecelerity/bin/prepare_ec_lic** (if it exists). **prepare_ec_lic** provides a way of defining an HTTP proxy that should be used for downloading licenses.
-
-**ec_lic_wrapper** recognizes the following environment variables:
-
-* PROXYHOST
-
-* PROXYPORT
-
-* PROXYUSER
-
-* PROXYPASS
-
-A sample file might define the following variables:
-
-```
-PROXYHOST=10.8.1.140
-PROXYPORT=3128
-```
-
-**ec_lic_cron** calls **ec_lic_wrapper**, so license downloads via cron will also use the HTTP proxy configuration if it is defined.
-
-** 1.4.8.4. Machines with Multiple Interfaces**
-
-Momentum can cope with machines with multiple MAC addresses. It will try to download a license for each of the interfaces, until it finds one. Note that it will stop at the first license found, even if it has expired. Care is needed to ensure that licenses are issued for the same MAC each time, or that older licenses are removed. Otherwise it may not be able to automatically download new licenses.
-
-Momentum queries the available network interfaces from the OS. The order returned by the OS to Momentum is not necessarily the same as shown by **ifconfig**. The first interface shown by **ifconfig** may not be the same as the first interface found by Momentum.
-
-### Note
-
-The maximum number of IP aliases that Momentum supports is `10240`. Also, it is better to enumerate the interfaces sequentially rather than assigning them arbitrarily.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-requirements.md b/content/momentum/3/3-reference/install-requirements.md
deleted file mode 100644
index cd326007e..000000000
--- a/content/momentum/3/3-reference/install-requirements.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "System Requirements"
-description: "During installation the following roles are available database data store max 1 per deployment required for all deployments manager cluster service manager for a cluster of MT As mta for sending receiving email singlenode shortcut for the mta database and web roles web browser driven control panel When running the..."
----
-
-During installation the following roles are available:
-
-* `database` – data store (max 1 per deployment, required for all deployments)
-
-* `manager` – cluster service manager for a cluster of MTAs
-
-* `mta` – for sending/receiving email
-
-* `singlenode` – shortcut for the mta, database and web roles
-
-* `web` – browser driven control panel
-
-When running the installer you will be asked a series of questions that vary depending upon the roles chosen. If you are installing the database on a separate machine, you *must* install this role first. Additionally, if you are installing a cluster configuration, the manager must be installed before the nodes.
-
-The web console is not mandatory for a stand-alone installation, but a database **is** required for correct operation of the MTA. The 3.0 server uses a robust version control system that requires a database for authentication. There are several server processes that assume that this version control system is installed and configured correctly.
-
-**Configuration Change. ** Prior to version 3.0.15, the web console role and the database role **must** be installed on the same machine.
-
-We recommend running Momentum on dedicated hardware to ensure optimal performance. The exact hardware specifications depend on the volume of mail that you intend to process and the role that each specific machine is performing. But, in general terms, you should use nodes having 64 bit, x86-based architecture.
-
-### Note
-
-Use Linux with kernel 2.6.18-194 or later. There is an issue with Broadcom NICs when used with older kernels in Red Hat 4 and Red Hat 5\. If you are running kernel 2.6.18-194 or later you will not have this issue.
-
-The Momentum web UI supports the following browsers:
-
-* Firefox version 3.6 and higher on PC and Mac
-
-* Internet Explorer versions 8 and 9
-
-### Riak Hardware Requirements
-
-As of version 3.3, Momentum incorporates Riak, a distributed key-value data storage technology with excellent scalability properties. It replaces the SQLite data store used with the adaptive module. It is also used by Mobile Momentum for resubmission of messages and by the reporting capabilities introduced in version 3.3\. Use of this storage technology puts increased demands on hardware. This section details the hardware requirements.
-
-Estimates based on the following equations are conservative; expect real life usage to be less than the numbers these equations yield. This is especially true for Adaptive Delivery, where real usage will likely be less than 25% of the RAM and disk equations and may even be less than 10%. For Adaptive Delivery this lower than maximum usage is because usually every binding is not used for every domain, although the software does limit this.
-
-** Maximum RAM Usage**
-
-* Adaptive Delivery: 300 bytes * number of bindings * number of domains
-
-* Custom Reports: 70 bytes * (number of reports definitions + number of report instances)
-
-* SMPP: 80 bytes * number of messages over a 14 day period
-
-* XMPP: 120 bytes * (number of clients * average roster size)
-
-** Maximum Disk Usage**
-
-* Setting `noatime` will increase disk IO performance
-
-* Adaptive Delivery: ((number of bindings * number of domains * 151 bytes) + 2GB) * (64 / number of Momentum nodes)
-
-* Custom Reports: (number of report instances * average report size in bytes * 2.362) + 2GB) * (64 / number of Momentum nodes)
-
-* SMPP: (number of messages per 14 days * average message size in bytes * 2.362 ) + 2GB) * (64 / number of Momentum nodes)
-
-* XMPP: (number of clients * average roster size * 3800 bytes) + 2GB) * (64 / number Momentum nodes)
-
-** 1.1.1.1. Space Requirements for Riak Log Files**
-
-The space requirements for the various log files are as follows.
-
-** The `erlang.log.x` Files**
-
-These files are written by the [run_erl](http://www.erlang.org/doc/man/run_erl.html) process which Momentum uses to start the Erlang VM. The size and number of these logs can be set in `/opt/msys/3rdParty/riak/etc/vm.args` via the `RUN_ERL_LOG_MAXSIZE` and `RUN_ERL_LOG_GENERATIONS` environment variables. The defaults for these variables are, respectively, 100KB and 5.
-
-** The run_erl.log File**
-
-This file is written at startup. Its size is generally negligible.
-
-** The sasl Logs**
-
-These files are located in the `logs/sasl` directory and are written to by the [error_logging](http://www.erlang.org/doc/man/error_logger.html) module internal to Erlang Open Telecom Platform (OTP). These files are configured via the sasl section of the `/opt/msys/3rdParty/riak/etc/app.config` file and there are a number of [optional settings](http://erlang.org/doc/man/sasl_app.html) that can be changed. The settings which govern size and number of logs are `error_logger_mf_maxbytes` and `error_logger_mf_maxfiles` which respectively default to `10MB` and `5`.
-
-** The `sasl-error.log` File**
-
-This file is currently unbounded and cannot be limited. It is populated by the [full error reports](http://www.erlang.org/doc/man/error_logger.html#error_report-1) resulting from process crashes written to the sasl logs. These [reports](http://www.erlang.org/doc/apps/sasl/error_logging.html#id60880) are restricted in size by the Riak_err module and each entry's maximum size can be configured in the Riak_err section of `/opt/msys/3rdParty/riak/etc/app.config`. By default, these reports are limited to 64KB but the total number of reports written is not bounded. A suggested maximum size is `500MB`.
-
-The `sasl_error.log` _is_ recreated every time Riak is stopped and started. You can prevent it from being created at all by changing the SASL config section to the following:
-
-```
-%% SASL config
-{sasl, [
-{sasl_error_logger, false}
-]},
-```
-** The erlang_crash.dump File**
-
-The [erlang_crash.dump](http://erlang.org/doc/apps/erts/crash_dump.html) is written whenever the Erlang VM is killed either because of a critical application error or by a system kill such as an out of memory killer. The dump is written to the log_directory which is set when [run_erl](http://www.erlang.org/doc/man/run_erl.html) is called. The dump file contains all information for each process running in the Erlang VM at the time of the crash as well as all allocator information. The dumps are slightly larger than the size in memory of the Riak process at the time of the crash. If Riak is using a lot of memory this can be very large. If the log_dir does not have enough free space to store the entire dump file, it will be truncated.
-
-To summarize, the erlang.log's size and number can be configured via the environment variables in `/opt/msys/3rdParty/riak/etc/vm.args`. The sasl logs are configured from the sasl section of the `/opt/msys/3rdParty/riak/etc/app.config` file. The `sasl-error.log` is populated by full error reports limited in size to 64K but the log file itself is not bounded. The `erlang_crash.dump` file is slightly larger than the resident memory size of the Riak process at crash time. By default the max sizes for the various logs are as follows:
-
-* erlang.log.x = 100KB * 5files = 500KB max
-
-* run_erl.log = <1KB
-
-* sasl logs = 10MB * 5 files = 50MB max
-
-* sasl-error.log is unbounded but should be less than 500MB
-
-* erlang_crash.dump = slightly larger than Riak memory usage at time of crash
-
-Total max size = 550.5MB for the riak logs with at least an addition of the resident memory size of the Riak process to hold an erlang_crash.dump
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-riak.md b/content/momentum/3/3-reference/install-riak.md
deleted file mode 100644
index c64d24a2c..000000000
--- a/content/momentum/3/3-reference/install-riak.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Riak Server"
-description: "The Riak server is implemented in Momentum version 3 3 In a cluster configuration when upgrading to Momentum 3 3 the order in which the roles are upgraded is important because the web UI and MTA roles will be participating in a Riak cluster You must upgrade the database role..."
----
-
-### Note
-
-The Riak server is implemented in Momentum version 3.3.
-
-In a cluster configuration, when upgrading to Momentum 3.3, the order in which the roles are upgraded is important because the web UI and MTA roles will be participating in a Riak cluster.
-
-You must upgrade the database role first because of the migration from PostgreSQL 8.3 to 9.0 and you must upgrade the manager/web UI before the MTAs so that the initial Riak cluster will be created (without a prompt) because the web UI requires Riak to be running locally in order to support custom reports.
-
-As of version 3.3, Riak is used as the data storage technology for saving Adaptive Delivery parameters and custom reports. If you are installing Momentum in a cluster configuration with only the default subcluster, when you install one of the cluster MTA nodes, you are asked the following question:
-
-Would you like this node to join the following riak cluster?
-
-Type an existing riak node (name or IP) or 'no' to not join at this time. (*`ip_address`*)
-
-*`ip_address`*
-riak: starting
-Sent join request to riak-default@*`ip_address`*
-riak: stopping
-
-You are prompted to enter the IP address of the cluster manager. Accepting this default points the current node at the instance of Riak running on the cluster manager. If you do not join the Riak cluster during installation you can change this later. See [“Configuring Riak After Installation”](/momentum/3/3-reference/operations-riak#operations.riak.cluster.configuration.details) for detailed instructions on configuring Riak after installation.
-
-If no Riak instance has been created and you are not in the same subcluster as the cluster manager, you will be asked:
-
-Is this the first riak instance in the '*`cluster_name`*' subcluster?"
-
-If you answer "yes" in response to this question, you will not be prompted again and Riak will be set up on this node by the installer.
-
-If you answer "no", you will then be asked to join the Riak cluster:
-
-`Type an existing riak node (name or IP) or 'no' to not join at this time.`
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-security.md b/content/momentum/3/3-reference/install-security.md
deleted file mode 100644
index 66d3efd5b..000000000
--- a/content/momentum/3/3-reference/install-security.md
+++ /dev/null
@@ -1,82 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Security Considerations"
-description: "As of version 3 2 during installation you can choose to enforce the following security measures Require SSL connections to the database Enables native Postgre SQL support for SSL connections When you choose this option a private key is written to var db msyspg server key and a self signed..."
----
-
-As of version 3.2, during installation you can choose to enforce the following security measures:
-
-* Require SSL connections to the database – Enables native PostgreSQL support for SSL connections.
-
- When you choose this option a private key is written to `/var/db/msyspg/server.key` and a self-signed certificate is created at `/var/db/msyspg/server.crt`. If necessary, you can change these after installation. The self-signed certificate is valid for a year. To renew this certificate see [create_ssl_cert](/momentum/3/3-reference/executable-create-ssl-cert).
-
-* Require the use of SSL for accessing the web UI – Enables Apache support for SSL connections to the web console.
-
- When you choose this option an encryption key is written to `/opt/msys/ecwebui/config/site/server.key` and a certificate is created at `/opt/msys/ecwebui/config/site/server.crt`. If necessary, you can change these after installation. The self-signed certificate is valid for a year. To renew this certificate see [create_ssl_cert](/momentum/3/3-reference/executable-create-ssl-cert).
-
- Enabling SSL for the web UI can cause the web console to fail on startup. For more information see [“Solaris and the Web UI”](/momentum/3/3-reference/install-solaris#install.solaris.webui).
-
-* Enable encrypted password support – Enable the securecreds module for password encryption. See [“securecreds – Module”](/momentum/3/3-reference/3-reference-modules-securecreds) for more information.
-
- Be sure to choose this option on each node where you wish to use secure credentials.
-
-### Warning
-
-If you plan to authenticate Momentum users using Active Directory, please see [“Setting Up Active Directory Authentication With Momentum 3.2.2”](/momentum/3/3-reference/conf-ldaps).
-
-### A Note About umask
-
-A umask setting of `0027` in the shell startup file, typically `~/.bashrc` when using the bash shell, will cause installation to fail because directories created by root will be inaccessible to the user `ecuser`.
-
-With a umask setting of `0027`, when the initial configuration is being created, ecconfigd is started, but the Apache instance will not start. You will see output such as the following:
-
-```
-shell> CFG-07961 failed to stat
-'/opt/msys/etc/installer/ecelerity.d/': Permission denied
-Reconfigure failed.
-Global configuration error.
-```
-
-This is also true of any files that are created as the root user under the `/opt/msys/ecelerity/etc/conf` directory.
-
-To resolve this use a more permissive mask, for example `umask 0022`.
-
-Another option is to `chown ecuser:ecuser` all new configuration files, or make them world readable. Likewise for directories.
-
-If you get the permissions wrong, then you will also not be able to log in to the web UI or use the **ecconfigd** command.
-
-### POODLE Vulnerability Fix
-
-POODLE is an attack on the TLS protocol that forces clients to downgrade to the SSLv3, which has no known secure cipher suites available. Another part of the POODLE attack is exploiting weaknesses in the CBC mode of operation.
-
-To fix this vulnerability, upgrade to the most recent version of the Momentum major version you are currently running (e.g., Momentum 3.6.6) and set the [tls_protocols](/momentum/3/3-reference/conf-ref-tls-protocols) option to disable SSLv3 in your `ecelerity.conf` file:
-
-`TLS_Protocols = "+ALL:-SSLv3"`
-
-You can similarly disable (`-`) or enable (`+`) the protocols listed below; e.g., `-SSLv2:-SSLv3:-TLSv1.0:+TLSv1.1:-TLSv1.2`.
-
-* SSLv2
-
-* TLSv1.0
-
-* TLSv1.1 - Openssl >= 1 only
-
-* TLSv1.2 - Openssl >= 1 only
-
-The following example shows SSLv2 and SSLv3 being disabled in the Binding scope:
-
-```
-binding "bindingTLS" {
- Remote_SMTP_Port = 587
- TLS = "required"
- TLS_Verify = "ca"
- TLS_Certificate = "/opt/msys/ecelerity/etc/certs/server.crt"
- TLS_Key = "/opt/msys/ecelerity/etc/certs/server.key"
- TLS_CA = "/opt/msys/ecelerity/etc/certs/ca.pem"
- TLS_Protocols = "+ALL:-SSLv2:-SSLv3"
-}
-```
-
-### Using DHE Ciphers with the SMTP Listener
-
-If you are required to implement Perfect Forward Secrecy within the context of SMTPTLS, you can do so by forcing the use of the Diffie Hellman (DHE) ciphers using ephemeral key exchange. Momentum 3.6.6 has two options for enabling these ciphers: [tls_dhparams_file](/momentum/3/3-reference/3-reference-conf-ref-tls-dhparams-file) and [tls_enable_dhe_ciphers](/momentum/3/3-reference/3-reference-conf-ref-tls-enable-dhe-ciphers).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-solaris.md b/content/momentum/3/3-reference/install-solaris.md
deleted file mode 100644
index 509305b54..000000000
--- a/content/momentum/3/3-reference/install-solaris.md
+++ /dev/null
@@ -1,154 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Installation on Solaris"
-description: "Momentum is packaged for 64 bit Intel and Sparc Solaris systems You must download the package for your architecture or you will not be able to run Momentum If you are making use of Dura VIP™ then You must install Ecelerity in a Solaris global zone Additionally the privileges option..."
----
-
-Momentum is packaged for 64-bit Intel and Sparc Solaris systems. You must download the package for your architecture, or you will not be able to run Momentum.
-
-If you are making use of DuraVIP™ then You must install Ecelerity in a Solaris global zone. Additionally, the `privileges` option requires the `net_rawaccess` privilege which only works in a global zone.
-
-The installation package for Solaris is distributed as a single compressed tar file, one for Sparc and one for Intel systems. The file can be found on the Message Systems support web site, named momentum-*`type`*-bundle-*`version`*-sol5.10.arch.tar.gz
-
-The `version` here is the product version, and `arch` is the architecture you're running on. The `type` indicates whether the package is for sending or receiving.
-
-### Note
-
-As of version 3.4, mbus is no longer used so you do not need to issue the **svcadm enable mbus** command.
-
-### Package Requirements Beyond a Core Installation
-
-This section documents the packages that are required above and beyond a Solaris "core" install for installation of Momentum 3.0.15 for sending on 64-bit Intel and Sparc Solaris systems.
-
-This following profile includes the smallest consistent installation that allows all of the Momentum-Sending roles to be installed. You may also exclude the packages labelled "webui" for an MTA-only install.
-
-** UTF-8 Locales**
-
-The default system locale must be UTF-8 or C (but if C an en_US.UTF-8 locale is also installed). In particular, you cannot have en_US.ISO8859-1, the so-called Latin1 set, as the system locale; this is not a complete locale and it will prevent the database from being initialized.
-
-If you have any UTF-8 locales installed, PostgeSQL wants to have a complete set so it can store the data as UTF-8 and then convert it correctly for output.
-
-For this reason make sure you have the following packages installed:
-
-* system SUNWeu8os American English/UTF-8 L10N
-
-* system SUNWeuluf UTF-8 L10N For Language
-
-* system SUNWeuodf UTF-8 Core OPENLOOK Desktop Files
-
-The setting `LANG=en_US.UTF-8`is also recommended rather than `LANG=c`. This helps ensure that PostgreSQL won't object during installation. You can do this for installation only; it need not be the system default.
-
-** Other Packages**
-
-The Solaris core installation ships with the sendmail packages. Remove SUNWsndmr and SUNWsndmu using **pkgrm**. Otherwise you must disable these packages with **svcadm** before you start Momentum.
-
-For cluster support install:
-
-* SUNWCreq
-
-* SUNWCssh
-
-* SUNWCntp
-
-For diagnostic tools support install:
-
-* SUNWtoo
-
-For core Momentum support install:
-
-* SUNWgccruntime
-
-For UT8 locale support install:
-
-* SUNWeu8os
-
-* SUNWeuodf
-
-* SUNWeuluf
-
-To support the web UI install:
-
-* SUNWpng
-
-* SUNWjpg
-
-* SUNWfreetype2
-
-* SUNWicu
-
-Optional packages that you may need to install are as follows:
-
-* SUNWgcmn
-
-* SUNWwgetr
-
-* SUNWwgetu
-
-* SUNWless
-
-* SUNWbash
-
-* SUNWbind
-
-* SUNWbindr
-
-* SUNWdoc
-
-* SUNWman
-
-* SUNWtcsh
-
-### Installation
-
-To unpack and install after downloading the file, perform the following commands:
-
-**gzip -dc momentum-*`type`*-bundle-*`version`*-sol5.10.arch.tar.gz | tar xf -**
-
- **cd delivery-manager-VERSION**
-
- **./installer**
-### Note
-
-For the options available with the **installer** command see [“Installer Options”](/momentum/3/3-reference/install-options).
-
-During installation the following roles are available:
-
-* `database` – data store (max 1 per deployment)
-
-* `manager` – cluster service manager for a cluster of MTAs
-
-* `mta` – for sending/receiving email
-
-* `singlenode` – shortcut for the mta, database and web roles
-
-* `web` – browser driven control panel
-
-When running the installer you will be asked a series of questions that vary depending upon the roles chosen. If you are installing the database on a separate machine, you *must* install this role first. Additionally, if you are installing a cluster configuration, the manager must be installed before the nodes.
-
-### Note
-
-Installation will fail if either of the following conditions is met:
-
-* `/etc/cron.d/cron.allow` exists and the user's name is not in it
-
-* `/etc/cron.d/cron.allow` does not exist and the user's name is in `/etc/cron.d/cron.deny`
-
-If you use `cron.allow` or `cron.deny`, add `ecuser` to `/etc/cron.d/cron.allow` before starting the installer. In future, the installer will be amended to check for an existing `/etc/cron.d/cron.allow` and add `ecuser` to it.
-
-During installation a service account and an admin account are created. Be sure to record the passwords that you use for these accounts; they are required when installing different roles. If you forget these passwords and need to retrieve them, navigate to the `/opt/mys/etc/installer` directory and open the `lastinstall` file.
-
-This will start the Momentum installation procedure. You will be asked a series of questions. At the end of the installation you will be told how to start the Momentum server. Before you do this you should read the [configuration guide](/momentum/3/3-reference/conf) and modify your `/opt/msys/ecelerity/etc/conf/default/ecelerity.conf` file appropriately.
-
-### Solaris and the Web UI
-
-In version 3.2, if you enable SSL for the web UI the web console may not start up.
-
-To resolve this problem change `/opt/msys/ecwebui/config/httpd.conf` from:
-
-``
-
-to:
-
-``
-
-Alternately, nscd can be disabled in the following way: **`svcadm disable name-service-cache`** .
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install-standalone.md b/content/momentum/3/3-reference/install-standalone.md
deleted file mode 100644
index f8ce41893..000000000
--- a/content/momentum/3/3-reference/install-standalone.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Performing a Stand-alone Installation"
-description: "A stand alone installation should be performed when you intend to install the product on a single machine To perform a stand alone installation Download and extract the installation bundle as discussed in the operating system specific installation sections Run the installer script When prompted enter singlenode for the role..."
----
-
-A stand-alone installation should be performed when you intend to install the product on a single machine.
-
-To perform a stand-alone installation:
-
-1. Download and extract the installation bundle as discussed in the operating system specific installation sections.
-
-2. Run the **installer** script.
-
-3. When prompted, enter `singlenode` for the role selection. This is a shortcut for the `mta`, `database` and `web` roles.
-
-4. Because you are installing the database role you will be prompted for a location for storing data. The default is `/var/db/msyspg`.
-
-5. You will also be prompted for a web UI password for the account named 'admin'.
-
- The MTA needs access to the PostgreSQL database and to ecconfigd to manage authentication and replication. For this reason you must also provide a password for the service account.
-
-6. During installation configuration files with reasonable defaults are added to the local configuration repository for you to use as the basis for your installation. You are strongly encouraged to review the files here: `/opt/msys/ecelerity/etc/conf` before running Momentum in a production environment.
-
- You can view and manage configuration files from the web console. For more information on this topic see [“Administration”](/momentum/3/3-reference/web-3-administration).
-
- Copy your license to the `/opt/msys/ecelerity/etc` directory before starting the services if you are not connected to the Internet.
-
-7. Confirm the success of your installation by logging in to the web console supplying `admin` as the username and the password created during installation.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/install.md b/content/momentum/3/3-reference/install.md
deleted file mode 100644
index ee14962c8..000000000
--- a/content/momentum/3/3-reference/install.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Installation"
-description: "The binary packages are designed for easy installation Each platform uses its native installation format RPM for Linux pkg for Solaris All installations have identical installation paths so no path translations are required in this section The supported platforms are as follows Red Hat Enterprise Linux 5 x 86 64..."
----
-
-
-The binary packages are designed for easy installation. Each platform uses its native installation format (`RPM` for Linux, `pkg` for Solaris). All installations have identical installation paths, so no path translations are required in this section.
-
-The supported platforms are as follows:
-
-* Red Hat Enterprise Linux 5 (x86_64)
-
-* Red Hat Enterprise Linux 5 (i386)
-
-* Red Hat Enterprise Linux 6 (x86_64) (As of version 3.4.)
-
-* Solaris 10 (amd64)
-
-* Solaris 10 (sparcv9)
-
-### Note
-
-Message Systems only supports 64-bit environments for Momentum 3.6.x and later.
-
-### Note
-
-Please unset the following environmental variables before installing or upgrading:
-
-* unset `LC_MONETARY`
-
-* unset `LC_NUMERIC`
-
-* unset `LC_MESSAGES`
-
-* unset `LC_COLLATE`
-
-* unset `LC_CTYPE`
-
-* unset `LC_TIME`
-
-The variables are sometimes set by your terminal program, by iTerm for Mac OS X, for example. Also, make sure that the following variable is set:
-
-`LANG=en_US.UTF-8`
-
-This is especially important for upgrades from 3.2.x to 3.3.x.
-
-The expected installation path is `/opt/msys/ecelerity`: If you choose to move this installation to a different final location we recommend soft linking `/opt/msys/ecelerity` to that location.
-
-If you are upgrading to Momentum version 3.3, be sure to review [“PostgreSQL in Momentum Version 3.3”](/momentum/3/3-reference/operations-postgresql#operations.postgresql.migrating.3.3).
-
-## Supported Versions in Momentum 3.5.4
-
-* Red Hat 5.9 (and its CentOS equivalent) on both i386 and x86-64 architectures
-
-* Red Hat 6.4 (and its CentOS equivalent) on x86-64 architecture
-
-* Solaris variants: Solaris 10 (minimum level U3) on both SPARC and AMD64 architectures
-
-* Note that Momentum 3.5 and future releases are not supported on Red Hat 4\. Red Hat dropped support for this release in February 2012.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/libedit-editor-commands.md b/content/momentum/3/3-reference/libedit-editor-commands.md
deleted file mode 100644
index 176ed60c3..000000000
--- a/content/momentum/3/3-reference/libedit-editor-commands.md
+++ /dev/null
@@ -1,361 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Editor Commands"
-description: "Vi paste previous deletion to the right of the cursor Vi paste previous deletion to the left of the cursor Vi move to the previous space delimited word Vi move to the previous word Vi move to the next space delimited word Vi move to the next word Vi change..."
----
-
-### vi-paste-next
-
-Vi paste previous deletion to the right of the cursor.
-
-### vi-paste-prev
-
-Vi paste previous deletion to the left of the cursor.
-
-### vi-prev-space-word
-
-Vi move to the previous space delimited word.
-
-### vi-prev-word
-
-Vi move to the previous word.
-
-### vi-next-space-word
-
-Vi move to the next space delimited word.
-
-### vi-next-word
-
-Vi move to the next word.
-
-### vi-change-case
-
-Vi change case of character under the cursor and advance one character.
-
-### vi-change-meta
-
-Vi change prefix command.
-
-### vi-insert-at-bol
-
-Vi enter insert mode at the beginning of line.
-
-### vi-replace-char
-
-Vi replace character under the cursor with the next character typed.
-
-### vi-replace-mode
-
-Vi enter replace mode.
-
-### vi-substitute-char
-
-Vi replace character under the cursor and enter insert mode.
-
-### vi-substitute-line
-
-Vi substitute entire line.
-
-### vi-change-to-eol
-
-Vi change to end of line.
-
-### vi-insert
-
-Vi enter insert mode.
-
-### vi-add
-
-Vi enter insert mode after the cursor.
-
-### vi-add-at-eol
-
-Vi enter insert mode at end of line.
-
-### vi-delete-meta
-
-Vi delete prefix command.
-
-### vi-end-word
-
-Vi move to the end of the current space delimited word.
-
-### vi-to-end-word
-
-Vi move to the end of the current word.
-
-### vi-undo
-
-Vi undo last change.
-
-### vi-command-mode
-
-Vi enter command mode (use alternative key bindings).
-
-### vi-zero
-
-Vi move to the beginning of line.
-
-### vi-delete-prev-char
-
-Vi move to previous character (backspace).
-
-### vi-list-or-eof
-
-Vi list choices for completion or indicate end of file if empty line.
-
-### vi-kill-line-prev
-
-Vi cut from beginning of line to cursor.
-
-### vi-search-prev
-
-Vi search history previous.
-
-### vi-search-next
-
-Vi search history next.
-
-### vi-repeat-search-next
-
-Vi repeat current search in the same search direction.
-
-### vi-repeat-search-prev
-
-Vi repeat current search in the opposite search direction.
-
-### vi-next-char
-
-Vi move to the character specified next.
-
-### vi-prev-char
-
-Vi move to the character specified previous.
-
-### vi-to-next-char
-
-Vi move up to the character specified next.
-
-### vi-to-prev-char
-
-Vi move up to the character specified previous.
-
-### vi-repeat-next-char
-
-Vi repeat current character search in the same search direction.
-
-### vi-repeat-prev-char
-
-Vi repeat current character search in the opposite search direction.
-
-### em-delete-or-list
-
-Delete character under cursor or list completions if at end of line.
-
-### em-delete-next-word
-
-Cut from cursor to end of current word.
-
-### em-yank
-
-Paste cut buffer at cursor position.
-
-### em-kill-line
-
-Cut the entire line and save in cut buffer.
-
-### em-kill-region
-
-Cut area between mark and cursor and save in cut buffer.
-
-### em-copy-region
-
-Copy area between mark and cursor to cut buffer.
-
-### em-gosmacs-traspose
-
-Exchange the two characters before the cursor.
-
-### em-next-word
-
-Move next to end of current word.
-
-### em-upper-case
-
-Uppercase the characters from cursor to end of current word.
-
-### em-capitol-case
-
-Capitalize the characters from cursor to end of current word.
-
-### em-lower-case
-
-Lowercase the characters from cursor to end of current word.
-
-### em-set-mark
-
-Set the mark at cursor.
-
-### em-exchange-mark
-
-Exchange the cursor and mark.
-
-### em-universal-argument
-
-Universal argument (argument times 4).
-
-### em-meta-next
-
-Add 8th bit to next character typed.
-
-### em-toggle-overwrite
-
-Switch from insert to overwrite mode or vice versa.
-
-### em-copy-prev-word
-
-Copy current word to cursor.
-
-### em-inc-search-next
-
-Emacs incremental next search.
-
-### em-inc-search-prev
-
-Emacs incremental reverse search.
-
-### ed-end-of-file
-
-Indicate end of file.
-
-### ed-insert
-
-Add character to the line.
-
-### ed-delete-prev-word
-
-Delete from beginning of current word to cursor.
-
-### ed-delete-next-char
-
-Delete character under cursor.
-
-### ed-kill-line
-
-Cut to the end of line.
-
-### ed-move-to-end
-
-Move cursor to the end of line.
-
-### ed-move-to-beg
-
-Move cursor to the beginning of line.
-
-### ed-transpose-chars
-
-Exchange the character to the left of the cursor with the one under it.
-
-### ed-next-char
-
-Move to the right one character.
-
-### ed-prev-word
-
-Move to the beginning of the current word.
-
-### ed-prev-char
-
-Move to the left one character.
-
-### ed-quoted-insert
-
-Add the next character typed verbatim.
-
-### ed-digit
-
-Adds to argument or enters a digit.
-
-### ed-argument-digit
-
-Digit that starts argument.
-
-### ed-unassigned
-
-Indicates unbound character.
-
-### ed-tty-sigint
-
-Tty interrupt character.
-
-### ed-tty-dsusp
-
-Tty delayed suspend character.
-
-### ed-tty-flush-output
-
-Tty flush output characters.
-
-### ed-tty-sigquit
-
-Tty quit character.
-
-### ed-tty-sigtstp
-
-Tty suspend character.
-
-### ed-tty-stop-output
-
-Tty disallow output characters.
-
-### ed-tty-start-output
-
-Tty allow output characters.
-
-### ed-newline
-
-Execute command.
-
-### ed-delete-prev-char
-
-Delete the character to the left of the cursor.
-
-### ed-clear-screen
-
-Clear screen leaving current line at the top.
-
-### ed-redisplay
-
-Redisplay everything.
-
-### ed-start-over
-
-Erase current line and start from scratch.
-
-### ed-sequence-lead-in
-
-First character in a bound sequence.
-
-### ed-prev-history
-
-Move to the previous history line.
-
-### ed-next-history
-
-Move to the next history line.
-
-### ed-search-prev-history
-
-Search previous in history for a line matching the current.
-
-### ed-search-next-history
-
-Search next in history for a line matching the current.
-
-### ed-prev-line
-
-Move up one line.
-
-### ed-next-line
-
-Move down one line.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/libedit-keys-emacs.md b/content/momentum/3/3-reference/libedit-keys-emacs.md
deleted file mode 100644
index ced6d9400..000000000
--- a/content/momentum/3/3-reference/libedit-keys-emacs.md
+++ /dev/null
@@ -1,321 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Default emacs key bindings"
-description: "Ctrl em set mark Ctrl A ed move to beg Ctrl B ed prev char Ctrl C ed tty sigint Ctrl D em delete or list Ctrl E ed move to end Ctrl F ed next char Ctrl H ed delete prev char Ctrl J ed newline Ctrl K ed..."
----
-
-
-
-- **Ctrl**+**@**
-
--
-
-[em-set-mark](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-set-mark)
-
-
-
-- **Ctrl**+**A**
-
--
-
-[ed-move-to-beg](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-move-to-beg)
-
-
-
-- **Ctrl**+**B**
-
--
-
-[ed-prev-char](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-prev-char)
-
-
-
-- **Ctrl**+**C**
-
--
-
-[ed-tty-sigint](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-tty-sigint)
-
-
-
-- **Ctrl**+**D**
-
--
-
-[em-delete-or-list](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-delete-or-list)
-
-
-
-- **Ctrl**+**E**
-
--
-
-[ed-move-to-end](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-move-to-end)
-
-
-
-- **Ctrl**+**F**
-
--
-
-[ed-next-char](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-next-char)
-
-
-
-- **Ctrl**+**H**
-
--
-
-[ed-delete-prev-char](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-delete-prev-char)
-
-
-
-- **Ctrl**+**J**
-
--
-
-[ed-newline](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-newline)
-
-
-
-- **Ctrl**+**K**
-
--
-
-[ed-kill-line](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-kill-line)
-
-
-
-- **Ctrl**+**L**
-
--
-
-[ed-clear-screen](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-clear-screen)
-
-
-
-- **Ctrl**+**M**
-
--
-
-[ed-newline](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-newline)
-
-
-
-- **Ctrl**+**N**
-
--
-
-[ed-next-history](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-next-history)
-
-
-
-- **Ctrl**+**O**
-
--
-
-[ed-tty-flush-output](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-tty-flush-output)
-
-
-
-- **Ctrl**+**P**
-
--
-
-[ed-prev-history](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-prev-history)
-
-
-
-- **Ctrl**+**Q**
-
--
-
-[ed-tty-start-output](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-tty-start-output)
-
-
-
-- **Ctrl**+**R**
-
--
-
-[ed-redisplay](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-redisplay)
-
-
-
-- **Ctrl**+**S**
-
--
-
-[ed-tty-stop-output](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-tty-stop-output)
-
-
-
-- **Ctrl**+**T**
-
--
-
-[ed-transpose-chars](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-transpose-chars)
-
-
-
-- **Ctrl**+**U**
-
--
-
-[ed-kill-line](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-kill-line)
-
-
-
-- **Ctrl**+**V**
-
--
-
-[ed-quoted-insert](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-quoted-insert)
-
-
-
-- **Ctrl**+**W**
-
--
-
-[em-kill-region](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-kill-region)
-
-
-
-- **Ctrl**+**Y**
-
--
-
-[em-yank](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-yank)
-
-
-
-- **Ctrl**+**Z**
-
--
-
-[ed-tty-sigtstp](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-tty-sigtstp)
-
-
-
-- **Ctrl**+**[**
-
--
-
-[em-meta-next](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-meta-next)
-
-
-
-- **Ctrl**+**\**
-
--
-
-[ed-tty-sigquit](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-tty-sigquit)
-
-
-
-- **Ctrl**+**]**
-
--
-
-[ed-tty-dsusp](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-tty-dsusp)
-
-
-
-- **Esc** **Backspace**
-
--
-
-[ed-delete-prev-word](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-delete-prev-word)
-
-
-
-- **Esc** **Ctrl**+**_**
-
--
-
-[em-copy-prev-word](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-copy-prev-word)
-
-
-
-- **Esc** **B**
-
--
-
-[ed-prev-word](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-prev-word)
-
-
-
-- **Esc** **C**
-
--
-
-[em-capitol-case](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-capitol-case)
-
-
-
-- **Esc** **D**
-
--
-
-[em-delete-next-word](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-delete-next-word)
-
-
-
-- **Esc** **F**
-
--
-
-[em-next-word](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-next-word)
-
-
-
-- **Esc** **L**
-
--
-
-[em-lower-case](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-lower-case)
-
-
-
-- **Esc** **N**
-
--
-
-[ed-search-next-history](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-search-next-history)
-
-
-
-- **Esc** **P**
-
--
-
-[ed-search-prev-history](/momentum/3/3-reference/libedit-editor-commands#libedit.func.ed-search-prev-history)
-
-
-
-- **Esc** **U**
-
--
-
-[em-upper-case](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-upper-case)
-
-
-
-- **Esc** **W**
-
--
-
-[em-copy-region](/momentum/3/3-reference/libedit-editor-commands#libedit.func.em-copy-region)
-
-
-
-- **Esc** **X**
-
--
-
-[ed-command](/momentum/3/3-reference/3-reference-libedit-extended)
-
-
-
-
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/log-formats-version-3.md b/content/momentum/3/3-reference/log-formats-version-3.md
deleted file mode 100644
index 4ce7560ee..000000000
--- a/content/momentum/3/3-reference/log-formats-version-3.md
+++ /dev/null
@@ -1,348 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Log Formats for Version 3.x"
-description: "This section documents the log formats used in Momentum version 3 0 and higher The mainlog ec file logs reception delivery transient failure permanent failure and heartbeat events The log entry format differs depending upon the event type The different formats are described in the following sections Every reception that..."
----
-
-This section documents the log formats used in Momentum version 3.0 and higher.
-
-### The `mainlog.ec` Format
-
-The `mainlog.ec` file logs reception, delivery, transient failure, permanent failure and heartbeat events. The log entry format differs depending upon the event type. The different formats are described in the following sections.
-
-** E.1.1.1. Reception Records**
-
-Every reception that Momentum performs is written to the `mainlog.ec` file as a single line as shown in the example below.
-
-```
-1064868656@00/00-25004-31B987F3@00/00-03736-F4101B54@00/00-04532-A3456B54@R »
-@bob@example.fict@info@postalengine.com@10.0.1.1@201@esmtp@default@default
-```
-
-As with all log file entries, the fields are delimited by `@` signs. The fields are:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1064868656 | The date of reception in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | 00/00-25004-31B987F3 | The message's message-id. This is a unique value per message. This also corresponds with its location on disk. |
-| 2 | 00/00-03736-F4101B54 | The batch ID |
-| 3 | 00/00-04532-A3456B54 | The connection ID |
-| 4 | R | ‘`R`’ indicates a reception. |
-| 5 | bob | The localpart of the recipient. |
-| 6 | example.fict | The domain of the recipient. |
-| 7 | info | The localpart of the envelope sender. |
-| 8 | postalengine.com | The domain of the envelope sender. |
-| 9 | 10.0.1.1 | The IP address the message was received from. |
-| 10 | 201 | The size of the message in bytes. |
-| 11 | esmtp | The protocol the message was received over (either esmtp or ecstream). If the message was transferred from another node, the "protocol" will be `xfer`. The value `internal` indicates an internally generated bounce or a message generated by Sieve. |
-| 12 | default | The MultiVIP® binding group that the message was assigned to. |
-| 13 | default | The MultiVIP® binding that the message was assigned to. |
-
-** E.1.1.2. Delivery Records**
-
-A delivery line is written to `mainlog.ec` for every message that is delivered by Momentum. In a cluster configuration, transfers between nodes are also logged.
-
-The log entry is an `@` delimited string such as the following:
-
-```
-1064871280@20/00-25593-945A87F3@00/00-03736-F4101B54@00/00-04532-A3456B54@D@ »
-postalengine.com@266@group-a@binding-a@0@0.393@10.0.0.1
-```
-
-A description of the fields follows:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1064871280 | The date of delivery in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | 20/00-25593-945A87F3 | The message's message-id. This is a unique value per message. |
-| 2 | 00/00-03736-F4101B54 | The batch ID |
-| 3 | 00/00-04532-A3456B54 | The connection ID |
-| 4 | D | ‘`D`’ marks this line as a successful delivery. In a cluster configuration, transfers between nodes are indicated by an ‘`X`’. ‘`X`’ entries appear in the delivery log on the transferring node indicating that the message left for another cluster node. The node receiving the message will have an ‘`R`’ entry in its log and the "protocol" of the message will be `xfer`. |
-| 5 | postalengine.com | The destination domain. |
-| 6 | 266 | The size in bytes of the delivered message. |
-| 7 | group-a | The MultiVIP® binding group for this message. |
-| 8 | binding-a | The MultiVIP® binding for this message. |
-| 9 | 0 | The number of times the message has been retried. Since this was the initial attempt, the value is 0. |
-| 10 | 0.393 | The amount of time, in seconds, between reception and delivery. |
-| 11 | 10.0.0.1 | The IP address that accepted the message. |
-
-** E.1.1.3. Transient Failure Records**
-
-A transient failure is a failure which allows retry of the same message. The ec_logger module allows for optional logging of transient failures.
-
-A transient failure line is an `@` delimited string like the following:
-
-```
-1064869327@00/00-25593-CBD987F3@00/00-03736-F4101B54@00/00-04532-A3456B54@T@ »
-example.fict@0@group-a@binding-a@15@0@18.53@10.0.0.1@421 no adequate servers
-```
-
-A description of the fields follows:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1064869327 | The date of transient failure in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | 00/00-25004-31B987F3 | The message's message-id. This is a unique value per message. This also corresponds with its location on disk. |
-| 2 | 00/00-03736-F4101B54 | The batch ID |
-| 3 | 00/00-04532-A3456B54 | The connection ID |
-| 4 | T | ‘`T`’ marks this log line as a transient failure. |
-| 5 | example.fict | The destination domain. |
-| 6 | 0 | The number of bytes of data transferred before the failure occurred. Since no connection could be made for bob@example.fict (it's a bogus domain), 0 bytes where transferred. |
-| 7 | group-a | The MultiVIP® binding group for this message. |
-| 8 | binding-a | The MultiVIP® binding for this message. |
-| 9 | 15 | The stage of the message. Stage descriptions can be found at [“Connection Stages”](/momentum/3/3-reference/3-reference-log-formats-connection-stages). |
-| 10 | 0 | The number of times the message has been retried. Since this was the initial attempt, the value is 0. |
-| 11 | 18.53 | The amount of time, in seconds, between reception and this transient failure. |
-| 12 | 10.0.0.1 | The IP address of the server which rejected the message. |
-| 13 | 421 no adequate servers | The error message associated with the failure. |
-
-** E.1.1.4. Permanent Failure Records**
-
-A permanent failure indicates that the message that was attempted failed in such a way that it should not be retried further. After logging a permanent failure the message will be discarded.
-
-A permanent failure line is an '@' delimited string like the following:
-
-```
-1064870847@10/00-25593-393A87F3@00/00-03736-F4101B54@00/00-04532-A3456B54@P@ »
-postalengine.com@31@group-a@binding-a@5@1@3.89@10.0.0.1@552 No such account
-```
-
-A description of the fields follows:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1064870847 | The date of permanent failure in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | 10/00-25593-393A87F3 | The message's message-id. This is a unique value per message. This also corresponds with its location on disk. |
-| 2 | 00/00-03736-F4101B54 | The batch ID |
-| 3 | 00/00-04532-A3456B54 | The connection ID |
-| 4 | P | ‘`P`’ marks the log line as a permanent failure. |
-| 5 | postalengine.com | The destination domain. |
-| 6 | 31 | The number of bytes of data transferred before the failure occurred. Here, 31 bytes were transferred before the remote server returned its error. |
-| 7 | group-a | The MultiVIP® binding group for this message. |
-| 8 | binding-a | The MultiVIP® binding for this message. |
-| 9 | 5 | The stage of the message. Stage descriptions can be found at [“Connection Stages”](/momentum/3/3-reference/3-reference-log-formats-connection-stages). |
-| 10 | 1 | The number of times the message has been retried. |
-| 11 | 3.89 | The amount of time, in seconds, between reception and the time of permanent failure. |
-| 12 | 10.0.0.1 | The IP address of the server that rejected the message. |
-| 13 | 552 No such account | The error message returned from the remote host. |
-
-** E.1.1.5. Heartbeat Records**
-
-A heartbeat is written periodically to the log, to indicate that Momentum is still active and may log further data. The heartbeats are used by the web console for real-time reporting.
-
-`1251470342@@@@M1`
-
-A description of the fields follows:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1191248269 | The date of delivery in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | | Unused. |
-| 2 | | Unused. |
-| 3 | | Unused. |
-| 4 | M1 | ‘`M1`’ marks this line as a heartbeat. Having a different `type` identifier in version 3.x, helps differentiate log entries. This is useful when a log has both version 2.2 and version 3.x entries. |
-
-Having three unused fields ensures that, like other logs, the fifth field is the log entry type. This makes parsing easier.
-
-### The rejectlog.ec Format
-
-This section documents the rejectlog.ec format. Every rejection that Momentum performs is written to the `rejectlog.ec` file as a single line as shown in the following example:
-
-```
-1236672125: R="10.79.25.142:42601" L="10.79.25.142:25" C="18/00-07149-D7E16B94" PATH="default" »
-PATH_GRP="default" P="awaiting mailfrom" E=550 M=scriptlet »
-CTXCONN=[pathway=default,ehlo_string="EHLO rh52-node1",ehlo_domain=rh52-node1] »
-CTXMESS=[mailfrom_domain=,mailfrom_string="MAIL FROM:<>",mailfrom_localpart=] relaying denied
-```
-
-In this case, the fields are delimited by spaces. The fields are:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1236672125: | The date of delivery in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | R="10.79.25.142:42601" | Remote IP:port |
-| 2 | L="10.79.25.142:25" | Local IP:port |
-| 3 | C="18/00-07149-D7E16B94" | Connection ID |
-| 4 | PATH="default" | Pathway |
-| 5 | PATH_GRP="default" | Pathway Group |
-| 6 | P="awaiting mailfrom" | Phase |
-| 7 | E=550 | Error Code |
-| 8 | M=scriptlet | Last Module run |
-| 9 | CTXCONN=[pathway=default,ehlo_string="EHLO rh52-node1",ehlo_domain=rh52-node1] | Validation Context for connection |
-| 10 | CTXMESS=[mailfrom_domain=,mailfrom_string="MAIL FROM:<>",mailfrom_localpart=] | Validation Context for message |
-| 11 | relaying denied | Error message |
-
-The `rejectlog.ec` file also has heartbeat entries in the following format:
-
-`1252064908: Marker 1`
-
-The "Marker 1" entry follows the Unix timestamp and is separated from it by a space.
-
-### The `acctlog.ec` Format
-
-The `acctlog.ec` log contains both authentication entries and authorization entries for the SMTP and Control Listeners. For more information on configuring listeners for logging authentication and authorization events see [“Authentication, Authorization and Accounting”](/momentum/3/3-reference/conf-aaa).
-
-** E.1.3.1. Authentication Records**
-
-If enabled for the listener, authentication events for Unix domain sockets are logged one per line as shown below:
-
-`1160503808@N@/tmp/2025@@ec-user@1`
-
-If enabled for the listener, authentication events for TCP/IP listeners are logged one per line as shown below:
-
-`1160172232@N@*:2025@10.80.116.126:37164@ec_user@1`
-
-The fields are delimited by `@` signs. `@`, `\`, `\n` and other control characters appearing in a field are escaped by adding an `\` before them. The fields are:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1160172232 | The date of authentication in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | N | ‘`N`’ indicates that this is a log for *authentication*. |
-| 2 | *:2025 | The listener endpoint on which the event occurred. |
-| 3 | 10.80.116.126:37164 | The IP and port of the peer. For Unix domain connections, this field will be empty. |
-| 4 | ec_user | The user name used for the authentication. |
-| 5 | 1 | 1 means the authentication is successful. 0 otherwise. |
-
-** E.1.3.2. Authorization Records**
-
-A line is written to `acctlog.ec` for every authorization event. The line is an `@` delimited string. `@`, `\`, `\n` and other control characters appearing in a field are escaped by adding an `\` before them.
-
-Authorization entries might look like the following:
-
-```
-1160503811@Z@/tmp/2025@@ec-user@1@summary@users
-1160504707@Z@/tmp/2025@@ec-user@0@shutdown
-1160172223@Z@*:2025@10.80.116.126:37162@ec-user@1@summary@users
-1160172219@Z@*:2025@10.80.116.126:37162@ec-user@0@shutdown
-```
-
-A description of the fields follows:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1160172219 | The date of authorization in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | Z | ‘`Z`’ indicates that this is an *authorization* entry. |
-| 2 | /tmp/2025 *or* *:2025 | The listener endpoint on which the event occurred. |
-| 3 | 10.80.116.126:37162 | The IP and port of the peer. For Unix domain connections this field will be blank. |
-| 4 | ec_user | The user name used for the authentication. |
-| 5 | 1 | 1 means the user is authorized to run the command. 0 means the authorization failed. -1 means some error occurred during authorization. |
-| 6 | summary | The command that was requested to run. |
-| 7 | users | The role that matched during successful authorization. |
-
-### Note
-
-The ‘`T`’ type indicator denotes an authentication timeout and the ‘`?`’ type indicator denotes an unknown acctlog type.
-
-### The importlog Format
-
-You can record the outcome of a spool import operation (see [spool import](/momentum/3/3-reference/3-reference-console-commands-spool-import)) by configuring a path for the `importlog`. To do this add the following line to the ec_logger module:
-
-```
-...
-importlog = /var/log/ecelerity/importlog.ec
-```
-
-By default no log rotation is performed for the importlog.
-
-The format for the importlog is:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1064869327 | The date of the event in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | 00/00-25004-31B987F3 | The message's original in-spool message-id. This is a unique value per message. This corresponds with its location in the spool being imported. |
-| 2 | I | ‘`I`’ indicates that this log line is an import event. |
-| 3 | 00/00-25004-31B987F3 | The message's new in-spool message-id. This is usually the same as the message-id recorded in field 1, but may be altered during import to avoid collisions with existing messages with the same identifier. |
-| 4 | 1 | The result indicator. This is a number between 1 and 4 with the following meanings. 1 is complete success, 2 indicates failure during the read of metadata, 3 is failure reading the message from the spool and 4 is failure writing the message into the main Momentum spool. |
-| 5 | /var/spool/my-alternative-spool | The base directory containing the spool being imported. |
-
-### The bounce_logger
-
-bounce_logger writes a single logfile, `bouncelog.ec`, which records both in-band (or protocol-time) and out-of-band bounces. The format was designed to be a concise, machine-parseable, computationally inexpensive and complete format for writing information about every bounce message.
-
-** E.1.5.1. The bounce_logger Format**
-
-The `bouncelog.ec` file logs bounces and heartbeats. The log entry format differs depending upon the event type.
-
-** E.1.5.1.1. Bounce Records**
-
-Every bounce that Momentum witnesses is written to the `bouncelog.ec` file as a single line as show in the example below. (this example has been wrapped for display purposes; it will be a single line in the log file).
-
-```
-1064868656@91/6D-07914-E67BC044@00/00-03736-F4101B54@00/00-04532-A3456B54@B@ »
-johndoe@example.fict@info@postalengine.com@group-a@binding-a@21@24@1223@10.0.0.1@554 »
- 5.4.7 [internal] exceeded max time without delivery
-```
-
-As in all ec_logger-formatted entries, the fields are delimited by `@` signs. The fields are:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1064868656 | The date of reception in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | 91/6D-07914-E67BC044 | The message's message-id. This is a unique value per message. This also corresponds with its location on disk. |
-| 2 | 00/00-03736-F4101B54 | The batch ID |
-| 3 | 00/00-04532-A3456B54 | The connection ID |
-| 4 | B | The log type. ‘`B`’ indicates a bounce. If the `log_transient_failures` option is on, transient failures are indicated by ‘`T`’. |
-| 5 | johndoe | The localpart of the recipient of the original message. |
-| 6 | example.fict | The domain of the recipient. |
-| 7 | info | The localpart of the envelope sender. |
-| 8 | postalengine.com | The domain of the envelope sender. |
-| 9 | group-a | The binding group the bounce email was bound to, if available. |
-| 10 | binding-a | The binding the bounce email was bound to, if available. |
-| 11 | 21 | The phase the message occurred in. See [“Connection Stages”](/momentum/3/3-reference/3-reference-log-formats-connection-stages) for details. |
-| 12 | 24 | The classification code for the message. 24 is a Timeout-Before-Delivery error. See [“Bounce Classification Codes”](/momentum/3/3-reference/3-reference-bounce-logger-classification-codes) for the full code list. |
-| 13 | 1223 | The message size. |
-| 14 | 10.0.0.1 | The IP address of the server that bounced the message. |
-| 15 | 554 5.4.7 [internal] exceeded max time without delivery | The raw bounce message from the server. |
-
-The bounce logs also have heartbeat entries in the following format:
-
-`1251222268@@@@M1`
-
-A description of the fields follows:
-
-
-
-
-| Offset | Field | Meaning |
-| --- | --- | --- |
-| 0 | 1191248269 | The date of delivery in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970). |
-| 1 | | Unused. |
-| 2 | | Unused. |
-| 3 | | Unused. |
-| 4 | M1 | ‘`M1`’ marks this line as a heartbeat. Having a different `type` identifier in version 3.x, helps differentiate log entries. This is useful when a log has both version 2.2 and version 3.x entries. |
-
-Having three unused fields ensures that, like other logs, the fifth field is the log entry type. This makes parsing easier.
-
-** E.1.5.1.2. Bounce Classification Codes**
-
-The bounce classification codes are identical for all versions of Momentum. For a list of the codes and their meanings see [“Bounce Classification Codes”](/momentum/3/3-reference/3-reference-bounce-logger-classification-codes).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-del-header.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-del-header.md
deleted file mode 100644
index 97467c2b3..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-del-header.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.del_header"
-description: "msys policyeditor del header Remove a header from the message msys policyeditor del header ctx vars params Configuration Change This function is deprecated Use msg header X hdr to remove a header For more information see msg header Remove a header from the message The ctx parameter is the context..."
----
-
-
-## Name
-
-msys.policyeditor.del_header — Remove a header from the message
-
-
-## Synopsis
-
-`msys.policyeditor.del_header(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `msg:header("X-hdr", "")` to remove a header. For more information see [msg:header](/momentum/3/3-reference/3-reference-lua-ref-header).
-
-
-## Description
-
-Remove a header from the message.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-The defined parameter for `params` is: `header` the name of the header to delete.
-
-
-## See Also
-
-[msys.policyeditor.get_header](/momentum/3/3-reference/lua-ref-msys-policyeditor-get-header)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-binding-domain-failure-rate.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-binding-domain-failure-rate.md
deleted file mode 100644
index 9c96f0301..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-binding-domain-failure-rate.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.get_binding_domain_failure_rate"
-description: "msys policyeditor get binding domain failure rate Get the failure rate for a particular domain and binding combination msys policyeditor get binding domain failure rate ctx vars params Gets the failure rate for a particular domain and binding combination The function only returns a value if it is statistically valid..."
----
-
-
-## Name
-
-msys.policyeditor.get_binding_domain_failure_rate — Get the failure rate for a particular domain and binding combination
-
-
-## Synopsis
-
-`msys.policyeditor.get_binding_domain_failure_rate(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-## Description
-
-Gets the failure rate for a particular domain and binding combination. The function only returns a value if it is "statistically valid"that is, since the function returns a percentage, it will only return a non-zero value if the divisor is 100 or more.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-Defined parameters for `params` are:
-
-* `binding` the name of the binding
-
-* `domain` the domain name
-
-* `period` the period for which statistics are valid
-
-Returns true if the assignment was successful, or false otherwise. A false return value usually indicates that there are no suitable bindings on this node.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-header.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-header.md
deleted file mode 100644
index c73a6a259..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-header.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.get_header"
-description: "msys policyeditor get header Return the value of a header field msys policyeditor get header ctx vars params Configuration Change This function is deprecated Use local x msg header X Custom Hdr to get a header For more information see msg header Return the value of a header field The..."
----
-
-
-## Name
-
-msys.policyeditor.get_header — Return the value of a header field
-
-
-## Synopsis
-
-`msys.policyeditor.get_header(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `local x = msg:header("X-Custom-Hdr")` to get a header. For more information see [msg:header](/momentum/3/3-reference/3-reference-lua-ref-header).
-
-
-## Description
-
-Return the value of a header field.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-Defined parameters for `params` are:
-
-* `header` the name of the header to retrieve
-
-
-## See Also
-
-[msys.policyeditor.del_header](/momentum/3/3-reference/lua-ref-msys-policyeditor-del-header)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mailfrom.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mailfrom.md
deleted file mode 100644
index ce98d48ea..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mailfrom.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.get_mailfrom"
-description: "msys policyeditor get mailfrom Return the envelope sender msys policyeditor get mailfrom ctx vars params Configuration Change This function is deprecated Use local mf msg mailfrom to get the sending address For more information see msg mailfrom Return the envelope sender The ctx parameter is the context containing objects from..."
----
-
-
-## Name
-
-msys.policyeditor.get_mailfrom — Return the envelope sender
-
-
-## Synopsis
-
-`msys.policyeditor.get_mailfrom(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `local mf = msg:mailfrom()` to get the sending address. For more information see [msg:mailfrom](/momentum/3/3-reference/3-reference-lua-ref-msg-mailfrom).
-
-
-## Description
-
-Return the envelope sender.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-There are no defined parameters for `params`.
-
-
-## See Also
-
-[msys.policyeditor.get_rcptto](/momentum/3/3-reference/lua-ref-msys-policyeditor-get-rcptto)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mess-recv-from.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mess-recv-from.md
deleted file mode 100644
index ef28252ff..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mess-recv-from.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.get_mess_recv_from"
-description: "msys policyeditor get mess recv from Return the IP port combination from which the message was received msys policyeditor get mess recv from ctx vars params Configuration Change This function is deprecated Use local rip msg reception peer ip to get the IP address of the injecting server For more..."
----
-
-
-## Name
-
-msys.policyeditor.get_mess_recv_from — Return the IP:port combination from which the message was received
-
-
-## Synopsis
-
-`msys.policyeditor.get_mess_recv_from(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `local rip = msg:reception_peer('ip')` to get the IP address of the injecting server. For more information see [msg:reception_peer](/momentum/3/3-reference/3-reference-lua-ref-msg-reception-peer).
-
-
-## Description
-
-Return the IP:port combination from which the message was received.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-There are no defined parameters for `params`.
-
-
-## See Also
-
-[msys.policyeditor.get_mess_recv_via](/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mess-recv-via)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mess-recv-via.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mess-recv-via.md
deleted file mode 100644
index c11a64dcc..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mess-recv-via.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.get_mess_recv_via"
-description: "msys policyeditor get mess recv via Return the IP port combination on which the message was received msys policyeditor get mess recv via ctx vars params Configuration Change This function is deprecated Use local svc point msg listener addr ip to get the IP address of the listener that the..."
----
-
-
-## Name
-
-msys.policyeditor.get_mess_recv_via — Return the IP:port combination on which the message was received
-
-
-## Synopsis
-
-`msys.policyeditor.get_mess_recv_via(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `local svc_point = msg:listener_addr('ip')` to get the IP address of the listener that the message was received on. For more information see [msg:listener_addr](/momentum/3/3-reference/3-reference-lua-ref-msg-listener-addr).
-
-
-## Description
-
-Return the IP:port combination on which the message was received.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-There are no defined parameters for `params`.
-
-
-## See Also
-
-[msys.policyeditor.get_mess_recv_from](/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mess-recv-from)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-rcptto.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-rcptto.md
deleted file mode 100644
index ac14d8fd5..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-rcptto.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.get_rcptto"
-description: "msys policyeditor get rcptto Return the recipient msys policyeditor get rcptto ctx vars params Configuration Change This function is deprecated Use local recip msg rcptto to get the RCPT TO email address For more information see msg rcptto Return the recipient The ctx parameter is the context containing objects from..."
----
-
-
-## Name
-
-msys.policyeditor.get_rcptto — Return the recipient
-
-
-## Synopsis
-
-`msys.policyeditor.get_rcptto(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `local recip = msg:rcptto()` to get the RCPT TO email address. For more information see [msg:rcptto](/momentum/3/3-reference/3-reference-lua-ref-msg-rcptto).
-
-
-## Description
-
-Return the recipient.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-
-## See Also
-
-[msys.policyeditor.get_mess_recv_via](/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mess-recv-via), [msys.policyeditor.get_mailfrom](/momentum/3/3-reference/lua-ref-msys-policyeditor-get-mailfrom)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-variable.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-variable.md
deleted file mode 100644
index ce3d06c2d..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-get-variable.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.get_variable"
-description: "msys policyeditor get variable Return the value of a script variable msys policyeditor get variable ctx vars params Configuration Change This function is deprecated You can easily access the value of Lua variables within the Lua policy script Return the value of a script variable The ctx parameter is the..."
----
-
-
-## Name
-
-msys.policyeditor.get_variable — Return the value of a script variable
-
-
-## Synopsis
-
-`msys.policyeditor.get_variable(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. You can easily access the value of Lua variables within the Lua policy script.
-
-
-## Description
-
-Return the value of a script variable
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-Defined parameters for params are:
-
-* `name` the name of the variable to be set value: the value to set it to.
-
-* `value` the value to set it to
-
-
-## See Also
-
-[msys.policyeditor.set_variable](/momentum/3/3-reference/lua-ref-msys-policyeditor-set-variable) [“Using Variables”](/momentum/3/3-reference/web-3-policy-editor#web3.policy.editor.variables)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-pcre-match.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-pcre-match.md
deleted file mode 100644
index 837687fec..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-pcre-match.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.pcre_match"
-description: "msys policyeditor pcre match Perform a PCRE regex match operation msys policyeditor pcre match ctx vars params Configuration Change This function is deprecated Use local str msys pcre match string pattern to perform a PCRE match For more information see msys pcre match Perform a PCRE regex match operation A..."
----
-
-
-## Name
-
-msys.policyeditor.pcre_match — Perform a PCRE regex match operation
-
-
-## Synopsis
-
-`msys.policyeditor.pcre_match(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `local str = msys.pcre.match("string", "pattern")` to perform a PCRE match. For more information see [msys.pcre.match](/momentum/3/3-reference/3-reference-lua-ref-msys-pcre-match).
-
-
-## Description
-
-Perform a PCRE regex match operation.
-
-A side effect of operation is that the variable `$0` is set to the subject string, `$1` is set to the first capturing subexpression, `$2` the second and so on. Additionally, if you use one of the various forms of named subexpression captures, such as `(?P\d+)`, then the name of each captured item will be prefixed with a dollar sign and set as a script variable (so you'd have `$name` if you used `(?P\d+)`).
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-Defined parameters for `params` are:
-
-* `subject` the string to be matched
-
-* `pattern` the PCRE regex pattern to match against
-
-
-## See Also
-
-[“Using Regular Expressions with the Policy Editor”](/momentum/3/3-reference/web-3-policy-editor#web3.policy.editor.regex)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-send-email.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-send-email.md
deleted file mode 100644
index f41c1a864..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-send-email.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.send_email"
-description: "msys policyeditor send email Sends a simple email message msys policyeditor send email ctx vars params Configuration Change This function is deprecated Use a combination of msg build and msg inject to send a message For more information see msg build and msg inject Sends a simple email message Builds..."
----
-
-
-## Name
-
-msys.policyeditor.send_email — Sends a simple email message
-
-
-## Synopsis
-
-`msys.policyeditor.send_email(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use a combination of `msg:build()` and `msg:inject()` to send a message. For more information see [msg:build](/momentum/3/3-reference/3-reference-lua-ref-msg-build) and [msg:inject](/momentum/3/3-reference/3-reference-lua-ref-msg-inject).
-
-
-## Description
-
-Sends a simple email message. Builds out a simple, non-MIME, RFC2822 email message based on the supplied sender, recipient, subject and body content. The from and to must be simple RFC2821 email addresses, that is, addresses of the form user@domain with no friendly names or other surrounding punctuation.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-Defined parameters for params are:
-
-* `from` the envelope sender and "From" header for the generated email
-
-* `to` the envelope recipient and "To" header for the generated email
-
-* `subject` the subject line for the generated email
-
-* `body` the body of the message
-
-* `throttle` if non-zero, limits sending to one message every "throttle" seconds
-
-
-## See Also
-
-[“Automated Alerting Configuration”](/momentum/3/3-reference/web-3-automated-alerting)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-send-trap.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-send-trap.md
deleted file mode 100644
index 927dfc0eb..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-send-trap.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.send_trap"
-description: "msys policyeditor send trap Send an SNMP trap msys policyeditor send trap ctx vars params Configuration Change This function is deprecated Use msys snmp Trap to send an SNMP trap For more information see msys snmp Trap Send an SNMP trap The ctx parameter is the context containing objects from..."
----
-
-
-## Name
-
-msys.policyeditor.send_trap — Send an SNMP trap
-
-
-## Synopsis
-
-`msys.policyeditor.send_trap(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `msys.snmpTrap()` to send an SNMP trap. For more information see [msys.snmpTrap](/momentum/3/3-reference/3-reference-lua-ref-msys-snmp-trap).
-
-
-## Description
-
-Send an SNMP trap
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-Defined parameters for `params` are:
-
-* `type` specifies the data type of the payload. Can be one of "string", "counter", "gauge" or "ip"
-
-* `payload` the data to be sent with the trap. For "string" data, this must be a string. For "ip" data, this must be a string rendition of an IPv4 address. For "counter" and "gauge" types, it must be numeric.
-
-* `address` the trap server address; an IPv4 address string.
-
-* `port` the port number of the trap server
-
-* `community` the community for authorization purposes with the trap daemon
-
-* `mib` the mib for the trap. If not specified, defaults to the Ecelerity enterprise MIB ("1.3.6.1.4.1.19552.1.4.7")
-
-* `trapvarmib` the Object Identifier (OID) to use for the trap variable. If unspecified, defaults to "1.3.6.1.4.1.19552.1.4.1.0".
-
-* `throttle` if non-zero, limits sending to one trap every "throttle" seconds.
-
-
-## See Also
-
-[“Automated Alerting Configuration”](/momentum/3/3-reference/web-3-automated-alerting)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-set-binding-group.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-set-binding-group.md
deleted file mode 100644
index 10bcdd3f4..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-set-binding-group.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.set_binding_group"
-description: "msys policyeditor set binding group Assign the message to a named binding group msys policyeditor set binding group ctx vars params Configuration Change This function is deprecated Use msg binding group bndgp to set a binding group For more information see msg binding group Assigns the message to a named..."
----
-
-
-## Name
-
-msys.policyeditor.set_binding_group — Assign the message to a named binding group
-
-
-## Synopsis
-
-`msys.policyeditor.set_binding_group(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `msg:binding_group(bndgp)` to set a binding group. For more information see [msg:binding_group](/momentum/3/3-reference/3-reference-lua-ref-msg-binding-group).
-
-
-## Description
-
-Assigns the message to a named binding group. Randomly picks a binding from the named binding group and assigns the message to it. This function will not pick bindings that are unplumbed or that belong to a different node in the cluster; it will always pick a valid binding that belongs to the node.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-The defined parameter for `params` is:
-
-* `binding_group` the name of the binding group to assign to. If commas appear, it's a list of bindings, and we pick one at random.
-
-
-## See Also
-
-[msys.policyeditor.set_binding](/momentum/3/3-reference/lua-ref-msys-policyeditor-set-binding)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-set-binding.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-set-binding.md
deleted file mode 100644
index 7f4379b6b..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-set-binding.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.set_binding"
-description: "msys policyeditor set binding Assign the message to a named binding msys policyeditor set binding ctx vars params Configuration Change This function is deprecated Use msg binding bnd to set a binding For more information see msg binding Assign the message to a named binding If commas appear it's a..."
----
-
-
-## Name
-
-msys.policyeditor.set_binding — Assign the message to a named binding
-
-
-## Synopsis
-
-`msys.policyeditor.set_binding(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `msg:binding(bnd)` to set a binding. For more information see [msg:binding](/momentum/3/3-reference/3-reference-lua-ref-msg-binding).
-
-
-## Description
-
-Assign the message to a named binding. If commas appear, it's a list of bindings, and we pick one at random.
-
-### Note
-
-If you assign messages to bindings, it is important to ensure that *all* messages are assigned to bindings, or to make sure that the fallback binding (otherwise known as "default") does what you want. Good scripting practice would be to ensure that there is always an `else` clause or some other way of ensuring that all messages are always dealt with in some way. For example, you could create a variable at the top of your script with the most general binding, then `if` blocks to assign a message to a more specific binding if it matches. At the end of the script, assuming no `if` condition applies, the `else` clause would assign the message to the most general binding.
-
-You can use this function to set the binding to the `default` binding. For more information see [the section called “The "default" Binding”](/momentum/3/3-reference/3-reference-conf-ref-binding#conf.ref.binding.default).
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-The defined parameter for `params` is:
-
-* `binding` the name of the binding to assign to. If commas appear, it's a list of bindings, and we pick one at random.
-
-
-## See Also
-
-[msys.policyeditor.set_binding_group](/momentum/3/3-reference/lua-ref-msys-policyeditor-set-binding-group)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-set-variable.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-set-variable.md
deleted file mode 100644
index 6368f6e3a..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-set-variable.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.set_variable"
-description: "msys policyeditor set variable Set the value of a script variable msys policyeditor set variable ctx vars params Configuration Change This function is deprecated You can easily set a Lua variable as follows local x y Set the value of a script variable The ctx parameter is the context containing..."
----
-
-
-## Name
-
-msys.policyeditor.set_variable — Set the value of a script variable
-
-
-## Synopsis
-
-`msys.policyeditor.set_variable(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. You can easily set a Lua variable as follows: `local x = y;` .
-
-
-## Description
-
-Set the value of a script variable
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-Defined parameters for params are:
-
-* `name` the name of the variable to be set
-
-* `value` the value to set the variable to
-
-
-## See Also
-
-[msys.policyeditor.get_variable](/momentum/3/3-reference/lua-ref-msys-policyeditor-get-variable), [“Using Variables”](/momentum/3/3-reference/web-3-policy-editor#web3.policy.editor.variables)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-conn-get.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-conn-get.md
deleted file mode 100644
index 55dfdcb13..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-conn-get.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.vctx_conn_get"
-description: "msys policyeditor vctx conn get Return a connection validation context value msys policyeditor vctx conn get ctx vars params Configuration Change This function is deprecated Use local value msg context get msys core ECMESS CTX CONN key to get a connection context value For more information see msg context get..."
----
-
-
-## Name
-
-msys.policyeditor.vctx_conn_get — Return a connection validation context value
-
-
-## Synopsis
-
-`msys.policyeditor.vctx_conn_get(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `local value = msg:context_get(msys.core.ECMESS_CTX_CONN, "key")` to get a connection context value. For more information see [msg:context_get](/momentum/3/3-reference/3-reference-lua-ref-msg-context-get).
-
-
-## Description
-
-Return a connection validation context value.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-The defined parameter for `params` is:
-
-* `key` the name of the context variable to be returned
-
-
-## See Also
-
-[msys.policyeditor.vctx_conn_set](/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-conn-set)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-conn-set.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-conn-set.md
deleted file mode 100644
index 75deaa71e..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-conn-set.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.vctx_conn_set"
-description: "msys policyeditor vctx conn set Set a connection validation context value msys policyeditor vctx conn set ctx vars params Configuration Change This function is deprecated Use msg context set msys core ECMESS CTX CONN key value to set a connection context value For more information see msg context set Set..."
----
-
-
-## Name
-
-msys.policyeditor.vctx_conn_set — Set a connection validation context value
-
-
-## Synopsis
-
-`msys.policyeditor.vctx_conn_set(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `msg:context_set(msys.core.ECMESS_CTX_CONN, "key", "value")` to set a connection context value. For more information see [msg:context_set](/momentum/3/3-reference/3-reference-lua-ref-msg-context-set).
-
-
-## Description
-
-Set a connection validation context value.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-* `key` the name of the context variable to be set
-
-* `value` the value to which it will be set
-
-
-## See Also
-
-[msys.policyeditor.vctx_conn_get](/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-conn-get)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-mess-get.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-mess-get.md
deleted file mode 100644
index 2a62dec08..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-mess-get.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.vctx_mess_get"
-description: "msys policyeditor vctx mess get Return a message validation context value msys policyeditor vctx mess get ctx vars params Configuration Change This function is deprecated Use local value msg context get msys core ECMESS CTX MESS key to get a message context value For more information see msg context get..."
----
-
-
-## Name
-
-msys.policyeditor.vctx_mess_get — Return a message validation context value
-
-
-## Synopsis
-
-`msys.policyeditor.vctx_mess_get(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `local value = msg:context_get(msys.core.ECMESS_CTX_MESS, "key")` to get a message context value. For more information see [msg:context_get](/momentum/3/3-reference/3-reference-lua-ref-msg-context-get).
-
-
-## Description
-
-Return a message validation context value.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-The defined parameter for `params` is `key` the name of the context variable to be returned.
-
-
-## See Also
-
-[msys.policyeditor.vctx_mess_set](/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-mess-set)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-mess-set.md b/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-mess-set.md
deleted file mode 100644
index ead3066ec..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-mess-set.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.policyeditor.vctx_mess_set"
-description: "msys policyeditor vctx mess set Set a message validation context value msys policyeditor vctx mess set ctx vars params Configuration Change This function is deprecated Use msg context set msys core ECMESS CTX MESS key value to set a message context value For more information see msg context set Set..."
----
-
-
-## Name
-
-msys.policyeditor.vctx_mess_set — Set a message validation context value
-
-
-## Synopsis
-
-`msys.policyeditor.vctx_mess_set(ctx, vars, params);`
-
-```
-ctx: table
-vars: table
-params: table
-```
-
-**Configuration Change. ** This function is deprecated. Use `msg:context_set(msys.core.ECMESS_CTX_MESS, "key", "value")` to set a message context value. For more information see [msg:context_set](/momentum/3/3-reference/3-reference-lua-ref-msg-context-set).
-
-
-## Description
-
-Set a message validation context value.
-
-The `ctx` parameter is the context containing objects from the callout, `vars` is a table containing script variables and `params` is a table containing parameters to be passed to this routine.
-
-The defined parameters for `params` are:
-
-* `key` the name of the context variable
-
-* `value` the value to which it will be set
-
-
-## See Also
-
-[msys.policyeditor.vctx_mess_get](/momentum/3/3-reference/lua-ref-msys-policyeditor-vctx-mess-get)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-run-sieve-script.md b/content/momentum/3/3-reference/lua-ref-msys-run-sieve-script.md
deleted file mode 100644
index 35b54a38a..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-run-sieve-script.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.runSieveScript"
-description: "msys run Sieve Script Run a Sieve script in the specified phase msys run Sieve Script scriptfilename phase capabilities Runs the Sieve script contained in scriptfilename as though it were being run in the phasename phase capabilities is a mask of Sieve capabilities OR d together as appropriate for the..."
----
-
-
-## Name
-
-msys.runSieveScript — Run a Sieve script in the specified phase
-
-
-## Synopsis
-
-`msys.runSieveScript(scriptfilename, phase, capabilities);`
-
-```
-scriptfilename: string
-phase: string
-capabilities: number
-```
-
-## Description
-
-Runs the Sieve script contained in `scriptfilename` as though it were being run in the `phasename` phase. `capabilities` is a mask of Sieve capabilities, OR'd together, as appropriate for the currently executing environment. The Lua "bag" state is passed through to the Sieve interpreter, allowing the message and validation context information to be used by the script. This function returns two values:
-
-* boolean success indicator
-
-* error message string if success indicator is false
-
-Possible capability values are:
-
-* msys.core.SIEVEREQ_MSG
-
-* msys.core.SIEVEREQ_ENV_FROM
-
-* msys.core.SIEVEREQ_ENV_TO
-
-* msys.core.SIEVEREQ_AC
-
-* msys.core.SIEVEREQ_550_OK
-
-* msys.core.SIEVEREQ_PHASE_CONNECT
-
-* msys.core.SIEVEREQ_PHASE_EHLO
-
-* msys.core.SIEVEREQ_PHASE_MAILFROM
-
-* msys.core.SIEVEREQ_PHASE_RCPTTO
-
-* msys.core.SIEVEREQ_PHASE_DATA
-
-* msys.core.SIEVEREQ_PHASE_SPOOL
-
-* msys.core.SIEVEREQ_PHASE_EACH_RCPT
-
-* msys.core.SIEVEREQ_DNS_LOOKUP_OK
-
-* msys.core.SIEVEREQ_MSG_BODY
-
-* msys.core.SIEVEREQ_PHASE_ACCEPT
-
-Because this function is in the `msys` namespace, an explicit `require` is not necessary.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-share-get.md b/content/momentum/3/3-reference/lua-ref-msys-share-get.md
deleted file mode 100644
index ddef0935a..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-share-get.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.shareGet"
-description: "msys share Get Retrieve the value associated with keystring set by an earlier call to msys share Set msys share Get keystring Retrieves the value associated with keystring set by an earlier call to msys share Set If there is no value associated with the keystring this function returns nil..."
----
-
-
-## Name
-
-msys.shareGet — Retrieve the value associated with keystring set by an earlier call to msys.shareSet
-
-
-## Synopsis
-
-`msys.shareGet(keystring);`
-
-`keystring: string`
-## Description
-
-Retrieves the value associated with `keystring` set by an earlier call to `msys.shareSet`. If there is no value associated with the `keystring`, this function returns nil. It returns true if the value was stored successfully, false otherwise. The most likely cause of failure is an invalid value for `keystring`.
-
-### Note
-
-This function has been made obsolete by the data sharing features introduced in version 3.2\. For more information see [msys.runInPool](/momentum/3/3-reference/3-reference-lua-ref-msys-runinpool).
-
-
-
-
-```
-incrementing a counter in a thread safe manner
-msys.lock("counter-example");
-local c= msys.shareGet("my-counter");
-if c == nil then
- c = 0;
-end
-msys.shareSet("my-counter", c + 1);
-msys.unlock("counter-example");
-```
-
-Because this function is in the `msys` namespace, an explicit `require` is not necessary.
-
-
-## See Also
-
-[msys.shareSet](/momentum/3/3-reference/lua-ref-msys-share-set), [msys.shareUnset](/momentum/3/3-reference/lua-ref-msys-share-unset)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-share-set.md b/content/momentum/3/3-reference/lua-ref-msys-share-set.md
deleted file mode 100644
index 0fe73226a..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-share-set.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.shareSet"
-description: "msys share Set Associate a value with a keystring in the global share space msys share Set keystring value This function associates a value with keystring in the global share space This association is thread safe and consistent across all Lua interpreters and co routines The act of setting the..."
----
-
-
-## Name
-
-msys.shareSet — Associate a value with a keystring in the global share space
-
-
-## Synopsis
-
-`msys.shareSet(keystring, value);`
-
-```
-keystring: string
-value: string
-```
-
-## Description
-
-This function associates a value with `keystring` in the global share space. This association is thread-safe and consistent across all Lua interpreters and co-routines. The act of setting the value is thread safe and does not require an explicit mutex, but it is recommended that you use a mutex to coordinate modification of the value. `value` may be a number, string, boolean or nil value.
-
-### Note
-
-This function has been made obsolete by the data sharing features introduced in version 3.2\. For more information see [msys.runInPool](/momentum/3/3-reference/3-reference-lua-ref-msys-runinpool).
-
-
-
-
-```
-...
- incrementing a counter in a thread safe manner
-msys.lock("counter-example");
-local c= msys.shareGet("my-counter");
-if c == nil then
- c = 0;
-end
-msys.shareSet("my-counter", c + 1);
-msys.unlock("counter-example");
-```
-
-Because this function is in the `msys` namespace, an explicit `require` is not necessary.
-
-
-## See Also
-
-[msys.shareGet](/momentum/3/3-reference/lua-ref-msys-share-get), [msys.shareUnset](/momentum/3/3-reference/lua-ref-msys-share-unset)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-share-unset.md b/content/momentum/3/3-reference/lua-ref-msys-share-unset.md
deleted file mode 100644
index b7a851144..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-share-unset.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.shareUnset"
-description: "msys share Unset Remove the association with keystring from the global share space msys share Unset keystring Removes the association with keystring from the global share space This function has been made obsolete by the data sharing features introduced in version 3 2 For more information see msys run In..."
----
-
-
-## Name
-
-msys.shareUnset — Remove the association with keystring from the global share space
-
-
-## Synopsis
-
-`msys.shareUnset(keystring);`
-
-`keystring: string`
-## Description
-
-Removes the association with keystring from the global share space.
-
-### Note
-
-This function has been made obsolete by the data sharing features introduced in version 3.2\. For more information see [msys.runInPool](/momentum/3/3-reference/3-reference-lua-ref-msys-runinpool).
-
-Because this function is in the `msys` namespace, an explicit `require` is not necessary.
-
-
-## See Also
-
-[msys.shareSet](/momentum/3/3-reference/lua-ref-msys-share-set), [msys.shareGet](/momentum/3/3-reference/lua-ref-msys-share-get)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-domains.md b/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-domains.md
deleted file mode 100644
index 709cdeb75..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-domains.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.validate.dkim.get_domains"
-description: "msys validate dkim get domains Return a list of valid signing domains msys validate dkim get domains msg vctx This function requires the dkim validate module msg is a mail message vctx is the validation context This function returns a list of valid signing domains Example 15 65 msys validate..."
----
-
-
-## Name
-
-msys.validate.dkim.get_domains — Return a list of valid signing domains
-
-
-## Synopsis
-
-`msys.validate.dkim.get_domains(msg, vctx);`
-
-```
-msg: userdata, ec_message type
-vctx: userdata, validate_context type
-```
-
-## Description
-
-This function requires the dkim_validate module. `msg` is a mail message. `vctx` is the validation context. This function returns a list of valid signing domains.
-
-
-
-
-```
-require("msys.validate.dkim");
-local mod = {};
-function mod:validate_data_spool(msg, accept, vctx)
- local domain = msys.validate.dkim.get_responsible_domain();
- print("msys.validate.dkim.get_responsible_domain returns ", domain);
- local domains = msys.validate.dkim.get_domains(msg, vctx);
- print("msys.validate.dkim.get_domains returns ", domains);
- return msys.core.VALIDATE_CONT;
-end
-
-msys.registerModule("test_dkim", mod);
-```
-
-Enable this function with the statement `require('msys.validate.dkim');`.
-
-
-## See Also
-
-[msys.validate.dkim.get_responsible_domain](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-responsible-domain), [msys.validate.dkim.get_domains](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-domains), [msys.validate.dkim.reflect](/momentum/3/3-reference/lua-ref-msys-validate-dkim-reflect), [msys.validate.dkim.sign](/momentum/3/3-reference/lua-ref-msys-validate-dkim-sign), [“dkim – DomainKeys Identified Mail Signatures”](/momentum/3/3-reference/modules-dkim)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-responsible-domain.md b/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-responsible-domain.md
deleted file mode 100644
index 4f481835d..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-responsible-domain.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.validate.dkim.get_responsible_domain"
-description: "msys validate dkim get responsible domain Return the domain responsible for the current message msys validate dkim get responsible domain msg vctx This function requires the dkim validate module msg is a mail message vctx is the validation context It returns the domain responsible for the current message Enable this..."
----
-
-
-## Name
-
-msys.validate.dkim.get_responsible_domain — Return the domain responsible for the current message
-
-
-## Synopsis
-
-`msys.validate.dkim.get_responsible_domain(msg, vctx);`
-
-```
-msg: userdata, ec_message type
-vctx: userdata, validate_context type
-```
-
-## Description
-
-This function requires the dkim_validate module. `msg` is a mail message. `vctx` is the validation context. It returns the domain responsible for the current message.
-
-Enable this function with the statement `require('msys.validate.dkim');`.
-
-
-## See Also
-
-[msys.validate.dkim.get_domains](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-domains), [msys.validate.dkim.reflect](/momentum/3/3-reference/lua-ref-msys-validate-dkim-reflect), [msys.validate.dkim.sign](/momentum/3/3-reference/lua-ref-msys-validate-dkim-sign), [“dkim – DomainKeys Identified Mail Signatures”](/momentum/3/3-reference/modules-dkim)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-verify-results.md b/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-verify-results.md
deleted file mode 100644
index b1425065d..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-verify-results.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.validate.dkim.get_verify_results"
-description: "msys validate dkim get verify results return the number of DKIM signature results msys validate dkim get verify results vctx Configuration Change This feature is available as of version 3 5 This function returns the number of DKIM signature results and the results table If the optional parameter is not..."
----
-
-
-## Name
-
-msys.validate.dkim.get_verify_results — return the number of DKIM signature results
-
-
-## Synopsis
-
-`require('msys.validate.dkim')`
-
-`msys.validate.dkim.get_verify_results(vctx);`
-
-`vctx: validation_context type (optional)`
-## Description
-
-**Configuration Change. ** This feature is available as of version 3.5.
-
-This function returns the number of DKIM signature results and the results table. If the optional parameter is not present, the validation context will be retrieved from the Lua bag state. Use this function in conjunction with the `dkim.verify_results_get_item` as shown below:
-
-
-
-
-```
-require("msys.core");
-require("msys.validate.dkim");
-require("msys.extended.message");
-
-local mod = {};
-
-function mod:validate_data_spool(msg, accept, vctx)
- local count = 0
- local i = 0
- local result
- local results
- local dkimveres_hdr
- local dkimveres_hdr2
- local p
- local hdrs
- local results_str = ""
- local results_str2 = ""
- count, results = msys.validate.dkim.get_verify_results (vctx)
-
- if count > 0 then
- for i = 0, count-1 do
- result = msys.validate.dkim.verify_results_get_item (results, i)
- if result ~= nil then
- if i > 0 then
- results_str = results_str .. ", "
- end
- results_str = results_str .. result.diagnostic
- if result.query ~= nil then
- results_str2 = results_str2 .. "q=" .. result.query .. " "
- end
- if result.algorithm ~= nil then
- results_str2 = results_str2 .. "a=" .. result.algorithm .. " "
- end
- print ("result status: " .. msys.validate.dkim.verify_status_to_string(result.status))
- end
- end
-
- print (results_str, results_str2)
- print ("results.ref: " .. results.ref)
- end
- results = nil
-
- msg:header("X-DKIM-Results", results_str, "prepend")
- msg:header("N-DKIM-Results", results_str2, "prepend")
-
- return msys.core.VALIDATE_CONT;
-end
-
-msys.registerModule("dkim_verify_results", mod);
-```
-
-This function is valid in the validate_data_spool, data and data_spool_each_rcpt phases. Enable this function with the statement `require('msys.validate.dkim');`.
-
-
-## See Also
-
-[msys.validate.dkim.verify_results_get_count](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-count), [msys.validate.dkim.verify_results_get_item](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-item) [msys.validate.dkim.verify_status_to_string](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-status-to-string)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-reflect.md b/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-reflect.md
deleted file mode 100644
index 10efc7bf3..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-reflect.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.validate.dkim.reflect"
-description: "msys validate dkim reflect Send an email to receiver addrs regarding the validation result of the current message msys validate dkim reflect msg vctx sender addrs receiver addrs subj note This function requires the dkim validate module It should be used before the data validate phase to instruct the system..."
----
-
-
-## Name
-
-msys.validate.dkim.reflect — Send an email to `receiver_addrs` regarding the validation result of the current message
-
-
-## Synopsis
-
-`msys.validate.dkim.reflect(msg, vctx, sender_addrs, receiver_addrs, subj, note);`
-
-```
-msg: userdata, ec_message type
-vctx: userdata, validate_context type
-sender_addrs: string
-receiver_addrs: string
-subj: string, optional
-note: string, optional
-```
-
-## Description
-
-This function requires the dkim_validate module. It should be used before the data_validate phase to instruct the system to send an email to `receiver_addrs` regarding the validation result of the current message.
-
-* `msg` the inbound message to be validated by dkim_validate.
-
-* `vctx` validation context.
-
-* `sender_addr` the "from" address of reflective email.
-
-* `receiver_addrs` a list of addresses (separated by semi-colon) who are going to receive the reflective email. The first one will be used as "To" address of the reflective email and the rest will be used as "Bcc" addresses.
-
-* `subject` optional subject line for the reflective email. If omitted, a default subject line is used.
-
-* `note` optional text to be added to the reflective email. If omitted, a default text is used.
-
-Enable this function with the statement `require('msys.validate.dkim');`.
-
-
-## See Also
-
-[msys.validate.dkim.get_responsible_domain](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-responsible-domain), [msys.validate.dkim.get_domains](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-domains), [msys.validate.dkim.sign](/momentum/3/3-reference/lua-ref-msys-validate-dkim-sign), [“dkim – DomainKeys Identified Mail Signatures”](/momentum/3/3-reference/modules-dkim)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-sign.md b/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-sign.md
deleted file mode 100644
index 48d97cb73..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-sign.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.validate.dkim.sign"
-description: "msys validate dkim sign Sign a message using a DKIM signature msys validate dkim sign msg vctx options This function requires the dkim sign module msg is a mail message vctx is the validation context It signs the message msg using a DKIM signature options is a table which allows..."
----
-
-
-## Name
-
-msys.validate.dkim.sign — Sign a message using a DKIM signature
-
-
-## Synopsis
-
-`msys.validate.dkim.sign(msg, vctx, options);`
-
-```
-msg: userdata, ec_message type
-vctx: userdata, validate_context type
-options: table, optional
-```
-
-## Description
-
-This function requires the dkim_sign module. `msg` is a mail message. `vctx` is the validation context. It signs the message `msg` using a DKIM signature. `options` is a table which allows the caller to override the following options:
-
-* `base_domain/signing_domain` override the default signing domain. These two parameters are synonyms for one another, each will have the same effect.
-
-* `header_canon` override the default header canonicalization setting.
-
-* `body_canon` override the default body canonicalization setting.
-
-* `digest` override the default digest setting.
-
-* `headerlist` override the default list of headers to sign.
-
-* `identity` override the default signing identity.
-
-* `selector` Override the default signing selector
-
-* `keyfile` override the default signing key file, which may be parameterized as defined in [“dkim – DomainKeys Identified Mail Signatures”](/momentum/3/3-reference/modules-dkim).
-
-* `keybuf` Override the default signing key. This hash entry must contain the PEM encoded private key to use for signing the messages. This must be a contiguous string, with no line breaks and no white space, without the `BEGIN` and `END` tags that are found in the key file itself. The format is similar to the format used to store the public key in the DKIM DNS records.
-
-* `body_length_limit` Override the default body_length_limit setting.
-
-
-
-
-require("msys.validate.dkim");
-local mod = {};
-function mod:core_final_validation(msg, accept, vctx)
- local options = {};
- options["base_domain"] = "example.com";
- options["selector"] = "*`selector_name`*";
- local domain = msys.validate.dkim.get_responsible_domain();
- print("msys.validate.dkim.get_responsible_domain returns ", domain);
- print("msys.validate.dkim.sign returns ", msys.validate.dkim.sign(nil, nil, options));
- local domains = msys.validate.dkim.get_domains(msg, vctx);
- print("msys.validate.dkim.get_domains returns ", domains);
- return msys.core.VALIDATE_CONT;
-end
-
-msys.registerModule("test_dkim", mod);
-
-### Note
-
-This function should only be invoked during the core_final_validation hook.
-
-Enable this function with the statement `require('msys.validate.dkim');`.
-
-
-## See Also
-
-[msys.validate.dkim.get_responsible_domain](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-responsible-domain), [msys.validate.dkim.get_domains](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-domains), [msys.validate.dkim.reflect](/momentum/3/3-reference/lua-ref-msys-validate-dkim-reflect), [“dkim – DomainKeys Identified Mail Signatures”](/momentum/3/3-reference/modules-dkim)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-count.md b/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-count.md
deleted file mode 100644
index 74ab2619c..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-count.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.validate.dkim.verify_results_get_count"
-description: "msys validate dkim verify results get count return a count of verification results msys validate dkim verify results get count results A message can contain zero or more DKIM signatures If more than one signature is found in a message they are normally found in the different parts of a..."
----
-
-
-## Name
-
-msys.validate.dkim.verify_results_get_count — return a count of verification results
-
-
-## Synopsis
-
-`msys.validate.dkim.verify_results_get_count(results);`
-
-`results: string`
-## Description
-
-A message can contain zero or more DKIM signatures. If more than one signature is found in a message, they are normally found in the different parts of a multi-part MIME type message. Each signature will be validated and one verification result will be created for each signature. This function returns the number of verification results.
-
-**Configuration Change. ** This feature is available as of version 3.5.
-
-*Note*: If results is nil then error is set to "`No verification results to count.`"
-
-This function is valid in the validate_data_spool, data and data_spool_each_rcpt phases. Enable this function with the statement `require('msys.validate.dkim);`.
-
-
-## See Also
-
-[msys.validate.dkim.verify_status_to_string](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-status-to-string), [msys.validate.dkim.get_verify_results](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-verify-results), [msys.validate.dkim.verify_results_get_item](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-item)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-item.md b/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-item.md
deleted file mode 100644
index 1f3aa26c1..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-item.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.validate.dkim.verify_results_get_item"
-description: "msys validate dkim verify results get item Return the DKIM signature result at the specified index msys validate dkim verify results get item results index value Return the DKIM signature result at the specified index For an example of how this function is used see Example 15 36 msys dkim..."
----
-
-
-## Name
-
-msys.validate.dkim.verify_results_get_item — Return the DKIM signature result at the specified index
-
-
-## Synopsis
-
-`msys.validate.dkim.verify_results_get_item(results, index_value);`
-
-```
-results: string
-index_value: number
-```
-
-## Description
-
-Return the DKIM signature result at the specified index. For an example of how this function is used see [“msys.dkim.get_verify_results”](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-verify-results#lua.ref.msys.validate.dkim.get_verify_results.example).
-
-**Configuration Change. ** This feature is available as of version 3.5.
-
-*Note*: If results is nil then error is `"No verification results to get item from`" and if index_value is nil then error is `Index value not specified`" and if index_value is greater than the size of results then error is "`Index value is greater than the number of verification results`".
-
-This function is valid in the validate_data_spool, data and data_spool_each_rcpt phases. Enable this function with the statement `require('msys.validate.dkim');`.
-
-
-## See Also
-
-[msys.validate.dkim.get_verify_results](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-verify-results), [msys.validate.dkim.verify_results_get_count](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-count), [msys.validate.dkim.verify_status_to_string](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-status-to-string)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-status-to-string.md b/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-status-to-string.md
deleted file mode 100644
index 06db6a93b..000000000
--- a/content/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-status-to-string.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msys.validate.dkim.verify_status_to_string"
-description: "msys validate dkim verify status to string Return a status string of DKIM verification msys validate dkim verify status to string status Return a textual representation of ec dkim verify result status that's suitable for use in an Authentication Results header For more information about status results see RFC 5451..."
----
-
-
-## Name
-
-msys.validate.dkim.verify_status_to_string — Return a status string of DKIM verification
-
-
-## Synopsis
-
-`msys.validate.dkim.verify_status_to_string(status);`
-
-`status: string`
-## Description
-
-Return a textual representation of ec_dkim_verify_result.status that's suitable for use in an Authentication-Results header. For more information about status results see [RFC 5451](http://tools.ietf.org/html/rfc5451#section-2.4.1). For a code example see [“msys.dkim.get_verify_results”](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-verify-results#lua.ref.msys.validate.dkim.get_verify_results.example).
-
-**Configuration Change. ** This feature is available as of version 3.5.
-
-*Note*: If status is nil then error is "`No status code is passed in`".
-
-This function is valid in the validate_data_spool, data and data_spool_each_rcpt phases. Enable this function with the statement `require('msys.validate.dkim');`.
-
-
-## See Also
-
-[msys.validate.dkim.verify_results_get_count](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-count), [msys.validate.dkim.get_verify_results](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-verify-results), [msys.validate.dkim.verify_results_get_item](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-item)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/lua.md b/content/momentum/3/3-reference/lua.md
deleted file mode 100644
index 0a5d076f0..000000000
--- a/content/momentum/3/3-reference/lua.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Lua Function Reference"
-description: "Table of Contents 15 1 Lua Functions List 15 2 Lua Functions..."
----
-
diff --git a/content/momentum/3/3-reference/mbus-conf.md b/content/momentum/3/3-reference/mbus-conf.md
deleted file mode 100644
index adf031c2b..000000000
--- a/content/momentum/3/3-reference/mbus-conf.md
+++ /dev/null
@@ -1,116 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "mbus.conf"
-description: "mbus conf Momentum Cluster Messaging Bus configuration file opt msys ecelerity etc conf global mbus conf configures the behavior of the Momentum Cluster Messaging Bus mbusd Configuration changes to the message bus cannot be made through the web UI you must manually change mbus conf For instructions on doing this..."
----
-
-
-## Name
-
-mbus.conf — Momentum Cluster Messaging Bus configuration file
-
-
-## Description
-
-`/opt/msys/ecelerity/etc/conf/global/mbus.conf` configures the behavior of the Momentum Cluster Messaging Bus, **mbusd**. Configuration changes to the message bus cannot be made through the web UI, you must manually change `mbus.conf`. For instructions on doing this see [“Best Practices for Manually Changing Configuration Files”](/momentum/3/3-reference/conf-manual-changes).
-
-Momentum's clustering solution makes heavy use of a group communication messaging bus called "Spread". Spread provides a mechanism for distributing data to various nodes in a networked configuration. Without this messaging bus, the nodes and the cluster manager cannot communicate and all cluster tasks such as DuraVIP™ binding, logging, and replication will cease to operate.
-
-The cluster manager node and each Momentum node will pull the configuration from **ecconfigd** on a periodic basis (once per minute) and if the configuration has changed, the messaging bus will shut itself down and restart operations under the new configuration.
-
-An initial configuration for the messaging bus is constructed as part of the installation process. Typically, this file is `/opt/msys/ecelerity/etc/conf/global/mbus.conf`.
-
-### Note
-
-As of version 3.4, cluster communication is handled by the msgc modules rather than by mbus. Configuration is handled by the `msgc_server.conf` file. For more information see [“msgc – Modules”](/momentum/3/3-reference/3-reference-modules-msgc).
-
-```
-SocketPortReuse = on
-DaemonUser = ecspread
-DaemonGroup = ecspread
-DebugFlags = { EXIT CONFIGURATION }
-RuntimeDir = /var/run/spread
-EventLogFile = /var/log/spread/mainlog
-EventTimeStamp
-DangerousMonitor = false
-
-# Subcluster: default => manager-0-1
-Spread_Segment 10.0.0.255:4803 { # 10.0.0.255 is the bcast
- manager-0-1 10.0.0.91 # management node
- ec-0-1 10.0.0.191 # ecelerity node 1
- ec-0-2 10.0.0.192 # ecelerity node 2
- ec-0-3 10.0.0.193 # ecelerity node 3
- ec-0-4 10.0.0.194 # ecelerity node 4
- ec-0-5 10.0.0.195 # ecelerity node 5
- ec-0-6 10.0.0.196 # ecelerity node 6
-}
-```
-
-The above configuration listing illustrates a standard configuration. In this configuration, 10.0.0.255 is the network broadcast address. Inside the Spread_Segment declaration we see each participating node. The node name should match the output of the **hostname** command on that node. The IP interface on which the node's participating address resides must have the same broadcast address as this Spread_Segment, as reported by **ifconfig**.
-
-If you need to edit the `mbus.conf` file, edit it in place and commit it to the repository using **eccfg**.
-
-### Note
-
-The `mbus.conf` file is promulgated to cluster nodes by [ecconfigd](/momentum/3/3-reference/executable-ecconfigd). It is advisable to restart **ecconfigd** after making extensive changes to `mbus.conf`, after adding multiple nodes for instance. Do this by issuing the command **`/etc/init.d/ecconfigd restart`** . It is also advisable to restart the ecelerity and the eccmgr processes.
-
-Depending upon your configuration, there may be additional `Spread_Segment` stanzas. Spread_Segments are created both if the nodes are not all in the same net block as well as if there are multiple subclusters. A single subcluster with two segments might look like the following:
-
-```
-SocketPortReuse = on
-DaemonUser = ecspread
-DaemonGroup = ecspread
-DebugFlags = { EXIT CONFIGURATION }
-RuntimeDir = /var/run/spread
-EventLogFile = /var/log/spread/mainlog
-EventTimeStamp
-DangerousMonitor = false
-
-# Subcluster: default => rh52mgr.vmnet24.example.com
-Spread_Segment 10.79.240.255:4803 {
- rh52bar2 10.79.240.129
-}
-Spread_Segment 10.79.24.255:4803 {
- rh52bare 10.79.24.130
- rh52mgr 10.79.24.136
-}
-```
-
-With multiple subclusters the Spread_Segments could be configured in the following way:
-
-```
-SocketPortReuse = on
-DaemonUser = ecspread
-DaemonGroup = ecspread
-DebugFlags = { EXIT CONFIGURATION }
-RuntimeDir = /var/run/spread
-EventLogFile = /var/log/spread/mainlog
-EventTimeStamp
-DangerousMonitor = false
-
-# Subcluster: east => rh52mgr.vmnet24.example.com
-Spread_Segment 10.79.24.255:4803 {
- rh52bare 10.79.24.130
- rh52mgr 10.79.24.136
-}
-SocketPortReuse = on
-DaemonUser = ecspread
-DaemonGroup = ecspread
-DebugFlags = { EXIT CONFIGURATION }
-RuntimeDir = /var/run/spread
-EventLogFile = /var/log/spread/mainlog
-EventTimeStamp
-DangerousMonitor = false
-
-# Subcluster: west => rh52mgr.vmnet24.example.com
-Spread_Segment 10.79.240.255:4803 {
- rh52bar2 10.79.240.129
-}
-```
-
-For more information about subclusters see [“Subclusters”](/momentum/3/3-reference/subclusters).
-
-
-## See Also
-
-[eccmgr](/momentum/3/3-reference/executable-eccmgr), [mbusd](/momentum/3/3-reference/executable-mbusd), [mbusd_monitor](/momentum/3/3-reference/executable-mbusd-monitor),
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/module-specific-console-commands.md b/content/momentum/3/3-reference/module-specific-console-commands.md
deleted file mode 100644
index 94cce4d69..000000000
--- a/content/momentum/3/3-reference/module-specific-console-commands.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Module-Specific Console Commands"
-description: "In addition to the regular console commands there are also system console commands specific to particular modules Module specific commands are documented within the module documentation The links to these commands are listed below Section 14 2 9 adaptive Management Using System Console Commands Section 14 10 4 beik Management..."
----
-
-In addition to the regular console commands there are also system console commands specific to particular modules. Module-specific commands are documented within the module documentation. The links to these commands are listed below:
-
-* [“adaptive Management Using System Console Commands”](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.console)
-
-* [“beik Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-beik#modules.beik.console)
-
-* [“bounce_classifier Management Using Console Commands”](/momentum/3/3-reference/modules-bounce-classifier#modules.bounce_classifier.console)
-
-* [“bounce_classifier Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-bounce-classifier-override#modules.bounce_classifier_override.console)
-
-* [“bounce_logger Management Using System Console Commands”](/momentum/3/3-reference/3-reference-modules-bounce-logger#modules.bounce_logger.console3)
-
-* [“cidrdb Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-cidrdb#modules.cidrdb.console)
-
-* [“cloudmark Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-cloudmark#modules.cloudmark.console)
-
-* [“Cluster Management Using Console Commands”](/momentum/3/3-reference/3-reference-cluster-config-replication#cluster.logging.console)
-
-* [“commtouch_ctasd Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-commtouch#modules.commtouch.console)
-
-* [“delay_dsn Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-delay-dsn#modules.delay_dsn.console)
-
-* [“dkim Management Using Console Commands”](/momentum/3/3-reference/modules-dkim#modules.dkim.console)
-
-* [“dnsbuf – Dynamically Set the DNS UDP Buffer Size”](/momentum/3/3-reference/3-reference-modules-dnsbuf)
-
-* [“domainkeys Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-domainkeys#modules.domainkeys.console)
-
-* [“ds_core Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-ds-core#modules.ds_core.console)
-
-* [“ec_logger Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-ec-logger#modules.ec_logger.console)
-
-* [“inbound_audit Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-inbound-audit#modules.inbound_audit.console)
-
-* [“outbound_audit: System Console Commands”](/momentum/3/3-reference/3-reference-modules-outbound-audit#modules.outbound_audit.console)
-
-* [“sched Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-sched#modules.sched.console)
-
-* [“sieve Management Using Console Commands”](/momentum/3/3-reference/modules-sieve#modules.sieve.console)
-
-* [“sievelib Management Using Console Commands”](/momentum/3/3-reference/modules-sievelib#modules.sievelib.console)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-bounce-classifier.md b/content/momentum/3/3-reference/modules-bounce-classifier.md
deleted file mode 100644
index 0f0ed4c78..000000000
--- a/content/momentum/3/3-reference/modules-bounce-classifier.md
+++ /dev/null
@@ -1,129 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "bounce_classifier – Bounce Classifier"
-description: "As of version 3 1 this module is deprecated Use Section 14 12 bounce classifier override The Bounce Classifier Override Module instead The bounce classifier module allows you to augment and override the built in bounce classification system It allows new rules static and wildcarded to be registered within the..."
----
-
-
-### Note
-
-As of version 3.1, this module is deprecated. Use [“bounce_classifier_override – The Bounce Classifier Override Module”](/momentum/3/3-reference/3-reference-modules-bounce-classifier-override) instead.
-
-The bounce classifier module allows you to augment and override the built-in bounce classification system. It allows new rules (static and wildcarded) to be registered within the system, and new categories to be registered as well. Logs can be pulled out of either flat files, or via an arbitrary datasource. The types of datasources available are:
-
-* `CSV` (installed by default)
-
-* `SQLite` (installed by default)
-
-* `PostgreSQL` (installed by default)
-
-* `ODBC`
-
-* `LDAP`
-
-### Configuration
-
-The ds_core module is loaded automatically as required and does not need to be explicitly included.
-
-
-
-
-```
-bounce_classifier "bounce_classifier1" {
- user_smtp_classification_override = "/path/to/override/text"
- refresh = 900
- custom_classes = [
- 99 = "profanity"
- ]
-}
-```
-
-When querying a flat file instead of a datasource, simply specify the path to the file.
-
-There are two kinds of classification overrides, SMTP and Message Disposition Notification (MDN). SMTP overrides apply to the classification of errors that are returned over the SMTP dialog. MDN overrides apply to messages that are received out-of-band with the delivery. SMTP overrides can be special-cased to apply only to particular domains, whereas MDN overrides apply globally.
-
-'SMTP bounces' are much more common than 'MDN bounces'. To determine the kind of bounce look at the connection stage code in the bounce log. For a description of these codes see [“Connection Stages”](/momentum/3/3-reference/3-reference-log-formats-connection-stages).
-
-
-
-- user_smtp_classification_override
-
--
-
-The SMTP classification override file. The default name of this file is `user_smtp_classification.ovr`. In version 3.0 and higher this file is found in the `/opt/msys/ecelerity/etc/` directory. The file format for SMTP overrides is: `domain,bounce_code,rule` . `domain` can be the empty string, in which case the rule is considered to be global, otherwise the rule will only apply to responses given when talking to the specified domain. `bounce_code` is the numeric bounce classification code you want to assign—this must either be an internal code, or one registered via the `custom_classes` directive. For more information about the internal codes see [“Bounce Classification Codes”](/momentum/3/3-reference/3-reference-bounce-logger-classification-codes). When adding new codes be careful not to use existing internal code numbers. `rule` can take one of two forms. If the ‘`|`’ character appears anywhere in the string, it will act as a globbing character in a wildcard, otherwise the string will be considered a simple static pattern. In both cases, the rule will return true if the pattern matches any substring of the classification text. If you use a datasource instead of a flat-file, the datasource query must return 3 fields: domain, bounce_code, rule.
-
-
-
-- user_mdn_classification_override
-
--
-
-The default name of this file is `user_mdn_classification.ovr`. In version 3.0 and higher this file is found in the `/opt/msys/ecelerity/etc/` directory. The file format for MDN overrides is: `bounce_code,rule` . `bounce_code` is the numeric bounce classification code you want to assign—this must either be an internal code, or one registered via the `custom_classes` directive. For more information about the internal codes see [“Bounce Classification Codes”](/momentum/3/3-reference/3-reference-bounce-logger-classification-codes). When adding new codes be careful not to use existing internal code numbers. `rule` can be of one of two forms. If the ‘`|`’ character appears anywhere in the string, it will act as a globbing character in a wildcard, otherwise the string will be considered a simple static pattern. In both cases, the rule will return `true` if the pattern matches any substring of the classification text.
-
-
-
-- refresh
-
--
-
-The frequency (in seconds) for refreshing the bounce classifications lists. The default value is `300` seconds.
-
-
-
-- custom_classes
-
--
-
-`custom_classes` is a map of user-defined bounce_codes that have a numeric value less than 100 and a user-defined description string. Registering new bounce codes in this manner will allow you to setup `user_smtp_classification_override` and `user_mdn_classification_override` rules to assign to that bounce code. This description string is currently available via the custom_logger or other internal calls, but will not be rendered in the web UI bounce processing page.
-
-
-
-- system_smtp_classification_override
-
--
-
-The default value for this option is `/opt/msys/ecelerity/etc/updates/smtp_classification.ovr`. Do **not** change this option without consulting support.
-
-
-
-- system_mdn_classification_override
-
--
-
-The default value for this option is `/opt/msys/ecelerity/etc/updates/mdn_classification.ovr`. Do **not** change this option without consulting support.
-
-
-
-- enable_system_updates
-
--
-
-Load unclassified bounce reasons into memory. The default value for this option is `1`. This option must be enabled if you subscribe to the Live Bounce Updates service provided by Message Systems.
-
-### Warning
-
-If you subscribe to the Live Bounce Updates service, be sure to set the value of this option to `1`. In earlier versions of Momentum this option is off. You will **not** receive live updates if this option is `off`. For more information see [“Live Bounce Updates – Module”](/momentum/3/3-reference/3-reference-modules-live-bounce-updates).
-
-As of version 3.1, the Live Bounce Updates service is included with Momentum at no additional charge and the default value for this option is `1`.
-
-
-
-
-
-### bounce_classifier Management Using Console Commands
-
-The bounce_classifier module can be controlled through `ec_console`; the following command(s) are available:
-
-### Note
-
-In version 3.0, non-singleton module commands are issued using *`Scope_Name`*:*`Instance_Name`* followed by the command. Use the **module list** command from the system console to determine the scope name or instance name of a module. If a module does not have an instance name it is a singleton.
-
-As of version 3.0, all module-specific commands related to setting or getting module options have been removed. Use the following syntax to set or get module-specific options: **config {set | eval | get} *`Scope_Name [Instance_Name] option [value]`*** . Note that there is no ‘`:`’ between the Scope_Name and the Instance_Name and that the Instance_Name is not used with singleton modules.
-
-** 14.11.2.1. bounce_classifier:*`module_name`* reload**
-
-Using this command, a manual reload of the bounce classification overrides can be triggered at runtime.
-
-### See Also
-
-[Table 9.7, “logging options”](/momentum/3/3-reference/options-summary#logging-options-table) , [“Live Bounce Updates – Module”](/momentum/3/3-reference/3-reference-modules-live-bounce-updates) and [Table 9.3, “bounce options”](/momentum/3/3-reference/options-summary#bounce-options-table)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-disclaimer.md b/content/momentum/3/3-reference/modules-disclaimer.md
deleted file mode 100644
index 837229826..000000000
--- a/content/momentum/3/3-reference/modules-disclaimer.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "disclaimer – Module"
-description: "Use the disclaimer module to append a message to an email For example this module may be used to indicate that an email has been scanned The message will be inserted into the footer of the email Configuration Change In version 3 0 this module is loaded automatically as required..."
----
-
-
-
-Use the disclaimer module to append a message to an email. For example, this module may be used to indicate that an email has been scanned. The message will be inserted into the footer of the email.
-
-### Configuration
-
-**Configuration Change. ** In version 3.0, this module is loaded automatically as required and does not need to be explicitly included.
-
-### Sieve Usage
-
-Use the Sieve `disclaimer_add` function to add a plain or an HTML message to an email.
-
-When using `html` as a key, the module will look for all text/html parts that are not attachments and append the HTML disclaimer. When using `plain` as a key, the module will look for all text/plain parts that are not attachments and append the plain disclaimer. If using both, it will look for both, adding the html disclaimer to the html parts, and the plain disclaimer to the plain parts.
-
-### See Also
-
-[disclaimer_add](/momentum/3/3-reference/sieve-ref-disclaimer-add)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-dkim.md b/content/momentum/3/3-reference/modules-dkim.md
deleted file mode 100644
index 1f637a01b..000000000
--- a/content/momentum/3/3-reference/modules-dkim.md
+++ /dev/null
@@ -1,426 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "dkim – DomainKeys Identified Mail Signatures"
-description: "Domain Keys Identified Mail DKIM specified in Internet Draft draft ietf dkim base 00 is a mechanism that allows verification of the source and contents of email messages Using DKIM sending domains can include a cryptographic signature in outgoing email messages A message's signature may be verified by any or..."
----
-
-
-
-DomainKeys Identified Mail (DKIM), specified in Internet-Draft [draft-ietf-dkim-base-00](http://tools.ietf.org/html/draft-ietf-dkim-base-00), is a mechanism that allows verification of the source and contents of email messages. Using DKIM, sending domains can include a cryptographic signature in outgoing email messages. A message's signature may be verified by any (or all) MTAs during transit and by the Mail User Agent (MUA) upon delivery. A verified signature indicates the message was sent by the sending domain and the message was not altered in transit. A signature that fails verification indicates the message may have been altered during transit or that the sender is fraudulently using the sending domain name. Unsigned messages contain no guarantee about the sending domain or integrity of the message contents.
-
-### Warning
-
-The [opendkim](/momentum/3/3-reference/3-reference-modules-opendkim) module is available as of Momentum 3.6 and should be used in place of the DKIM modules. However, you must upgrade to version 3.6 first. If Multiple Event Loop Mode is enabled, you must use the opendkim modules for DKIM signing and verification. The DKIM modules are not supported in Multiple Event Loop Mode.
-
-Service providers may use the success or failure of DKIM signature verification, or the lack of a DKIM signature to determine subsequent handling of incoming email messages. Possible actions include dropping invalid messages without impact to the final recipient or exposing the results of DKIM verification, or the lack of a signature, directly to the recipient. Additionally, service providers may use signature verification as the basis for persistent reputation profiles to support anti-spam policy systems or to share with other service providers.
-
-### How it Works
-
-** 14.27.1.1. Sending Servers**
-
-
-
-
-1. Set up: The domain owner (typically the team running the email systems within a company or service provider) generates a public/private key pair to use for signing all outgoing messages (multiple key pairs are allowed). The public key is published in DNS, and the private key is made available to their DKIM-enabled outbound email servers. This is step "A" in the diagram to the right.
-
-2. Signing: When each email is sent by an authorized end-user within the domain, the DKIM-enabled email system automatically uses the stored private key to generate a digital signature of the message. This signature is included in a DKIM-Signature header and prepended to the email. The email is then sent on to the recipient's mail server. This is step "B" in the diagram to the right.
-
-** 14.27.1.2. Receiving Servers**
-
-1. Preparation: The DKIM-enabled receiving email system extracts and parses the message's DKIM-Signature header. The signing domain asserted by the header is used to fetch the signer's public key from DNS. This is step "C" in the diagram to the right.
-
-2. Verification: The signer's public key is then used by the receiving mail system to verify that the signature contained in the DKIM-Signature header was generated by the sending domain's private key. This proves that the email was truly sent by, and with the permission of, the claimed sending domain. It also provides that all the headers signed by the sending domain and the message body were not altered during transit.
-
-3. Delivery: The receiving email system uses the outcome of signature verification along with other local policies and tests to determine the disposition of the message. If local policy does not prohibit delivery, the message is passed to the user's inbox. Optionally, the email recipient may be informed of the results of the signature verification. This is step "D" in the diagram on the right.
-
-### Validation
-
-When the `dkim_validate` module is loaded, dkim signature verification is performed on all inbound messages received via SMTP. To load dkim_validate the following directive is included in `ecelerity.conf`.
-
-
-
-
-```
-dkim_validate "dkim_validate1" {
-}
-```
-
-When a message is received, an attempt is made to locate a DKIM-Signature header. If found, the header is parsed for format and content. If the header is valid, the signature value is extracted from the header and the appropriate DNS operations are performed to find the public key for the signer. The message is then canonicalized as indicated by the signature header. Canonicalization includes all headers listed in the signature header, the body of the message, and the signature header itself. The canonicalized message is digested for verification as indicated by the signature header using the retrieved public key and the signature value. The results "dkim=pass" or "dkim=*`reason for failure`* " are included in an Authentication-Results header prepended to the message. If the message does not contain a DKIM-Signature header, either no Authentication-Results header will be prepended to the message or dkim results will not appear in an Authentication-Results header prepended because of the actions of a different validation action.
-
-### Signing
-
-The `dkim_sign` module provides the ability to conditionally attach DKIM signatures to emails that are submitted into the MTA via SMTP. Enabling DKIM signing is a two-step process. The first step is to generate public and private keys for each signing domain and to create the DKIM public key DNS records for those domains. The second step is to configure Momentum to load the dkim_sign module.
-
-You can globally enable or disable DKIM signing using the [dkim](/momentum/3/3-reference/conf-ref-dkim) option. This option defaults to `enabled`, enabling signing for all domains; you can set it to `disabled` globally and enable it only for specific Binding_Groups, Bindings or Domains. Note that you would not normally need to change this, since even when signing is enabled globally you also need to have a valid key and selector configured for a domain. For this reason signing is usually "enabled" by defining selectors and keys for the signing domains in the dkim_sign module.
-
-** 14.27.3.1. Generating DKIM Keys**
-
-The OpenSSL cryptography toolkit is used to generate RSA keys for DKIM. As an example, the following openssl commands are used to generate public and private keys for the domain example.com with a selector called `dkim1024`. Typically, the directory `/opt/msys/ecelerity/etc/conf/dkim` is used for key storage.
-
-```
-# mkdir -p /opt/msys/ecelerity/etc/conf/dkim/example.com
-# openssl genrsa -out /opt/msys/ecelerity/etc/conf/dkim/example.com/dkim1024.key 1024
-# openssl rsa -in /opt/msys/ecelerity/etc/conf/dkim/example.com/dkim1024.key \
- -out /opt/msys/ecelerity/etc/conf/dkim/example.com/dkim1024.pub -pubout -outform PEM
-```
-
-All DKIM verification implementations must support key sizes of 512, 768, 1024, 1536 and 2048 bits. A signer may choose to sign messages using any of these sizes and may use a different size for different selectors. Larger key sizes provide greater security but impose higher CPU costs during message signing and verification.
-
-### Warning
-
-Note that Google requires all senders to sign with a 1024 bit or greater DKIM key size.
-
-The resulting public key should look something like:
-
-```
------BEGIN PUBLIC KEY-----
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrZXNwzXOk0mRqPcgSUOnmVHro
-rg/BZHybpiBoDS/g6IaMjmVwaQf2E72x9yDBTgiUBtTCqydQRZJ3EbfYfvo+WAHq
-2yz6HKR0XCwMDSE2S3brVe7mbV/GPEvnCuFPPEVjbfL4w0tEAd8Seb5h07uVQqy1
-Q7jIOnF5fG9AQNd1UQIDAQAB
------END PUBLIC KEY-----
-```
-
-Once the public and private keys have been generated a DNS text record needs to be created for dkim1024._domainkey.example.com. The DNS record contains several DKIM "tag=value" pairs and should be similiar to the record shown below.
-
-```
-dkim1024._domainkey.example.com. 86400 IN TXT
-"v=DKIM1; k=rsa; h=sha256; t=y; p=MHww...QAB"
-```
-
-DKIM DNS text record tags are defined below (do not include the quotes below when including a tag value in the DNS text record):
-
-
-
-- v=
-
--
-
-DKIM key record version. The value of this tag must be set to "DKIM1".
-
-
-
-- k=
-
--
-
-Key type. This tag defines the syntax and semantics of the p= tag value. Currently this tag should have the value "rsa".
-
-
-
-- h=
-
--
-
-Hash algorithm. Currently this tag should have the value "sha1" or "sha256".
-
-
-
-- t=
-
--
-
-Flags. The only value currently defined is "y". If specified this tag indicates the signing domain is testing DKIM.
-
-
-
-- p=
-
--
-
-The DKIM public key value generated as described above.
-
-
-
-- g=
-
--
-
-**Configuration Change. ** In line with RFC 6376, this tag has been deprecated.
-
-Granularity of the key. The intent of this tag is to constrain which signing address can legitimately use the selector for this key. If this tag is specified, the local part of an email's signing address must match the value of this tag or verification will fail. If this tag is not specified only the domain part of the signing address will be used during verification. If an empty value (i.e. "g=") is specified, no signing address will be able to use this key.
-
-
-
-- s=
-
--
-
-Service Type. If specified, this tag should be set to "*" or "email" which represents all service types or the email service type. Currently "email" is the only service using this key.
-
-
-
-- n=
-
--
-
-Notes. If specified, the value of this tag is quoted-printable text used as a note to anyone reading the DNS text record. The tag is not interpreted by DKIM verification and should be used sparingly because of space limitations of the DNS text record.
-
-
-
-
-
-** 14.27.3.2. Configuring Momentum to sign mail using DKIM**
-
-A Momentum configuration directive similiar to the following is used to load the dkim_sign module. Additionally, DKIM signing may be enabled/disabled on a global, per domain, per binding and per binding-per domain basis using the configuration parameter: [dkim](/momentum/3/3-reference/conf-ref-dkim)
-
-
-
-
-```
-dkim_sign "dkim_sign1"{
- sign_condition = "can_relay"
- digest="rsa-sha256"
- header_canon = "relaxed"
- body_canon = "relaxed"
- headerlist = "From:Subject:Date:To:MIME-Version?:Content-Type?"
- key = "/opt/msys/ecelerity/etc/conf/dkim/%{d}/%{s}.key"
- dk_domain "example.com" {
- selector = "dkim1024"
- }
- dk_domain "example2.com" {
- selector = "s1024"
- }
-}
-```
-
-If you are working within a cluster environment, you may want to consider setting the `key` option to a directory that is under revision control. The recommended directory is `/opt/msys/ecelerity/etc/conf/dkim/`. Since the `conf` directory is under revision control anything stored below this directory will also be under revision control. Any files in this directory are visible to both the default node configuration and any node-specific configuration.
-
-Use `dkim_validate` to define a module for validating incoming mail.
-
-The above directive includes a series of global configuration options and one or more domain subconfigurations. A unique domain subconfiguration must be specified for each signing domain if selector names differ. Domain subconfigurations have the following format:
-
-
-
-
-dk_domain "*`domain`*" { ... }
-
-"dkim_sign" configuration options are described below. Any option can appear as a dkim_sign or dk_domain scope configuration option with the exception of the `base_domain` option which can only appear within the `dk_domain` scope.
-
-
-
-- base_domain
-
--
-
-`base_domain` specifies which domain should be used for the signing. DKIM allows for emails to be signed by a parent domain. For example, a mail from test@corp.example.com can be signed in the example.com domain. This option can only appear within the `dk_domain` scope.
-
-
-
-- body_canon
-
--
-
-Specifies the canonicalization that should be performed on the email body before digesting and signing the message. The two supported canonicalizations are `simple` and `relaxed`. Use of `relaxed` is suggested.
-
-
-
-- body_length_limit
-
--
-
-The `body_length_limit` option causes the number of message body characters signed to be included in the signature header. Only the number of characters indicated in the signature header will be included in verification at a receiving domain. To include body length limits, the value of this option should be set to "True". The DKIM specification cautions signers to be wary of using this option, as it is subject to potential attacks, such as additional MIME parts and additional HTML content. See section 8.1, "Misuse of Body Length Limits" of the draft specification.
-
-
-
-- copy_headers
-
--
-
-This option causes all of the headers that were selected for signing by `headerlist` to be quoted-printable encoded and placed in the z= tag of the DKIM-Signature header. This can be useful for debugging.
-
-
-
-- digest
-
--
-
-Specifies the algorithms that should be used to create the message digest and resulting signature. The supported mechanisms are `rsa-sha1` and `rsa-sha256`.
-
-
-
-- header_canon
-
--
-
-Specifies the canonicalization that should be performed on the email headers before digesting and signing the message. The two supported canonicalizations are `simple` and `relaxed`. Due to the way MTAs operate, the simple canonicalization is very fragile and prone to failure because of header rewriting and rewrapping. Use of `relaxed` is suggested.
-
-
-
-- headerlist
-
--
-
-The headerlist configuration directive is required. During digestion DKIM will sign all headers specified in the headerlist in the order they are specified. Although there is no default headerlist, the DKIM specification requires signing the From header and any header field that describes the role of the signer such Sender or Resent-From. The specification also recommends signing, Subject, Date, all MIME header fields and all existing, non-repeatable header fields.
-
-The headerlist itself is a colon separated list of header field names. The characters "?", "*" and "+" are appended to the header field name to specify signing of multiple copies of a header and to assert a non-existent header.
-
-DKIM provides for a signer to sign a non-existent header. This mechanism can be used to prevent the header from being added to the message during transit. If the header is added during transit the DKIM signature will not verify. Using this mechanism the signer asserts that the header was not there when the message was signed.
-
-The headerlist syntax is described below.
-
-
-
-- *`header_field_name`*
-
--
-
-A single copy of the header will be signed. Assert a non-existent header if the header does not exist. If that header is added later, the signature will be invalidated.
-
-
-
-- *`header_field_name`*?
-
--
-
-A single copy of the header will be signed. Do not assert a non-existent header if the header does not exist.
-
-
-
-- *`header_field_name`**
-
--
-
-Sign all existing copies of the header. Assert a non-existent header if the header does not exist.
-
-
-
-- *`header_field_name`*+
-
--
-
-Sign all existing copies of the header. Do not assert a non-existent header if the header does not exist.
-
-
-
-
-
-Example Headerlist (syntactically correct only):
-
-`Received+:X-Example*:From:Subject?:Received`
-
-The headerlist shown above will cause the following signing actions:
-
-1. All (multiple) Received headers will be signed
-
-2. All (multiple) X-Example headers will be signed. If no X-Example headers are found a non-existent header is asserted.
-
-3. A single From header will be signed. A non-existent header is asserted if no From header is found.
-
-4. A single Subject header will be signed.
-
-5. A single Received header will be signed. In this case no additional Received headers will be found because of the first "Received+" entry in the headerlist. A non-existent Received header will be asserted prohibiting the addition of any more Received headers during transit.
-
-
-
-- identity
-
--
-
-The `identity` option can be used to specify a user or agent. A standard email address is specified. This value is used in conjunction with the DKIM DNS Key record's g= tag value where the local part of the identity must match the value of the "g=" tag. Note: Use of the `g=` tag has been deprecated.
-
-
-
-- key
-
--
-
-This option is required and specifies the location of the RSA private key file on disk. The key file must be readable by the user that Momentum is running as and must be in Privacy Enhanced Mail (PEM) format.
-
-The file name has two expandable variables that may be used to ease deployment over multiple domains: %{d} expands to the responsible domain and %{s} expands to the selector.
-
-
-
-- keycache_size
-
--
-
-The key cache size expressed as the number of keys. The default value is 2048.
-
-
-
-- lifetime
-
--
-
-The `lifetime` option can be used to specify the length of time a signature remains valid. An expiration value is included in the signature header added to each email message. The lifetime of the signature begins at signing and expires some time later as determined by the `lifetime` option value. A message will not verify after the signature lifetime has expired. The value of this option is specified in hours.
-
-
-
-- neg_keycache_ttl
-
--
-
-In the event that the key isn't already in the cache, the amount of time in seconds before retrieving it again. The default value is 3600.
-
-
-
-- pos_keycache_ttl
-
--
-
-The total time in seconds for items to stay in the cache before fetching them again. The default value is 300.
-
-
-
-- selector
-
--
-
-This option specifies the DKIM selector to be used for signing. During verification the `selector` will be used along with the signing domain to retrieve the signing domain's public key. The key retrieved will be contained in the DNS TXT record for {selector}._domainkey.{domain}.
-
-
-
-- sign_condition
-
--
-
-`sign_condition` specifies which validation context variable must exist as a predicate to signing messages. When an SMTP client performs an SMTP AUTH action, the `auth_user` context key will be set to the username used during authorization. When an SMTP client is allowed to relay through Momentum because of an entry in `Relay_Hosts` or a `relaying` declaration in an ESMTP_Listener IP access control list, the `can_relay` context key is set to "true."
-
-In most corporate environments, sign_condition should be `auth_user` and in large sending architectures where the relaying SMTP clients are implicitly trusted the sign_condition should be `can_relay`.
-
-
-
-
-
-### dkim Management Using Console Commands
-
-The dkim module can be controlled through the `ec_console`; the following command is available:
-
-** 14.27.4.1. dkim_sign:*`dkim_sign1`* flush keycache**
-
-This command flushes all entries from the keycache. Use dkim_validate:*`dkim_validate1`* for the validation module. If you alter the private key run this command after doing so.
-
-### Runtime Usage
-
-** 14.27.5.1. Lua Functions**
-
-The following dkim Lua functions are available:
-
-
-
-
-| Function/Description | Params | Package | Version | Phases |
-| --- | --- | --- | --- | --- |
-| [msys.validate.dkim.get_domains](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-domains) – This function requires module "dkim_validate". "msg" is a mail message. "ctx" is the validation context. It returns a list of valid signing domains | msg, ctx | msys.validate.dkim | 3.1 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.dkim.get_responsible_domain](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-responsible-domain) – This function requires module "dkim_validate". "msg" is a mail message. "ctx" is the validation context. It returns the responsible domain for the current message | msg, ctx | msys.validate.dkim | 3.1 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.dkim.reflect](/momentum/3/3-reference/lua-ref-msys-validate-dkim-reflect) – Should be used before data_validate phase to instruct system to send an email to "receiver_addrs" regarding the validation result of the current message | msg, ctx, sender_addrs, receiver_addrs, [subj], [note] | msys.validate.dkim | 3.1 | before data_validate |
-| [msys.validate.dkim.sign](/momentum/3/3-reference/lua-ref-msys-validate-dkim-sign) – Sign a message using a DKIM signature | msg, vctx, [options] | msys.validate.dkim | 3.1 | core_final_validation |
-| [msys.validate.dkim.verify_results_get_count](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-count) – Return a count of DKIM verification results | results | msys.validate.dkim | 3.5 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.dkim.verify_results_get_item](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-results-get-item) – Return the DKIM signature result at the specified index | results, index_value | msys.validate.dkim | 3.5 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.dkim.verify_status_to_string](/momentum/3/3-reference/lua-ref-msys-validate-dkim-verify-status-to-string) – Return a status string of DKIM verification | status | msys.validate.dkim | 3.5 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.dkim.get_verify_results](/momentum/3/3-reference/lua-ref-msys-validate-dkim-get-verify-results) – Return the number of DKIM signature results | [vctx] | msys.validate.dkim | 3.5 | data, data_spool, data_spool_each_rcpt |
-
-** 14.27.5.2. Sieve Functions**
-
-The following dkim Sieve functions are available:
-
-* [ec_dkim_sign](/momentum/3/3-reference/sieve-ref-ec-dkim-sign) – Sign a message with the DKIM protocol
-
-* [ec_dkim_domains](/momentum/3/3-reference/sieve-ref-ec-dkim-domains) – Return a list of valid signing domains
-
-* [ec_dkim_responsible_domain](/momentum/3/3-reference/sieve-ref-ec-dkim-responsible-domain) – Return the domain responsible for the current message
-
-### See Also
-
-[signing_stats](/momentum/3/3-reference/3-reference-conf-ref-signing-stats), [signing_stats](/momentum/3/3-reference/3-reference-console-commands-signing-stats), [signing_stats reset](/momentum/3/3-reference/3-reference-console-commands-signing-stats-reset), [dkim](/momentum/3/3-reference/conf-ref-dkim)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-fsecure.md b/content/momentum/3/3-reference/modules-fsecure.md
deleted file mode 100644
index 494003e30..000000000
--- a/content/momentum/3/3-reference/modules-fsecure.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "fsecure – F-Secure"
-description: "Example 14 67 fsecure module In version 3 0 the antivirus module does not need to be explicitly included Configuration Change This module is not supported in version 3 1 daemon The F Secure antivirus runs as an independent process and relies on a Unix domain socket for synchronization The..."
----
-
-
-
-
-```
-av_fsecure "av_fsecure1" {
- daemon = "/tmp/.fsav-65534"
- timeout = 60
- action = pass
- paranoid = false
- context_variable = "virus"
- skip_context_variable = "skip_virus_check"
- file_base = "/var/tmp"
-}
-```
-
-In version 3.0, the antivirus module does not need to be explicitly included.
-
-**Configuration Change. ** This module is **not** supported in version 3.1.
-
-
-
-- daemon
-
--
-
-The F-Secure antivirus runs as an independent process, and relies on a Unix domain socket for synchronization. The socket name defaults to `/tmp/.fsav-#####`, where "#####" is the userid that is executing the daemon. See the FSecure documentation at [http://www.f-secure.com/](http://www.f-secure.com/) for more details on setting the socket name. This engine runs in the IO pool by default.
-
-
-
-
-
-For a list of the configuration options that this module shares with other antivirus modules see [“antivirus Configuration”](/momentum/3/3-reference/3-reference-modules-antivirus#modules.antivirus.configuration).
-
-This module supports the **f_secure_avscan** Sieve command. For more information see [antivirus](/momentum/3/3-reference/sieve-ref-antivirus).
-
-For more information about F-Secure see [http://www.f-secure.com/](http://www.f-secure.com/).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-httpio.md b/content/momentum/3/3-reference/modules-httpio.md
deleted file mode 100644
index a34d99882..000000000
--- a/content/momentum/3/3-reference/modules-httpio.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "http_io – HTTP I/O Provider"
-description: "The http io module provides facilities for reading content located in an URI with the schema http and https Momentum uses an I O abstraction layer for reading Sieve scripts and their includes With this module you specify remote web accessible locations for script files that will be fetched on..."
----
-
-
-
-The `http_io` module provides facilities for reading content located in an URI with the schema `http` and `https`. Momentum uses an I/O abstraction layer for reading Sieve++ scripts (and their includes). With this module, you specify remote web-accessible locations for script files that will be fetched on the fly.
-
-### Note
-
-This module is designed so that Sieve scripts can include web-accessible files on the fly. It *cannot* be used to include start-up configuration files.
-
-### Configuration
-
-**Configuration Change. ** In version 3.0, this module is loaded automatically as required and does not need to be explicitly included.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-imageanalyzer.md b/content/momentum/3/3-reference/modules-imageanalyzer.md
deleted file mode 100644
index de8f78a59..000000000
--- a/content/momentum/3/3-reference/modules-imageanalyzer.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "imageanalyzer – Module"
-description: "Configuration Change This feature is available starting from Momentum 3 0 23 The imageanalyzer module supports the Image Analyzer engine used to identify pornographic or inappropriate image content within email For more information see Image Analyzer You cannot configure this module using the web UI To manually configure it be..."
----
-
-
-
-**Configuration Change. ** This feature is available starting from Momentum 3.0.23.
-
-The imageanalyzer module supports the Image Analyzer engine used to identify pornographic or inappropriate image content within email. For more information see [Image Analyzer](http://www.image-analyzer.com/). You cannot configure this module using the web UI. To manually configure it be sure to consult [“Best Practices for Manually Changing Configuration Files”](/momentum/3/3-reference/conf-manual-changes).
-
-### Note
-
-This module is only supported for Red Hat 5 32 bit operating systems.
-
-In order to run this module, your license must be Image Analyzer enabled.
-
-Momentum version 3.3 uses version `4.0.2.0` of the Image Analyzer Engine.
-
-### Configuration
-
-This module is configured in the following way:
-
-```
-imageanalyzer "imageanalyzer1" {
- Threshold_Highly_Suspect = 74
- Threshold_Suspect = 50
- Engine_Sensitivity = 65
-}
-```
-
-The followng options are available:
-
-
-
-- Engine_Sensitivity
-
--
-
-Use this option to scale the engine sensitivity from 0 to 100\. The higher the value the higher the detection rate and the higher the false positive rate. Vice versa the lower the value the lower the detection rate and the lower the false positive rate. The default value for this option is `65`.
-
-
-
-- Threshold_Highly_Suspect
-
--
-
-If a message's score is greater than or equal to this value an `image_analyzer_result` key is set in the message context with a value of `Highly-Suspect-image`. The default value for this option is `74`.
-
-
-
-- Threshold_Suspect
-
--
-
-If the message's score is greater than or equal to this value, an `image_analyzer_result` key is set in the message context with a value of `Suspect-image`. The default value for this option is `50`.
-
-
-
-
-
-To determine the results of a scan you need to look at the `image_analyzer_result` message context variable. Possible values are:
-
-* `Highly-Suspect-image`
-
-* `Suspect-image`
-
-If no suspect images are detected, this context variable is not set.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-overview-implicit.md b/content/momentum/3/3-reference/modules-overview-implicit.md
deleted file mode 100644
index 34c494688..000000000
--- a/content/momentum/3/3-reference/modules-overview-implicit.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Module Overview"
-description: "All modules in version 3 0 load automatically if you use any of the options they declare or use other resources provided by them In order to set configuration options modules must be explicitly loaded However you need not explicitly declare modules such as the jlog module that don't have..."
----
-
-All modules in version 3.0 load automatically if you use any of the options they declare, or use other resources provided by them. In order to set configuration options, modules must be explicitly loaded. However, you need not explicitly declare modules, such as the jlog module, that don't have options (apart from the `enabled` and `debug_level` options common to all modules).
-
-Examples of modules that will typically load implicitly are:
-
-* antivirus
-
-* cidrdb
-
-* compress_spool
-
-* http_io
-
-* jlog
-
-* persist_io
-
-* sievelib
-
-* suppress_spool
-
-Modules are most easily configured from the web console as described in [“Changing Module Configuration Options”](/momentum/3/3-reference/web-3-administration#web3.module_config) but they can also be configured by manually altering the configuration file or by setting options using the system console. Use the [config](/momentum/3/3-reference/3-reference-console-commands-config) command to set configuration options from the system console.
-
-Some modules, typically antivirus modules, must be loaded in "passive" mode. To load a module in passive mode, use the web console to set the `Enabled` option to `false`. Use the following syntax if you are manually changing the `ecelerity.conf` file:
-
-```
-symbolname "name" {
- Enabled = false
- ...
-}
-```
-
-The `Enabled` option is common to all modules as is the `Debug_Level` option.
-
-### Module Debugging
-
-During troubleshooting, it can be useful to have debugging information sent to the paniclog. Module debug levels can be set in the `ecelerity.conf` file, from the web console or from the system console. The default debugging level is `ERROR`, which will cause `ERROR` and `CRITICAL` messages to be logged to the paniclog. Find below an example of setting the debug level of the bounce_logger module:
-
-```
-bounce_logger "bounce_logger1"
-{
- debug_level = "NOTICE"
- bouncelog = "/var/log/ecelerity/bouncelog.ec"
- bouncelog_mode = 0644
- heartbeat = 60
-}
-```
-
-For a list of all the debug levels see [Table 9.28, “Debug levels”](/momentum/3/3-reference/3-reference-conf-ref-debug-flags#conf.ref.debug.levels). Setting debug levels from the system console is described in [the section called “Setting Module-Level Debugging from the System Console”](/momentum/3/3-reference/3-reference-module-specific-console-commands-using#modules.console.debugging).
-
-Be sure to turn off debugging when you are finished otherwise log files can become excessively large.
-
-If the module that you wish to debug is not explicitly loaded, then you must add it to your configuration file.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-overview.md b/content/momentum/3/3-reference/modules-overview.md
deleted file mode 100644
index 9bf667602..000000000
--- a/content/momentum/3/3-reference/modules-overview.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Modules"
-description: "Table of Contents 13 1 Module Overview 13 2 Summary Module Information 13 3 Module Specific Console Commands 13 4 Using Module Specific Console Commands..."
----
-
diff --git a/content/momentum/3/3-reference/modules-pe-2-logger.md b/content/momentum/3/3-reference/modules-pe-2-logger.md
deleted file mode 100644
index d32995f4a..000000000
--- a/content/momentum/3/3-reference/modules-pe-2-logger.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "pe2_logger – Module"
-description: "Use this module to track deliveries and bounces when the MTA is part of a Message Central configuration Configuration Change As of Momentum version 3 5 Message Central version 3 7 this module has been replaced by the mc logger Module Example 14 80 pe 2 logger outbound configuration batch..."
----
-
-
-
-Use this module to track deliveries and bounces when the MTA is part of a Message Central configuration.
-
-**Configuration Change. ** As of Momentum version 3.5 (Message Central version 3.7) this module has been replaced by the [mc_logger Module](https://support.messagesystems.com/docs/web-mc/mc-mtas).
-
-### Configuration
-
-
-
-
-```
-pe2_logger "pe2_logger1" {
- filename_template = "var/log/ecelerity/pe2/%s-%s-%d-%d"
- batch_interval = 300
-}
-```
-
-
-
-- batch_interval
-
--
-
-How often log entries are batched and forwarded to the PostgeSQL database. The default value for this option is 300 seconds.
-
-
-
-- default_ident
-
--
-
-**Configuration Change. ** This feature is available starting from Momentum 3.0.20.
-
-An optional identifier added to the VERP address immediately preceding the five hexadecimal numbers in the log file name (These numbers relate to Message Central identifiers such as the Org ID and mailing ID). This identifier must include at least one non-hexadecimal character to avoid ambiguity with the fields that follow it. If this option is specified, the identifier will be prepended to the log file name. This option is useful if you are running more than one instance of Message Central where the instances log to the same directory and you wish to have distinct log files.
-
-If you set this option *and* override `filename_template` an additional `%s` macro is required in the definition of `filename_template` as shown below:
-
-```
-pe2_logger "pe2_logger1" {
- filename_template = "/var/log/ecelerity/pe2/%s-%s-%s-%d-%d"
- default_ident = "my_identifier"
-}
-```
-
-If you only set the `default_ident`, and do not set `filename_template`, the module will do the right thing on its own.
-
-
-
-- filename_template
-
--
-
-At runtime, the first string value for the filename template will be replaced with either `bounce` or `delivery` and the second string value with the *`hostname`*. The integer values are, respectively, the Org ID and the Mailing ID. This log file is loaded into the database by the pe2batch process. The default value for this option is `/var/log/ecelerity/pe2/%s-%s-%d-%d`.
-
-
-
-- suppress_delivery_logs
-
--
-
-The default value for this option is `false`. To suppress the creation of logs, set this option to `true`.
-
-
-
-- timestamp_format
-
--
-
-The default value for this option is Unix timestamp format, seconds since the epoch. There are two "special" value: `unix` which is also the default and `SQLServer` which uses `YYYYMMDDTHH:MM:SS.mmm` where `SS.mmm` means seconds with up to 1/1000 of a second resolution.
-
-
-
-
-
-The configuration shown in [“pe2_logger outbound configuration”](/momentum/3/3-reference/modules-pe-2-logger#modules.pe2_logger.example) is suitable for an outbound MTA. To use this module on an inbound MTA, load it passively as shown below.
-
-```
-pe2_logger "pe2_logger1" {
- enabled = false
-}
-```
-
-When loaded in passive mode, you must use Sieve actions to log events.
-
-Passive operation is not suitable for outbound MTAs, as there is no way to log the delivery in passive mode.
-
-For information on using this module in a Message Central configuration, see [Inbound and Outbound MTAs](https://support.messagesystems.com/docs/web-mc/mc-mtas).
-
-### Sieve Usage
-
-If you load the module in passive mode, it will no longer log anything and you will instead need to use the Sieve functions [pe2_mark_unsubscribed](/momentum/3/3-reference/sieve-ref-pe-2-mark-unsubscribed) and [pe2_mark_bounced](/momentum/3/3-reference/sieve-ref-pe-2-mark-bounced) to log unsubscribe and bounce events.
-
-The `pe2_mark_unsubscribed` Sieve action can be used to implement unsubscribe-via-email; you would configure your policy scripts to make a determination about whether the incoming message is a request to unsubscribe, and then issue a call to `pe2_mark_unsubscribed`.
-
-Note that unsubscribe in this context is equivalent to marking the recipient as unsubscribed in the system, opting them out of **all** future mailings until they are re-subscribed.
-
-When used in passive mode, you must make sure that the MTA is not one being injected into directly by the Message Central generator, as there is no way for that MTA to log deliveries.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-sieve.md b/content/momentum/3/3-reference/modules-sieve.md
deleted file mode 100644
index 2dc23a52f..000000000
--- a/content/momentum/3/3-reference/modules-sieve.md
+++ /dev/null
@@ -1,242 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "sieve – The Sieve Module"
-description: "Sieve script management is handled through the sieve module This module allows for Sieve scripts to be specified for each phase of the SMTP transaction online reconfiguration and reloading of Sieve scripts and access to counters and metrics stored in Momentum's internal Sieve engine In Momentum version 3 x Sieve..."
----
-
-
-
-Sieve script management is handled through the sieve module. This module allows for Sieve scripts to be specified for each phase of the SMTP transaction, online reconfiguration and reloading of Sieve scripts, and access to counters and metrics stored in Momentum's internal Sieve engine.
-
-### Note
-
-In Momentum version 3.x, Sieve continues to be supported but scripting via Lua is preferred for the following reasons:
-
-* Sieve has no concept of looping or iterators
-
-* Simple comparative logic in Sieve is awkward to author
-
-* Unlike Sieve, new modules do not need explicit C development to enable Lua capabilities
-
-### Warning
-
-You cannot use Sieve with multiple event loops. If you include the Sieve module in your configuration file, Momentum will not start up and a warning will be written to the panic log. If you are upgrading to a multiple event loop configuration of Momentum, be sure to remove the Sieve module from your configuration file.
-
-The easiest way to configure the sieve module is by using the web UI. This procedure is described in [“Adding a Sieve Module”](/momentum/3/3-reference/web-3-administration#web3.adding_sieve_module).
-
-### Loading and Configuring the Module
-
-The sieve module is a "Validate" module and supports a number of configuration options. For the most part, they configure which scripts should be run in the various phases of the SMTP transaction.
-
-
-
-
-```
-sieve "sieve1" {
- script mailfrom_phase1 {
- source = "/path/to/script.siv"
- }
-}
-```
-
-The script scope requires a name that is a valid script phase. Valid phases are:
-
-* accept_phase1
-
-* accept_phase2
-
-* connect_phase1
-
-* connect_phase2
-
-* ehlo_phase1
-
-* ehlo_phase2
-
-* mailfrom_phase1
-
-* mailfrom_phase2
-
-* rcptto_phase1
-
-* rcptto_phase2
-
-* data_phase1
-
-* data_phase2
-
-* spool_phase1
-
-* spool_phase2
-
-* each_rcpt_phase1
-
-* each_rcpt_phase2
-
-* set_binding_phase1
-
-* set_binding_phase2
-
-Phase1 and Phase2 allow Sieve scripts to be split across two files while remaining completely self-contained and operational. This is useful for separating site-specific Sieve logic from vendor and/or third party Sieve logic. The convention is to run site-specific scripts during phase1 and vendor supplied rulesets during phase2.
-
-If the end of phase 2 is reached without any terminal action, then there is an implicit "keep" as described in the Sieve specification. However, if the end of phase 1 is reached without any terminal action, then phase 2 is executed.
-
-### Note
-
-Unlike scripts that are included using `ec_include`, Sieve scripts included in the sieve module stanza are not periodically refreshed. However, all scripts are refreshed when the sieve cache is flushed using the ec_console command. *If you make changes to any Sieve scripts be sure to flush the Sieve cache.* For more information about this command see [“Flushing the Cache”](/momentum/3/3-reference/modules-sieve#modules.sieve.sieve.flush.cache).
-
-Some Sieve functions are specific to particular Sieve phases. For a table of Sieve functions and their phases see [Table 16.1, “Sieve functions”](/momentum/3/3-reference/sieve-ref-3-function-summary#table-sieve-functions).
-
-** Attaching sieve scripts to arbitrary hook points**
-
-It's also possible to arrange for a Sieve script to be run at any hook point by using the following syntax:
-
-
-
-
-```
-sieve "sieve1" {
- hook "core_log_permanent_failure_v1" {
- source = "/path/to/other-script.siv"
- async = "true"
- pool = "IO"
- }
-}
-```
-
-The configuration snippet above causes Sieve to register a hook implementation for the core_log_permanent_failure_v1 hook. (See [ec_rfc3464_delivery_status](/momentum/3/3-reference/sieve-ref-ec-rfc-3464-delivery-status) for more information about this hook point. When it is called, it interrogates the hook prototype to determine which arguments reference structures such as the validation_context and email_message and uses those to prepare an execution context for running the script.
-
-Prior to version 3.1, the default value for `async` is `true`. When `async` is set to `true`, the hook arguments will be copied into a job that will run in one of the thread pools. If `pool` is not specified, the job will run in the `CPU` pool. In any case, the threadpool referenced by this option must be defined. Any hook arguments of type `ec_message` will be referenced rather than copied, allowing you to potentially modify their properties from your hook. Excercise caution in this case, as other threads of execution may also be operating on the same message.
-
-As of version 2.2.2.40 the `async` option may also be set to `ref` or `snapshot`. The `true` value used in earlier versions of the product is equivalent to `ref` and its behavior is described above. The `snapshot` value will create a snapshot of the message (that must not be modified) which is well suited for logging the state of the message asychronously from the main path of execution.
-
-**Configuration Change. ** As of version 3.1, the default value for `async` is `false`.
-
-If the `async` option is set to `false`, then the hook will execute synchronously, blocking the caller.
-
-### Warning
-
-Set `async` to `false` when using the core_final_validation_hook otherwise you may experience spool corruption.
-
-Sieve scripts implementing the core_final_validation hook should not modify the message since it may have already been written to the spool.
-
-There is one additional option to control the return value from the hook; by default Sieve will return `0` from its hook implementation. If you need to change that, then you can specify an integer return value via the `return`. Most users will not need this feature.
-
-The following example shows how to hook the generation of messages by the delay DSN module (see [“delay_dsn – Delay DSN Generation”](/momentum/3/3-reference/3-reference-modules-delay-dsn) for more details on delay DSNs). This uses `return` to indicate that a custom delay DSN has been injected.
-
-
-
-
-```
-sieve "sieve1" {
- hook "delay_dsn_send_notification" {
- script = "/path/to/another-script.siv"
- async = "false"
- return = "1"
- }
-}
-```
-
-This is a very powerful feature that allows great flexibility. This flexibility allows you to configure Momentum in ways that have not been tested for stability by us. We strongly recommend that you thoroughly test your configuration before deploying it in production to avoid any possible unpleasant surprises.
-
-** Script cache options in the sieve scope**
-```
-cache_size = 200
- cache_life = 260
-```
-
-Since Momentum 2.1, all script loading, either for globally configured scripts or scripts included via [ec_include](/momentum/3/3-reference/sieve-ref-ec-include) is passed through the script fetching and caching layer. Once a script is compiled, its compiled form is cached so that it doesn't need to be recompiled each time it is used. Each cache item has a time-to-live, and once that time expires, the item is removed from the cache. Compiled scripts are reference counted, so the script resources are released when the final reference to it is released. Globally configured scripts are referenced directly by the sieve module, so they will persist even after the cache entry has expired.
-
-The `cache_size` and `cache_life` directives control the number of compiled script cache entries to maintain, and the time-to-live for those entries. The compiled script cache is used whenever your Sieve scripts use the `ec_include` action to include another Sieve script. Both of these values are tunable online.
-
-Each cached script included using the `ec_include` function has a time-to-live determined by the sieve module configuration option, `cache_life`, so cached scripts are periodically refreshed. However, if you make changes to a script, a best practise is to flush the Sieve cache immediately. For more information see [“Flushing the Cache”](/momentum/3/3-reference/modules-sieve#modules.sieve.sieve.flush.cache).
-
-** runtime_error in the sieve scope**
-
-The `runtime_error` option affects how Sieve handles certain kinds of errors (for instance, passing incorrect parameters to Sieve functions, failed includes, low memory conditions). The default is to `fail` the incoming session with a transient error response, but you may set it to `continue` to have the script continue executing past the failure point.
-
-The ability to change this behavior was introduced in 2.2, and the default was changed to `fail`. In prior releases, the default was effectively `continue` and this could not be altered.
-
-### Sieve Scripts and Revision Control
-
-
-
-Sieve scripts can also make use of the revision control system. To do this store your Sieve scripts in a directory below the `/opt/msys/ecelerity/etc/conf/default/` directory and use the [eccfg](/momentum/3/3-reference/executable-eccfg) command to manage that directory.
-
-### Note
-
-Files and directories that are under revision control should be owned by `ecuser`.
-
-You could just as easily move the sieve directory into the `global/` path if you wanted to share those files across subclusters.
-
-### sieve Management Using Console Commands
-
-In version 3.0, the **sieve set** , **sieve unset** and similar commands have been removed, as the configuration is now managed by the configuration system. As a replacement for **sieve set mailfrom_phase1 /path/to/script.siv** you would use **config set sieve sieve1 script mailfrom_phase1 source /path/to/script.siv** .
-
-The sieve module can be controlled through the `ec_console`; the following commands are available:
-
-### Note
-
-In version 3.0, non-singleton module commands are issued using *`Scope_Name`*:*`Instance_Name`* followed by the command. Use the **module list** command from the system console to determine the scope name or instance name of a module. If a module does not have an instance name it is a singleton.
-
-As of version 3.0, all module-specific commands related to setting or getting module options have been removed. Use the following syntax to set or get module-specific options: **config {set | eval | get} *`Scope_Name [Instance_Name] option [value]`*** . Note that there is no ‘`:`’ between the Scope_Name and the Instance_Name and that the Instance_Name is not used with singleton modules.
-
-** 14.64.3.1. Statistics**sieve:*`sieve1`* stats
-
-Displays current Sieve statistics. Sample output is reproduced below:
-
-```
-sieve statistics since: 2004-11-24 00:58:48
-mailfrom_phase2:blacklist (5xx) = 205
-data_phase2:spam:SURBL (5xx) = 196
-mailfrom_phase2:spam:SURBL (5xx) = 72
-data_phase2:spam tarpit (informational) = 993
-mailfrom_phase2:spam tarpit (informational) = 5303
-mailfrom_phase2:spoof tarpit (informational) = 1102
-:sieve-processed (informational) = 44823
-data_phase1:bad attachment tarpit (informational) = 2008
-data_phase2:spam:Ratware detected (5xx) = 36
-mailfrom_phase2:spam:Known Spam Source (5xx) = 5231
-rcptto_phase2:non-existent user tarpit (informational) = 89
-mailfrom_phase2:policy:Fraudulent sender (5xx) = 1102
-connect_phase2:spam:Ratware senders denied (4xx) = 1046
-rcptto_phase2:policy:Blocked dictionary attack (5xx) = 89
-data_phase2:spam:Known Spam Source [content] (5xx) = 797
-rcptto_phase2:policy:Local domain spoofing attempt (5xx) = 2686
-data_phase1:virus:Possibly unsafe attachment blocked (5xx) = 2008
-data_phase1:policy:No Bounces for un-manned addresses (5xx) = 90
-```
-** 14.64.3.2. Resetting counters**sieve:*`sieve1`* reset
-
-Reset the counters displayed by the `stats` command.
-
-In Momentum version 1.2.5 and higher, this will also zero out the summary statistics, equivalent to issuing a `summary reset` command at the console.
-
-** 14.64.3.3. Flushing the Cache**sieve:*`sieve1`* flush cache
-
-This command removes all Sieve scripts from the cache. Use this command whenever you update a Sieve script. Any cached entries will be flushed and you should see a message similar to:
-
-`flushed 3 entries from the script cache`
-
-This command flushes everything from the cache, including each statically configured script, plus any script that was included and has not yet passed the cache_life duration. If no Sieve scripts are currently cached, the number of entries reported will be "`0`".
-
-** 14.64.3.4. Testing Content**sieve:*`sieve1`* test *`phase`* *`script`*
-
-This command verifies that the script content will compile and that it can run in the phase specified. Valid phases are: accept, connect, ehlo, mailfrom, rcptto, data, spool, each_rcpt and set_binding. Note that the actual script content is tested and not a filename. This is intended to be used by the web console to validate a custom script prior to saving and applying it.
-
-** 14.64.3.5. Testing Files**sieve:*`sieve1`* testfile *`phase`* *`filename`*
-
-This command verifies that the script in the specified file will compile and run in the phase specified. Valid phases are: accept, connect, ehlo, mailfrom, rcptto, data, spool, each_rcpt and set_binding.
-
-Error messages are logged to the panic log.
-
-** 14.64.3.6. Caching options**
-
-As with any module, you can tune configuration options through the system console:
-
-config set sieve *`sieve1`* cache_size *`size`*
- config set sieve *`sieve1`* cache_life *`seconds`*
-
-Changes made here do not automatically purge the cache; and existing cached items will survive until their lifetime expires. Any new items added to the cache will use the newly configured cache lifetime.
-
-Use the syntax shown above to replace the **sieve set *`option`*** and **sieve unset *`option`*** commands that were available in version 2.2.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-sievelib.md b/content/momentum/3/3-reference/modules-sievelib.md
deleted file mode 100644
index 7cd37d51a..000000000
--- a/content/momentum/3/3-reference/modules-sievelib.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "sievelib – The sievelib Module"
-description: "The sievelib module is defined in the following way Example 14 95 sievelib module The sievelib console commands add subtract delete and view gauge cache counters created using the the Sieve ec gauge cache init command For more information about this command see ec gauge cache Add a number to..."
----
-
-
-### Configuration
-
-The `sievelib` module is defined in the following way:
-
-
-
-
-```
-sievelib {
-}
-```
-
-### sievelib Management Using Console Commands
-
-The sievelib console commands add, subtract, delete and view gauge cache counters created using the the Sieve **ec_gauge_cache_init** command. For more information about this command see [ec_gauge_cache](/momentum/3/3-reference/sieve-ref-ec-gauge-cache).
-
-** 14.65.2.1. sievelib gauge_cache add *`name`* *`key`* *`number`***
-
-Add a number to the key in the specified cache.
-
-** 14.65.2.2. sievelib gauge_cache sub *`name`* *`key`* *`number`***
-
-Subtract a number from the key in the specified cache.
-
-** 14.65.2.3. sievelib gauge_cache show *`name`* *`key`***
-
-Show the key in the specified cache.
-
-** 14.65.2.4. sievelib gauge_cache delete *`name`* *`key`***
-
-Delete the key in the specified cache.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-stats-producer.md b/content/momentum/3/3-reference/modules-stats-producer.md
deleted file mode 100644
index 8ff76ea9f..000000000
--- a/content/momentum/3/3-reference/modules-stats-producer.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "statp – Stats Producer Module"
-description: "The stats producer module is used internally by the MTA to provide real time graphing data for both the single node web console as well as the cluster wide web console However you must also configure the logging modules as described in Section 4 5 5 Logging and the Web..."
----
-
-
-
-The `stats_producer` module is used internally by the MTA to provide real-time graphing data for both the single-node web console as well as the cluster-wide web console. However, you must also configure the logging modules as described in [“Logging and the Web UI”](/momentum/3/3-reference/operations-logging#operations.logging.web.ui).
-
-This module is configured as follows:
-
-
-
-
-```
-statp "statp1" {
- log_file = "jlog:///var/log/ecelerity/statp.rt"
- interval = 60
-}
-```
-
-The the default value for `interval` is `60` seconds. You should not need to change this option.
-
-The `log_file` option defaults to `jlog:///var/log/ecelerity/statp.rt`. This option should not need to be changed from its default. This module is intended to be run in conjunction with **ec_rt_stats2**, with the rollup process running centrally on a single web UI node.
-
-**Configuration Change. ** This feature is available starting from Momentum 3.0.13.
-
-Sites with large numbers of bindings and a highly contended disk subsystem will need to enable the `watchlist_only` option to track bounces for domains on the watchlist only. In version 3.0.13 the default value for this option is `false`. As of version 3.0.14, the default value for this option is `true`. This reduces the amount of data generated and disk i/o.
-
-The watchlist is a schema that is created automatically in the `ecelerity` PostgreSQL database. The `rt_stats_watchlist_only` option also needs to be enabled in the `ec_rotate.conf` file. For more information see [the section called “The `ec_rotate.conf` File”](/momentum/3/3-reference/executable-ec-rotate#ec_rotate.conf).
-
-Apart from these three options, all other options have been removed in version 3.0.
-
-### See Also
-
-[ec_rt_stats2](/momentum/3/3-reference/executable-ec-rt-stats-2)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/modules-summary.md b/content/momentum/3/3-reference/modules-summary.md
deleted file mode 100644
index 09c7905c8..000000000
--- a/content/momentum/3/3-reference/modules-summary.md
+++ /dev/null
@@ -1,171 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Summary Module Information"
-description: "In this table all modules are listed alphabetically with a brief description Singleton and deprecated modules are identified If a singleton module is followed by a version number that number identifies when that module became a singleton The Auto column indicates whether a module is loaded automatically as required Note..."
----
-
-### All Modules
-
-In this table all modules are listed alphabetically with a brief description. Singleton and deprecated modules are identified. If a singleton module is followed by a version number, that number identifies when that module became a singleton. The `Auto` column indicates whether a module is loaded automatically as required. Note: this applies only to modules in version 3.x. The `Type` column indicates the MTA type of a given option. Options of type `na` do not directly apply to either a sending or receiving MTA. The `Cluster` column indicates whether a module is cluster-specific. The "valid" column indicates whether a module is a validation module.
-
-
-
-
-| Name | Version | Description | Auto | Cluster | Valid | See Also |
-| --- | --- | --- | --- | --- | --- | --- |
-| [“Live Bounce Updates – Module”](/momentum/3/3-reference/3-reference-modules-live-bounce-updates) | 3.0 | Canonicalizes bounce messages into a number of categories | | | | |
-| [“ac_auth – Authentication Handler”](/momentum/3/3-reference/3-reference-modules-ac-auth) | 3.6.5 | Enable a Lua module to hook into the authentication mechanism | | | | |
-| [“adaptive – Adaptive Delivery”](/momentum/3/3-reference/3-reference-modules-adaptive) (*singleton*) | 3.0 | Dynamically tune delivery options | | | | |
-| [“alerting – alerting”](/momentum/3/3-reference/3-reference-modules-alerting) (*singleton*) | 3.0 | Enable Lua policy scripts and alerts | | | | [“scriptlet – Module”](/momentum/3/3-reference/3-reference-modules-scriptlet) |
-| [“alias – Alias Expansion Module”](/momentum/3/3-reference/3-reference-modules-alias) | 3.0 | Rewrite recipient addresses | | | ✓ | [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) |
-| [“antivirus – Antivirus Modules”](/momentum/3/3-reference/3-reference-modules-antivirus) | 3.0 | The antivirus framework | ✓ | | ✓ | [“clamav – ClamAV”](/momentum/3/3-reference/3-reference-modules-clamav), [“csapi – The Content Scanning API Module”](/momentum/3/3-reference/3-reference-modules-csapi) |
-| [apn](/momentum/3/3-push/apns-modules) (*singleton*) | 3.5.4 | Use this module to configure the Apple Push Notification service | | | | |
-| [apn_logger](/momentum/3/3-push/apns-modules-apn-logger) | 3.5.4 | Use this module to log Apple Push notifications | | | | |
-| [“as_logger – Audit series logger”](/momentum/3/3-reference/3-reference-modules-as-logger) (*singleton 3.1* ) | 3.0 | Replicate audit series to disk | | ✓ | | |
-| [“auth_ds – Datasource based SMTP Authentication”](/momentum/3/3-reference/3-reference-modules-auth-ds) (*singleton*) | 3.0 | Use a data source to authenticate an SMTP session | ✓ | | | [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) |
-| [“auth_radius – RADIUS based SMTP Authentication”](/momentum/3/3-reference/3-reference-modules-auth-radius) (*singleton*) | 3.0 | Authenticate SMTP sessions via SMTP AUTH using RADIUS servers | | | | |
-| [“beik – BEIK Module”](/momentum/3/3-reference/3-reference-modules-beik) (*singleton*) | 3.0 | This module provides an in-process version of the brightmail module | | | ✓ | [“brightmail – Brightmail Module”](/momentum/3/3-reference/3-reference-modules-brightmail) |
-| [“bind_address_secondary – Dual-stack IPv4/IPv6 Support”](/momentum/3/3-reference/3-reference-modules-bind-address-secondary) | 3.6.10 | Dual-stack IPv4/IPv6 Support | | | | |
-| [“bounce_classifier – Bounce Classifier”](/momentum/3/3-reference/modules-bounce-classifier) *(deprecated)* | 3.0 | Override the built-in bounce classification | | | | |
-| [“bounce_classifier_override – The Bounce Classifier Override Module”](/momentum/3/3-reference/3-reference-modules-bounce-classifier-override) (*singleton*) | 3.1 | Override the built-in bounce classification | | | | [“bounce_classifier – Bounce Classifier”](/momentum/3/3-reference/modules-bounce-classifier) |
-| [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/3/3-reference/3-reference-modules-bounce-logger) | 3.0 | Log bounced messages | | | | |
-| [“brightmail – Brightmail Module”](/momentum/3/3-reference/3-reference-modules-brightmail) | 3.0 | Check inbound mail against a Brightmail server | | | ✓ | |
-| [bzip2io](/momentum/3/3-reference/3-reference-modules-compress-spool) (*singleton*) | 3.0 | bzip compression algorithm | ✓ | | | [“compress_spool – Dynamic Spool Compression”](/momentum/3/3-reference/3-reference-modules-compress-spool) |
-| [“chunk_logger – Asynchronous Logging”](/momentum/3/3-reference/3-reference-modules-chunk-logger) | 3.6.5 | Provide an interface for logging asynchronously from Lua, C, and C++ | | | | |
-| [“cidrdb – CIDRDB”](/momentum/3/3-reference/3-reference-modules-cidrdb) (*singleton*) | 3.0 | Expose scripting functions for checking IP addresses | ✓ | | ✓ | |
-| [“clamav – ClamAV”](/momentum/3/3-reference/3-reference-modules-clamav) | 3.0 | Support for Clam AV | | | ✓ | [“antivirus – Antivirus Modules”](/momentum/3/3-reference/3-reference-modules-antivirus) |
-| [“cloudmark – Cloudmark Authority Module”](/momentum/3/3-reference/3-reference-modules-cloudmark) (*singleton 3.4* ) | 3.0 | Support for the Cloudmark spam technology | | | ✓ | |
-| [cluster](/momentum/3/3-reference/ecelerity-cluster-conf) (*singleton*) | 3.0 | The cluster configuration module | | ✓ | | [*Clustering*](/momentum/3/3-reference/3-reference-cluster) |
-| [“commtouch_ctasd – Commtouch_ctasd Module”](/momentum/3/3-reference/3-reference-modules-commtouch) | 3.0 | Spam protection technology | | | ✓ | |
-| [“compress_spool – Dynamic Spool Compression”](/momentum/3/3-reference/3-reference-modules-compress-spool) (*singleton*) | 3.0 | Compress large messages before writing them to disk | ✓ | | | |
-| [“conntrol – Fine-Grained Connection Control”](/momentum/3/3-reference/3-reference-modules-conntrol) | 3.0 | Control how inbound connections are established | | | ✓ | |
-| [“csapi – The Content Scanning API Module”](/momentum/3/3-reference/3-reference-modules-csapi) | 3.0 | Integration for Symantec content scanners | | | ✓ | |
-| [“custom_bounce_logger – Custom Bounce Logging”](/momentum/3/3-reference/3-reference-modules-custom-bounce-logger) | 3.6.5 | Append a "User_String" to the end of each bounce record | ✓ | | | [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/3/3-reference/3-reference-modules-bounce-logger) |
-| [“custom_logger – Customizable Logging”](/momentum/3/3-reference/3-reference-modules-custom-logger) | 3.0 | Create custom logs | | | | |
-| [“delay_dsn – Delay DSN Generation”](/momentum/3/3-reference/3-reference-modules-delay-dsn) | 3.0 | Configure and send delay DSNs | | | | |
-| [dk_sign](/momentum/3/3-reference/3-reference-modules-domainkeys) | 3.0 | Attach domain keys signatures to outbound mail | | | ✓ | |
-| [dk_validate](/momentum/3/3-reference/3-reference-modules-domainkeys) | 3.0 | Validate inbound mail checking domain keys signatures | | | ✓ | |
-| [dkim_sign](/momentum/3/3-reference/modules-dkim) | 3.0 | Attach DKIM signatures to outbound mail | | | ✓ | |
-| [dkim_validate](/momentum/3/3-reference/modules-dkim) | 3.0 | Validate inbound mail checking DKIM signatures | | | ✓ | |
-| [“dnsbuf – Dynamically Set the DNS UDP Buffer Size”](/momentum/3/3-reference/3-reference-modules-dnsbuf) | 3.6.5 | Manipulate DNS buffer sizes on demand | | | | |
-| [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) (*singleton*) | 3.0 | Provide modular data access and caching for use by other modules | ✓ | | | |
-| [“ec_logger – Momentum-Style Logging”](/momentum/3/3-reference/3-reference-modules-ec-logger) | 3.0 | Log the status of messages | | | | |
-| [“eleven – Module”](/momentum/3/3-reference/3-reference-modules-eleven) (*singleton*) | 3.1 | This module implements the eleven spam filter and categorization service | | | ✓ | |
-| [“exim_logger – Exim-Compatible Logging”](/momentum/3/3-reference/3-reference-modules-exim-logger) | 3.0 | Support for Exim style logs | | | | |
-| [“fbl – Feedback Loop Module”](/momentum/3/3-reference/3-reference-modules-fbl) (*singleton*) | 3.0 | Manage feedback loop services | | | | |
-| [“fingerprint – Host Fingerprinting”](/momentum/3/3-reference/3-reference-modules-host-fingerprint) | 3.0 | Perform passive OS fingerprinting | | | ✓ | |
-| [gcm](/momentum/3/3-push/push-gcm-modules#push.modules.gcm) (*singleton*) | 3.5.4 | Use this module to configure Google Cloud messaging | | | | |
-| [gcm_logger](/momentum/3/3-push/push-modules-gcm-logger) | 3.5.4 | Use this module to log Google Cloud messages | | | | |
-| [gzipio](/momentum/3/3-reference/3-reference-modules-compress-spool) (*singleton*) | 3.0 | gzip compression algorithm | ✓ | | | [“compress_spool – Dynamic Spool Compression”](/momentum/3/3-reference/3-reference-modules-compress-spool) |
-| [“http_io – HTTP I/O Provider”](/momentum/3/3-reference/modules-httpio) (*singleton*) | 3.0 | Read content at a URI | ✓ | | | |
-| [httpsrv](/momentum/3/3-rest/rest-configuring) (*singleton*) | 3.1 | The HTTP server required for using the REST injection API | | | | |
-| [“icu – ICU”](/momentum/3/3-reference/3-reference-modules-icu) (*singleton*) | 3.0 | Unicode support | ✓ | | | |
-| [“ilf_logger Module”](/momentum/3/3-reference/3-reference-modules-ilf-logger) (*singleton*) | 3.5.6 | Use this module if you have usage-based licenses | | | | |
-| [“imageanalyzer – Module”](/momentum/3/3-reference/modules-imageanalyzer) | 3.0 | Support for the Image Analyzer engine | | | ✓ | |
-| [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) (*singleton 3.0.23* ) | 3.0 | Provide analytics on sending IPs | | ✓ | ✓ | [“outbound_audit – Outbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-outbound-audit) |
-| [“ipv6_lookup – Multi-address-family MX Records”](/momentum/3/3-reference/3-reference-modules-ipv-6-lookup) | 3.6.10 | Multi-address-family MX Records | | | | |
-| [“jlog – The jlog Module”](/momentum/3/3-reference/3-reference-modules-jlog) (*singleton*) | 3.0 | Create jlog formatted logs | ✓ | | | |
-| [“mail_loop – Mail Loop Detection”](/momentum/3/3-reference/3-reference-modules-mail-loop) | 3.0 | Automatic suppression of potential mail loops | | | ✓ | |
-| [“maildir – Maildir Delivery Support”](/momentum/3/3-reference/3-reference-modules-maildir) | 3.0 | Store messages in maildir format as specified by qmail | | | | |
-| [mm7](/momentum/mobile/mobile-reference/mobility-mm-7-mms-bounce-logger) (*singleton*) | 3.1 | Enable MM7 | ✓ | | | |
-| [mm7_serv](/momentum/mobile/mobile-reference/mobility-mm-7) (*singleton*) | 3.1 | Enable the MM7 Value Added Service Provider | | | | |
-| [mms_bounce_logger](/momentum/mobile/mobile-reference/mobility-mm-7-mms-bounce-logger) | 3.1 | Enable MMS bounce logging | | | | |
-| [mms_logger](/momentum/mobile/mobile-reference/mobility-mm-7-mms-logger) | 3.1 | Enable MMS logging | | | | |
-| [msgc_client](/momentum/3/3-reference/3-reference-modules-msgc) (*singleton*) | 3.4 | The client component of MSGC | | ✓ | | |
-| [msgc_server](/momentum/3/3-reference/3-reference-modules-msgc) (*singleton*) | 3.4 | The server component of MSGC | | ✓ | | |
-| [“mxip - IP Addresses In MX Records”](/momentum/3/3-reference/3-reference-modules-mxip) | 3.6.5 | Enable Momentum 3.0 to deliver to domains with a textual IP address | | | | |
-| [opendkim](/momentum/3/3-reference/3-reference-modules-opendkim) | 3.6 | Validate/sign mail using DKIM signatures | | | ✓ | |
-| [“outbound_audit – Outbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-outbound-audit) | 3.0 | Provides time-series analytics on the behavior of receiving domains | | ✓ | | |
-| [“outbound_smtp_auth – Module”](/momentum/3/3-reference/3-reference-modules-outbound-smtp-auth) | 3.6.12 | Enables users to specify authentication parameters for a given set of messages | | | | |
-| [“persist_io – Persistent IO Wrapper”](/momentum/3/3-reference/3-reference-modules-persistio) (*singleton*) | 3.0 | Provides a non-volatile cache wrapper for any other IO wrapper | ✓ | | | [“http_io – HTTP I/O Provider”](/momentum/3/3-reference/modules-httpio) |
-| [“pipe_io – Pipe IO Wrapper”](/momentum/3/3-reference/3-reference-modules-pipeio) (*singleton*) | 3.0 | Provides ability to writing content via an arbitrary program | ✓ | | | |
-| [“pipe_transport – Module”](/momentum/3/3-reference/3-reference-modules-pipe-transport) | 3.0 | Pipe messages to a local program | | | | |
-| [“postfix_logger – Postfix-Compatible Logging”](/momentum/3/3-reference/3-reference-modules-postfix-logger) | 3.0 | Log in Postfix format | | | | |
-| [“reception_timing - Reception Timing Modules”](/momentum/3/3-reference/3-reference-modules-reception-timing) | 3.6.6 | Track how long it takes to receive or reject messages over SMTP | | | ✓ | [“chunk_logger – Asynchronous Logging”](/momentum/3/3-reference/3-reference-modules-chunk-logger) |
-| [“response_transcode – Module”](/momentum/3/3-reference/3-reference-modules-response-transcode) (*singleton*) | 3.0 | Work around broken remote servers | ✓ | | | |
-| [restinjector](/momentum/3/3-rest/rest-configuring) (*singleton*) | 3.1 | Activate the REST injection API | | | | |
-| [“sched – The Schedule Module”](/momentum/3/3-reference/3-reference-modules-sched) (*singleton*) | 3.0 | Schedule tasks to be run from the console | | | | [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) |
-| [“scriptlet – Module”](/momentum/3/3-reference/3-reference-modules-scriptlet) | 3.0 | Enable scriptlets for enforcing policy | | | | [“alerting – alerting”](/momentum/3/3-reference/3-reference-modules-alerting) |
-| [“securecreds – Module”](/momentum/3/3-reference/3-reference-modules-securecreds) (*singleton*) | 3.2 | Use encrypted credentials throughout Momentum | | | | [credmgr](/momentum/3/3-reference/executable-credmgr) |
-| [“seedlist – Seedlist Integration”](/momentum/3/3-reference/3-reference-modules-seedlist) | 3.0 | Deliverability monitoring service | | | ✓ | |
-| [senderid](/momentum/3/3-reference/3-reference-modules-spf) | 3.0 | Use Sender Policy Framework (spf_v2) | | | ✓ | [“scriptlet – Module”](/momentum/3/3-reference/3-reference-modules-scriptlet) |
-| [“sendmail_logger – Sendmail-Compatible Logging”](/momentum/3/3-reference/3-reference-modules-sendmail-logger) | 3.0 | Create Sendmail formatted logs | | | | |
-| [smpp](/momentum/mobile/mobile-reference/momentum-mobility#modules.mobility.smpp_logger) (*singleton*) | 3.0 | Enable SMPP | | | | |
-| [smpp_bounce_logger](/momentum/mobile/mobile-reference/modules-mobility-smpp-bounce-logger) | 3.0 | Enable SMPP bounce logging | | | | |
-| [smpp_logger](/momentum/mobile/mobile-reference/mobility-configuration-smpp) | 3.0 | Log SMPP events | | | | |
-| [“smtp_auth_proxy - SMTP Authentication Proxy”](/momentum/3/3-reference/3-reference-modules-smtp-auth-proxy) | 3.6.5 | Allow edge SMTP servers to forward SMTP AUTH requests to SMTP servers | ✓ | | | |
-| [“smtp_cbv – SMTP Callback Verification”](/momentum/3/3-reference/3-reference-modules-smtp-cbv) | 3.0 | Perform SMTP Callback Verification | | | ✓ | |
-| [“smtp_rcptto_proxy - SMTP Recipient-To Proxy”](/momentum/3/3-reference/3-reference-modules-smtp-rcptto-proxy) | 3.6.5 | Validate a Lua recipient by doing an SMTP call-forward | | | | |
-| [spf_macros](/momentum/3/3-reference/3-reference-modules-spf) (*singleton*) | 3.0 | Generic macro service for SPF | ✓ | | | |
-| [spf_v1](/momentum/3/3-reference/3-reference-modules-spf) | 3.0 | Use Sender Policy Framework | | | | [“scriptlet – Module”](/momentum/3/3-reference/3-reference-modules-scriptlet) |
-| [“static-routes - Static Routes”](/momentum/3/3-reference/3-reference-modules-static-routes) | 3.6.5 | Route traffic to a given server by IP address and port | ✓ | | | |
-| [“suppress_spool – Deferred Message Spooling”](/momentum/3/3-reference/3-reference-modules-suppress-spool) | 3.0 | Defer spool attempts | | | | |
-| [“syslog_io – The syslog_io Module”](/momentum/3/3-reference/3-reference-modules-syslog-io) (*singleton*) | 3.0 | Use the syslog wrapper to write entries to the log | ✓ | | | |
-| [“tls_macros Module”](/momentum/3/3-reference/3-reference-tls-macros) | 3.6.5 | Provide several macros supporting custom logging of TLS-related data | | | | |
-| [“url_ripper – URL Extraction”](/momentum/3/3-reference/3-reference-modules-url-ripper) | 3.0 | A toolkit for DNS-based content correlation | | | ✓ | |
-
-### Receiving Modules
-
-This section shows inbound modules. Modules are listed alphabetically with a brief description and with singleton and deprecated modules identified. If a singleton module is followed by a version number, that number identifies when that module became a singleton. The `Auto` column indicates whether a module is loaded automatically as required. Note: this applies only to modules in version 3.x. The `Cluster` column indicates whether a module is cluster-specific.
-
-
-
-
-| Name | Version | Description | Auto | Cluster | Valid | See Also |
-| --- | --- | --- | --- | --- | --- | --- |
-| [“antivirus – Antivirus Modules”](/momentum/3/3-reference/3-reference-modules-antivirus) | 3.0 | The antivirus framework | ✓ | | ✓ | [“clamav – ClamAV”](/momentum/3/3-reference/3-reference-modules-clamav), [“csapi – The Content Scanning API Module”](/momentum/3/3-reference/3-reference-modules-csapi) |
-| [“auth_ds – Datasource based SMTP Authentication”](/momentum/3/3-reference/3-reference-modules-auth-ds) (*singleton*) | 3.0 | Use a data source to authenticate an SMTP session | ✓ | | | [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) |
-| [“auth_radius – RADIUS based SMTP Authentication”](/momentum/3/3-reference/3-reference-modules-auth-radius) (*singleton*) | 3.0 | Authenticate SMTP sessions via SMTP AUTH using RADIUS servers | | | | |
-| [“beik – BEIK Module”](/momentum/3/3-reference/3-reference-modules-beik) (*singleton*) | 3.0 | This module provides an in-process version of the brightmail module | | | ✓ | [“brightmail – Brightmail Module”](/momentum/3/3-reference/3-reference-modules-brightmail) |
-| [“brightmail – Brightmail Module”](/momentum/3/3-reference/3-reference-modules-brightmail) | 3.0 | Check inbound mail against a Brightmail server | | | ✓ | |
-| [bzip2io](/momentum/3/3-reference/3-reference-modules-compress-spool) (*singleton*) | 3.0 | bzip compression algorithm | ✓ | | | [“compress_spool – Dynamic Spool Compression”](/momentum/3/3-reference/3-reference-modules-compress-spool) |
-| [“cidrdb – CIDRDB”](/momentum/3/3-reference/3-reference-modules-cidrdb) (*singleton*) | 3.0 | Expose scripting functions for checking IP addresses | ✓ | | ✓ | |
-| [“clamav – ClamAV”](/momentum/3/3-reference/3-reference-modules-clamav) | 3.0 | Support for Clam AV | | | ✓ | [“antivirus – Antivirus Modules”](/momentum/3/3-reference/3-reference-modules-antivirus) |
-| [“cloudmark – Cloudmark Authority Module”](/momentum/3/3-reference/3-reference-modules-cloudmark) (*singleton 3.4* ) | 3.0 | Support for the Cloudmark spam technology | | | ✓ | |
-| [“commtouch_ctasd – Commtouch_ctasd Module”](/momentum/3/3-reference/3-reference-modules-commtouch) | 3.0 | Spam protection technology | | | ✓ | |
-| [“compress_spool – Dynamic Spool Compression”](/momentum/3/3-reference/3-reference-modules-compress-spool) (*singleton*) | 3.0 | Compress large messages before writing them to disk | ✓ | | | |
-| [“conntrol – Fine-Grained Connection Control”](/momentum/3/3-reference/3-reference-modules-conntrol) | 3.0 | Control how inbound connections are established | | | ✓ | |
-| [“csapi – The Content Scanning API Module”](/momentum/3/3-reference/3-reference-modules-csapi) | 3.0 | Integration for Symantec content scanners | | | ✓ | |
-| [“delay_dsn – Delay DSN Generation”](/momentum/3/3-reference/3-reference-modules-delay-dsn) | 3.0 | Configure and send delay DSNs | | | | |
-| [dk_validate](/momentum/3/3-reference/3-reference-modules-domainkeys) | 3.0 | Validate inbound mail checking domain keys signatures | | | ✓ | |
-| [dkim_validate](/momentum/3/3-reference/modules-dkim) | 3.0 | Validate inbound mail checking DKIM signatures | | | ✓ | |
-| [“eleven – Module”](/momentum/3/3-reference/3-reference-modules-eleven) (*singleton*) | 3.1 | This module implements the eleven spam filter and categorization service | | | ✓ | |
-| [“fingerprint – Host Fingerprinting”](/momentum/3/3-reference/3-reference-modules-host-fingerprint) | 3.0 | Perform passive OS fingerprinting | | | ✓ | |
-| [gzipio](/momentum/3/3-reference/3-reference-modules-compress-spool) (*singleton*) | 3.0 | gzip compression algorithm | ✓ | | | [“compress_spool – Dynamic Spool Compression”](/momentum/3/3-reference/3-reference-modules-compress-spool) |
-| [“imageanalyzer – Module”](/momentum/3/3-reference/modules-imageanalyzer) | 3.0 | Support for the Image Analyzer engine | | | ✓ | |
-| [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) (*singleton 3.0.23* ) | 3.0 | Provide analytics on sending IPs | | ✓ | ✓ | [“outbound_audit – Outbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-outbound-audit) |
-| [“maildir – Maildir Delivery Support”](/momentum/3/3-reference/3-reference-modules-maildir) | 3.0 | Store messages in maildir format as specified by qmail | | | | |
-| [“pipe_transport – Module”](/momentum/3/3-reference/3-reference-modules-pipe-transport) | 3.0 | Pipe messages to a local program | | | | |
-| [“reception_timing - Reception Timing Modules”](/momentum/3/3-reference/3-reference-modules-reception-timing) | 3.6.6 | Track how long it takes to receive or reject messages over SMTP | | | ✓ | [“chunk_logger – Asynchronous Logging”](/momentum/3/3-reference/3-reference-modules-chunk-logger) |
-| [senderid](/momentum/3/3-reference/3-reference-modules-spf) | 3.0 | Use Sender Policy Framework (spf_v2) | | | ✓ | [“scriptlet – Module”](/momentum/3/3-reference/3-reference-modules-scriptlet) |
-| [“smtp_cbv – SMTP Callback Verification”](/momentum/3/3-reference/3-reference-modules-smtp-cbv) | 3.0 | Perform SMTP Callback Verification | | | ✓ | |
-| [spf_macros](/momentum/3/3-reference/3-reference-modules-spf) (*singleton*) | 3.0 | Generic macro service for SPF | ✓ | | | |
-| [spf_v1](/momentum/3/3-reference/3-reference-modules-spf) | 3.0 | Use Sender Policy Framework | | | | [“scriptlet – Module”](/momentum/3/3-reference/3-reference-modules-scriptlet) |
-| [“suppress_spool – Deferred Message Spooling”](/momentum/3/3-reference/3-reference-modules-suppress-spool) | 3.0 | Defer spool attempts | | | | |
-
-### Sending Modules
-
-This section shows outbound modules. Modules are listed alphabetically with a brief description and with singleton and deprecated modules identified. If a singleton module is followed by a version number, that number identifies when that module became a singleton. The `Auto` column indicates whether a module is loaded automatically as required. Note: this applies only to modules in version 3.x. The `Cluster` column indicates whether a module is cluster-specific.
-
-
-
-
-| Name | Version | Description | Auto | Cluster | Valid | See Also |
-| --- | --- | --- | --- | --- | --- | --- |
-| [“adaptive – Adaptive Delivery”](/momentum/3/3-reference/3-reference-modules-adaptive) (*singleton*) | 3.0 | Dynamically tune delivery options | | | | |
-| [“alias – Alias Expansion Module”](/momentum/3/3-reference/3-reference-modules-alias) | 3.0 | Rewrite recipient addresses | | | ✓ | [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) |
-| [apn](/momentum/3/3-push/apns-modules) (*singleton*) | 3.5.4 | Use this module to configure the Apple Push Notification service | | | | |
-| [apn_logger](/momentum/3/3-push/apns-modules-apn-logger) | 3.5.4 | Use this module to log Apple Push notifications | | | | |
-| [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/3/3-reference/3-reference-modules-bounce-logger) | 3.0 | Log bounced messages | | | | |
-| [dk_sign](/momentum/3/3-reference/3-reference-modules-domainkeys) | 3.0 | Attach domain keys signatures to outbound mail | | | ✓ | |
-| [dkim_sign](/momentum/3/3-reference/modules-dkim) | 3.0 | Attach DKIM signatures to outbound mail | | | ✓ | |
-| [“fbl – Feedback Loop Module”](/momentum/3/3-reference/3-reference-modules-fbl) (*singleton*) | 3.0 | Manage feedback loop services | | | | |
-| [gcm](/momentum/3/3-push/push-gcm-modules#push.modules.gcm) (*singleton*) | 3.5.4 | Use this module to configure Google Cloud messaging | | | | |
-| [gcm_logger](/momentum/3/3-push/push-modules-gcm-logger) | 3.5.4 | Use this module to log Google Cloud messages | | | | |
-| [httpsrv](/momentum/3/3-rest/rest-configuring) (*singleton*) | 3.1 | The HTTP server required for using the REST injection API | | | | |
-| [“mail_loop – Mail Loop Detection”](/momentum/3/3-reference/3-reference-modules-mail-loop) | 3.0 | Automatic suppression of potential mail loops | | | ✓ | |
-| [“outbound_audit – Outbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-outbound-audit) | 3.0 | Provides time-series analytics on the behavior of receiving domains | | ✓ | | |
-| [“outbound_smtp_auth – Module”](/momentum/3/3-reference/3-reference-modules-outbound-smtp-auth) | 3.6.12 | Enables users to specify authentication parameters for a given set of messages | | | | |
-| [“response_transcode – Module”](/momentum/3/3-reference/3-reference-modules-response-transcode) (*singleton*) | 3.0 | Work around broken remote servers | ✓ | | | |
-| [restinjector](/momentum/3/3-rest/rest-configuring) (*singleton*) | 3.1 | Activate the REST injection API | | | | |
-| [“seedlist – Seedlist Integration”](/momentum/3/3-reference/3-reference-modules-seedlist) | 3.0 | Deliverability monitoring service | | | ✓ | |
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/operations-console.md b/content/momentum/3/3-reference/operations-console.md
deleted file mode 100644
index a9ae7fdc4..000000000
--- a/content/momentum/3/3-reference/operations-console.md
+++ /dev/null
@@ -1,115 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "The Momentum System Console"
-description: "All Momentum online administration management and analysis can be performed through the Momentum System Console program ec console henceforth referred to as the console The console can connect to a Momentum instance via a Unix domain socket or a TCP IP socket with an optional user prefix depending upon how..."
----
-
-All Momentum online administration, management and analysis can be performed through the Momentum System Console program **ec_console**, henceforth referred to as the console.
-
-The console can connect to a Momentum instance via a Unix domain socket or a TCP/IP socket (with an optional user@ prefix) depending upon how Momentum is configured. See [the section called “Control_Listener”](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener) and [“Configuring Authentication for the Control Listener”](/momentum/3/3-reference/conf-aaa#conf.control_authen) for details on configuring Momentum's control listening behavior.
-
-### Connecting via a Unix Domain Socket
-
-The console assumes that Unix domain sockets are located in `/tmp`. The standard endpoint for a control listener is `/tmp/2025`. When using the standard endpoint, connecting to the console simple requires issuing the **ec_console** command with no options.
-
-**ec_console** also takes an optional argument to specify an endpoint if you choose to bind your Control_Listener to a non-standard value. This option is specified in the following way:
-
-`shell> /opt/msys/ecelerity/bin/ec_console /tmp/2030`
-
-This will attempt to connect to the local Momentum instance listening at `/tmp/2030`.
-
-### Connecting via TCP/IP
-
-The following example attempts to connect the Momentum instance located at the IPv4 address 10.2.4.1 on port 2025:
-
-`shell> /opt/msys/ecelerity/bin/ec_console 10.2.4.1:2025`
-
-Likewise, you can attempt to connect to the Momentum instance located at the IPv6 address fd82:7796:815b:af9d:2e0:81ff:fe63:5ce8 on port 2424 in the following way:
-
-`shell> /opt/msys/ecelerity/bin/ec_console ec_console [fd82:7796:815b:af9d:2e0:81ff:fe63:5ce8]:2424`
-### Note
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-### Successful Connection
-
-A successful launch of the console will result in output similar to the following:
-
-```
-# /opt/msys/ecelerity/bin/ec_console
-##############################################
-# ecelerity version: 3.0.10.30987
-# Copyright (c) 1999-2009 Message Systems, Inc.
-# All Rights Reserved.
-##############################################
-```
-
-By default, an interactive console session is established, and the console client provides line editing features and tab completion (it will load your `~/.inputrc` on startup). In this mode, the version of the remote server is displayed at connect time.
-
-The console client enters batching mode if it detects that it is not connected to a terminal, or if additional command line parameters beyond the listener endpoint are specified. For example, you can list all your active modules and then exit in the following way:
-
-`shell> ec_console /tmp/2025 module list`
-
-For a TCP/IP connection to localhost requiring authentication of the user, `admin`, use the following command:
-
-`shell> ec_console admin@localhost:2025 module list`
-
-You will be asked for admin's password before the **module list** command executes. Batch mode suppresses the version information that is normally displayed at connect time and disables advanced line editing features.
-
-To exit the console enter the **quit** command.
-
-### SSH Tunnel Support
-
-The **ec_console** command has ssh tunnel support. Assuming that you have a properly configured Control_Listener, you can connect in the following ways:
-
-```
-shell> ec_console ssh://user@hostname/ecuser@hostname:2025
-shell> ec_console ssh://user:passwd@hostname/ecuser:passwd@*:2025
-```
-
-You need operating system (OS) credentials for the ssh connection to the machine hosting the MTA and system console credentials because the control listener requires authentication. The listener stanza is shown below:
-
-```
-Control_Listener {
- Enable_Authentication = "true"
-
- Listen "*:2025" {
- }
- ...
-}
-```
-
-SSH support requires the remote server to support SSH protocol version 2, and that the server be configured to allow port-forwarding. It is not possible to tunnel Unix domain socket connections over SSH.
-
-### Options Valid in the Control_Listener Scope
-
-The configuration options valid in the Control_Listener scope are as follows:
-
-
-
-
-| Option/Description | Default | Scopes |
-| --- | --- | --- |
-| **[accept_queue_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.accept_queue_backlog)** – The accept queue backlog | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[always_allow](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding)** – When set to true, authentication is considered to have succeeded, unless always_deny is set | false | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[always_deny](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding)** – If set to true, authentication is considered to have failed | false | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[authcrammd5parameters](/momentum/3/3-reference/conf-aaa#conf.inbound-auth.cram-md5)** – Configure CRAM-MD5 authentication | | control_listener, esmtp_listener, listen, pathway, pathway_group |
-| **[authdigestmd5parameters](/momentum/3/3-reference/conf-aaa#conf.inbound-authdigest-md5)** – Configure DIGEST-MD5 authentication | | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[authloginparameters](/momentum/3/3-reference/conf-aaa#conf.control_authen.clear.text)** – Configure clear text login authentication | | control_listener, esmtp_listener, listen, pathway, pathway_group |
-| **[authorizationparameters](/momentum/3/3-reference/conf-aaa#conf.control_authz.ecauth)** – AuthorizationParameters dictionary points to authorization information | | control_listener, esmtp_listener, listen |
-| **[concurrency](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Define number of available threads | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, threadpool, xmpp_listener |
-| **[disable_nagle_algorithm](/momentum/3/3-reference/3-reference-conf-ref-disable-nagle-algorithm)** – Disable nagle algorithm on sockets | false | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, global, http_listener, listen, xmpp_listener |
-| **[enable](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Enable or disable a listener scope | true | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[enable_authentication](/momentum/3/3-reference/conf-ecelerity-conf#conf.inbound-mail)** – Whether or not to enable authentication | | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[enable_authorization](/momentum/3/3-reference/conf-aaa#conf.control_authz)** – Whether or not to enable authorization for console commands | | control_listener, listen, peer |
-| **[events_per_iter](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.events_per_iter)** – Employ when using a Concurrency greater than 1 | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[file_mode](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener)** – File access rights in octal notation | 0660 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[listen](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.attributes)** *(scope)* – Specify the socket that a listener listens on | | control_listener, ecstream_listener, esmtp_listener, http_listener, msgcserver_listener, xmpp_listener |
-| **[listen_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listen_backlog)** – The listen backlog | 500 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[peer](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.config.acls)** *(scope)* – Create an ACL within a specific listener | | control_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[pool_name](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Associate a threadpool with a listener | | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tcp_recv_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_recv_buffer_size)** – The size of the TCP receive buffer size | 4096 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tcp_send_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_send_buffer_size)** – The size of the TCP send buffer | 4096 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[timeout](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.timeout)** – The timeout for idle control connections on Control_Listeners | 60 | control_listener |
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/operations-logging.md b/content/momentum/3/3-reference/operations-logging.md
deleted file mode 100644
index 72eea9fca..000000000
--- a/content/momentum/3/3-reference/operations-logging.md
+++ /dev/null
@@ -1,213 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Logging"
-description: "Momentum provides an extremely flexible and robust logging API and ships with five bundled implementations ec logger Exim format Postfix format Sendmail format and a freeform custom logger that lets you specify your own logging format For a list of configuration options related to logging see Table 9 7 logging..."
----
-
-Momentum provides an extremely flexible and robust logging API, and ships with five bundled implementations: ec_logger, Exim format, Postfix format, Sendmail format, and a freeform custom_logger that lets you specify your own logging format.
-
-For a list of configuration options related to logging see [Table 9.7, “logging options”](/momentum/3/3-reference/options-summary#logging-options-table).
-
-### ec_logger
-
-ec_logger writes three main log files, `mainlog.ec`, `paniclog.ec`, and `rejectlog.ec`. The `mainlog.ec` format was designed to be a concise, machine-parseable and computationally inexpensive format for writing complete information about every message received and delivered by Momentum. Fixed position codes signify whether the log line represents a reception, delivery, transient failure or permanent failure. The ec_logger module is a self-contained entity that tracks the full disposition status of every message that goes through Momentum. Everything either ends up in the mainlog or rejectlog. Both of these logs together provide a full picture of all the mail transiting the system.
-
-The `paniclog.ec` is a debugging log where system events are logged depending on the level of Debug_Flags set in your configuration. Under normal circumstances Debug_Flags should be empty or should be omitted from the `ecelerity.conf` file. For debugging purposes, set up Debug_Flags as described in [debug_flags](/momentum/3/3-reference/3-reference-conf-ref-debug-flags). When a problem event occurs, if it is within the logging level set by the `Debug_Flags` option, then the event is written to the paniclog. Excepting informational startup messages, the paniclog should be empty under normal circumstances. It is recommended that you periodically check your `paniclog.ec` (or schedule a cron job to do it for you) to look for any anomalous events.
-
-The `rejectlog.ec` is a debugging log where records of inbound mails that are rejected by Momentum (either due to policy or protocol deviations) are stored. Momentum lists the full context for all rejected messages, as well as a summary of why the mail was rejected.
-
-** 4.5.1.1. ec_logger Configuration**
-
-The writing of ec_logger format logs is configured in your `ecelerity.conf` file. All logging capabilities in Momentum are implemented through the extension API. To load the ec_logger module, you add the following lines to the main body of your `ecelerity.conf` file. An ec_logger module is most easily added using the web UI. This process is described in [“Changing Module Configuration Options”](/momentum/3/3-reference/web-3-administration#web3.module_config).
-
-
-
-
-```
-ec_logger "ec_logger1"
-{
- mainlog = "/var/log/ecelerity/mainlog.ec"
- paniclog = "/var/log/ecelerity/paniclog.ec"
- rejectlog = "/var/log/ecelerity/rejectlog.ec"
- acctlog = "/var/log/ecelerity/acctlog.ec"
- importlog = "/var/log/ecelerity/importlog.ec"
-}
-```
-
-In the default configuration, the ec_logger module is enabled and logging is configured for the reject log, the panic log and the main log. Detailed configuration information is available in [“ec_logger – Momentum-Style Logging”](/momentum/3/3-reference/3-reference-modules-ec-logger).
-
-ec_logger can also write an accounting log by configuring a path for the `acctlog` option. This log records authentication and authorization events. You should note that, by default, no log rotation is performed for the accounting log. For more information on this topic see [“Configuring Authentication for the Control Listener”](/momentum/3/3-reference/conf-aaa#conf.control_authen).
-
-You can also record the outcome of a spool import operation (see [spool import](/momentum/3/3-reference/3-reference-console-commands-spool-import)) by configuring a path for the `importlog`. Again, by default, no log rotation is performed for the import log.
-
-### Note
-
-If you find that you have rejectlog entries with the reason "550 5.7.1 [internal] discarded by policy", and you are having difficulty in correlating those rejections with your policy rules, it could be because your bounce processing configuration is set to blackhole any detected bounces. If this is the case, you should expect to see a corresponding entry in your bounce log, except in the case where the internal bounce classifier has determined that the incoming message was classified as BC_SUBSCRIBE, a subscription request. The bounce logger does not log this type of incoming mail because it does not relate to a specific outgoing message originating from your site.
-
-** 4.5.1.2. Using System Console Commands**
-
-The ec_logger module is accessible through ec_console for run-time configuration.
-
-The information types logged can be toggled as in the following example.
-
-
-
-
-ecelerity> config set ec_logger *`ec_logger1`* log_transient_failures off
-
-If the command is successful, then `Set` is output to the screen. Set other options in exactly the same way.
-
-The **internal stats** command shows internal metrics such as the pending journal size. If you move a log, issue the command **ec_logger:*`ec_logger1`* reopen logs** .
-
-For more information see [“ec_logger Management Using Console Commands”](/momentum/3/3-reference/3-reference-modules-ec-logger#modules.ec_logger.console).
-
-### The `mainlog.ec` Format
-
-The `mainlog.ec` file logs reception, delivery, transient failure, permanent failure and heartbeat events. The log entry format differs depending upon the event type. The different formats are described in [“The `mainlog.ec` Format”](/momentum/3/3-reference/log-formats-version-3#log_formats.mainlog3).
-
-A permanent failure indicates that the message that was attempted failed in such a way that it should not be retried further. After logging a permanent failure the message will be discarded.
-
-A transient failure is a failure which allows retrying the same message. The ec_logger module allows for optional logging of transient failures. Since they are not permanent failures and only indicate that a message will be attempted later due to temporary problems, many users opt to disable them to conserve log space. Note that if you have enabled the bounce_logger, transient failures will also be recorded there. The bounce_logger is a supplemental log that contains additional information and different formatting. For more information see [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/3/3-reference/3-reference-modules-bounce-logger).
-
-### bounce_logger
-
-bounce_logger writes a single logfile, `bouncelog.ec`, which records both inband (or protocol-time) and out-of-band bounces. The format was designed to be a concise, machine-parseable, computationally inexpensive and complete format for writing information about every bounce message.
-
-For a description of the bounce_logger file format see [“The bounce_logger”](/momentum/3/3-reference/log-formats-version-3#log_formats.bouncelog3).
-
-** 4.5.3.1. bounce_logger Configuration**
-
-The writing of bounce_logger format logs is determined by the `ecelerity.conf` file. To load the bounce_logger module, add the following lines to the main body of your `ecelerity.conf` file:
-
-For a description of how the `bouncelog.ec` file is formatted see [“The bounce_logger”](/momentum/3/3-reference/log-formats-version-3#log_formats.bouncelog3).
-
-
-
-
-```
-bounce_logger "bounce_logger1"
-{
- bouncelog = "/var/log/ecelerity/bouncelog.ec"
- log_inband_bounces = true
- log_outofband_bounces = true
-}
-```
-
-Detailed configuration information is available in [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/3/3-reference/3-reference-modules-bounce-logger).
-
-** 4.5.3.2. bounce_logger Management**
-
-The bounce_logger module allows for a limited set of online commands via ec_console.
-
-If you move a log, the ec_console command 'reopen logs' will cause ec_logger to reopen all its logfiles.
-
-For a complete list of the bounce_logger system console commands see [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/3/3-reference/3-reference-modules-bounce-logger).
-
-### custom_logger Configuration
-
-custom_logger is configured through the `ecelerity.conf` file with a stanza such as:
-
-
-
-
-```
-custom_logger "custom_logger1"
-{
- delivery_format = "%t %r@%R"
- delivery_logfile = "/var/log/ecelerity/delivery_log"
-}
-```
-
-Detailed configuration information is available in [“custom_logger – Customizable Logging”](/momentum/3/3-reference/3-reference-modules-custom-logger).
-
-### Logging and the Web UI
-
-In order to report statistics through the web UI you need to to add loggers that create jlog-formatted files that are consumed by **ec_rt_stats**. The jlog files are also know as "real time" logs.
-
-Find below a table of the additional logger modules that you can create. If the logger is included in the default `ecelerity.conf` file, the `Included` column is checked.
-
-
-
-
-| Logger module | Instance name | Included | Remarks |
-| --- | --- | --- | --- |
-| [“ec_logger – Momentum-Style Logging”](/momentum/3/3-reference/3-reference-modules-ec-logger) | ec_logger_rt | ✓ | Log for every message |
-| [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/3/3-reference/3-reference-modules-bounce-logger) | bounce_logger_rt | ✓ | Log bounces only |
-| [smpp_logger](/momentum/mobile/mobile-reference/momentum-mobility#modules.mobility.smpp_logger) | smpp_logger_rt | | Log SMPP messages only |
-| [mms_logger](/momentum/mobile/mobile-reference/mobility-mm-7-mms-logger) | mms_logger_rt | | Log MMS messages only |
-
-### Note
-
-There is also a statp logger that logs in jlog format. This logger is included with the default `ecelerity.conf` so you need not worry about configuring it or loading it.
-
-When defining log files for use by the web UI, use the same format described in [“ec_logger Module in `ecelerity-cluster.conf`”](/momentum/3/3-reference/cluster-config-logging#cluster.config.logging.ec_logger)—you must define the protocol and the subscriber. Sample real time logger definitions follow:
-
-
-
-
-```
-ec_logger "ec_logger_rt" {
- mainlog = "jlog:///var/log/ecelerity/mainlog.rt=>ec_rt_stats"
- rejectlog = "jlog:///var/log/ecelerity/rejectlog.rt=>ec_rt_stats"
-}
-bounce_logger "bounce_logger_rt" {
- bouncelog = "jlog:///var/log/ecelerity/bouncelog.rt=>ec_rt_stats"
-}
-smpp_logger "smpp_logger_rt" {
- logfile = "jlog:///var/log/ecelerity/smpp.rt=>ec_rt_stats"
-}
-mms_logger "mms_logger_rt" {
- logfile = "jlog:///var/log/ecelerity/mm7.rt=>ec_rt_stats"
-}
-```
-
-The smpp_logger "smpp_logger_rt" and the mms_logger "mms_logger_rt" module instances are only used with Mobile Momentum. If you do not have Mobile Momentum installed or do not wish to view statistics related to Mobile Momentum, you need not worry about creating "real time" loggers for SMMPP and MM7. However, the web UI will still display columns for summary statistics and queue sizes for MM7 and SMPP.
-
-The jlogs created by loggers are processed by **ec_rt_stats2**. For more information see [ec_rt_stats2](/momentum/3/3-reference/executable-ec-rt-stats-2).
-
-### Rotating Logs
-
-Momentum provides a utility script `ec_rotate` which will rotate and compress logs for you. The number of previous days logs to keep can be set. It is recommended that you run this script daily from your system's crontab.
-
-Momentum opens its logfiles at startup and maintains an open filehandle to them throughout its life cycle. When you invoke ec_rotate, the `mainlog.ec` and `paniclog.ec` are moved to `mainlog.ec.1` and `paniclog.ec.1` and Momentum is instructed to re-open its logfiles. This creates new `mainlog.ec` and `paniclog.ec` files. Unix file I/O semantics guarantee that no log lines will be lost between the time the file is moved and the logs are re-opened; they will simply appear in the older of the logs. To avoid the overhead of checking the logfile on every attempt, Momentum relies on the user to tell it when the logfile needs to be re-opened.
-
-To invoke ec_rotate you can simply execute **ec_rotate** as the root user. This will rotate the `mainlog.ec` and `paniclog.ec` files in the `/var/log/ecelerity` directory, compress them using bzip, and keep seven days of logs on disk. You can modify this behavior by passing the following options:
-
-
-
-- `-r, -retention`
-
--
-
-Specify the maximum number of logs to keep on disk. Default is 7.
-
-
-
-- `-c, -compress`
-
--
-
-Specify the compression utility to use for compressing logfiles. Default is /usr/bin/bzip2.
-
-
-
-- `-l, -logfile`
-
--
-
-Specify the logfile(s) to be rotated. May be specified multiple times to handle multiple logs.
-
-
-
-
-
-If your logfiles are in `/var/log/email/` and you only want to keep 3 days, you should use:
-
-```
-/opt/msys/ecelerity/bin/ec_rotate -l /var/log/email/mainlog.ec \
- -l /var/log/email/paniclog.ec -r 3
-```
-
-### custom_logger
-
-Using the custom_logger module, Momentum can write logs for every stage of a message's life cycle in user-defined formats. custom_logger lets you log each phase to its own logfile, or use a combined logfile for all stages. Logging stages can be enabled or disabled individually. For more information see [“custom_logger – Customizable Logging”](/momentum/3/3-reference/3-reference-modules-custom-logger).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/operations-multivip.md b/content/momentum/3/3-reference/operations-multivip.md
deleted file mode 100644
index 8a6f775c7..000000000
--- a/content/momentum/3/3-reference/operations-multivip.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "MultiVIP© Interfaces"
-description: "Multi VIP technology allows Momentum to transparently deliver different messages from different IP addresses This is most commonly used when two or more customers are sending mail through a single Momentum instance and it is desirable for quality of service reasons for messages from each client to originate from unique..."
----
-
- 
-
-MultiVIP© technology allows Momentum to transparently deliver different messages from different IP addresses. This is most commonly used when two or more customers are sending mail through a single Momentum instance and it is desirable (for quality of service reasons) for messages from each client to originate from unique IP addresses that have been assigned to them.
-
-Many ISPs enforce policies on an IP level. This means that if a message from IP address 1.2.3.4 violates the terms of their service, they may choose to stop accepting mail from that IP address. Obviously, it is undesirable for a foreign decision refusing one client's emails to degrade the quality of service of an unrelated client. By assigning client 1 the IP address 1.2.3.4 and client 2 the IP address 1.2.3.5 and dictating that all messages from each client leave Momentum from their assigned IP address, the likelihood of policy enforcement against client 1 inadvertently effecting client 2 is drastically reduced. MultiVIP© is a mechanism for adding IP addresses for transit to Momentum and specifying which messages should leave the system from each IP address.
-
-Setting up a MultiVIP© interface is a two-step process. First you must declare the interfaces to bind to (called "Bindings"), then rules must be put in place to let Momentum know which messages should transit which bindings.
-
-### Declaring Bindings
-
-Binding *`BINDINGNAME`* {
- Bind_Address =
- [EHLO_Hostname = <__message__|__hostname__|literal string>]
- [Max_Outbound_Connections = ]
- [Suspend_Delivery = ]
-}
-
-A binding declaration needs to be made for every interface you want to bind messages to.
-
-### Warning
-
-When using bindings, Momentum binds the local side of SMTP connections to the IP address specified. This can potentially impact deliverability if the local source IP address has no route to the destination IP address.
-
-For example, if the delivery of a message requires contacting a machine on a private network (for a multi-homed machine) and the global and all explicit bindings are specified as public IP addresses, it is likely that these internally destined messages will be undeliverable.
-
-You should also be aware that binding names are case-sensitive.
-
-For more information about bindings, see [binding](/momentum/3/3-reference/3-reference-conf-ref-binding).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/operations-postgresql.md b/content/momentum/3/3-reference/operations-postgresql.md
deleted file mode 100644
index 4588eebb4..000000000
--- a/content/momentum/3/3-reference/operations-postgresql.md
+++ /dev/null
@@ -1,176 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "PostgreSQL"
-description: "A Postgre SQL database stores the real time data displayed by the web console and it also contains the user authentication credentials for both the web console and the system console To log in to the web console the Postgre SQL server must be running In either a stand alone..."
----
-
-
-
-A PostgreSQL database stores the real-time data displayed by the web console and it also contains the user authentication credentials for both the web console and the system console. To log in to the web console the PostgreSQL server must be running. In either a stand-alone or a cluster configuration, there can be only one instance of this database.
-
-### Warning
-
-We expressly recommend **against** using an NFS file system because of concerns about its performance in general and its reliability, especially on Linux.
-
-Note the following:
-
-* Prior to version 3.0.15, the web console role and the database role **must** be installed on the same machine.
-
-* As of version 3.2.x Momentum uses PostgreSQL version 9.
-
-* If you are hosting PostgreSQL on Solaris see [“Package Requirements Beyond a Core Installation”](/momentum/3/3-reference/install-solaris#install.solaris.packages).
-
-The root database directory for PostgreSQL is `/var/db`. Immediately below this directory is the `msyspg` directory which contains the configuration file and the PID file. The msyspg database contains the real-time data collected by Momentum and, since this data is retained for two years, **be sure that there is adequate space on the drive that hosts the PostgreSQL server** .
-
-Database credentials can be found in the `/opt/msys/3rdParty/etc/php.d/ecdb.ini` file on the machine that hosts the web console.
-
-### PostgreSQL in Momentum Version 3.3
-
-When upgrading a cluster configuration to Momentum 3.3, the database, manager and web UI roles must be upgraded prior to the MTA roles. If these roles are performed by different servers, be sure to upgrade the database role first.
-
-### Warning
-
-If you are migrating to Momentum 3.3, you are strongly urged to first perform a backup of your database.
-
-The reasons for this are as follows:
-
-* Schema changes affect collection of statistics by the MTAs. Until the MTAs are upgraded, they will not be able to report their data to the database or the web UI. For this reason it is important to upgrade the MTAs as soon as possible after the database. The database migration will be the only time-intensive part of the upgrade, so it should be scheduled for non-work hours and only when it has completed should the MTA(s) be upgraded.
-
-### Note
-
-Another reason why the upgrade order is significant is that the web UI and MTA roles will be participating in a Riak cluster. The installer assumes that the web UI and/or the manager have the "first" Riak instances and the MTAs will attempt to join that existing Riak cluster. It is possible to join the cluster manually, but it is not recommended.
-
-In version 3.3, Momentum makes use of PostgreSQL's auto-vacuuming functionality. This should help with database growth issues.
-
-Detailed instructions for database migration follow.
-
-** 4.3.1.1. Step-by-Step Migration**
-
-If you are performing a fresh installation of Momentum 3.3, you can ignore this section.
-
-** Check available disk space before beginning**
-
-The migration process will require additional free disk space of approximately the same amount of space currently in use by `/var/db/msyspg`. The installer will check for adequate disk space before starting the migration.
-
-** Backup your database**
-
-One backup option is to run **`/opt/msys/3rdParty/bin/pg_dump -Fc -Z9 -U msyspg ecelerity > /path/to/backup_file`** . This produces the smallest-sized backup but takes the most time to restore.
-
-A second option is to execute the SQL statement **`SELECT pg_start_backup();`** , and then backup the file system (using tar, rsync, filesystem snapshots, or any other method). Next execute **`SELECT pg_stop_backup();`** . This backup method will be faster (depending on how quickly you can copy the data), and will require the same amount of space currently in use by `/var/db/msyspg`.
-
-### Note
-
-Regardless of the backup method used, the PostgreSQL software version is changing in the 3.3 release, so a rollback would require the Momentum 3.2 installer running first, to replace PostgreSQL with version 8.3 software, before a restoration of the database backup can successfully take place.
-
-** Database migration**
-
-1. During installation, PostgreSQL will automatically be upgraded from 8.3 to 9.04.
-
-2. The installer will automatically migrate all data in the database, other than the historical statistical data used by the web console for reporting.
-
-3. When the initial phase of the database migration has been completed, all of the historical data will need to be migrated independently using the script: **`/opt/msys/ecwebui/scripts/33_deferred_migration`**.
-
- You should run this script as soon as practical after completing the upgrade. None of the reports in the Web Console will be accurate until this completes, however Momentum will continue to send and receive email during this part of the migration.
-
-** 4.3.1.2. Running the 33_deferred_migration Script**
-### Warning
-
-This script may take 8 or more hours to complete. You are strongly urged to run it using `nohup` or in a screen session, so that it cannot be interrupted accidentally.
-
-The migration script must be run as root. Run it using nohup in the following way:
-
-`shell> nohup /opt/msys/ecwebui/scripts/33_deferred_migration &`
-
-This starts the script, writes all output to `nohup.out`, and does not exit if you log out.
-
-To run the migration script in a screen session, install screen (if it isn't already installed), and then start a new session. Again, the migration script should be run as root.
-
-```
-shell> screen
-shell> /opt/msys/ecwebui/scripts/33_deferred_migration
-```
-
-Typing "**CTRL-A d** " will detach you from the screen session and leave the script running. You can reconnect to that session at any time with: **`screen -r`** .
-
-### Note
-
-The normal scrollback buffer is not available in screen. Type **CTRL-A esc** to get into copy/paste mode, where PGUP and PGDN will work as you might expect. Please see the documentation for screen for more commands.
-
-In either case, if your session is accidentally disconnected, the migration script will continue in the background.
-
-### The `postgresql.conf` File
-
-
-
-The PostgreSQL configuration file is found in the `/var/db/msyspg` directory.
-
-The logging options set in the configuration file are discussed in [“The PostgreSQL Log Files”](/momentum/3/3-reference/operations-postgresql#operations.postgres-log-files).
-
-### Running the PostgreSQL Server
-
-
-
-The PostgreSQL server is installed as a daemon and starts up whenever the system is rebooted. To start the daemon immediately after installation you can issue the command **`/etc/init.d/msyspg start`** .
-
-To determine the options that can be used with the `msyspg` command go to the command line and enter **`/etc/init.d/msyspg`**. You should see the following output:
-
-`Usage: {start|stop|restart}`
-
-Find below a description of these options:
-
-* `start` – Start the PostgreSQL server
-
-* `stop` – Stop the PostgreSQL server
-
-* `restart` – Restart the PostgreSQL server
-
-Calling this script with the `start` option starts a PostgreSQL server daemon named `msyspg` running at levels 3, 4 and 5.
-
-### Using the PostgreSQL Client Program
-
-
-
-There may be occasions where you wish to inspect the PostgreSQL database installed by Momentum. You can do this using the PostgreSQL client program, `psql`, found in the `/opt/msys/3rdParty/bin` directory. Log in as the user created during installation, `ecuser`.
-
-### Warning
-
-We strongly advise against building applications to interface with our database, and make no guarantees that the database will remain the same between minor revisions of the product.
-
-Additionally, applications that interface directly may be incompatible with future upgrades to the version of PostgreSQL used with Momentum.
-
-Start the PostgreSQL client by issuing the command, **`/opt/msys/3rdParty/bin/psql ecelerity ecuser`** . PostgreSQL is configured to run on the default port, 5432, so there is no need to specify a port when running the PostgreSQL client.
-
-User credentials are stored in the `webconsole` schema and real-time logging statistics in the various `rt_log` schemas.
-
-### Note
-
-Other PostgreSQL programs such as **pg_dump** and **pg_dumpall** are also found in the `/opt/msys/3rdParty/bin/` directory.
-
-### The PostgreSQL Log Files
-
-
-
-The PostgreSQL log files are found in the `/var/db/msyspg/pg_log` directory. This location is determined by the `log_directory` setting of the `postgresql.conf` file. The format of the logging file name is determined by the `log_filename` setting; it has a value of `postgresql-%Y-%m-%d-%M.log`. At runtime this is resolved as a four digit representation of the year and a two digit representation of the month, day and minute.
-
-This file can be helpful for debugging database errors.
-
-Log rotation is controlled by the `logging_collector` and the `log_rotation_size` settings of the `postgresql.conf` file. `logging_collector` is set to `on` and `log_rotation_size` to `100MB`. With these settings a new log file will be created after 100MB have been written into a log file.
-
-### Dumping and Restoring the Database
-
-In some circumstances you may need to change the machine that hosts Momentum and migrate your data to new hardware. When moving to a host with the same operating system, architecture and bit size you can simply archive the `/var/db/msyspg` directory and then restore it. Otherwise, you can use PostgreSQL tools to dump and restore the database.
-
-Database dumps are plain-text files that contain the SQL commands and data required to rebuild the database. You can create a dump file by using the **pg_dump** command and then restore your database by passing the dump file to **pg_restore**. The steps are itemized in the following:
-
-1. Ensure that the database is not in use. Go to the command line of the machine that hosts the PostgreSQL server and issue the following command:
-
- `shell> /opt/msys/3rdParty/bin/pg_dump -Fc -U msyspg ecelerity -f /path/to/db.dump`
-
- No password is required to access the database from localhost.
-
- Using `-c` creates custom output making it possible to select and reorder archived items if necessary when restoring the database. It also compresses the file. The user `msyspg` is the PostgreSQL superuser; all database dumps and restorations should be performed as this user.
-
-2. Since the dump file is compressed, you must use the **pg_restore** to restore the database. To do this go to the command line of the destination machine and issue the command:
-
- `shell> /opt/msys/3rdParty/bin/pg_restore -c -U msyspg -d ecelerity /path/to/db.dump`
-3. Examine any warnings that are output. You will get errors trying to drop and create some of the schemas, but they are harmless.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/operations-riak.md b/content/momentum/3/3-reference/operations-riak.md
deleted file mode 100644
index 5e0756824..000000000
--- a/content/momentum/3/3-reference/operations-riak.md
+++ /dev/null
@@ -1,242 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Riak"
-description: "Configuration Change This feature is available as of version 3 3 Riak is a distributed key value data storage technology with excellent scalability properties incorporated into the Momentum 3 3 release It replaces the SQ Lite data store used with the adaptive module It is also used by Mobile Momentum..."
----
-
-
-
-**Configuration Change. ** This feature is available as of version 3.3.
-
-Riak is a distributed key-value data storage technology with excellent scalability properties incorporated into the Momentum 3.3 release. It replaces the SQLite data store used with the adaptive module. It is also used by Mobile Momentum for resubmission of messages and by the Adaptive Delivery reporting capability introduced in version 3.3.
-
-Riak is freely available for use in a LAN deployment, but WAN deployments that need to be synchronized require a commercially licensed variant. Note that multiple data centers may still use Riak if each data center has its own local Riak cluster.
-
-Momentum uses Riak version `0.14.2`. For more information see [Riak Wiki](http://wiki.basho.com).
-
-Use of this storage technology puts increased demands on hardware. For more information see [“Riak Hardware Requirements”](/momentum/3/3-reference/install-requirements#install.requirements.riak).
-
-### Riak Overview
-
-The Riak packages provided by Message Systems install under the path `/opt/msys/3rdParty/riak/`.
-
-Administrative tools for riak are provided under the path `/opt/msys/3rdParty/riak/bin`. These tools are named "`riak`", "`riak-admin`" and "`search-cmd`".
-
-The main configuration file is called `app.config` and can be found at: `/opt/msys/3rdParty/riak/etc/app.config`.
-
-The contents of this file are formatted as an Erlang "term"; a structured file with meaningful "keys" and "values". The file is terminated with a period ‘`.`’ character.
-
-An additional configuration file is called `vm.args` and can be found at: `/opt/msys/3rdParty/riak/etc/vm.args` The default configuration for our Riak package stores Riak state at `/var/db/riak` and log files can be found at `/var/log/riak`.
-
-During installation there is no prompt for an alternative data storage location; instead, the system administrator may opt to partition the system such that `/var/db/riak` maps to its own set of spindles prior to installation, or may choose to mount alternative storage. In the latter case, the administrator will need to edit `app.config` and change the paths that refer to `/var/db/riak` to the alternate location.
-
-Riak is configured to start automatically when the system boots. The service can be controlled by the script located at `/etc/init.d/msys-riak`. This initialization script has the usual stop, start and restart options. The following additional options are also available:
-
-* `reboot` – perform a clean restart by first terminating the Erlang VM
-
-* `ping` – check that the service is running
-
-* join *`node`* – join a Riak cluster. Equivalent to running the **riak-admin join *`riak-cluster@otherip`*** command. Joins the running node to another running node so that they participate in the same cluster.
-
-* `attach` – Attaches to the console of a Riak node running in the background, giving access to the Erlang shell and runtime messages.
-
-* `console` – Start the Riak node in the foreground, giving access to the Erlang shell and runtime messages.
-
-On Solaris systems, the initialization script, **/opt/msys/3rdParty/riak/smf/msys-riak.init**, is implemented in terms of SMF commands that operate on the "messagesystems/msysriak" service. Use the options shown above. For example, you can ping the server in the following way: **`/opt/msys/3rdParty/riak/smf/msys-riak.init ping`** . The Riak service runs as the `msysriak` user, created during installation as a service account. The files under `/var/db/riak` are owned by this user.
-
-### Riak Ports
-
-Riak uses the following ports:
-
-* `TCP 8098` – Defines the HTTP interface used to query and update the data store. By default, this is bound to the loopback interface, but will need to be opened on a cluster private network so that Message Systems applications can communicate with it. The port and IP addresses used for HTTP are controlled by the `http` setting in `app.config`.
-
-* `TCP 8099` – Defines the cluster handoff protocol interface used by Riak to synchronize its data. This port needs to be opened on a cluster private network so that Riak nodes can talk to each other. The port and IP address used for handoff are controlled by the `handoff_port` and `handoff_ip` settings in `app.config`.
-
-* `TCP 8087` – Defines an alternative "Protocol Buffers" interface for querying Riak. This is not used by Message Systems and is disabled in our default packaging.
-
-* `TCP 4369` – In a cluster configuration Riak uses the Erlang Port Mapper daemon (epmd) to resolve node identifiers. By default epmd binds to port 4369\. For more information see [the section called “Erlang and Firewalls”](/momentum/3/3-reference/operations-riak#operations.riak.ports.erlang).
-
-None of these ports should be exposed to the public Internet; we strongly recommend that access to these ports from untrusted networks be blocked by a firewall.
-
-** Erlang and Firewalls**
-
-The maximum number of concurrent ports used by Erlang is defined in the `/opt/msys/3rdParty/riak/etc/vm.args` file by the variable `ERL_MAX_PORTS`. If port usage needs to be restricted, we recommend defining a range of ports equal to the number of nodes in the cluster.
-
-The Riak wiki at [Network Security and Firewall Configurations](http://wiki.basho.com/Network-Security-and-Firewall-Configurations.html) provides detailed information. For example:
-
-> "By default, epmd binds to TCP port 4369 and listens on the wildcard interface. For inter-node communication, Erlang uses an unpredictable port by default; it binds to port 0, which means the first available port."
-
-Also see:
-
-> "For ease of firewall configuration, Riak can be configured via app.config to instruct the Erlang interpreter to use a limited range of ports. For example, to restrict the range of ports that Erlang will use for inter-Erlang node communication to 6000-7999, add the following lines to the app.config file on each Riak node:
->
-> ```
-> {
-> kernel,
-> [
-> {
-> inet_dist_listen_min,
-> 6000
-> },
-> {
-> inet_dist_listen_max,
-> 7999
-> }
-> ]
-> },
-> ```
->
-> The above lines should be added into the top level list in `app.config`, at the same level as all the other applications (eg. riak_core). Then configure your firewall to allow incoming access to TCP ports 6000 through 7999 from whichever network(s) contain your Riak nodes."
-
-### Provisioning Considerations
-
-Riak can be deployed as a standalone node or in a cluster of nodes. More nodes allow for improved redundancy and load distribution. It is recommended that there be a minimum of three nodes in a clustered configuration.
-
-For most deployments, no special additional configuration is required, but if you have a larger number of Riak nodes (8-16) you may want to consider setting the "ring_creation_size" parameter to a larger value. Consult the Riak documentation for details on this parameter. It is important to note that this parameter cannot be changed once nodes are live; it must be set to the desired size and remain at that value on each and every node that participates in the Riak cluster.
-
-### Cluster Configuration
-
-Each node requires a unique name to participate in a cluster. The installer automatically configures this during installation as described in [“Riak Server”](/momentum/3/3-reference/install-riak).
-
-The name is stored in the `vm.args` configuration file and specified with the "-name" parameter switch.
-
-### Note
-
-If the IP address or interface is changed, this parameter must be updated and the ring status updated in the following way; **`riak-admin reip riak-subcluster_name@oldip riak-subcluster_name@newip`** . The local service **must not be running** for this to work; make sure the service is disabled and stopped while this operation is carried out.
-
-On a singlenode installation the name defaults to riak-*`subcluster_name`*@127.0.0.1.
-
-If a node does not join the Riak cluster during installation, you can have it join the cluster later by following the instructions in the next section.
-
-** 4.4.4.1. Configuring Riak After Installation**
-
-To configure a node to join the Riak cluster after installation follow these steps:
-
-1. Shut down the ecelerity process on the node by issuing the command **`/etc/init.d/ecelerity stop`** .
-
-2. In `/opt/msys/3rdParty/riak/etc/app.config`, make sure that `http` is bound to both `{127.0.0.1, 8098}` and {*`local_node_ip`*, 8098}. For example: `{http, [{127.0.0.1, 8098}, {10.70.20.131, 8098} ]}`. The installer should already have done this.
-
-3. Start Riak by issuing the command: **`/etc/init.d/msys-riak start`** .
-
-4. Use the riak-admin command to join the MTA to the Riak cluster: **/opt/msys/3rdParty/riak/bin/riak-admin join riak-*`cluster_name@manager_IP`*** .
-
-5. Use the **/opt/msys/3rdParty/riak/bin/riak-admin status** command to verify that all nodes are joined together by checking the `ring_members` line of the command output. It should look like the following:
-
- `ring_members : ['riak-default@10.70.20.129','riak-default@10.70.20.131', ... ]`
-6. Restart the ecelerity process: **`/etc/init.d/ecelerity start`** .
-
-### Removing a Node from a Riak Cluster
-
-### Warning
-
-Serious performance issues can occur if inactive or misbehaving Riak nodes are not removed from the cluster.
-
-When removing a Momentum node from a Momentum cluster, go to the command line on the node you wish to remove and issue the following Riak command:
-
-`shell> /opt/msys/3rdParty/riak/bin/riak-admin leave`
-
-Because of a Riak 0.14.2 bug, you must manually remove the ring files from this node:
-
-```
-shell> cd /var/db/riak/ring/
-shell> rm -f *
-```
-
-When a Momentum node is being added back to a Momentum cluster without running the installer, the node must be instructed to `join` the existing Riak ring. Do this in the following way:
-
-shell> /opt/msys/3rdParty/riak/bin/riak-admin join riak-default@*`11.22.33.44`*
-
-You should see a message such as: `Sent join request to riak-default@11.22.33.44`.
-
-Replace `11.22.33.44` with an IP address suitable to your circumstances. You can join any existing Riak node. Verify that the node is now a member of the ring by typing **`riak-admin ringready`** or **`riak-admin status`** .
-
-In cases where the Riak node is misbehaving or unresponsive and you cannot use the `leave` command, use the `remove` command.
-
-### Warning
-
-The `remove` command forces removal of the target node from the ring. **Data on the removed node will not be handed off** .
-
-From any node in the Riak cluster you can remove the offending node in the following way:
-
-shell> /opt/msys/3rdParty/riak/bin/riak-admin remove riak-default@*`11.22.33.44`*
-
-In this case the Riak node, `riak-default@11.22.33.44` will be removed from the node that executes this command forcing the removal of the target node from the ring. The `remove` command should only be used in cases where it is not possible to properly `leave` the cluster, as data on the removed node will not be handed off.
-
-### Riak and the adaptive Module
-
-In a cluster configuration, by default, Riak is installed on every node. A recommended setting for the adaptive module is to point the `data_store` option to a list of Riak servers but with the local URL as the first in the list. For example, given the following nodes in a cluster:
-
-```
-mta1 192.168.1.10
-mta2 192.168.1.11
-mta3 192.168.1.12
-mgr 192.158.1.13
-```
-
-In this case the preferred value for `data_store` would be:
-
-```
-("http://127.0.0.1:8098" "http://192.168.1.10:8098" "http://192.168.1.11:8098"
-"http://192.168.1.12:8098" "http://192.168.1.13:8098")
-```
-
-The first item in the list is the "preferred" url. When the adaptive module is configured in this way, it is important that all nodes see the same set of data no matter which URL is being used to access the data. To achieve this, all Riak nodes must be joined together as described in [“Configuring Riak After Installation”](/momentum/3/3-reference/operations-riak#operations.riak.cluster.configuration.details).
-
-Use the following test to check that all nodes are joined together:
-
-1. Log in to any node, go to the command line and insert a record into Riak:
-
- ```
- shell> curl -X PUT -H "Content-Type: text/plain" \
- http://127.0.0.1:8098/riak/adctrl/test-record -d "A test"
- ```
-
-2. Log in to another node and retrieve the record:
-
- `shell> curl http://127.0.0.1:8098/riak/adctrl/test-record`
-
- If "A test" is output to the screen, then the two Riak servers are joined.
-
-3. Repeat the previous step for every node in the cluster.
-
-4. When you've finished testing, remove the test record:
-
- `shell> curl -X DELETE http://127.0.0.1:8098/riak/adctrl/test-record`
-
-If you fail to retrieve the test record, check that the Riak nodes are joined by using the command: **`/opt/msys/3rdParty/riak/bin/riak-admin status`** .
-
-### Note
-
-In a cluster configuration, messages in the panic log such as `adaptive_db_sync: Couldn't connect to server` may indicate the failure of one or more Riak servers. If you see such messages check the status of your Riak servers using the **riak-admin** command.
-
-In the output, look for the "`ring_members`" line and verify that there is an entry "riak@*`ip_address`*" for each node in the cluster. If this is not the case, then the Riak servers may be partially joined or not joined at all. Join the missing node or nodes to the cluster as described in [“Configuring Riak After Installation”](/momentum/3/3-reference/operations-riak#operations.riak.cluster.configuration.details)
-
-** 4.4.6.1. Using an Adaptive Delivery Backing Store Other than Riak**
-
-In some circumstances Riak may not provide the required level of performance. As an alternate backing store, you can use [LevelDB](http://en.wikipedia.org/wiki/LevelDB) on Linux with Momentum 3.6 or greater. This section describes how to configure Momentum with LevelDB as the backing store for the adaptive module.
-
-### Warning
-
-Please consult with support before reconfiguring Momentum as described here. The LevelDB package is installed with Momentum 3.6; it can be used as a replacement backing store for the adaptive module only. If you are using Mobile Momentum, Riak continues to be used for message resubmission.
-
-To use LevelDB add the following stanza to your `ecelerity.conf` file:
-
-```
-adaptive_backstore_leveldb {
- path = "/var/log/ecelerity/adaptive.leveldb"
-}
-```
-
-The `path` option points to the LevelDB database.
-
-### Backups
-
-Riak data is distributed across the nodes in the cluster; provided that you have enough nodes remaining online, the need to restore from a backup should be quite a rare event.
-
-Riak offers the ability to backup all data present on a given node, or all data present in the cluster. The backup is stored in a file named by the administrator. This backup can later be used to restore the state of the node or cluster depending on the nature of the backup file.
-
-Consult the Riak Wiki for the riak-admin "backup" and "restore" commands to learn more about this capability.
-
-### Note
-
-Note that some of the Message Systems use cases may result in a large volume of data being retained in Riak. Expect the backup files to be equally large.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/options-summary.md b/content/momentum/3/3-reference/options-summary.md
deleted file mode 100644
index 132cdf30b..000000000
--- a/content/momentum/3/3-reference/options-summary.md
+++ /dev/null
@@ -1,925 +0,0 @@
----
-lastUpdated: "07/14/2021"
-title: "Options Summary"
-description: "This section displays all configuration file options visible in the following scopes global domain host binding binding group security pathway pathway group listener listen peer threadpool debug flags and cluster Module specific options are documented in the module documentation and options specific to Mobile Momentum are documented in the Mobile..."
----
-
-
-This section displays all configuration file options visible in the following scopes; global, domain, host, binding, binding_group, security, pathway, pathway_group, listener, listen, peer, threadpool, debug_flags and cluster. Module-specific options are documented in the module documentation and options specific to Mobile Momentum are documented in the Mobile Momentum documents. Listener options are listed here but for a separate table of listener-specific options see [Table 9.25, “listener options”](/momentum/3/3-reference/ecelerity-conf#table-listener-options) and for a separate list of cluster options see [Table 7.1, “ Cluster options ”](/momentum/3/3-reference/cluster-config-management#table-cluster-options). Options are sorted alphabetically by name. If an option functions as a scope, this is indicated by `(scope)`. The `Type` column indicates the MTA type of a given option. Options of type `na` do not directly apply to either a sending or receiving MTA. If an option has a default value, it is shown in the `Default` column followed by a version number, if there has been a change to the default value. If the value of an option cannot be changed at runtime, the `Default` column will show `(non-dynamic)`. The `Version` column shows when an option was introduced. Options that are not valid in version 3.0 or higher are not shown.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [_unsafe_spool](/momentum/3/3-reference/3-reference-conf-ref-unsafe-spool) – Allow dangerous spool semantics to be used | na | false | 3.0 | global |
-| [accept_queue_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.accept_queue_backlog) – The accept queue backlog | receiving | 0 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| [adaptive_adjustment_interval](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_adjustment_interval) – Throttle the adaptive adjustment interval | sending | 60 | 3.0 | binding, binding_group, domain, global |
-| [adaptive_alert_email_destination](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_alert_email_destination) – The address where adaptive alerts should be sent | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_alert_email_sender](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_alert_email_sender) – Set the sender address of the alert email | sending | NULL | 3.0.17 | binding, binding_group, domain, global |
-| [adaptive_attempt_threshold](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_attempt_threshold) – The minimum delivery attempts over a period during which bounce stats are collected and suspensions attempted | sending | 2000 (*3.2*) | 3.0 | binding, binding_group, domain, global |
-| [adaptive_backstore_leveldb](/momentum/3/3-reference/3-reference-conf-ref-adaptive-backstore-leveldb) *(scope)* – Use LevelDB as the backing store for Adaptive Delivery | sending | | 3.6 | global |
-| [adaptive_backstore_riak](/momentum/3/3-reference/3-reference-conf-ref-adaptive-backstore-riak) *(scope)* – Define the characteristics of the Riak backing store | sending | | 3.6 | global |
-| [adaptive_body_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_default_suspension](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_default_suspension) – The amount of time to suspend a domain | sending | 4 hours | 3.0 | binding, binding_group, domain, global |
-| [adaptive_default_suspension_enabled](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_default_suspension_enabled) – Enables and disables adaptive_rejection_rate_suspension_percentage | sending | false | 3.6.11 | binding, binding_group, domain, global |
-| [adaptive_ehlo_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_enabled](/momentum/3/3-reference/3-reference-conf-ref-adaptive-enabled) – Whether to enable the adaptive module for a specific scope | sending | false | 3.0 | binding, binding_group, domain, global |
-| [adaptive_fbl_volume_threshold](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_fbl_volume_threshold) – The minimum total delivered mail count over a period during which FBL stats are collected | sending | 20000 | 3.2 | binding, binding_group, domain, global |
-| [adaptive_idle_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_mailfrom_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_deliveries_per_connection](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_outbound_connections](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_recipients_per_batch](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_recipients_per_connection](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_resident_active_queue](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_retries](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_retry_interval](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0.17 | binding, binding_group, domain, global |
-| [adaptive_notification_events](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_notification_events) – Configure the events that will trigger an email notification | sending | throttle suspension blackhole | 3.5.6, 3.6.1 | binding, binding_group, domain, global |
-| [adaptive_notification_interval](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_notification_interval) – The throttle for adaptive alert notification emails | sending | 3600 | 3.0 | binding, binding_group, domain, global |
-| [adaptive_outbound_throttle_messages](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_positive_adjustment_interval](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_positive_adjustment_interval) – Throttle positive adjustments to adaptive changes | sending | 3600 | 3.0 | binding, binding_group, domain, global |
-| [adaptive_rcptto_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_rejection_rate_suspension_percentage](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_rejection_rate_suspension_percentage) – The rate at which messages are rejected | sending | 20 | 3.0 | binding, binding_group, domain, global |
-| [adaptive_retry_fuzz](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_retry_fuzz) – Allow greater control over bulk message retries in cases where all messages for a domain have to be retried | sending | 4096 | 3.0.26 | binding, binding_group, domain, global |
-| [adaptive_retry_interval](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_rset_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_scope](/momentum/3/3-reference/3-reference-conf-ref-adaptive-scope) – Define the scope applicable to adaptive delivery | sending | auto | 3.3 | binding, binding_group, domain, global |
-| [adaptive_sweep_rule](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_sweep_rule) *(scope)* – Set the thresholds and actions for adaptive fbl and bounce rules | sending | | 3.2 | binding, binding_group, domain, global |
-| [adaptive_sweep_rule_enabled](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_sweep_rule_enabled) – Enable or disable adaptive_sweep_rule in a specified scope | sending | 1 | 3.2 | binding, binding_group, domain, global |
-| [address](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Set the SNMP IP address and port | na | (*non-dynamic*) | 3.0 | snmp |
-| [address_metrics_cleanse_interval](/momentum/3/3-reference/3-reference-conf-ref-address-metrics-cleanse-interval) – The interval for refreshing address metrics | sending | 3600 | 3.0 | global |
-| [address_metrics_lifetime](/momentum/3/3-reference/3-reference-conf-ref-address-metrics-lifetime) – The TTL of address metrics | sending | 1800 | 3.0 | global |
-| [alias_schemes](/momentum/3/3-reference/3-reference-conf-ref-alias-schemes) – Enable named alias expansion schemes | both | | 3.0 | domain, global, pathway, pathway_group |
-| [allow_ip_literal](/momentum/3/3-reference/3-reference-conf-ref-allow-ip-literal) – Allow IP addresses in email addresses | receiving | true | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [allow_null_envelope_sender](/momentum/3/3-reference/3-reference-conf-ref-allow-null-envelope-sender) – Allow the null envelope sender in email addresses | receiving | true | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [allow_trailing_whitespace_in_commands](/momentum/3/3-reference/3-reference-conf-ref-allow-trailing-whitespace-in-commands) – Allow trailing white space at the end of an SMTP command | receiving | false | 3.0.26 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [always_allow](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding) – When set to true, authentication is considered to have succeeded, unless always_deny is set | receiving | false | 3.0 | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [always_deny](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding) – If set to true, authentication is considered to have failed | receiving | false | 3.0 | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [apn_expiry](/momentum/3/3-push/apns-apn-expiry) – Define the number of seconds after which an APNs notification is no longer valid | sending | yes (*non-dynamic*) | 3.5.5 | binding, binding_group, domain, global |
-| [arp_all_hosts](/momentum/3/3-reference/ecelerity-cluster-conf#option.arp_all_hosts) – Whether or not to aggressively send out ARP information to ensure that the network knows about the IP address assignment (cluster-specific) | na | true | 3.0.13 | cluster |
-| [async_bounce_rendering](/momentum/3/3-reference/3-reference-conf-ref-async-bounce-rendering) – Which thread pool to use for bounce rendering | sending | true | 3.0 | global |
-| [authcrammd5parameters](/momentum/3/3-reference/conf-aaa#conf.inbound-auth.cram-md5) – Configure CRAM-MD5 authentication | receiving | | 3.0 | control_listener, esmtp_listener, listen, pathway, pathway_group |
-| [authdigestmd5parameters](/momentum/3/3-reference/conf-aaa#conf.inbound-authdigest-md5) – Configure DIGEST-MD5 authentication | receiving | | 3.0 | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [authloginparameters](/momentum/3/3-reference/conf-aaa#conf.control_authen.clear.text) – Configure clear text login authentication | receiving | | 3.0 | control_listener, esmtp_listener, listen, pathway, pathway_group |
-| [authorization](/momentum/3/3-reference/3-reference-conf-ref-authorization) *(scope)* – Configure the console commands applicable to users | na | | 3.0 | global |
-| [authorizationparameters](/momentum/3/3-reference/conf-aaa#conf.control_authz.ecauth) – AuthorizationParameters dictionary points to authorization information | receiving | | 3.0 | control_listener, esmtp_listener, listen |
-| [authplainparameters](/momentum/3/3-reference/conf-aaa#conf.inbound-auth.plain.text) – Configure plain text login authentication | receiving | | 3.0 | esmtp_listener, http_listener, listen, pathway, pathway_group, xmpp_listener |
-| [backlog](/momentum/3/3-reference/3-reference-conf-ref-threadpool) – The maximum number of jobs that can be queued up for a pool | na | 0 (*non-dynamic*) | 3.0 | threadpool |
-| [banner_hostname](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.banner_hostname) – Specifies the banner hostname that will be displayed to the remote client upon connecting | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [bind_address](/momentum/3/3-reference/3-reference-conf-ref-bind-address) – Source address for outbound connections | sending | | 3.0 | binding, binding_group, global |
-| [binding](/momentum/3/3-reference/3-reference-conf-ref-binding) *(scope)* – Configure binding-specific options | sending | | 3.0 | binding_group, global |
-| [binding_group](/momentum/3/3-reference/3-reference-conf-ref-binding-group) *(scope)* – Logically group a set of bindings | sending | | 3.0 | global |
-| [blackhole](/momentum/3/3-reference/3-reference-conf-ref-blackhole) – Blackhole mail | sending | false | 3.0 | binding, binding_group, domain, global |
-| [body_timeout](/momentum/3/3-reference/3-reference-conf-ref-body-timeout) – Network timeout once the DATA phase is complete | sending | 600 | 3.0 | binding, binding_group, domain, global |
-| [bounce_behavior](/momentum/3/3-reference/3-reference-conf-ref-bounce-behavior) – Configure the action taken when a message is classified as a bounce | sending | pass | 3.0 | domain, global |
-| [bounce_cache_size](/momentum/3/3-reference/conf-ref-bounce-cache-size) – Set the maximum size of the bounce classification cache | na | 16384 | 3.6.9 | global |
-| [bounce_cache_ttl](/momentum/3/3-reference/conf-ref-bounce-cache-ttl) – Set the maximum TTL for the bounce classification cache | na | 60 | 3.6.9 | global |
-| [bounce_domains](/momentum/3/3-reference/3-reference-conf-ref-bounce-domains) – Configure the list of domains eligible for bounce processing | receiving | | 3.0 | global, pathway, pathway_group |
-| [bounce_pattern](/momentum/3/3-reference/3-reference-conf-ref-bounce-pattern) – Configure the pattern that inbound email addresses must match to be considered bounces | sending | | 3.0 | domain, global |
-| [bounce_suppress_list](/momentum/3/3-reference/3-reference-conf-ref-bounce-suppress-list) – Configure a list of email addresses that may not be considered original recipients | sending | | 3.0 | global |
-| [bounces_inline_original](/momentum/3/3-reference/3-reference-conf-ref-bounces-inline-original) – How much of the original message to include in MDNs | sending | headers | 3.0 | binding, binding_group, domain, global |
-| [capabilities](/momentum/3/3-reference/3-reference-conf-ref-capabilities) – Selectively retain root capabilities | na | (*non-dynamic*) | 3.0 | security |
-| [chroot](/momentum/3/3-reference/3-reference-conf-ref-chroot) – chroot to a secure environment | na | (*non-dynamic*) | 3.0 | security |
-| [clear_mail_queue_maintainers](/momentum/3/3-reference/3-reference-conf-ref-clear-mail-queue-maintainers) – Reschedule the mail queue maintainer | both | false, true (*3.6*) | 3.0 | global |
-| [cluster_group](/momentum/3/3-reference/ecelerity-cluster-conf#option.cluster_group) – The DuraVIP™ system coordinates IP ownership responsibilities via the cluster_group extended virtual synchrony group (cluster-specific) | na | ec_cluster | 3.0 | cluster |
-| [cluster_max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-cluster-max-outbound-connections) – Set the maximum number of outbound connections for a domain (cluster-specific) | sending | -1 | 3.0 | binding, domain, global, host |
-| [cluster_outbound_throttle_connections](/momentum/3/3-reference/3-reference-conf-ref-cluster-outbound-throttle-connections) – Limit the rate at which connections are established (cluster-specific) | sending | | 3.0 | binding_group, domain, global |
-| [cluster_outbound_throttle_messages](/momentum/3/3-reference/3-reference-conf-ref-cluster-outbound-throttle-messages) – Limit the rate at which messages are delivered (cluster-specific) | sending | | 3.0 | binding_group, domain, global |
-| [cluster_scope_max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-cluster-scope-max-outbound-connections) – Provide traffic shaping for outbound connections (cluster-specific) | sending | | 3.0.16 | binding, binding_group, domain, global, host |
-| [cluster_server_max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-cluster-server-max-outbound-connections) – Set the maximum number of outbound connections (cluster-specific) | sending | | 3.0 | binding, binding_group, global |
-| [codes](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.codes) – adaptive_sweep_rule bounce or fbl codes | sending | | 3.2 | adaptive_sweep_rule |
-| [community](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Set the SNMP Community option value to the desired SNMP community the agent is to join | na | public (*non-dynamic*) | 3.0 | snmp |
-| [concurrency](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3) – Define number of available threads | receiving | 0 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, threadpool, xmpp_listener |
-| [connect_timeout](/momentum/3/3-reference/3-reference-conf-ref-connect-timeout) – Set the connection timeout | sending | 300 | 3.0 | binding, binding_group, domain, global |
-| [connect_timeout_to_delay](/momentum/3/3-reference/3-reference-conf-ref-connect-timeout-to-delay) – Time interval before moving mail into the delayed queue | sending | 900 | 3.0 | binding, binding_group, domain, global |
-| [connection_allocation_aggressiveness](/momentum/3/3-reference/3-reference-conf-ref-connection-allocation-aggressiveness) – Tune the aggressiveness for establishing new connections to domains | sending | normal | 3.0 | binding, binding_group, domain, global |
-| [context](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.context) – Use to set arbitrary connection context key value pairs | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [control_cache](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs) – The name of the cache file storing asynchronous responses | na | | 3.0 | logs |
-| [control_client_timeout](/momentum/3/3-reference/3-reference-conf-ref-control-client-timeout) – Network timeout for Momentum control client connections | na | 60 | 3.0 | global |
-| [control_group](/momentum/3/3-reference/ecelerity-cluster-conf#option.control_group) – The cluster console manager utilizes this group to issue cluster-wide configuration commands (cluster-specific) | na | ec_console | 3.0 | cluster |
-| [control_listener](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener) *(scope)* – The listener for incoming control connections | na | | 3.0 | global |
-| [critical](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | ALL | 3.0 | debug_flags |
-| [crypto_engine](/momentum/3/3-reference/3-reference-conf-ref-crypto-engine) – Enable hardware cryptography acceleration | both | | 3.0 | global |
-| [crypto_lock_method](/momentum/3/3-reference/conf-ref-crypto-lock-method) – Change the locking method used by the TLS layer | both | EC_SSL_DEFAULTLOCK (*non-dynamic*) | 3.0 | global |
-| [debug](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | | 3.0 | debug_flags |
-| [debug_flags](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) *(scope)* – Configure debug verbosity | na | | 3.0 | global |
-| [debug_level](/momentum/3/3-reference/modules-overview-implicit) – Set the module debug level (applicable to all modules) (cluster-specific) | na | error | 3.0 | cluster |
-| [default_binding](/momentum/3/3-reference/3-reference-conf-ref-default-binding) – Control the default binding | sending | normal | 3.0 | global |
-| [default_charset](/momentum/3/3-reference/3-reference-conf-ref-default-charset) – Control the character set | both | us-ascii | 3.0 | global, pathway, pathway_group |
-| [delay_dsn_max_retry_interval](/momentum/3/3-reference/3-reference-conf-ref-delay-dsn-max-retry-interval) – Maximum interval for sending DSNs to the sender of a message that has not yet been delivered | sending | 43200 | 3.0 | binding, binding_group, domain, global |
-| [delay_dsn_retry_interval](/momentum/3/3-reference/3-reference-conf-ref-delay-dsn-retry-interval) – Base interval for sending DSNs to the sender of a message that has not yet been delivered | sending | 3600 | 3.0 | binding, binding_group, domain, global |
-| [delayed_binding_domain_fuzz](/momentum/3/3-reference/3-reference-conf-ref-delayed-binding-domain-fuzz) – The time period to spread scheduled messages over when a bulk requeue is necessary | sending | 0 | 3.0.26 | binding, binding_group, global |
-| [delayed_queue_scan_interval](/momentum/3/3-reference/3-reference-conf-ref-delayed-queue-scan-interval) – How often to call the maintainer for a domain | sending | 15 | 3.0 | global |
-| [delivery_method](/momentum/3/3-reference/3-reference-conf-ref-delivery-method) – Set the delivery method | sending | ESMTP (*3.0*), SMTP (*2.2*) | 3.0 | binding, binding_group, domain, global |
-| [delivery_pool](/momentum/3/3-reference/conf-ref-delivery-pool) – Associate an eventloop with mail delivery | sending | (*non-dynamic*) | 3.6 | global |
-| [delivery_response_timeout](/momentum/3/3-reference/3-reference-conf-ref-delivery-response-timeout) – Time to wait for a response to an outbound request | sending | 5000 | 3.5.6 | binding, domain, global |
-| [dir_mode](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs) – The octal representation of the file permissions | na | | 3.0 | logs |
-| [disable_chunked](/momentum/mobile/mobile-reference/mobility-mm-7-listener) – An option used with aggregators who do not support chunked transfer-coding (Mobile Momentum) | both | false | 3.1.4 | http_listener, listen, pathway, pathway_group, peer |
-| [disable_nagle_algorithm](/momentum/3/3-reference/3-reference-conf-ref-disable-nagle-algorithm) – Disable nagle algorithm on sockets | both | false | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, global, http_listener, listen, xmpp_listener |
-| [disk_queue_drain_rate](/momentum/3/3-reference/3-reference-conf-ref-disk-queue-drain-rate) – Control the rate at which messages are spooled in on start-up | both | 100 | 3.0 | global |
-| [dkim](/momentum/3/3-reference/conf-ref-dkim) – Enable or disable signing messages | sending | | 3.0 | binding, binding_group, domain, global |
-| [dns_cache_purge_interval](/momentum/3/3-reference/3-reference-conf-ref-dns-cache-purge-interval) – How often the DNS response cache is scanned for stale entries | sending | 60 | 3.0 | global |
-| [dns_expire_interval](/momentum/3/3-reference/3-reference-conf-ref-dns-expire-interval) – How often to check for domains with expired DNS information | sending | 10 | 3.0 | global |
-| [dns_failures_to_purge](/momentum/3/3-reference/3-reference-conf-ref-dns-failures-to-purge) – Configure the maximum number of DNS lookups | sending | 10 | 3.0 | domain, global |
-| [dns_fallback_to_tcp](/momentum/3/3-reference/3-reference-conf-ref-dns-fallback-to-tcp) – Whether or not to fail over to TCP in place of UDP | both | false | 3.0.22 | global |
-| [domain](/momentum/3/3-reference/3-reference-conf-ref-domain) *(scope)* – Configure domain-specific options | sending | | 3.0 | binding, binding_group, global |
-| [domain_for_unqualified_recipient_addresses](/momentum/3/3-reference/3-reference-conf-ref-domain-for-unqualified-recipient-addresses) – Configure a domain which will be used to resolve delivery for unqualified addresses | receiving | | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [domain_for_unqualified_sender_address](/momentum/3/3-reference/3-reference-conf-ref-domain-for-unqualified-sender-address) – Configure a domain which will be used to substitute for unqualified sender addresses | receiving | | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [domainkeys](/momentum/3/3-reference/3-reference-conf-ref-domainkeys) – Enable or disable domainkeys signing | sending | | 3.0 | binding, binding_group, domain, global |
-| [drop_body_after_trans_fail](/momentum/3/3-reference/3-reference-conf-ref-drop-body-after-trans-fail) – Number of retry attempts before freeing message memory | sending | 3 | 3.0 | binding, binding_group, domain, global |
-| [duravip_balance_set_size](/momentum/3/3-reference/ecelerity-cluster-conf#option.duravip_balance_set_size) – When balancing DuraVIP™s, how many to process as a batch in response to a balance request (cluster-specific) | na | 1 | 3.0 | cluster |
-| [duravip_follow](/momentum/3/3-reference/3-reference-cluster-config-duravip) – Specify the binding a listener should follow (cluster-specific) | receiving | | 3.0 | listen |
-| [duravip_preference](/momentum/3/3-reference/3-reference-cluster-config-duravip) – Specify a DuraVIP™ preference (cluster-specific) | both | | 3.0 | binding, listen |
-| [eccluster_listener](/momentum/3/3-reference/ecelerity-cluster-conf#ecelerity-cluster.conf.eccluster_listener) *(scope)* – Control communication between cluster nodes (cluster-specific) | na | | 3.0.15 | global |
-| [ecstream_idle_time](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener) – The number of seconds of inactivity before a client is disconnected (ECStream only) | receiving | 300 | 3.0 | ecstream_listener, listen, pathway, pathway_group, peer |
-| [ecstream_listener](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener) *(scope)* – The listener for incoming ECSTREAM connections | receiving | | 3.0 | global |
-| [ecstream_max_batch_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener) – The maximum number of ECStream messages to accept before dropping back into the scheduler (ECStream only) | receiving | 10000 | 3.0 | ecstream_listener, listen, pathway, pathway_group, peer |
-| [ecstream_port](/momentum/3/3-reference/3-reference-conf-ref-ecstream-port) – Configure the port for ecstream deliveries | sending | 1825 | 3.2 | binding, binding_group, domain, global |
-| [ecstream_timeout](/momentum/3/3-reference/3-reference-conf-ref-ecstream-timeout) – The amount of time to wait for an ecstream connection to be established | sending | 600 | 3.2 | binding, binding_group, domain, global |
-| [ehlo_hostname](/momentum/3/3-reference/3-reference-conf-ref-ehlo-hostname) – Set the hostname used for EHLO in outbound mail | sending | __hostname__ | 3.0 | binding, binding_group, domain, global |
-| [ehlo_timeout](/momentum/3/3-reference/3-reference-conf-ref-ehlo-timeout) – Network timeout for EHLO | sending | 300 | 3.0 | binding, binding_group, domain, global |
-| [enable](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3) – Enable or disable a listener scope | receiving | true | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| [enable_authentication](/momentum/3/3-reference/conf-ecelerity-conf#conf.inbound-mail) – Whether or not to enable authentication | receiving | | 3.0 | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [enable_authorization](/momentum/3/3-reference/conf-aaa#conf.control_authz) – Whether or not to enable authorization for console commands | receiving | | 3.0 | control_listener, listen, peer |
-| [enable_duravip](/momentum/3/3-reference/3-reference-cluster-config-duravip) – Whether to enable Durable MultiVIP© bindings (cluster-specific) | both | | 3.0 | binding, listen |
-| [enable_fbl_header_insertion](/momentum/3/3-reference/3-reference-conf-ref-enable-fbl-header-insertion) – Enable or disable fbl header insertion | sending | | 3.0 | binding, binding_group, domain, global |
-| [enabled](/momentum/3/3-reference/modules-overview) – Whether or not the module is enabled (cluster-specific) | na | true | 3.0 | cluster |
-| [error](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | ALL | 3.0 | debug_flags |
-| [esmtp_listener](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.esmtp_listener) *(scope)* – The listener for incoming SMTP connections | receiving | | 3.0 | global |
-| [event_loop](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listeners.multi-core) – Associate a listener with an eventloop | sending | (*non-dynamic*) | 3.6 | ecstream_listener, esmtp_listener, listen |
-| [eventloop](/momentum/3/3-reference/conf-ref-eventloop) *(scope)* – Define a pool of event loops to enable multiple event loop configuration | both | (*non-dynamic*) | 3.6 | global |
-| [events_per_iter](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.events_per_iter) – Employ when using a Concurrency greater than 1 | receiving | 0 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [exclude_vctx_conn](/momentum/3/3-reference/conf-ref-exclude-vctx) – Exclude validation connection context keys from being journaled in the spool metadata | both | | 3.0 | binding, binding_group, domain, global |
-| [exclude_vctx_mess](/momentum/3/3-reference/conf-ref-exclude-vctx) – Exclude validation message context keys from being journaled in the spool metadata | both | | 3.0 | binding, binding_group, domain, global |
-| [expensive_batch_assessment](/momentum/3/3-reference/3-reference-conf-ref-expensive-batch-assessment) – Treat messages as equal even if the bodies or headers have been modified since reception | receiving | false | 3.0 | global |
-| [file_mode](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener) – File access rights in octal notation | na | 0660 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| [file_mode](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs) – The octal representation of the file permissions (cluster logs) | na | | 3.0 | logs |
-| [force_fsync](/momentum/3/3-reference/3-reference-conf-ref-force-fsync) – Ensure that data is synced to disk on reception | receiving | false | 3.0 | global |
-| [fully_resolve_before_smtp](/momentum/3/3-reference/3-reference-conf-ref-fully-resolve-before-smtp) – Resolve all MX and A records before attempting delivery | sending | true | 3.0 | binding, binding_group, domain, global |
-| [gateway](/momentum/3/3-reference/3-reference-conf-ref-gateway) – Configure a static SMTP route for mail | sending | | 3.0 | binding, binding_group, domain, global |
-| [gcm_application_id](/momentum/3/3-push/push-gcm-gcm-application-id) – Define the package name of the Android application allowed to received notifications | sending | | 3.5.5 | binding, binding_group, domain, global |
-| [gcm_authorization_token_id](/momentum/3/3-push/push-gcm-gcm-authorization-token-id) – The authorization token that permits sending Google push notifications | sending | | 3.5.5 | binding, binding_group, domain, global |
-| [gcm_delay_while_idle](/momentum/3/3-push/push-gcm-gcm-delay-while-idle) – Whether or not to send the notification immediately if a device is idle | sending | false | 3.5.5 | binding, binding_group, domain, global |
-| [gcm_dry_run](/momentum/3/3-push/push-gcm-gcm-dry-run) – Test a request without actually sending a message | sending | false | 3.5.5 | binding, binding_group, domain, global |
-| [gcm_ttl](/momentum/3/3-push/push-gcm-ttl) – Default Time To Live for notifications | sending | -1 | 3.5.5 | binding, binding_group, domain, global |
-| [generate_bounces](/momentum/3/3-reference/3-reference-conf-ref-generate-bounces) – Generate MDNs if mail is failed after reception | sending | true | 3.0 | binding, binding_group, domain, global |
-| [generate_bounces_for_multi_recipient_policy_rejections](/momentum/3/3-reference/3-reference-conf-ref-generate-bounces-for-multi-recipient-policy-rejections) – Generate MDNs after reception for policy rejections | receiving | true | 3.0 | global, pathway, pathway_group |
-| [generate_delay_dsn](/momentum/3/3-reference/3-reference-conf-ref-generate-delay-dsn) – Generate DSNs if mail is delayed | sending | false | 3.0 | binding, binding_group, domain, global |
-| [group](/momentum/3/3-reference/3-reference-conf-ref-user) – Group identity to assume after startup | na | ecuser (*non-dynamic*) | 3.0 | security |
-| [growbuf_size](/momentum/3/3-reference/3-reference-conf-ref-growbuf-size) – The size of an element in a growbuf chain | na | 16384 | 3.0 | global |
-| [heartbeat_start_delay](/momentum/3/3-reference/ecelerity-cluster-conf#option.heartbeat_start_delay) – Seconds to wait after startup before the cluster heartbeat is activated (cluster-specific) | na | 15 | 3.0 | cluster |
-| [heartbeats_per_sec](/momentum/3/3-reference/ecelerity-cluster-conf#option.heartbeats_per_sec) – How often to send a heartbeat (cluster-specific) | na | 1 | 3.0 | cluster |
-| [high_action](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.high_action) – The action when the high threshold is met and the number of delivery attempts exceeds the adaptive_attempt_threshold | sending | "suspend" "4 hours" | 3.2 | adaptive_sweep_rule |
-| [high_threshold](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.high_threshold) – The high threshold value for the sum of the rates of the bounce codes or FBL categories | sending | 10 | 3.2 | adaptive_sweep_rule |
-| [host](/momentum/3/3-reference/3-reference-conf-ref-host) *(scope)* – Configure host-specific options | sending | | 3.0 | binding, binding_group, global |
-| [host_failure_retry](/momentum/3/3-reference/3-reference-conf-ref-host-failure-retry) – Time to wait before attempting a retry | sending | 120 | 3.0 | domain, global |
-| [hostname](/momentum/3/3-reference/3-reference-conf-ref-hostname) – Override the system configured hostname | both | | 3.0 | global |
-| [http_basic_auth](/momentum/3/3-reference/3-reference-conf-ref-http-basic-auth) – Define the user credentials when using basic HTTP authentication | both | | 3.5.6 | binding, binding_group, domain, global |
-| [http_host](/momentum/3/3-reference/3-reference-conf-ref-http-host) – Define the HTTP host | sending | | 3.5.6 | binding, binding_group, domain, global |
-| [http_listener](/momentum/3/3-rest/rest-http-listener) *(scope)* – The listener used with the REST injector | sending | | 3.1.4 | global |
-| [http_method](/momentum/3/3-reference/3-reference-conf-ref-http-method) – Define the HTTP method to use | sending | POST | 3.5.6 | binding, binding_group, domain, global |
-| [http_uri](/momentum/3/3-reference/3-reference-conf-ref-http-uri) – Define the HTTP URI that you wish to connect to | sending | | 3.5.6 | binding, binding_group, domain, global |
-| [http_version](/momentum/3/3-reference/3-reference-conf-ref-http-version) – Define the HTTP version to use | sending | 1.1 | 3.5.6 | binding, binding_group, domain, global |
-| [idle_time](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.idle_time) – The number of seconds of inactivity before a client is disconnected | receiving | 0 | 3.0 | esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [idle_timeout](/momentum/3/3-reference/3-reference-conf-ref-idle-timeout) – Time to maintain idle outbound connections | sending | 5 | 3.0 | binding, binding_group, domain, global |
-| [if_check_interval](/momentum/3/3-reference/ecelerity-cluster-conf#option.if_check_interval) – How often to run through a maintenance cycle (cluster-specific) | na | 30 | 3.0 | cluster |
-| [if_down_limit](/momentum/3/3-reference/ecelerity-cluster-conf#option.if_down_limit) – How long to wait before deciding to bring an IP online (cluster-specific) | na | 4 | 3.0 | cluster |
-| [inbound_throttle_messages](/momentum/3/3-reference/3-reference-conf-ref-inbound-throttle-messages) – Rate limit inbound mail | receiving | | 3.0 | global, pathway, pathway_group |
-| [info](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | | 3.0 | debug_flags |
-| [initial_hash_buckets](/momentum/3/3-reference/3-reference-conf-ref-initial-hash-buckets) – Set the number of hash buckets used by the system | na | 32 | 3.1 | global |
-| [inline_transfail_processing](/momentum/3/3-reference/3-reference-conf-ref-inline-transfail-processing) – How to handle transient failure processing | sending | 1 | 3.0 | global |
-| [keep_message_dicts_in_memory](/momentum/3/3-reference/3-reference-conf-ref-keep-message-dicts-in-memory) – Preserve memory representation of metadata when memory is low | both | false (*non-dynamic*) | 3.0 | global |
-| [large_message_threshold](/momentum/3/3-reference/3-reference-conf-ref-large-message-threshold) – Consider a message large when its size exceeds this amount | both | 131072 | 3.0 | global |
-| [legacy_message_threshold](/momentum/3/3-reference/3-reference-conf-ref-legacy-message-threshold) – The maximum size allowed for messages being passed to legacy modules | both | 1048576 | 3.0 | global |
-| [license](/momentum/3/3-reference/3-reference-conf-ref-license) – Specify an alternate license location | na | /opt/msys/ecelerity/etc (*non-dynamic*) | 3.0 | global |
-| [listen](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.attributes) *(scope)* – Specify the socket that a listener listens on | receiving | | 3.0 | control_listener, ecstream_listener, esmtp_listener, http_listener, msgcserver_listener, xmpp_listener |
-| [listen_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listen_backlog) – The listen backlog | receiving | 500 (*3.0*) | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [listener_sessions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listener_sessions) – Specifies the maximum number of concurrent sessions that can be established to a listener | receiving | 0 | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [lmtp_port](/momentum/3/3-reference/3-reference-conf-ref-lmtp-port) – Configure the port for LMTP deliveries | sending | 2003 | 3.0 | binding, binding_group, domain, global |
-| [local_changes_file](/momentum/3/3-reference/3-reference-conf-ref-local-changes-file) – The file for writing local configuration changes | na | /opt/msys/ecelerity/etc/local_changes.conf | 3.0 | global |
-| [local_changes_only](/momentum/3/3-reference/3-reference-conf-ref-local-changes-only) – Whether there is a file for writing local configuration change | na | false | 3.0 | global |
-| [log_active_interval](/momentum/3/3-reference/ecelerity-cluster-conf#option.log_active_interval) – Used to tune centralized logging (cluster-specific) | na | 1 | 3.0 | cluster |
-| [log_group](/momentum/3/3-reference/ecelerity-cluster-conf#option.log_group) – Whether or not panic log messages are broadcast over spread (cluster-specific) | na | | 3.0 | cluster |
-| [log_idle_interval](/momentum/3/3-reference/ecelerity-cluster-conf#option.log_idle_interval) – The amount of time to sleep before looking for another segment (cluster-specific) | na | 10 | 3.0 | cluster |
-| [log_requests_to_paniclog](/momentum/3/3-rest/rest-http-listener) – Whether to log REST injection requests | sending | false | 3.1.4 | http_listener, listen, pathway, pathway_group, peer |
-| [logfile](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs.logfile) – Describe the full path to the log file | na | | 3.0 | logs |
-| [logs](/momentum/3/3-reference/ecelerity-cluster-conf) – Define the location of the cluster manager logs (cluster-specific) | na | | 3.0 | cluster |
-| [logs](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs) *(scope)* – Configure centralized log files on the cluster manager | na | | 3.0 | global |
-| [low_action](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.low_action) – The action when the high threshold is not met but the low threshold is met | sending | "throttle" "down" | 3.2 | adaptive_sweep_rule |
-| [low_threshold](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.low_threshold) – The low threshold value for the sum of the rates of the bounce codes or FBL categories | sending | 5 | 3.2 | adaptive_sweep_rule |
-| [mail_queue_check_vm_interval](/momentum/3/3-reference/3-reference-conf-ref-mail-queue-check-vm-interval) – How often to apply memory management reduction on mail queues | both | 60 | 3.0 | global |
-| [mailerdaemon](/momentum/3/3-reference/3-reference-conf-ref-mailerdaemon) – Set the From: address for MDNs | sending | | 3.0 | binding, binding_group, domain, global |
-| [mailfrom_timeout](/momentum/3/3-reference/3-reference-conf-ref-mailfrom-timeout) – Timeout after MAIL FROM | sending | 300 | 3.0 | binding, binding_group, domain, global |
-| [maintainer_pool](/momentum/3/3-reference/conf-ref-maintainer-pool) – Create an eventloop for maintainers | both | (*non-dynamic*) | 3.6 | global |
-| [malloc2mmap_threshold](/momentum/3/3-reference/3-reference-conf-ref-malloc-2-mmap-threshold) – Use mmap when allocations exceed this amount | na | 4092 | 3.0 | global |
-| [manager](/momentum/3/3-reference/cluster-config-logging#cluster.config.logging.complex) *(scope)* – Define managers for subclusters | na | | 3.0 | logs |
-| [masterdb_file](/momentum/3/3-reference/3-reference-conf-ref-masterdb-file) – Specify an alternate path for the statistics permastore | na | /var/log/ecelerity/ecdb (*non-dynamic*) | 3.0 | global |
-| [match_cache_life](/momentum/3/3-reference/3-reference-conf-ref-match-cache-life) – Set the maximum number of seconds that the match cache will be valid | na | 0 | 3.0 | global |
-| [match_cache_size](/momentum/3/3-reference/3-reference-conf-ref-match-cache-size) – The size of the cache that holds the results of looking up matching scopes | na | 16384 | 3.0 | global |
-| [max_deliveries_per_connection](/momentum/3/3-reference/3-reference-conf-ref-max-deliveries-per-connection) – Maximum number of messages to deliver before closing a connection | sending | 0 | 3.0 | binding, binding_group, domain, global |
-| [max_dns_ttl](/momentum/3/3-reference/3-reference-conf-ref-max-dns-ttl) – Set the maximum DNS TTL | sending | 4294967295 | 3.0 | global |
-| [max_idle](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs.max_idle) – The maximum number of seconds a log file may be left open | na | | 3.0 | logs |
-| [max_message_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_message_size) – The maximum number of bytes allowed in a single message | receiving | 0 | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [max_open](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs.max_open) – The maximum number of concurrently open log files | na | | 3.0 | logs |
-| [max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-max-outbound-connections) – Set the maximum number of outbound connections | sending | 32 | 3.0 | binding, binding_group, domain, global, host |
-| [max_receptions_per_connection](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_receptions_per_connection) – The maximum number of messages allowed in a single session | receiving | 0 | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [max_recipients_per_batch](/momentum/3/3-reference/3-reference-conf-ref-max-recipients-per-batch) – The maximum number of recipients to send in a single outbound message transaction | sending | 100 | 3.0 | binding, binding_group, domain, global |
-| [max_recipients_per_connection](/momentum/3/3-reference/conf-ref-max-recipients-per-connection) – The maximum number of recipients to send on a connection | sending | 0 | 3.0 | binding, binding_group, domain, esmtp_listener, global, listen, peer |
-| [max_recipients_per_message](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_recipients_per_message) – The maximum number of recipients allowed in a message | receiving | 0 | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [max_request_size](/momentum/3/3-rest/rest-http-listener) – Limit the size of an HTTP request | both | | 3.1.4 | http_listener, listen, pathway, pathway_group, peer |
-| [max_resident_active_queue](/momentum/3/3-reference/3-reference-conf-ref-max-resident-active-queue) – Threshold above which messages are not held in memory | sending | 250 | 3.0 | binding, binding_group, domain, global |
-| [max_resident_messages](/momentum/3/3-reference/3-reference-conf-ref-max-resident-messages) – Threshold above which messages are not held in memory | sending | 32768 | 3.0 | binding, binding_group, global |
-| [max_resident_transfails](/momentum/3/3-reference/3-reference-conf-ref-max-resident-transfails) – If the transient failure queue grows beyond this size, messages are swapped out of memory | sending | 100 | 3.0 | global |
-| [max_retries](/momentum/3/3-reference/3-reference-conf-ref-max-retries) – Override the system configured max_retries | sending | | 3.0 | binding, binding_group, domain, global |
-| [max_retry_interval](/momentum/3/3-reference/3-reference-conf-ref-max-retry-interval) – Maximum retry interval | sending | 43200 | 3.0 | binding, binding_group, domain, global |
-| [max_timed_events_per_iter](/momentum/3/3-reference/3-reference-conf-ref-max-timed-events-per-iter) – The maximum numer of timed events per scheduler iteration | na | 1024 | 3.0.22 | global |
-| [mbus_daemon](/momentum/3/3-reference/ecelerity-cluster-conf) *(deprecated)* – The port that the messaging bus listens on (cluster-specific) | na | 4803 | 3.0 | cluster |
-| [mcmt_reception](/momentum/mobile/mobile-reference/mm-7-mcmt-reception) – Configure a listener to accept the Multi-Channel Message Type (Mobile Momentum) | both | passthru | 3.1.4 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [mdn_failures_notify](/momentum/3/3-reference/3-reference-conf-ref-mdn-failures-notify) – Mailbox to which to send null recipient MDNs | sending | | 3.0 | binding, binding_group, domain, global |
-| [memory_goal](/momentum/3/3-reference/3-reference-conf-ref-memory-goal) – Configure physical memory usage goal | na | 90 | 3.0 | global |
-| [memory_hwm](/momentum/3/3-reference/3-reference-conf-ref-memory-hwm) – Configure physical memory usage high-water mark | na | 95 | 3.0 | global |
-| [message_expiration](/momentum/3/3-reference/3-reference-conf-ref-message-expiration) – Time to live for messages | sending | 86400 | 3.0 | binding, binding_group, domain, global |
-| [migrate_connections_between_sibling_domains](/momentum/3/3-reference/3-reference-conf-ref-migrate-connections-between-sibling-domains) – Optimize connections for sibling domains | both | true | 3.4 | global |
-| [mime_parse_large_messages_during_reception](/momentum/3/3-reference/3-reference-conf-ref-mime-parse-large-messages-during-reception) – Configure whether large messages are parsed upon reception or just in time | receiving | true | 3.0 | global |
-| [min_dns_ttl](/momentum/3/3-reference/3-reference-conf-ref-min-dns-ttl) – Override DNS TTLs smaller than this value | sending | 0 | 3.0 | global |
-| [mx_failures_fallback_to_a](/momentum/3/3-reference/3-reference-conf-ref-mx-failures-fallback-to-a) – Configure the maximum number of times an MX lookup will be attempted | sending | 3 | 3.0 | domain, global |
-| [mx_failures_to_delay](/momentum/3/3-reference/3-reference-conf-ref-mx-failures-to-delay) – Number of consecutive failures before a domain is auto-delayed | sending | 50 | 3.0 | domain, global |
-| [never_attempt_expired_messages](/momentum/3/3-reference/3-reference-conf-ref-never-attempt-expired-messages) – Never attempt delivery of expired messages | sending | false | 3.0 | binding, binding_group, domain, global |
-| [never_retry](/momentum/3/3-reference/3-reference-conf-ref-never-retry) – Whether or not to retry delivery of failed messages | sending | false | 3.0 | binding, binding_group, domain, global |
-| [nodeaddr](/momentum/3/3-reference/ecelerity-cluster-conf#option.nodeaddr) – The canonical cluster address for the node (cluster-specific) | na | | 3.0 | cluster |
-| [nodename](/momentum/3/3-reference/ecelerity-cluster-conf#option.nodename) – Override the node name that is used to canonically identify this cluster node (cluster-specific) | na | | 3.0 | cluster |
-| [notice](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | | 3.0 | debug_flags |
-| [only_use_best_mx_for_relay_domains](/momentum/3/3-reference/3-reference-conf-ref-only-use-best-mx-for-relay-domains) – If this is set to true only the lowest numerical priority MXs are used | sending | true | 3.0 | global |
-| [open_relay](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.open_relay) – Whether the MTA is an open relay or not | receiving | false | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [opendkim_sign](/momentum/3/3-reference/3-reference-conf-ref-opendkim-sign) – Whether or not to enable OpenDKIM signing | sending | true (*non-dynamic*) | 3.6 | binding, binding_group, domain, global |
-| [outbound_throttle_connections](/momentum/3/3-reference/3-reference-conf-ref-outbound-throttle-connections) – Limit the rate at which connections are established | sending | | 3.0 | binding, binding_group, domain, global |
-| [outbound_throttle_messages](/momentum/3/3-reference/3-reference-conf-ref-outbound-throttle-messages) – Limit the rate at which messages are delivered | sending | | 3.0 | binding, binding_group, domain, global |
-| [pathway](/momentum/3/3-reference/3-reference-conf-ref-pathway) *(scope)* – A grouping of inbound configuration options | receiving | | 3.0.23 | global, pathway_group |
-| [pathway](/momentum/3/3-reference/3-reference-conf-ref-pathway) – A means for associating a Listener with a pathway scope | receiving | | 3.0.23 | ecstream_listener, esmtp_listener, listen, peer |
-| [pathway_group](/momentum/3/3-reference/3-reference-conf-ref-pathway-group) *(scope)* – A container for pathway scopes | receiving | | 3.0.23 | global |
-| [pcre_cache_size](/momentum/3/3-reference/3-reference-conf-ref-pcre-cache-size) – Set the maximum size of the ec_pcre_compile cache | na | 100 | 3.0 | global |
-| [pcre_cache_ttl](/momentum/3/3-reference/3-reference-conf-ref-pcre-cache-ttl) – Set the maximum TTL for the ec_pcre_compile cache | na | 300 | 3.0 | global |
-| [peer](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.config.acls) *(scope)* – Create an ACL within a specific listener | receiving | | 3.0 | control_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [permastore_interval](/momentum/3/3-reference/3-reference-conf-ref-permastore-interval) – The frequency for saving various statistics | na | 300 | 3.0 | global |
-| [pidfile](/momentum/3/3-reference/3-reference-conf-ref-pidfile) – Set the PID file path | na | /var/run/ecelerity.pid (*non-dynamic*) | 3.0 | global |
-| [pool_name](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3) – Associate a threadpool with a listener | receiving | | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [prefer_ipv6_mxs](/momentum/3/3-reference/3-reference-conf-prefer_ipv6mxs) - Prefer IPv6 addresses over IPv4 addresses at a given MX priority level | sending | false | 3.6.12 | global |
-| [privileges](/momentum/3/3-reference/3-reference-conf-ref-capabilities) – Selectively retain root capabilities (Solaris) | na | (*non-dynamic*) | 3.0 | security |
-| [prohibited_hosts](/momentum/3/3-reference/3-reference-conf-ref-prohibited-hosts) – Prevent mail from being delivered to invalid destinations | sending | | 3.0 | global |
-| [rcptto_timeout](/momentum/3/3-reference/3-reference-conf-ref-rcptto-timeout) – Timeout after RCPT TO | sending | 300 | 3.0 | binding, binding_group, domain, global |
-| [received_hostname](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.received_hostname) – The hostname that is placed in the received headers | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [reconfig_message](/momentum/3/3-reference/ecelerity-conf#reconfig_message) – The message if the configuration has changed | receiving | 4.3.2 Reconfiguration in progress | 3.0 | esmtp_listener |
-| [relay_domains](/momentum/3/3-reference/3-reference-conf-ref-relay-domains) – Configure the list of domains for which Momentum relays mail | receiving | | 3.0 | global, pathway, pathway_group |
-| [relay_for_sending_domains](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.relay_for_sending_domains) – Domains that may use the MTA as a relay | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [relay_hosts](/momentum/3/3-reference/3-reference-conf-ref-relay-hosts) – Configure the list of hosts for which Momentum relays mail | receiving | | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [remote_smtp_port](/momentum/3/3-reference/3-reference-conf-ref-remote-smtp-port) – Set the port to be used for SMTP deliveries | sending | 25 | 3.0 | binding, binding_group, domain, global |
-| [replicate](/momentum/3/3-reference/ecelerity-cluster-conf) *(scope)* – Define the cluster replication framework (cluster-specific) | na | | 3.0 | cluster |
-| [require_ehlo](/momentum/3/3-reference/3-reference-conf-ref-require-ehlo) – Reject mail from clients that do not say HELO | receiving | false | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [reserve_maintenance_interval](/momentum/3/3-reference/3-reference-conf-ref-reserve-maintenance-interval) – How often to perform mail queue maintenance | sending | 15 | 3.0 | global |
-| [resolv_conf](/momentum/3/3-reference/3-reference-conf-ref-resolv-conf) – Specify a custom resolv.conf file | sending | | 3.0 | global |
-| [response_transcode_pattern](/momentum/3/3-reference/3-reference-conf-ref-response-transcode-pattern) – The regex pattern for comparison to a server response | sending | | 3.0 | binding, binding_group, domain, global |
-| [response_transcode_replace](/momentum/3/3-reference/3-reference-conf-ref-response-transcode-replace) – The replacement string for a server response | sending | | 3.0 | binding, binding_group, domain, global |
-| [retry_interval](/momentum/3/3-reference/3-reference-conf-ref-retry-interval) – Base retry interval | sending | 1200 | 3.0 | binding, binding_group, domain, global |
-| [rfc2821_allow_whitespace_in_envelope](/momentum/3/3-reference/3-reference-conf-ref-rfc-2821-allow-whitespace-in-envelope) – Permit trailing white space before the final CRLF | receiving | false | 3.0.26 | global, pathway, pathway_group |
-| [rfc2821_pedantic_address_rules](/momentum/3/3-reference/3-reference-conf-ref-rfc-2821-pedantic-address-rules) – Allow relaxation of enforcement of the rfc2821 address rules | receiving | true | 3.0 | global, pathway, pathway_group |
-| [rfc2822_date_header](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-date-header) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ifneeded | 3.0 | global, pathway, pathway_group |
-| [rfc2822_lone_lf_in_body](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-lone-lf-in-body) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ignore | 3.0 | global, pathway, pathway_group |
-| [rfc2822_lone_lf_in_headers](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-lone-lf-in-headers) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | pedantic | 3.0 | global, pathway, pathway_group |
-| [rfc2822_max_line_length](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-max-line-length) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ignore | 3.0 | global, pathway, pathway_group |
-| [rfc2822_max_line_length_policy](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-max-line-length-policy) – Determine how non-RFC-compliant line lengths are handled | receiving | none | 3.0.26 | global, pathway, pathway_group |
-| [rfc2822_messageid_header](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-messageid-header) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ifneeded | 3.0 | global, pathway, pathway_group |
-| [rfc2822_missing_headers](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-missing-headers) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | reject | 3.0 | global, pathway, pathway_group |
-| [rfc2822_trace_headers](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-trace-headers) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | true | 3.0 | global, pathway, pathway_group |
-| [role](/momentum/3/3-reference/3-reference-conf-ref-authorization) *(scope)* – Define a role within an authorization stanza | na | | 3.0 | authorization |
-| [routes](/momentum/3/3-reference/3-reference-conf-ref-routes) – Configure message routing | sending | | 3.0 | domain, global |
-| [rset_timeout](/momentum/3/3-reference/3-reference-conf-ref-rset-timeout) – Set the timeout after RSET | sending | 30 | 3.0 | binding, binding_group, domain, global |
-| [scheduler](/momentum/3/3-reference/3-reference-conf-ref-scheduler) – Override the default IO scheduler | na | (*non-dynamic*) | 3.0 | global |
-| [scope_max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-scope-max-outbound-connections) – Provide traffic shaping for outbound connections | sending | | 3.2 | binding, binding_group, domain, global |
-| [security](/momentum/3/3-reference/3-reference-conf-ref-security) *(scope)* – Scope for defining which permissions are retained by which user | na | (*non-dynamic*) | 3.0 | global |
-| [send_8bitmime](/momentum/3/3-reference/3-reference-conf-ref-send-8-bitmime) – Enable advertising of 8BITMIME when sending mail | sending | no | 3.0 | binding, binding_group, domain, global |
-| [server_max_file_descriptors](/momentum/3/3-reference/3-reference-conf-ref-server-max-file-descriptors) – Sets the maximum number of file descriptors usable by the system | na | 3000000 | 3.0 | global |
-| [server_max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-server-max-outbound-connections) – Sets the maximum number of outbound connections | sending | 20000 | 3.0 | binding, binding_group, global |
-| [server_reserve_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-server-reserve-outbound-connections) – Sets the server-wide connection limit reserve | sending | 200 | 3.0 | global |
-| [service_sessions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.service_sessions) – The maximum number of concurrent sessions that can be established to all listeners | receiving | 0 | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [signing_stats](/momentum/3/3-reference/3-reference-conf-ref-signing-stats) – Control how signing statistics are recorded | sending | all | 3.0.17 | global |
-| [siv_throttle_cache_size](/momentum/3/3-reference/3-reference-conf-ref-siv-throttle-cache-size) – Set the maximum number of named throttles | both | 100, 1000 (*3.0.24*) | 3.0 | global |
-| [smtp_extensions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.extensions) – Array of SMTP extensions | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [snmp](/momentum/3/3-reference/3-reference-conf-ref-snmp) *(scope)* – Simple Network Management Protocol Support scope options | na | (*non-dynamic*) | 3.0 | global |
-| [snmp_traps](/momentum/3/3-reference/3-reference-conf-ref-snmp) *(scope)* – Enable and configure generation of SNMP traps | na | (*non-dynamic*) | 3.0 | global |
-| [soft_bounce_drain_rate](/momentum/3/3-reference/3-reference-conf-ref-soft-bounce-drain-rate) – How many soft bounces to place into the mail queues in a single scheduler iteration | sending | 100 | 3.0 | global |
-| [spool_mode](/momentum/3/3-reference/3-reference-conf-ref-spool-mode) – Set the file mode for newly created spool files | na | 0640 (*non-dynamic*) | 3.0 | global |
-| [spoolbase](/momentum/3/3-reference/3-reference-conf-ref-spoolbase) – Set the base directory for the spool | na | /var/spool/ecelerity (*non-dynamic*) | 3.0 | global |
-| [ssl_lock_method](/momentum/3/3-reference/conf-ref-ssl-lock-method) – The SSL lock method | na | mutex (*3.0.17*) (*non-dynamic*) | 3.0 | global |
-| [stack_size](/momentum/3/3-reference/3-reference-conf-ref-threadpool) – The stack space for a threadpool | na | 0 (*non-dynamic*) | 3.0 | threadpool |
-| [starttls_injection_policy](/momentum/3/3-reference/conf-ref-starttls-injection-policy) – Protect against SMTP injections prior to TLS | receiving | reject | 3.3 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [state](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Whether to enable the SNMP agent | na | 1 (*non-dynamic*) | 3.0 | snmp |
-| [state](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Whether to enable generation of SNMP traps | na | 0 (*non-dynamic*) | 3.0 | snmp_traps |
-| [static_banner](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.static_banner) – The banner that is displayed to the remote client | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [subcluster](/momentum/3/3-reference/mbus-conf) *(deprecated)* – The name of the subcluster (cluster-specific) | na | | 3.0 | cluster |
-| [supplemental_groups](/momentum/3/3-reference/3-reference-conf-ref-supplemental-groups) – Supplemental groups to assume after startup | na | (*non-dynamic*) | 3.0 | security |
-| [suspend_delivery](/momentum/3/3-reference/3-reference-conf-ref-suspend-delivery) – Prevent outbound mail delivery | sending | false | 3.0 | binding, binding_group, domain, global |
-| [syscontact](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Set the SNMP SysContact option value | na | (*non-dynamic*) | 3.0 | snmp |
-| [sysdescription](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Set the SNMP SysDescription option value | na | (*non-dynamic*) | 3.0 | snmp |
-| [syslocation](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Set the SNMP SysLocation option value | na | (*non-dynamic*) | 3.0 | snmp |
-| [tcp_buffer_size](/momentum/3/3-reference/3-reference-conf-ref-tcp-buffer-size) – Maximum tcp buffer size for outbound connections | sending | 32768 | 3.0 | cluster, global |
-| [tcp_recv_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_recv_buffer_size) – The size of the TCP receive buffer size | receiving | 4096 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [tcp_send_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_send_buffer_size) – The size of the TCP send buffer | receiving | 4096 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [threadpool](/momentum/3/3-reference/3-reference-conf-ref-threadpool) *(scope)* – Configure thread pool specific options | na | | 3.0 | global |
-| [timeout](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.timeout) – The timeout for idle control connections on Control_Listeners | receiving | 60 | 3.0 | control_listener |
-| [timestampformat](/momentum/3/3-reference/3-reference-conf-ref-timestampformat) – Set the timestamp format used when logging to stderr | na | [%a %d %b %Y %H:%M:%S] | 3.0 | global |
-| [tls](/momentum/3/3-reference/conf-ref-tls) – Determine whether to use a TLS connection for outbound mail | sending | no | 3.0 | binding, binding_group, domain, global |
-| [tls_allow_renegotiation](/momentum/3/3-reference/conf-ref-tls-allow-renegotiation) – Whether to enable OpenSSL TLS renegotiation | both | true | 3.5.4 | ecstream_listener, esmtp_listener, http_listener, listen, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_ca](/momentum/3/3-reference/conf-ref-tls-ca) – Certificate authority for outbound mail | sending | | 3.0 | binding, binding_group, domain, global |
-| [tls_certificate](/momentum/3/3-reference/conf-ref-tls-certificate) – Certificate to use for inbound and outbound mail | both | | 3.0 | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_ciphers](/momentum/3/3-reference/conf-ref-tls-ciphers) – Allowable ciphers for a TLS session | both | | 3.0 | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_client_ca](/momentum/3/3-reference/conf-ref-tls-client-ca) – Certificate authority for inbound mail | receiving | | 3.0 | ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_dhparams_file](/momentum/3/3-reference/3-reference-conf-ref-tls-dhparams-file) – Specifies DHE parameters that add per-session randomness to the encryption | both | | 3.6.6 | global |
-| [tls_enable_dhe_ciphers](/momentum/3/3-reference/3-reference-conf-ref-tls-enable-dhe-ciphers) – Controls whether or not DHE ciphers are available | both | true | 3.6.6 | global |
-| [tls_ifavailable_fallback](/momentum/3/3-reference/conf-ref-tls-ifavailable-fallback) – Determine the behavior if TLS negotiation fails | sending | true | 3.5.10, 3.6.4 | binding, binding_group, domain, global |
-| [tls_key](/momentum/3/3-reference/conf-ref-tls-key) – the TLS key to use for outbound mail or inbound mail | both | | 3.0 | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_protocols](/momentum/3/3-reference/conf-ref-tls-protocols) – Allowable ciphers for TLS inbound and outbound sessions | both | | 3.6.6 | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer |
-| [tls_verified_peer_can_relay](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options) – Verification that peer can relay | receiving | false | 3.0 | ecstream_listener, esmtp_listener, listen, pathway, pathway_group, peer |
-| [tls_verified_peer_is_authorized](/momentum/3/3-rest/rest-http-listener) – Mark requests that use a verified SSL Client certificate as being authorized | sending | false | 3.1.4 | http_listener, listen, pathway, peer |
-| [tls_verify](/momentum/3/3-reference/conf-ref-tls-verify) – Specify how to handle the remote certificates | sending | no | 3.0 | binding, binding_group, domain, global |
-| [tls_verify_mode](/momentum/3/3-reference/conf-ref-tls-verify-mode) – Determine whether a TLS certificates is required | receiving | | 3.0 | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [topology](/momentum/3/3-reference/3-reference-cluster-config-duravip) *(scope)* – Define the cluster network topology (cluster-specific) | na | | 3.0 | cluster |
-| [trace_smtp_mode](/momentum/3/3-reference/3-reference-conf-ref-trace-smtp-mode) – Set the default permissions of trace files | sending | 0640 (*non-dynamic*) | 3.0 | global |
-| [transfail_drain_rate](/momentum/3/3-reference/3-reference-conf-ref-transfail-drain-rate) – The maximum number of messages to pop off the transient failure queue in a single scheduler iteration | sending | 100 | 3.0 | global |
-| [transform_8bitmime_content](/momentum/3/3-reference/3-reference-conf-ref-transform-8-bitmime-content) – Enable 8BITMIME downconversion when sending mail | sending | ifneeded (*3.1.6*) | 3.0 | binding, binding_group, domain, global |
-| [trap_destination](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Destination for SNMP trap | na | (*non-dynamic*) | 3.0 | snmp_traps |
-| [trap_interval](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Frequency of SNMP trap generation | na | 60 (*non-dynamic*) | 3.0 | snmp_traps |
-| [unconditional_rebind](/momentum/3/3-reference/ecelerity-cluster-conf#option.unconditional_rebind) – Whether the full set_binding logic is invoked or not (cluster-specific) | na | true | 3.0 | cluster |
-| [unlink_on_spool_in_failure](/momentum/3/3-reference/3-reference-conf-ref-unlink-on-spool-in-failure) – Whether or not to remove malformed messages | receiving | true | 3.0 | global |
-| [use_iflist_cache](/momentum/3/3-reference/3-reference-conf-ref-use-iflist-cache) – Whether or not to cache the list of interfaces configured by the system | sending | 0 (*non-dynamic*) | 3.0 | global |
-| [use_ipv6](/momentum/3/3-reference/3-reference-conf-ref-use-ipv-6) – Affects the selection of IPv6 hosts in the SMTP client | sending | false | 3.0 | global |
-| [use_mmap](/momentum/3/3-reference/3-reference-conf-ref-use-mmap) – Use mmap when spooling messages from disk | na | false | 3.0 | global |
-| [use_sendfile](/momentum/3/3-reference/3-reference-conf-ref-use-sendfile) – Use sendfile() when sending mail | sending | false | 3.0 | global |
-| [use_ssl](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.use_ssl) – Whether to use SSL verification | receiving | false | 3.0 | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [user](/momentum/3/3-reference/3-reference-conf-ref-user) – User identity to assume after startup | na | ecuser (*non-dynamic*) | 3.0 | security |
-| [view_balance_interval](/momentum/3/3-reference/ecelerity-cluster-conf#option.view_balance_interval) – How often DuraVIP™ views are subject to balancing (cluster-specific) | na | 10 | 3.0 | cluster |
-| [view_broadcast_interval](/momentum/3/3-reference/ecelerity-cluster-conf#option.view_broadcast_interval) – How often to speculatively broadcast a view announcement to the cluster (cluster-specific) | na | 0 | 3.0 | cluster |
-| [view_mature_time](/momentum/3/3-reference/ecelerity-cluster-conf#option.view_mature_time) – How long a DuraVIP™ view needs to remain unchanged before considering it "mature" (cluster-specific) | na | 5 | 3.0 | cluster |
-| [warning](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | | 3.0 | debug_flags |
-| [watch_interval](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Interval for watched system variables for SNMP traps | na | 10 (*non-dynamic*) | 3.0 | snmp_traps |
-| [watch_variables](/momentum/3/3-reference/3-reference-conf-ref-snmp) – SNMP traps watch variables | na | (*non-dynamic*) | 3.0 | snmp_traps |
-| [watchdog_interval](/momentum/3/3-reference/conf-ref-watchdog-interval) *(deprecated)* – If Momentum is unresponsive for this length of time, it will be restarted | na | 60 | 3.0 | global |
-| [xclient](/momentum/3/3-reference/3-reference-conf-ref-xclient) – Use the XCLIENT extension to SMTP for outbound mail | sending | no | 3.0 | binding, binding_group, domain, global |
-| [xmpp_dialback_secret](/momentum/mobile/mobile-reference/mobility-xmpp-modules#mobility.xmpp.modules.xmpp_role) – Use when verifying the XMPP server dialback key (Mobile Momentum) | both | | 3.4 | domain |
-| [xmpp_listener](/momentum/mobile/mobile-reference/mobility-xmpp-modules#modules.xmpp.xmpp_listener) *(scope)* – The listener for incoming XMPP connections (Mobile Momentum) | receiving | | 3.4 | global |
-| [xmpp_role](/momentum/mobile/mobile-reference/mobility-xmpp-modules#mobility.xmpp.modules.xmpp_role) – Define whether a domain is an XMPP server or client (Mobile Momentum) | both | | 3.4 | domain |
-
-### Adaptive Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [adaptive_adjustment_interval](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_adjustment_interval) – Throttle the adaptive adjustment interval | sending | 60 | 3.0 | binding, binding_group, domain, global |
-| [adaptive_alert_email_destination](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_alert_email_destination) – The address where adaptive alerts should be sent | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_alert_email_sender](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_alert_email_sender) – Set the sender address of the alert email | sending | NULL | 3.0.17 | binding, binding_group, domain, global |
-| [adaptive_attempt_threshold](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_attempt_threshold) – The minimum delivery attempts over a period during which bounce stats are collected and suspensions attempted | sending | 2000 (*3.2*) | 3.0 | binding, binding_group, domain, global |
-| [adaptive_backstore_leveldb](/momentum/3/3-reference/3-reference-conf-ref-adaptive-backstore-leveldb) *(scope)* – Use LevelDB as the backing store for Adaptive Delivery | sending | | 3.6 | global |
-| [adaptive_backstore_riak](/momentum/3/3-reference/3-reference-conf-ref-adaptive-backstore-riak) *(scope)* – Define the characteristics of the Riak backing store | sending | | 3.6 | global |
-| [adaptive_body_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_default_suspension](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_default_suspension) – The amount of time to suspend a domain | sending | 4 hours | 3.0 | binding, binding_group, domain, global |
-| [adaptive_default_suspension_enabled](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_default_suspension_enabled) – Enables and disables adaptive_rejection_rate_suspension_percentage | sending | false | 3.6.11 | binding, binding_group, domain, global |
-| [adaptive_ehlo_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_enabled](/momentum/3/3-reference/3-reference-conf-ref-adaptive-enabled) – Whether to enable the adaptive module for a specific scope | sending | false | 3.0 | binding, binding_group, domain, global |
-| [adaptive_fbl_volume_threshold](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_fbl_volume_threshold) – The minimum total delivered mail count over a period during which FBL stats are collected | sending | 20000 | 3.2 | binding, binding_group, domain, global |
-| [adaptive_idle_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_mailfrom_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_deliveries_per_connection](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_outbound_connections](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_recipients_per_batch](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_recipients_per_connection](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_resident_active_queue](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_retries](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_max_retry_interval](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0.17 | binding, binding_group, domain, global |
-| [adaptive_notification_events](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_notification_events) – Configure the events that will trigger an email notification | sending | throttle suspension blackhole | 3.5.6, 3.6.1 | binding, binding_group, domain, global |
-| [adaptive_notification_interval](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_notification_interval) – The throttle for adaptive alert notification emails | sending | 3600 | 3.0 | binding, binding_group, domain, global |
-| [adaptive_outbound_throttle_messages](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_positive_adjustment_interval](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_positive_adjustment_interval) – Throttle positive adjustments to adaptive changes | sending | 3600 | 3.0 | binding, binding_group, domain, global |
-| [adaptive_rcptto_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_rejection_rate_suspension_percentage](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_rejection_rate_suspension_percentage) – The rate at which messages are rejected | sending | 20 | 3.0 | binding, binding_group, domain, global |
-| [adaptive_retry_fuzz](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_retry_fuzz) – Allow greater control over bulk message retries in cases where all messages for a domain have to be retried | sending | 4096 | 3.0.26 | binding, binding_group, domain, global |
-| [adaptive_retry_interval](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_rset_timeout](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.options) – Set the bounds for the adaptive option | sending | | 3.0 | binding, binding_group, domain, global |
-| [adaptive_scope](/momentum/3/3-reference/3-reference-conf-ref-adaptive-scope) – Define the scope applicable to adaptive delivery | sending | auto | 3.3 | binding, binding_group, domain, global |
-| [adaptive_sweep_rule](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_sweep_rule) *(scope)* – Set the thresholds and actions for adaptive fbl and bounce rules | sending | | 3.2 | binding, binding_group, domain, global |
-| [adaptive_sweep_rule_enabled](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.adaptive_sweep_rule_enabled) – Enable or disable adaptive_sweep_rule in a specified scope | sending | 1 | 3.2 | binding, binding_group, domain, global |
-| [codes](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.codes) – adaptive_sweep_rule bounce or fbl codes | sending | | 3.2 | adaptive_sweep_rule |
-| [high_action](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.high_action) – The action when the high threshold is met and the number of delivery attempts exceeds the adaptive_attempt_threshold | sending | "suspend" "4 hours" | 3.2 | adaptive_sweep_rule |
-| [high_threshold](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.high_threshold) – The high threshold value for the sum of the rates of the bounce codes or FBL categories | sending | 10 | 3.2 | adaptive_sweep_rule |
-| [low_action](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.low_action) – The action when the high threshold is not met but the low threshold is met | sending | "throttle" "down" | 3.2 | adaptive_sweep_rule |
-| [low_threshold](/momentum/3/3-reference/3-reference-modules-adaptive#modules.adaptive.low_threshold) – The low threshold value for the sum of the rates of the bounce codes or FBL categories | sending | 5 | 3.2 | adaptive_sweep_rule |
-
-### Bounce Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [async_bounce_rendering](/momentum/3/3-reference/3-reference-conf-ref-async-bounce-rendering) – Which thread pool to use for bounce rendering | sending | true | 3.0 | global |
-| [bounce_behavior](/momentum/3/3-reference/3-reference-conf-ref-bounce-behavior) – Configure the action taken when a message is classified as a bounce | sending | pass | 3.0 | domain, global |
-| [bounce_cache_size](/momentum/3/3-reference/conf-ref-bounce-cache-size) – Set the maximum size of the bounce classification cache | na | 16384 | 3.6.9 | global |
-| [bounce_cache_ttl](/momentum/3/3-reference/conf-ref-bounce-cache-ttl) – Set the maximum TTL for the bounce classification cache | na | 60 | 3.6.9 | global |
-| [bounce_domains](/momentum/3/3-reference/3-reference-conf-ref-bounce-domains) – Configure the list of domains eligible for bounce processing | receiving | | 3.0 | global, pathway, pathway_group |
-| [bounce_pattern](/momentum/3/3-reference/3-reference-conf-ref-bounce-pattern) – Configure the pattern that inbound email addresses must match to be considered bounces | sending | | 3.0 | domain, global |
-| [bounce_suppress_list](/momentum/3/3-reference/3-reference-conf-ref-bounce-suppress-list) – Configure a list of email addresses that may not be considered original recipients | sending | | 3.0 | global |
-| [bounces_inline_original](/momentum/3/3-reference/3-reference-conf-ref-bounces-inline-original) – How much of the original message to include in MDNs | sending | headers | 3.0 | binding, binding_group, domain, global |
-| [generate_bounces](/momentum/3/3-reference/3-reference-conf-ref-generate-bounces) – Generate MDNs if mail is failed after reception | sending | true | 3.0 | binding, binding_group, domain, global |
-| [generate_bounces_for_multi_recipient_policy_rejections](/momentum/3/3-reference/3-reference-conf-ref-generate-bounces-for-multi-recipient-policy-rejections) – Generate MDNs after reception for policy rejections | receiving | true | 3.0 | global, pathway, pathway_group |
-| [generate_delay_dsn](/momentum/3/3-reference/3-reference-conf-ref-generate-delay-dsn) – Generate DSNs if mail is delayed | sending | false | 3.0 | binding, binding_group, domain, global |
-| [inline_transfail_processing](/momentum/3/3-reference/3-reference-conf-ref-inline-transfail-processing) – How to handle transient failure processing | sending | 1 | 3.0 | global |
-| [mailerdaemon](/momentum/3/3-reference/3-reference-conf-ref-mailerdaemon) – Set the From: address for MDNs | sending | | 3.0 | binding, binding_group, domain, global |
-| [mdn_failures_notify](/momentum/3/3-reference/3-reference-conf-ref-mdn-failures-notify) – Mailbox to which to send null recipient MDNs | sending | | 3.0 | binding, binding_group, domain, global |
-| [never_retry](/momentum/3/3-reference/3-reference-conf-ref-never-retry) – Whether or not to retry delivery of failed messages | sending | false | 3.0 | binding, binding_group, domain, global |
-| [soft_bounce_drain_rate](/momentum/3/3-reference/3-reference-conf-ref-soft-bounce-drain-rate) – How many soft bounces to place into the mail queues in a single scheduler iteration | sending | 100 | 3.0 | global |
-| [transfail_drain_rate](/momentum/3/3-reference/3-reference-conf-ref-transfail-drain-rate) – The maximum number of messages to pop off the transient failure queue in a single scheduler iteration | sending | 100 | 3.0 | global |
-
-### Cluster Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [arp_all_hosts](/momentum/3/3-reference/ecelerity-cluster-conf#option.arp_all_hosts) – Whether or not to aggressively send out ARP information to ensure that the network knows about the IP address assignment (cluster-specific) | na | true | 3.0.13 | cluster |
-| [control_cache](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs) – The name of the cache file storing asynchronous responses | na | | 3.0 | logs |
-| [control_group](/momentum/3/3-reference/ecelerity-cluster-conf#option.control_group) – The cluster console manager utilizes this group to issue cluster-wide configuration commands (cluster-specific) | na | ec_console | 3.0 | cluster |
-| [debug_level](/momentum/3/3-reference/modules-overview-implicit) – Set the module debug level (applicable to all modules) (cluster-specific) | na | error | 3.0 | cluster |
-| [dir_mode](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs) – The octal representation of the file permissions | na | | 3.0 | logs |
-| [duravip_balance_set_size](/momentum/3/3-reference/ecelerity-cluster-conf#option.duravip_balance_set_size) – When balancing DuraVIP™s, how many to process as a batch in response to a balance request (cluster-specific) | na | 1 | 3.0 | cluster |
-| [enabled](/momentum/3/3-reference/modules-overview) – Whether or not the module is enabled (cluster-specific) | na | true | 3.0 | cluster |
-| [file_mode](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs) – The octal representation of the file permissions (cluster logs) | na | | 3.0 | logs |
-| [heartbeat_start_delay](/momentum/3/3-reference/ecelerity-cluster-conf#option.heartbeat_start_delay) – Seconds to wait after startup before the cluster heartbeat is activated (cluster-specific) | na | 15 | 3.0 | cluster |
-| [heartbeats_per_sec](/momentum/3/3-reference/ecelerity-cluster-conf#option.heartbeats_per_sec) – How often to send a heartbeat (cluster-specific) | na | 1 | 3.0 | cluster |
-| [if_check_interval](/momentum/3/3-reference/ecelerity-cluster-conf#option.if_check_interval) – How often to run through a maintenance cycle (cluster-specific) | na | 30 | 3.0 | cluster |
-| [if_down_limit](/momentum/3/3-reference/ecelerity-cluster-conf#option.if_down_limit) – How long to wait before deciding to bring an IP online (cluster-specific) | na | 4 | 3.0 | cluster |
-| [log_active_interval](/momentum/3/3-reference/ecelerity-cluster-conf#option.log_active_interval) – Used to tune centralized logging (cluster-specific) | na | 1 | 3.0 | cluster |
-| [log_group](/momentum/3/3-reference/ecelerity-cluster-conf#option.log_group) – Whether or not panic log messages are broadcast over spread (cluster-specific) | na | | 3.0 | cluster |
-| [log_idle_interval](/momentum/3/3-reference/ecelerity-cluster-conf#option.log_idle_interval) – The amount of time to sleep before looking for another segment (cluster-specific) | na | 10 | 3.0 | cluster |
-| [logfile](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs.logfile) – Describe the full path to the log file | na | | 3.0 | logs |
-| [logs](/momentum/3/3-reference/ecelerity-cluster-conf) – Define the location of the cluster manager logs (cluster-specific) | na | | 3.0 | cluster |
-| [logs](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs) *(scope)* – Configure centralized log files on the cluster manager | na | | 3.0 | global |
-| [manager](/momentum/3/3-reference/cluster-config-logging#cluster.config.logging.complex) *(scope)* – Define managers for subclusters | na | | 3.0 | logs |
-| [max_idle](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs.max_idle) – The maximum number of seconds a log file may be left open | na | | 3.0 | logs |
-| [max_open](/momentum/3/3-reference/eccluster-conf-3#eccluster.conf3.logs.max_open) – The maximum number of concurrently open log files | na | | 3.0 | logs |
-| [mbus_daemon](/momentum/3/3-reference/ecelerity-cluster-conf) *(deprecated)* – The port that the messaging bus listens on (cluster-specific) | na | 4803 | 3.0 | cluster |
-| [nodeaddr](/momentum/3/3-reference/ecelerity-cluster-conf#option.nodeaddr) – The canonical cluster address for the node (cluster-specific) | na | | 3.0 | cluster |
-| [nodename](/momentum/3/3-reference/ecelerity-cluster-conf#option.nodename) – Override the node name that is used to canonically identify this cluster node (cluster-specific) | na | | 3.0 | cluster |
-| [replicate](/momentum/3/3-reference/ecelerity-cluster-conf) *(scope)* – Define the cluster replication framework (cluster-specific) | na | | 3.0 | cluster |
-| [subcluster](/momentum/3/3-reference/mbus-conf) *(deprecated)* – The name of the subcluster (cluster-specific) | na | | 3.0 | cluster |
-| [topology](/momentum/3/3-reference/3-reference-cluster-config-duravip) *(scope)* – Define the cluster network topology (cluster-specific) | na | | 3.0 | cluster |
-| [unconditional_rebind](/momentum/3/3-reference/ecelerity-cluster-conf#option.unconditional_rebind) – Whether the full set_binding logic is invoked or not (cluster-specific) | na | true | 3.0 | cluster |
-| [view_balance_interval](/momentum/3/3-reference/ecelerity-cluster-conf#option.view_balance_interval) – How often DuraVIP™ views are subject to balancing (cluster-specific) | na | 10 | 3.0 | cluster |
-| [view_broadcast_interval](/momentum/3/3-reference/ecelerity-cluster-conf#option.view_broadcast_interval) – How often to speculatively broadcast a view announcement to the cluster (cluster-specific) | na | 0 | 3.0 | cluster |
-| [view_mature_time](/momentum/3/3-reference/ecelerity-cluster-conf#option.view_mature_time) – How long a DuraVIP™ view needs to remain unchanged before considering it "mature" (cluster-specific) | na | 5 | 3.0 | cluster |
-
-### HTTP Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [delivery_response_timeout](/momentum/3/3-reference/3-reference-conf-ref-delivery-response-timeout) – Time to wait for a response to an outbound request | sending | 5000 | 3.5.6 | binding, domain, global |
-| [http_basic_auth](/momentum/3/3-reference/3-reference-conf-ref-http-basic-auth) – Define the user credentials when using basic HTTP authentication | both | | 3.5.6 | binding, binding_group, domain, global |
-| [http_host](/momentum/3/3-reference/3-reference-conf-ref-http-host) – Define the HTTP host | sending | | 3.5.6 | binding, binding_group, domain, global |
-| [http_method](/momentum/3/3-reference/3-reference-conf-ref-http-method) – Define the HTTP method to use | sending | POST | 3.5.6 | binding, binding_group, domain, global |
-| [http_uri](/momentum/3/3-reference/3-reference-conf-ref-http-uri) – Define the HTTP URI that you wish to connect to | sending | | 3.5.6 | binding, binding_group, domain, global |
-| [http_version](/momentum/3/3-reference/3-reference-conf-ref-http-version) – Define the HTTP version to use | sending | 1.1 | 3.5.6 | binding, binding_group, domain, global |
-
-### Listen Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [accept_queue_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.accept_queue_backlog) – The accept queue backlog | receiving | 0 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| [context](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.context) – Use to set arbitrary connection context key value pairs | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [control_listener](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener) *(scope)* – The listener for incoming control connections | na | | 3.0 | global |
-| [disable_chunked](/momentum/mobile/mobile-reference/mobility-mm-7-listener) – An option used with aggregators who do not support chunked transfer-coding (Mobile Momentum) | both | false | 3.1.4 | http_listener, listen, pathway, pathway_group, peer |
-| [eccluster_listener](/momentum/3/3-reference/ecelerity-cluster-conf#ecelerity-cluster.conf.eccluster_listener) *(scope)* – Control communication between cluster nodes (cluster-specific) | na | | 3.0.15 | global |
-| [ecstream_listener](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener) *(scope)* – The listener for incoming ECSTREAM connections | receiving | | 3.0 | global |
-| [esmtp_listener](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.esmtp_listener) *(scope)* – The listener for incoming SMTP connections | receiving | | 3.0 | global |
-| [http_listener](/momentum/3/3-rest/rest-http-listener) *(scope)* – The listener used with the REST injector | sending | | 3.1.4 | global |
-| [listen](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.attributes) *(scope)* – Specify the socket that a listener listens on | receiving | | 3.0 | control_listener, ecstream_listener, esmtp_listener, http_listener, msgcserver_listener, xmpp_listener |
-| [listen_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listen_backlog) – The listen backlog | receiving | 500 (*3.0*) | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [listener_sessions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listener_sessions) – Specifies the maximum number of concurrent sessions that can be established to a listener | receiving | 0 | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [max_request_size](/momentum/3/3-rest/rest-http-listener) – Limit the size of an HTTP request | both | | 3.1.4 | http_listener, listen, pathway, pathway_group, peer |
-| [mcmt_reception](/momentum/mobile/mobile-reference/mm-7-mcmt-reception) – Configure a listener to accept the Multi-Channel Message Type (Mobile Momentum) | both | passthru | 3.1.4 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [timeout](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.timeout) – The timeout for idle control connections on Control_Listeners | receiving | 60 | 3.0 | control_listener |
-| [tls_verified_peer_is_authorized](/momentum/3/3-rest/rest-http-listener) – Mark requests that use a verified SSL Client certificate as being authorized | sending | false | 3.1.4 | http_listener, listen, pathway, peer |
-
-### Logging Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [critical](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | ALL | 3.0 | debug_flags |
-| [debug](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | | 3.0 | debug_flags |
-| [debug_flags](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) *(scope)* – Configure debug verbosity | na | | 3.0 | global |
-| [error](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | ALL | 3.0 | debug_flags |
-| [info](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | | 3.0 | debug_flags |
-| [log_requests_to_paniclog](/momentum/3/3-rest/rest-http-listener) – Whether to log REST injection requests | sending | false | 3.1.4 | http_listener, listen, pathway, pathway_group, peer |
-| [notice](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | | 3.0 | debug_flags |
-| [response_transcode_pattern](/momentum/3/3-reference/3-reference-conf-ref-response-transcode-pattern) – The regex pattern for comparison to a server response | sending | | 3.0 | binding, binding_group, domain, global |
-| [response_transcode_replace](/momentum/3/3-reference/3-reference-conf-ref-response-transcode-replace) – The replacement string for a server response | sending | | 3.0 | binding, binding_group, domain, global |
-| [signing_stats](/momentum/3/3-reference/3-reference-conf-ref-signing-stats) – Control how signing statistics are recorded | sending | all | 3.0.17 | global |
-| [timestampformat](/momentum/3/3-reference/3-reference-conf-ref-timestampformat) – Set the timestamp format used when logging to stderr | na | [%a %d %b %Y %H:%M:%S] | 3.0 | global |
-| [warning](/momentum/3/3-reference/3-reference-conf-ref-debug-flags) – Set the debug level | na | | 3.0 | debug_flags |
-
-### Misc Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [default_charset](/momentum/3/3-reference/3-reference-conf-ref-default-charset) – Control the character set | both | us-ascii | 3.0 | global, pathway, pathway_group |
-| [delayed_queue_scan_interval](/momentum/3/3-reference/3-reference-conf-ref-delayed-queue-scan-interval) – How often to call the maintainer for a domain | sending | 15 | 3.0 | global |
-| [disable_nagle_algorithm](/momentum/3/3-reference/3-reference-conf-ref-disable-nagle-algorithm) – Disable nagle algorithm on sockets | both | false | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, global, http_listener, listen, xmpp_listener |
-| [enable](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3) – Enable or disable a listener scope | receiving | true | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| [events_per_iter](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.events_per_iter) – Employ when using a Concurrency greater than 1 | receiving | 0 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [file_mode](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener) – File access rights in octal notation | na | 0660 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| [license](/momentum/3/3-reference/3-reference-conf-ref-license) – Specify an alternate license location | na | /opt/msys/ecelerity/etc (*non-dynamic*) | 3.0 | global |
-| [local_changes_file](/momentum/3/3-reference/3-reference-conf-ref-local-changes-file) – The file for writing local configuration changes | na | /opt/msys/ecelerity/etc/local_changes.conf | 3.0 | global |
-| [local_changes_only](/momentum/3/3-reference/3-reference-conf-ref-local-changes-only) – Whether there is a file for writing local configuration change | na | false | 3.0 | global |
-| [permastore_interval](/momentum/3/3-reference/3-reference-conf-ref-permastore-interval) – The frequency for saving various statistics | na | 300 | 3.0 | global |
-| [pidfile](/momentum/3/3-reference/3-reference-conf-ref-pidfile) – Set the PID file path | na | /var/run/ecelerity.pid (*non-dynamic*) | 3.0 | global |
-| [reconfig_message](/momentum/3/3-reference/ecelerity-conf#reconfig_message) – The message if the configuration has changed | receiving | 4.3.2 Reconfiguration in progress | 3.0 | esmtp_listener |
-| [reserve_maintenance_interval](/momentum/3/3-reference/3-reference-conf-ref-reserve-maintenance-interval) – How often to perform mail queue maintenance | sending | 15 | 3.0 | global |
-| [send_8bitmime](/momentum/3/3-reference/3-reference-conf-ref-send-8-bitmime) – Enable advertising of 8BITMIME when sending mail | sending | no | 3.0 | binding, binding_group, domain, global |
-| [smtp_extensions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.extensions) – Array of SMTP extensions | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [tcp_recv_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_recv_buffer_size) – The size of the TCP receive buffer size | receiving | 4096 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [tcp_send_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_send_buffer_size) – The size of the TCP send buffer | receiving | 4096 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [transform_8bitmime_content](/momentum/3/3-reference/3-reference-conf-ref-transform-8-bitmime-content) – Enable 8BITMIME downconversion when sending mail | sending | ifneeded (*3.1.6*) | 3.0 | binding, binding_group, domain, global |
-| [unlink_on_spool_in_failure](/momentum/3/3-reference/3-reference-conf-ref-unlink-on-spool-in-failure) – Whether or not to remove malformed messages | receiving | true | 3.0 | global |
-| [watchdog_interval](/momentum/3/3-reference/conf-ref-watchdog-interval) *(deprecated)* – If Momentum is unresponsive for this length of time, it will be restarted | na | 60 | 3.0 | global |
-| [xclient](/momentum/3/3-reference/3-reference-conf-ref-xclient) – Use the XCLIENT extension to SMTP for outbound mail | sending | no | 3.0 | binding, binding_group, domain, global |
-
-### Module Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [dkim](/momentum/3/3-reference/conf-ref-dkim) – Enable or disable signing messages | sending | | 3.0 | binding, binding_group, domain, global |
-| [domainkeys](/momentum/3/3-reference/3-reference-conf-ref-domainkeys) – Enable or disable domainkeys signing | sending | | 3.0 | binding, binding_group, domain, global |
-| [enable_fbl_header_insertion](/momentum/3/3-reference/3-reference-conf-ref-enable-fbl-header-insertion) – Enable or disable fbl header insertion | sending | | 3.0 | binding, binding_group, domain, global |
-| [opendkim_sign](/momentum/3/3-reference/3-reference-conf-ref-opendkim-sign) – Whether or not to enable OpenDKIM signing | sending | true (*non-dynamic*) | 3.6 | binding, binding_group, domain, global |
-
-### Multiple-event Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [delivery_pool](/momentum/3/3-reference/conf-ref-delivery-pool) – Associate an eventloop with mail delivery | sending | (*non-dynamic*) | 3.6 | global |
-| [event_loop](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listeners.multi-core) – Associate a listener with an eventloop | sending | (*non-dynamic*) | 3.6 | ecstream_listener, esmtp_listener, listen |
-| [eventloop](/momentum/3/3-reference/conf-ref-eventloop) *(scope)* – Define a pool of event loops to enable multiple event loop configuration | both | (*non-dynamic*) | 3.6 | global |
-| [maintainer_pool](/momentum/3/3-reference/conf-ref-maintainer-pool) – Create an eventloop for maintainers | both | (*non-dynamic*) | 3.6 | global |
-
-### Push Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [apn_expiry](/momentum/3/3-push/apns-apn-expiry) – Define the number of seconds after which an APNs notification is no longer valid | sending | yes (*non-dynamic*) | 3.5.5 | binding, binding_group, domain, global |
-| [gcm_application_id](/momentum/3/3-push/push-gcm-gcm-application-id) – Define the package name of the Android application allowed to received notifications | sending | | 3.5.5 | binding, binding_group, domain, global |
-| [gcm_authorization_token_id](/momentum/3/3-push/push-gcm-gcm-authorization-token-id) – The authorization token that permits sending Google push notifications | sending | | 3.5.5 | binding, binding_group, domain, global |
-| [gcm_delay_while_idle](/momentum/3/3-push/push-gcm-gcm-delay-while-idle) – Whether or not to send the notification immediately if a device is idle | sending | false | 3.5.5 | binding, binding_group, domain, global |
-| [gcm_dry_run](/momentum/3/3-push/push-gcm-gcm-dry-run) – Test a request without actually sending a message | sending | false | 3.5.5 | binding, binding_group, domain, global |
-| [gcm_ttl](/momentum/3/3-push/push-gcm-ttl) – Default Time To Live for notifications | sending | -1 | 3.5.5 | binding, binding_group, domain, global |
-
-### Resource Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [_unsafe_spool](/momentum/3/3-reference/3-reference-conf-ref-unsafe-spool) – Allow dangerous spool semantics to be used | na | false | 3.0 | global |
-| [address_metrics_cleanse_interval](/momentum/3/3-reference/3-reference-conf-ref-address-metrics-cleanse-interval) – The interval for refreshing address metrics | sending | 3600 | 3.0 | global |
-| [address_metrics_lifetime](/momentum/3/3-reference/3-reference-conf-ref-address-metrics-lifetime) – The TTL of address metrics | sending | 1800 | 3.0 | global |
-| [backlog](/momentum/3/3-reference/3-reference-conf-ref-threadpool) – The maximum number of jobs that can be queued up for a pool | na | 0 (*non-dynamic*) | 3.0 | threadpool |
-| [clear_mail_queue_maintainers](/momentum/3/3-reference/3-reference-conf-ref-clear-mail-queue-maintainers) – Reschedule the mail queue maintainer | both | false, true (*3.6*) | 3.0 | global |
-| [concurrency](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3) – Define number of available threads | receiving | 0 | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, threadpool, xmpp_listener |
-| [crypto_engine](/momentum/3/3-reference/3-reference-conf-ref-crypto-engine) – Enable hardware cryptography acceleration | both | | 3.0 | global |
-| [delayed_binding_domain_fuzz](/momentum/3/3-reference/3-reference-conf-ref-delayed-binding-domain-fuzz) – The time period to spread scheduled messages over when a bulk requeue is necessary | sending | 0 | 3.0.26 | binding, binding_group, global |
-| [disk_queue_drain_rate](/momentum/3/3-reference/3-reference-conf-ref-disk-queue-drain-rate) – Control the rate at which messages are spooled in on start-up | both | 100 | 3.0 | global |
-| [dns_cache_purge_interval](/momentum/3/3-reference/3-reference-conf-ref-dns-cache-purge-interval) – How often the DNS response cache is scanned for stale entries | sending | 60 | 3.0 | global |
-| [drop_body_after_trans_fail](/momentum/3/3-reference/3-reference-conf-ref-drop-body-after-trans-fail) – Number of retry attempts before freeing message memory | sending | 3 | 3.0 | binding, binding_group, domain, global |
-| [exclude_vctx_conn](/momentum/3/3-reference/conf-ref-exclude-vctx) – Exclude validation connection context keys from being journaled in the spool metadata | both | | 3.0 | binding, binding_group, domain, global |
-| [exclude_vctx_mess](/momentum/3/3-reference/conf-ref-exclude-vctx) – Exclude validation message context keys from being journaled in the spool metadata | both | | 3.0 | binding, binding_group, domain, global |
-| [expensive_batch_assessment](/momentum/3/3-reference/3-reference-conf-ref-expensive-batch-assessment) – Treat messages as equal even if the bodies or headers have been modified since reception | receiving | false | 3.0 | global |
-| [force_fsync](/momentum/3/3-reference/3-reference-conf-ref-force-fsync) – Ensure that data is synced to disk on reception | receiving | false | 3.0 | global |
-| [growbuf_size](/momentum/3/3-reference/3-reference-conf-ref-growbuf-size) – The size of an element in a growbuf chain | na | 16384 | 3.0 | global |
-| [initial_hash_buckets](/momentum/3/3-reference/3-reference-conf-ref-initial-hash-buckets) – Set the number of hash buckets used by the system | na | 32 | 3.1 | global |
-| [keep_message_dicts_in_memory](/momentum/3/3-reference/3-reference-conf-ref-keep-message-dicts-in-memory) – Preserve memory representation of metadata when memory is low | both | false (*non-dynamic*) | 3.0 | global |
-| [large_message_threshold](/momentum/3/3-reference/3-reference-conf-ref-large-message-threshold) – Consider a message large when its size exceeds this amount | both | 131072 | 3.0 | global |
-| [legacy_message_threshold](/momentum/3/3-reference/3-reference-conf-ref-legacy-message-threshold) – The maximum size allowed for messages being passed to legacy modules | both | 1048576 | 3.0 | global |
-| [mail_queue_check_vm_interval](/momentum/3/3-reference/3-reference-conf-ref-mail-queue-check-vm-interval) – How often to apply memory management reduction on mail queues | both | 60 | 3.0 | global |
-| [malloc2mmap_threshold](/momentum/3/3-reference/3-reference-conf-ref-malloc-2-mmap-threshold) – Use mmap when allocations exceed this amount | na | 4092 | 3.0 | global |
-| [masterdb_file](/momentum/3/3-reference/3-reference-conf-ref-masterdb-file) – Specify an alternate path for the statistics permastore | na | /var/log/ecelerity/ecdb (*non-dynamic*) | 3.0 | global |
-| [match_cache_life](/momentum/3/3-reference/3-reference-conf-ref-match-cache-life) – Set the maximum number of seconds that the match cache will be valid | na | 0 | 3.0 | global |
-| [match_cache_size](/momentum/3/3-reference/3-reference-conf-ref-match-cache-size) – The size of the cache that holds the results of looking up matching scopes | na | 16384 | 3.0 | global |
-| [max_message_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_message_size) – The maximum number of bytes allowed in a single message | receiving | 0 | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [max_resident_active_queue](/momentum/3/3-reference/3-reference-conf-ref-max-resident-active-queue) – Threshold above which messages are not held in memory | sending | 250 | 3.0 | binding, binding_group, domain, global |
-| [max_resident_messages](/momentum/3/3-reference/3-reference-conf-ref-max-resident-messages) – Threshold above which messages are not held in memory | sending | 32768 | 3.0 | binding, binding_group, global |
-| [max_resident_transfails](/momentum/3/3-reference/3-reference-conf-ref-max-resident-transfails) – If the transient failure queue grows beyond this size, messages are swapped out of memory | sending | 100 | 3.0 | global |
-| [max_timed_events_per_iter](/momentum/3/3-reference/3-reference-conf-ref-max-timed-events-per-iter) – The maximum numer of timed events per scheduler iteration | na | 1024 | 3.0.22 | global |
-| [memory_goal](/momentum/3/3-reference/3-reference-conf-ref-memory-goal) – Configure physical memory usage goal | na | 90 | 3.0 | global |
-| [memory_hwm](/momentum/3/3-reference/3-reference-conf-ref-memory-hwm) – Configure physical memory usage high-water mark | na | 95 | 3.0 | global |
-| [migrate_connections_between_sibling_domains](/momentum/3/3-reference/3-reference-conf-ref-migrate-connections-between-sibling-domains) – Optimize connections for sibling domains | both | true | 3.4 | global |
-| [mime_parse_large_messages_during_reception](/momentum/3/3-reference/3-reference-conf-ref-mime-parse-large-messages-during-reception) – Configure whether large messages are parsed upon reception or just in time | receiving | true | 3.0 | global |
-| [pcre_cache_size](/momentum/3/3-reference/3-reference-conf-ref-pcre-cache-size) – Set the maximum size of the ec_pcre_compile cache | na | 100 | 3.0 | global |
-| [pcre_cache_ttl](/momentum/3/3-reference/3-reference-conf-ref-pcre-cache-ttl) – Set the maximum TTL for the ec_pcre_compile cache | na | 300 | 3.0 | global |
-| [pool_name](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3) – Associate a threadpool with a listener | receiving | | 3.0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [scheduler](/momentum/3/3-reference/3-reference-conf-ref-scheduler) – Override the default IO scheduler | na | (*non-dynamic*) | 3.0 | global |
-| [spool_mode](/momentum/3/3-reference/3-reference-conf-ref-spool-mode) – Set the file mode for newly created spool files | na | 0640 (*non-dynamic*) | 3.0 | global |
-| [spoolbase](/momentum/3/3-reference/3-reference-conf-ref-spoolbase) – Set the base directory for the spool | na | /var/spool/ecelerity (*non-dynamic*) | 3.0 | global |
-| [stack_size](/momentum/3/3-reference/3-reference-conf-ref-threadpool) – The stack space for a threadpool | na | 0 (*non-dynamic*) | 3.0 | threadpool |
-| [tcp_buffer_size](/momentum/3/3-reference/3-reference-conf-ref-tcp-buffer-size) – Maximum tcp buffer size for outbound connections | sending | 32768 | 3.0 | cluster, global |
-| [threadpool](/momentum/3/3-reference/3-reference-conf-ref-threadpool) *(scope)* – Configure thread pool specific options | na | | 3.0 | global |
-| [trace_smtp_mode](/momentum/3/3-reference/3-reference-conf-ref-trace-smtp-mode) – Set the default permissions of trace files | sending | 0640 (*non-dynamic*) | 3.0 | global |
-| [use_iflist_cache](/momentum/3/3-reference/3-reference-conf-ref-use-iflist-cache) – Whether or not to cache the list of interfaces configured by the system | sending | 0 (*non-dynamic*) | 3.0 | global |
-| [use_mmap](/momentum/3/3-reference/3-reference-conf-ref-use-mmap) – Use mmap when spooling messages from disk | na | false | 3.0 | global |
-| [use_sendfile](/momentum/3/3-reference/3-reference-conf-ref-use-sendfile) – Use sendfile() when sending mail | sending | false | 3.0 | global |
-
-### RFC Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [allow_null_envelope_sender](/momentum/3/3-reference/3-reference-conf-ref-allow-null-envelope-sender) – Allow the null envelope sender in email addresses | receiving | true | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [allow_trailing_whitespace_in_commands](/momentum/3/3-reference/3-reference-conf-ref-allow-trailing-whitespace-in-commands) – Allow trailing white space at the end of an SMTP command | receiving | false | 3.0.26 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [require_ehlo](/momentum/3/3-reference/3-reference-conf-ref-require-ehlo) – Reject mail from clients that do not say HELO | receiving | false | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [rfc2821_allow_whitespace_in_envelope](/momentum/3/3-reference/3-reference-conf-ref-rfc-2821-allow-whitespace-in-envelope) – Permit trailing white space before the final CRLF | receiving | false | 3.0.26 | global, pathway, pathway_group |
-| [rfc2821_pedantic_address_rules](/momentum/3/3-reference/3-reference-conf-ref-rfc-2821-pedantic-address-rules) – Allow relaxation of enforcement of the rfc2821 address rules | receiving | true | 3.0 | global, pathway, pathway_group |
-| [rfc2822_date_header](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-date-header) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ifneeded | 3.0 | global, pathway, pathway_group |
-| [rfc2822_lone_lf_in_body](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-lone-lf-in-body) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ignore | 3.0 | global, pathway, pathway_group |
-| [rfc2822_lone_lf_in_headers](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-lone-lf-in-headers) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | pedantic | 3.0 | global, pathway, pathway_group |
-| [rfc2822_max_line_length](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-max-line-length) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ignore | 3.0 | global, pathway, pathway_group |
-| [rfc2822_max_line_length_policy](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-max-line-length-policy) – Determine how non-RFC-compliant line lengths are handled | receiving | none | 3.0.26 | global, pathway, pathway_group |
-| [rfc2822_messageid_header](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-messageid-header) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ifneeded | 3.0 | global, pathway, pathway_group |
-| [rfc2822_missing_headers](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-missing-headers) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | reject | 3.0 | global, pathway, pathway_group |
-| [rfc2822_trace_headers](/momentum/3/3-reference/3-reference-conf-ref-rfc-2822-trace-headers) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | true | 3.0 | global, pathway, pathway_group |
-
-### Routing Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [allow_ip_literal](/momentum/3/3-reference/3-reference-conf-ref-allow-ip-literal) – Allow IP addresses in email addresses | receiving | true | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [blackhole](/momentum/3/3-reference/3-reference-conf-ref-blackhole) – Blackhole mail | sending | false | 3.0 | binding, binding_group, domain, global |
-| [delivery_method](/momentum/3/3-reference/3-reference-conf-ref-delivery-method) – Set the delivery method | sending | ESMTP (*3.0*), SMTP (*2.2*) | 3.0 | binding, binding_group, domain, global |
-| [dns_fallback_to_tcp](/momentum/3/3-reference/3-reference-conf-ref-dns-fallback-to-tcp) – Whether or not to fail over to TCP in place of UDP | both | false | 3.0.22 | global |
-| [domain_for_unqualified_recipient_addresses](/momentum/3/3-reference/3-reference-conf-ref-domain-for-unqualified-recipient-addresses) – Configure a domain which will be used to resolve delivery for unqualified addresses | receiving | | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [domain_for_unqualified_sender_address](/momentum/3/3-reference/3-reference-conf-ref-domain-for-unqualified-sender-address) – Configure a domain which will be used to substitute for unqualified sender addresses | receiving | | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [ecstream_port](/momentum/3/3-reference/3-reference-conf-ref-ecstream-port) – Configure the port for ecstream deliveries | sending | 1825 | 3.2 | binding, binding_group, domain, global |
-| [fully_resolve_before_smtp](/momentum/3/3-reference/3-reference-conf-ref-fully-resolve-before-smtp) – Resolve all MX and A records before attempting delivery | sending | true | 3.0 | binding, binding_group, domain, global |
-| [gateway](/momentum/3/3-reference/3-reference-conf-ref-gateway) – Configure a static SMTP route for mail | sending | | 3.0 | binding, binding_group, domain, global |
-| [lmtp_port](/momentum/3/3-reference/3-reference-conf-ref-lmtp-port) – Configure the port for LMTP deliveries | sending | 2003 | 3.0 | binding, binding_group, domain, global |
-| [only_use_best_mx_for_relay_domains](/momentum/3/3-reference/3-reference-conf-ref-only-use-best-mx-for-relay-domains) – If this is set to true only the lowest numerical priority MXs are used | sending | true | 3.0 | global |
-| [open_relay](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.open_relay) – Whether the MTA is an open relay or not | receiving | false | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [prohibited_hosts](/momentum/3/3-reference/3-reference-conf-ref-prohibited-hosts) – Prevent mail from being delivered to invalid destinations | sending | | 3.0 | global |
-| [relay_domains](/momentum/3/3-reference/3-reference-conf-ref-relay-domains) – Configure the list of domains for which Momentum relays mail | receiving | | 3.0 | global, pathway, pathway_group |
-| [relay_for_sending_domains](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.relay_for_sending_domains) – Domains that may use the MTA as a relay | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [relay_hosts](/momentum/3/3-reference/3-reference-conf-ref-relay-hosts) – Configure the list of hosts for which Momentum relays mail | receiving | | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [remote_smtp_port](/momentum/3/3-reference/3-reference-conf-ref-remote-smtp-port) – Set the port to be used for SMTP deliveries | sending | 25 | 3.0 | binding, binding_group, domain, global |
-| [resolv_conf](/momentum/3/3-reference/3-reference-conf-ref-resolv-conf) – Specify a custom resolv.conf file | sending | | 3.0 | global |
-| [routes](/momentum/3/3-reference/3-reference-conf-ref-routes) – Configure message routing | sending | | 3.0 | domain, global |
-| [use_ipv6](/momentum/3/3-reference/3-reference-conf-ref-use-ipv-6) – Affects the selection of IPv6 hosts in the SMTP client | sending | false | 3.0 | global |
-
-### Security Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [always_allow](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding) – When set to true, authentication is considered to have succeeded, unless always_deny is set | receiving | false | 3.0 | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [always_deny](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding) – If set to true, authentication is considered to have failed | receiving | false | 3.0 | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [authcrammd5parameters](/momentum/3/3-reference/conf-aaa#conf.inbound-auth.cram-md5) – Configure CRAM-MD5 authentication | receiving | | 3.0 | control_listener, esmtp_listener, listen, pathway, pathway_group |
-| [authdigestmd5parameters](/momentum/3/3-reference/conf-aaa#conf.inbound-authdigest-md5) – Configure DIGEST-MD5 authentication | receiving | | 3.0 | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [authloginparameters](/momentum/3/3-reference/conf-aaa#conf.control_authen.clear.text) – Configure clear text login authentication | receiving | | 3.0 | control_listener, esmtp_listener, listen, pathway, pathway_group |
-| [authorization](/momentum/3/3-reference/3-reference-conf-ref-authorization) *(scope)* – Configure the console commands applicable to users | na | | 3.0 | global |
-| [authorizationparameters](/momentum/3/3-reference/conf-aaa#conf.control_authz.ecauth) – AuthorizationParameters dictionary points to authorization information | receiving | | 3.0 | control_listener, esmtp_listener, listen |
-| [authplainparameters](/momentum/3/3-reference/conf-aaa#conf.inbound-auth.plain.text) – Configure plain text login authentication | receiving | | 3.0 | esmtp_listener, http_listener, listen, pathway, pathway_group, xmpp_listener |
-| [capabilities](/momentum/3/3-reference/3-reference-conf-ref-capabilities) – Selectively retain root capabilities | na | (*non-dynamic*) | 3.0 | security |
-| [chroot](/momentum/3/3-reference/3-reference-conf-ref-chroot) – chroot to a secure environment | na | (*non-dynamic*) | 3.0 | security |
-| [enable_authentication](/momentum/3/3-reference/conf-ecelerity-conf#conf.inbound-mail) – Whether or not to enable authentication | receiving | | 3.0 | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [enable_authorization](/momentum/3/3-reference/conf-aaa#conf.control_authz) – Whether or not to enable authorization for console commands | receiving | | 3.0 | control_listener, listen, peer |
-| [group](/momentum/3/3-reference/3-reference-conf-ref-user) – Group identity to assume after startup | na | ecuser (*non-dynamic*) | 3.0 | security |
-| [peer](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.config.acls) *(scope)* – Create an ACL within a specific listener | receiving | | 3.0 | control_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [privileges](/momentum/3/3-reference/3-reference-conf-ref-capabilities) – Selectively retain root capabilities (Solaris) | na | (*non-dynamic*) | 3.0 | security |
-| [role](/momentum/3/3-reference/3-reference-conf-ref-authorization) *(scope)* – Define a role within an authorization stanza | na | | 3.0 | authorization |
-| [security](/momentum/3/3-reference/3-reference-conf-ref-security) *(scope)* – Scope for defining which permissions are retained by which user | na | (*non-dynamic*) | 3.0 | global |
-| [supplemental_groups](/momentum/3/3-reference/3-reference-conf-ref-supplemental-groups) – Supplemental groups to assume after startup | na | (*non-dynamic*) | 3.0 | security |
-| [use_ssl](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.use_ssl) – Whether to use SSL verification | receiving | false | 3.0 | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [user](/momentum/3/3-reference/3-reference-conf-ref-user) – User identity to assume after startup | na | ecuser (*non-dynamic*) | 3.0 | security |
-
-### Shaping Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [cluster_max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-cluster-max-outbound-connections) – Set the maximum number of outbound connections for a domain (cluster-specific) | sending | -1 | 3.0 | binding, domain, global, host |
-| [cluster_outbound_throttle_connections](/momentum/3/3-reference/3-reference-conf-ref-cluster-outbound-throttle-connections) – Limit the rate at which connections are established (cluster-specific) | sending | | 3.0 | binding_group, domain, global |
-| [cluster_outbound_throttle_messages](/momentum/3/3-reference/3-reference-conf-ref-cluster-outbound-throttle-messages) – Limit the rate at which messages are delivered (cluster-specific) | sending | | 3.0 | binding_group, domain, global |
-| [cluster_scope_max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-cluster-scope-max-outbound-connections) – Provide traffic shaping for outbound connections (cluster-specific) | sending | | 3.0.16 | binding, binding_group, domain, global, host |
-| [cluster_server_max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-cluster-server-max-outbound-connections) – Set the maximum number of outbound connections (cluster-specific) | sending | | 3.0 | binding, binding_group, global |
-| [connection_allocation_aggressiveness](/momentum/3/3-reference/3-reference-conf-ref-connection-allocation-aggressiveness) – Tune the aggressiveness for establishing new connections to domains | sending | normal | 3.0 | binding, binding_group, domain, global |
-| [ecstream_max_batch_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener) – The maximum number of ECStream messages to accept before dropping back into the scheduler (ECStream only) | receiving | 10000 | 3.0 | ecstream_listener, listen, pathway, pathway_group, peer |
-| [inbound_throttle_messages](/momentum/3/3-reference/3-reference-conf-ref-inbound-throttle-messages) – Rate limit inbound mail | receiving | | 3.0 | global, pathway, pathway_group |
-| [max_deliveries_per_connection](/momentum/3/3-reference/3-reference-conf-ref-max-deliveries-per-connection) – Maximum number of messages to deliver before closing a connection | sending | 0 | 3.0 | binding, binding_group, domain, global |
-| [max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-max-outbound-connections) – Set the maximum number of outbound connections | sending | 32 | 3.0 | binding, binding_group, domain, global, host |
-| [max_receptions_per_connection](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_receptions_per_connection) – The maximum number of messages allowed in a single session | receiving | 0 | 3.0 | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [max_recipients_per_batch](/momentum/3/3-reference/3-reference-conf-ref-max-recipients-per-batch) – The maximum number of recipients to send in a single outbound message transaction | sending | 100 | 3.0 | binding, binding_group, domain, global |
-| [max_recipients_per_connection](/momentum/3/3-reference/conf-ref-max-recipients-per-connection) – The maximum number of recipients to send on a connection | sending | 0 | 3.0 | binding, binding_group, domain, esmtp_listener, global, listen, peer |
-| [max_recipients_per_message](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.max_recipients_per_message) – The maximum number of recipients allowed in a message | receiving | 0 | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [max_retries](/momentum/3/3-reference/3-reference-conf-ref-max-retries) – Override the system configured max_retries | sending | | 3.0 | binding, binding_group, domain, global |
-| [max_retry_interval](/momentum/3/3-reference/3-reference-conf-ref-max-retry-interval) – Maximum retry interval | sending | 43200 | 3.0 | binding, binding_group, domain, global |
-| [never_attempt_expired_messages](/momentum/3/3-reference/3-reference-conf-ref-never-attempt-expired-messages) – Never attempt delivery of expired messages | sending | false | 3.0 | binding, binding_group, domain, global |
-| [outbound_throttle_connections](/momentum/3/3-reference/3-reference-conf-ref-outbound-throttle-connections) – Limit the rate at which connections are established | sending | | 3.0 | binding, binding_group, domain, global |
-| [outbound_throttle_messages](/momentum/3/3-reference/3-reference-conf-ref-outbound-throttle-messages) – Limit the rate at which messages are delivered | sending | | 3.0 | binding, binding_group, domain, global |
-| [scope_max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-scope-max-outbound-connections) – Provide traffic shaping for outbound connections | sending | | 3.2 | binding, binding_group, domain, global |
-| [server_max_file_descriptors](/momentum/3/3-reference/3-reference-conf-ref-server-max-file-descriptors) – Sets the maximum number of file descriptors usable by the system | na | 3000000 | 3.0 | global |
-| [server_max_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-server-max-outbound-connections) – Sets the maximum number of outbound connections | sending | 20000 | 3.0 | binding, binding_group, global |
-| [server_reserve_outbound_connections](/momentum/3/3-reference/3-reference-conf-ref-server-reserve-outbound-connections) – Sets the server-wide connection limit reserve | sending | 200 | 3.0 | global |
-| [service_sessions](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.service_sessions) – The maximum number of concurrent sessions that can be established to all listeners | receiving | 0 | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [siv_throttle_cache_size](/momentum/3/3-reference/3-reference-conf-ref-siv-throttle-cache-size) – Set the maximum number of named throttles | both | 100, 1000 (*3.0.24*) | 3.0 | global |
-| [suspend_delivery](/momentum/3/3-reference/3-reference-conf-ref-suspend-delivery) – Prevent outbound mail delivery | sending | false | 3.0 | binding, binding_group, domain, global |
-
-### SNMP Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [address](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Set the SNMP IP address and port | na | (*non-dynamic*) | 3.0 | snmp |
-| [community](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Set the SNMP Community option value to the desired SNMP community the agent is to join | na | public (*non-dynamic*) | 3.0 | snmp |
-| [snmp](/momentum/3/3-reference/3-reference-conf-ref-snmp) *(scope)* – Simple Network Management Protocol Support scope options | na | (*non-dynamic*) | 3.0 | global |
-| [snmp_traps](/momentum/3/3-reference/3-reference-conf-ref-snmp) *(scope)* – Enable and configure generation of SNMP traps | na | (*non-dynamic*) | 3.0 | global |
-| [state](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Whether to enable the SNMP agent | na | 1 (*non-dynamic*) | 3.0 | snmp |
-| [state](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Whether to enable generation of SNMP traps | na | 0 (*non-dynamic*) | 3.0 | snmp_traps |
-| [syscontact](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Set the SNMP SysContact option value | na | (*non-dynamic*) | 3.0 | snmp |
-| [sysdescription](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Set the SNMP SysDescription option value | na | (*non-dynamic*) | 3.0 | snmp |
-| [syslocation](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Set the SNMP SysLocation option value | na | (*non-dynamic*) | 3.0 | snmp |
-| [trap_destination](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Destination for SNMP trap | na | (*non-dynamic*) | 3.0 | snmp_traps |
-| [trap_interval](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Frequency of SNMP trap generation | na | 60 (*non-dynamic*) | 3.0 | snmp_traps |
-| [watch_interval](/momentum/3/3-reference/3-reference-conf-ref-snmp) – Interval for watched system variables for SNMP traps | na | 10 (*non-dynamic*) | 3.0 | snmp_traps |
-| [watch_variables](/momentum/3/3-reference/3-reference-conf-ref-snmp) – SNMP traps watch variables | na | (*non-dynamic*) | 3.0 | snmp_traps |
-
-### Timeout Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [body_timeout](/momentum/3/3-reference/3-reference-conf-ref-body-timeout) – Network timeout once the DATA phase is complete | sending | 600 | 3.0 | binding, binding_group, domain, global |
-| [connect_timeout](/momentum/3/3-reference/3-reference-conf-ref-connect-timeout) – Set the connection timeout | sending | 300 | 3.0 | binding, binding_group, domain, global |
-| [connect_timeout_to_delay](/momentum/3/3-reference/3-reference-conf-ref-connect-timeout-to-delay) – Time interval before moving mail into the delayed queue | sending | 900 | 3.0 | binding, binding_group, domain, global |
-| [control_client_timeout](/momentum/3/3-reference/3-reference-conf-ref-control-client-timeout) – Network timeout for Momentum control client connections | na | 60 | 3.0 | global |
-| [delay_dsn_max_retry_interval](/momentum/3/3-reference/3-reference-conf-ref-delay-dsn-max-retry-interval) – Maximum interval for sending DSNs to the sender of a message that has not yet been delivered | sending | 43200 | 3.0 | binding, binding_group, domain, global |
-| [delay_dsn_retry_interval](/momentum/3/3-reference/3-reference-conf-ref-delay-dsn-retry-interval) – Base interval for sending DSNs to the sender of a message that has not yet been delivered | sending | 3600 | 3.0 | binding, binding_group, domain, global |
-| [dns_expire_interval](/momentum/3/3-reference/3-reference-conf-ref-dns-expire-interval) – How often to check for domains with expired DNS information | sending | 10 | 3.0 | global |
-| [dns_failures_to_purge](/momentum/3/3-reference/3-reference-conf-ref-dns-failures-to-purge) – Configure the maximum number of DNS lookups | sending | 10 | 3.0 | domain, global |
-| [ecstream_idle_time](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf.ecstream_listener) – The number of seconds of inactivity before a client is disconnected (ECStream only) | receiving | 300 | 3.0 | ecstream_listener, listen, pathway, pathway_group, peer |
-| [ecstream_timeout](/momentum/3/3-reference/3-reference-conf-ref-ecstream-timeout) – The amount of time to wait for an ecstream connection to be established | sending | 600 | 3.2 | binding, binding_group, domain, global |
-| [ehlo_timeout](/momentum/3/3-reference/3-reference-conf-ref-ehlo-timeout) – Network timeout for EHLO | sending | 300 | 3.0 | binding, binding_group, domain, global |
-| [host_failure_retry](/momentum/3/3-reference/3-reference-conf-ref-host-failure-retry) – Time to wait before attempting a retry | sending | 120 | 3.0 | domain, global |
-| [idle_time](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.idle_time) – The number of seconds of inactivity before a client is disconnected | receiving | 0 | 3.0 | esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [idle_timeout](/momentum/3/3-reference/3-reference-conf-ref-idle-timeout) – Time to maintain idle outbound connections | sending | 5 | 3.0 | binding, binding_group, domain, global |
-| [mailfrom_timeout](/momentum/3/3-reference/3-reference-conf-ref-mailfrom-timeout) – Timeout after MAIL FROM | sending | 300 | 3.0 | binding, binding_group, domain, global |
-| [max_dns_ttl](/momentum/3/3-reference/3-reference-conf-ref-max-dns-ttl) – Set the maximum DNS TTL | sending | 4294967295 | 3.0 | global |
-| [message_expiration](/momentum/3/3-reference/3-reference-conf-ref-message-expiration) – Time to live for messages | sending | 86400 | 3.0 | binding, binding_group, domain, global |
-| [min_dns_ttl](/momentum/3/3-reference/3-reference-conf-ref-min-dns-ttl) – Override DNS TTLs smaller than this value | sending | 0 | 3.0 | global |
-| [mx_failures_fallback_to_a](/momentum/3/3-reference/3-reference-conf-ref-mx-failures-fallback-to-a) – Configure the maximum number of times an MX lookup will be attempted | sending | 3 | 3.0 | domain, global |
-| [mx_failures_to_delay](/momentum/3/3-reference/3-reference-conf-ref-mx-failures-to-delay) – Number of consecutive failures before a domain is auto-delayed | sending | 50 | 3.0 | domain, global |
-| [rcptto_timeout](/momentum/3/3-reference/3-reference-conf-ref-rcptto-timeout) – Timeout after RCPT TO | sending | 300 | 3.0 | binding, binding_group, domain, global |
-| [retry_interval](/momentum/3/3-reference/3-reference-conf-ref-retry-interval) – Base retry interval | sending | 1200 | 3.0 | binding, binding_group, domain, global |
-| [rset_timeout](/momentum/3/3-reference/3-reference-conf-ref-rset-timeout) – Set the timeout after RSET | sending | 30 | 3.0 | binding, binding_group, domain, global |
-
-### TLS Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [crypto_lock_method](/momentum/3/3-reference/conf-ref-crypto-lock-method) – Change the locking method used by the TLS layer | both | EC_SSL_DEFAULTLOCK (*non-dynamic*) | 3.0 | global |
-| [ssl_lock_method](/momentum/3/3-reference/conf-ref-ssl-lock-method) – The SSL lock method | na | mutex (*3.0.17*) (*non-dynamic*) | 3.0 | global |
-| [starttls_injection_policy](/momentum/3/3-reference/conf-ref-starttls-injection-policy) – Protect against SMTP injections prior to TLS | receiving | reject | 3.3 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [tls](/momentum/3/3-reference/conf-ref-tls) – Determine whether to use a TLS connection for outbound mail | sending | no | 3.0 | binding, binding_group, domain, global |
-| [tls_allow_renegotiation](/momentum/3/3-reference/conf-ref-tls-allow-renegotiation) – Whether to enable OpenSSL TLS renegotiation | both | true | 3.5.4 | ecstream_listener, esmtp_listener, http_listener, listen, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_ca](/momentum/3/3-reference/conf-ref-tls-ca) – Certificate authority for outbound mail | sending | | 3.0 | binding, binding_group, domain, global |
-| [tls_certificate](/momentum/3/3-reference/conf-ref-tls-certificate) – Certificate to use for inbound and outbound mail | both | | 3.0 | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_ciphers](/momentum/3/3-reference/conf-ref-tls-ciphers) – Allowable ciphers for a TLS session | both | | 3.0 | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_client_ca](/momentum/3/3-reference/conf-ref-tls-client-ca) – Certificate authority for inbound mail | receiving | | 3.0 | ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_dhparams_file](/momentum/3/3-reference/3-reference-conf-ref-tls-dhparams-file) – Specifies DHE parameters that add per-session randomness to the encryption | both | | 3.6.6 | global |
-| [tls_enable_dhe_ciphers](/momentum/3/3-reference/3-reference-conf-ref-tls-enable-dhe-ciphers) – Controls whether or not DHE ciphers are available | both | true | 3.6.6 | global |
-| [tls_ifavailable_fallback](/momentum/3/3-reference/conf-ref-tls-ifavailable-fallback) – Determine the behavior if TLS negotiation fails | sending | true | 3.5.10, 3.6.4 | binding, binding_group, domain, global |
-| [tls_key](/momentum/3/3-reference/conf-ref-tls-key) – the TLS key to use for outbound mail or inbound mail | both | | 3.0 | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_protocols](/momentum/3/3-reference/conf-ref-tls-protocols) – Allowable ciphers for TLS inbound and outbound sessions | both | | 3.6.6 | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer |
-| [tls_verified_peer_can_relay](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options) – Verification that peer can relay | receiving | false | 3.0 | ecstream_listener, esmtp_listener, listen, pathway, pathway_group, peer |
-| [tls_verify](/momentum/3/3-reference/conf-ref-tls-verify) – Specify how to handle the remote certificates | sending | no | 3.0 | binding, binding_group, domain, global |
-| [tls_verify_mode](/momentum/3/3-reference/conf-ref-tls-verify-mode) – Determine whether a TLS certificates is required | receiving | | 3.0 | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-
-### Virtual Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [alias_schemes](/momentum/3/3-reference/3-reference-conf-ref-alias-schemes) – Enable named alias expansion schemes | both | | 3.0 | domain, global, pathway, pathway_group |
-| [banner_hostname](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.banner_hostname) – Specifies the banner hostname that will be displayed to the remote client upon connecting | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [bind_address](/momentum/3/3-reference/3-reference-conf-ref-bind-address) – Source address for outbound connections | sending | | 3.0 | binding, binding_group, global |
-| [binding](/momentum/3/3-reference/3-reference-conf-ref-binding) *(scope)* – Configure binding-specific options | sending | | 3.0 | binding_group, global |
-| [binding_group](/momentum/3/3-reference/3-reference-conf-ref-binding-group) *(scope)* – Logically group a set of bindings | sending | | 3.0 | global |
-| [cluster_group](/momentum/3/3-reference/ecelerity-cluster-conf#option.cluster_group) – The DuraVIP™ system coordinates IP ownership responsibilities via the cluster_group extended virtual synchrony group (cluster-specific) | na | ec_cluster | 3.0 | cluster |
-| [default_binding](/momentum/3/3-reference/3-reference-conf-ref-default-binding) – Control the default binding | sending | normal | 3.0 | global |
-| [domain](/momentum/3/3-reference/3-reference-conf-ref-domain) *(scope)* – Configure domain-specific options | sending | | 3.0 | binding, binding_group, global |
-| [duravip_follow](/momentum/3/3-reference/3-reference-cluster-config-duravip) – Specify the binding a listener should follow (cluster-specific) | receiving | | 3.0 | listen |
-| [duravip_preference](/momentum/3/3-reference/3-reference-cluster-config-duravip) – Specify a DuraVIP™ preference (cluster-specific) | both | | 3.0 | binding, listen |
-| [ehlo_hostname](/momentum/3/3-reference/3-reference-conf-ref-ehlo-hostname) – Set the hostname used for EHLO in outbound mail | sending | __hostname__ | 3.0 | binding, binding_group, domain, global |
-| [enable_duravip](/momentum/3/3-reference/3-reference-cluster-config-duravip) – Whether to enable Durable MultiVIP© bindings (cluster-specific) | both | | 3.0 | binding, listen |
-| [host](/momentum/3/3-reference/3-reference-conf-ref-host) *(scope)* – Configure host-specific options | sending | | 3.0 | binding, binding_group, global |
-| [hostname](/momentum/3/3-reference/3-reference-conf-ref-hostname) – Override the system configured hostname | both | | 3.0 | global |
-| [pathway](/momentum/3/3-reference/3-reference-conf-ref-pathway) *(scope)* – A grouping of inbound configuration options | receiving | | 3.0.23 | global, pathway_group |
-| [pathway](/momentum/3/3-reference/3-reference-conf-ref-pathway) – A means for associating a Listener with a pathway scope | receiving | | 3.0.23 | ecstream_listener, esmtp_listener, listen, peer |
-| [pathway_group](/momentum/3/3-reference/3-reference-conf-ref-pathway-group) *(scope)* – A container for pathway scopes | receiving | | 3.0.23 | global |
-| [received_hostname](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.received_hostname) – The hostname that is placed in the received headers | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-| [static_banner](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.static_banner) – The banner that is displayed to the remote client | receiving | | 3.0 | esmtp_listener, listen, pathway, pathway_group, peer |
-
-### XMPP Options
-
-This section displays all options of the specified type sorted alphabetically.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [xmpp_dialback_secret](/momentum/mobile/mobile-reference/mobility-xmpp-modules#mobility.xmpp.modules.xmpp_role) – Use when verifying the XMPP server dialback key (Mobile Momentum) | both | | 3.4 | domain |
-| [xmpp_listener](/momentum/mobile/mobile-reference/mobility-xmpp-modules#modules.xmpp.xmpp_listener) *(scope)* – The listener for incoming XMPP connections (Mobile Momentum) | receiving | | 3.4 | global |
-| [xmpp_role](/momentum/mobile/mobile-reference/mobility-xmpp-modules#mobility.xmpp.modules.xmpp_role) – Define whether a domain is an XMPP server or client (Mobile Momentum) | both | | 3.4 | domain |
diff --git a/content/momentum/3/3-reference/p-appendices.md b/content/momentum/3/3-reference/p-appendices.md
deleted file mode 100644
index a23812f74..000000000
--- a/content/momentum/3/3-reference/p-appendices.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Appendices"
-description: "Table of Contents A Frequently Asked Questions B MIB Files C SMTP Response Codes D Example LDAP webui common conf File E Log Formats F Message Responses G Key Binding Reference for ec console H Disclaimer I Copyrights J Acronyms..."
----
-
diff --git a/content/momentum/3/3-reference/p-command-ref.md b/content/momentum/3/3-reference/p-command-ref.md
deleted file mode 100644
index c9899aa9c..000000000
--- a/content/momentum/3/3-reference/p-command-ref.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Command Reference"
-description: "Table of Contents 9 Ecelerity conf Configuration Reference 10 Cluster Configuration Reference 11 Momentum Command Line Reference 12 Momentum System Console Commands Reference 13 Modules 14 Modules Reference 15 Lua Function Reference 16 Sieve Function Reference..."
----
-
diff --git a/content/momentum/3/3-reference/p-guide.md b/content/momentum/3/3-reference/p-guide.md
deleted file mode 100644
index aa204f6ee..000000000
--- a/content/momentum/3/3-reference/p-guide.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Configuration Guide"
-description: "Table of Contents 1 Installation 2 Configuration 3 Using the Web Console 4 Operations 5 Implementing Policy with Momentum 6 Validation Context Variables 7 Clustering 8 Sieve..."
----
-
diff --git a/content/momentum/3/3-reference/policy-best-practices.md b/content/momentum/3/3-reference/policy-best-practices.md
deleted file mode 100644
index 5d2f1ce8d..000000000
--- a/content/momentum/3/3-reference/policy-best-practices.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Best Practices for Manually Created Policy Scripts"
-description: "Following best practices when manually creating policy scripts is important especially in a cluster environment when scripts are used on more than one node Making use of the revision control system built in to Momentum is the best way to easily maintain policy scripts shared by different nodes If you..."
----
-
-Following best practices when manually creating policy scripts is important especially in a cluster environment when scripts are used on more than one node. Making use of the revision control system built in to Momentum is the best way to easily maintain policy scripts shared by different nodes.
-
-If you plan to create your own Sieve or Lua scripts review the documentation at [eccfg](/momentum/3/3-reference/executable-eccfg) and [“Basic **eccfg** Commands”](/momentum/3/3-reference/conf-adding-configuration-files#conf.eccfg.commands); these sections describe the Subversion repository management wrapper, **eccfg**. This command is used to commit changes to the repository and to pull the latest configuration. Files added to the repository can be shared by all nodes or limited to specific nodes or subclusters.
-
-When working with files that are under revision control it is important to take steps to avoid conflicts with changes made elsewhere in the system and to be able to track changes. For this reason perform the following actions before creating any policy scripts:
-
-1. Provision a user account for each admin user, so that the history in the repository is meaningful. For more information on creating administrative users see [“Administering Users From the Web Console”](/momentum/3/3-reference/web-3-users).
-
-2. Since changes made through the web UI are committed to the repository, make sure that it is not in use; commit or rollback any pending configuration changes and ensure that no-one is logged in to the web UI.
-
-3. Ensure that you have the latest updates on the node where you are creating the scripts by running **`/opt/msys/ecelerity/bin/eccfg pull`** .
-
- ### Note
-
- Pay special attention to the instructions for using the **pull** command—if the configuration is updated your current directory may be invalidated. For more information see [eccfg](/momentum/3/3-reference/executable-eccfg).
-
-Scripts should be created in a directory that is under revision control. You should create a directory for your scripts in the working copy of the repository on a node where you intend to run the script. Create this directory under the `/opt/msys/ecelerity/etc/conf/default` directory if your scripts apply to all nodes in the subcluster. Otherwise, store them in the `global` directory if they apply to all nodes across the entire cluster, or use a node-specific directory. If you use both Sieve and Lua scripts you should create separate directories for each. If you are using Momentum version 3.0.16 or earlier, make sure to change the ownership of this directory and any scripts it contains, to `ecuser`. For example, to change the ownership of a directory named `lua_scripts` located below the `default` directory, navigate to `/opt/msys/ecelerity/etc/conf/default` and issue the command **chown -R ecuser:ecuser *`lua_scripts`*** .
-
-### Note
-
-Files and directories that are under revision control must be owned by `ecuser`. In versions of Momentum prior to 3.0.17, it is easy to get into a state where it was impossible to add a directory, but also unclear how to get out of that state. **eccfg** always runs the actual Subversion commands as `ecuser`, but if you created a new directory as root, the following situation would arise:
-
-1. The directory would get scheduled to be added to the repo; but you couldn't commit the directory, because ecuser would not have permission to create the `.svn` folder under the newly added directory.
-
-2. None of the files under the new directory would get added to the repository.
-
-3. The cron job `eccfg pull` would fail to update from the repository.
-
-4. The cron job `eccfg put running` would fail to commit as well.
-
-Beginning with version 3.0.17, **eccfg** sets the ownership of all new files and directories to `ecuser`, prior to calling the actual **svn add** command.
-
-Once your script is complete, Update the configuration file by properly referencing your scripts. For instructions on manually changing your configuration file see [“Best Practices for Manually Changing Configuration Files”](/momentum/3/3-reference/conf-manual-changes).
-
-You can check the validity of your scripts by reloading the configuration. After your configuration has been changed, issue the command: **`/opt/msys/ecelerity/bin/ec_console /tmp/2025 config reload`** . If there are errors in your script the reload may fail and display a message such as the following:
-
-```
-Module 'scriptlet' instance 'scriptlet' initialization failed while
-preparing to commit. Consult your vendor.
-```
-
-If the configuration fails to reload, Momentum continues to function using the running configuration and ignoring your changes.
-
-Successfully reloading the configuration file does not guarantee that your script will run. Your script may be syntactically correct but have semantic errors. As always, you should test the functionality of scripts before implementing them in a production environment.
-
-In a cluster, if you commit before you test on the local node, you risk pushing out a broken configuration across your cluster/subcluster. Therefore it is best practice to try the **config reload** locally until you are happy that the configuration operates as expected, before making a commit. This may need to be staged; for instance, you will likely need to push out DuraVIP™ or binding configuration changes before policy script changes can be made.
-
-Once you are satisfied that your scripts function correctly, if you are adding a new script, issue the command **eccfg commit ––username *`admin_user`* ––password *`passwd`* ––add-all --message *`message here`*** . If you are editing a script you need not use the `––add-all` option. Doing this updates the repository. In all cases, edits made to the local configuration will need to be manually applied to the node via **config reload** ; the **eccfg commit** command will not do it for you. Reload the configuration by issuing the system console command **`/opt/msys/ecelerity/bin/ec_console /tmp/2025 config reload`** . Reloading the configuration also takes care of flushing the Sieve cache. If your changes affect more than one node, each node will check for an updated configuration each minute and automatically check out your changes and issue a **config reload** .
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/policy-conclusion.md b/content/momentum/3/3-reference/policy-conclusion.md
deleted file mode 100644
index 6a9822a42..000000000
--- a/content/momentum/3/3-reference/policy-conclusion.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Conclusion"
-description: "That's essentially all there is to implementing policy Sieve or Lua scripts provide you with enough flexibility to express the logic behind your policy Aside from being very convenient policy scripts can be reloaded on the fly allowing real time adjustment of policy without interrupting service the Momentum implementation has..."
----
-
-That's essentially all there is to implementing policy. Sieve or Lua scripts provide you with enough flexibility to express the logic behind your policy. Aside from being very convenient (policy scripts can be reloaded on the fly, allowing real-time adjustment of policy without interrupting service), the Momentum implementation has extremely low overhead and tightly integrates with the event based architecture, being able to suspend processing until asynchronous operations (such as DNS resolution, or database queries) complete.
-
-You can find more examples of Sieve policy in the `/opt/msys/ecelerity/etc/sieve-scripts` directory and sample Lua scripts in [“Implementing Policy Using Scriptlets”](/momentum/3/3-reference/3-reference-implementing-policy-scriptlets).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/policy-context-based-on-ip.md b/content/momentum/3/3-reference/policy-context-based-on-ip.md
deleted file mode 100644
index b30c7e257..000000000
--- a/content/momentum/3/3-reference/policy-context-based-on-ip.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Setting Context Based on Connecting IP"
-description: "It is often useful to bypass anti spam checks when you know that the sender is a machine on your network it could be either a local user or an internal mail exchange machine that is merely forwarding the mail on via Momentum In the former case it's not good..."
----
-
-It is often useful to bypass anti-spam checks when you know that the sender is a machine on your network; it could be either a local user or an internal mail exchange machine that is merely forwarding the mail on via Momentum. In the former case, it's not good for your own users not to be able to mail out of your network, and in the latter case, it doesn't help you if you are tarpitting your own mail infrastructure if spam has managed to leak in.
-
-The ESMTP_Listener configuration shown in [“Connection context variables in ESMTP_Listener”](/momentum/3/3-reference/policy-context-based-on-ip#policy.context-based-on-ip3.ex) will set `my_key` and `my_other_key` in the connection context for machines connecting from the netblock 0.0.0.0/0 (this matches all connections). It will set the `trusted_mx` connection context for machines connecting from the 10.0.0.0/32 network, which is assumed to be a trusted internal network. You can set arbitrary context information using this mechanism, and then inspect it in your Sieve scripts and act accordingly, as hinted at by [“Acting on Connection Context Using Sieve”](/momentum/3/3-reference/policy-context-based-on-ip#policy.context-based-on-ip.ex2).
-
-
-
-
-```
-Esmtp_Listener = {
- Listen "*:25" {
- Peer "0.0.0.0/0" {
- context = [
- my_key = "my_value"
- my_other_key = "my_other_value"
- ]
-
- }
- Peer "10.0.0.0/32" {
- context = [
- trusted_mx = "yes"
- ]
- }
- }
-}
-```
-
-
-
-
-```
-if not vctx_conn :is "trusted_mx" "yes" {
- # Apply policy checks, as shown above.
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/policy-implementing.md b/content/momentum/3/3-reference/policy-implementing.md
deleted file mode 100644
index 9db060563..000000000
--- a/content/momentum/3/3-reference/policy-implementing.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Implementing Policy Using Sieve"
-description: "Implementation of your site policy is a matter of loading and configuring the appropriate modules via ecelerity conf and optionally using the sieve module to make decisions based on the validation context A number of the available modules predate the sieve module and can be configured to either take an..."
----
-
-Implementation of your site policy is a matter of loading and configuring the appropriate modules via `ecelerity.conf`, and, optionally, using the sieve module to make decisions based on the validation context. A number of the available modules predate the sieve module, and can be configured to either take an active role in the validation process, or to simply store the processing results in the validation context.
-
-### Note
-
-In Momentum version 3.x, Sieve continues to be supported but scripting via Lua is preferred for the following reasons:
-
-* Sieve has no concept of looping or iterators
-
-* Simple comparative logic in Sieve is awkward to author
-
-* Unlike Sieve, new modules do not need explicit C development to enable Lua capabilities
-
-### Warning
-
-You cannot use Sieve with multiple event loops. If you include the Sieve module in your configuration file, Momentum will not start up and a warning will be written to the panic log. If you are upgrading to a multiple event loop configuration of Momentum, be sure to remove the Sieve module from your configuration file.
-
-The advantage of allowing a module to perform unilateral validation is that the Momentum configuration is restricted to just the one `ecelerity.conf` file, making it conceptually a lot simpler to configure Momentum. The trade off is simplicity versus flexibility; we recommend that larger sites deploy the modules in a passive configuration and leave the final policy decisions to scripts implemented in Sieve. The `Enabled` option can be set to `false` for any module. However, the effect that this has on modules differs on a module by module basis. For some modules, it will have no effect. But, the idea is that validation modules loaded in passive mode will **not** have their validation hooks called automatically. Rather, the calls will be driven by a Sieve action associated with the module. For example, the Sieve action 'antivirus' will drive the antivirus modules such as the 'clamav' module. The rest of this chapter assumes that you are deploying such modules in a passive configuration.
-
-Once you have selected the modules that you want to use ([“All Modules”](/momentum/3/3-reference/modules-summary#modules.summary.all.modules) has a list of the available modules) you need to configure the sieve module to run your Sieve script. For example, if you're using the url_ripper module to examine the bodies of messages, you need to write a Sieve script that will run in the data phase, after the url_ripper has run. You'll want to configure `ecelerity.conf` as shown in [“Configuring the url_ripper for use with Sieve”](/momentum/3/3-reference/policy-implementing#policy.configure.sieve).
-
-
-
-
-```
-url_ripper "url_ripper" {
- enabled = false
- base = "multi.surbl.org"
- bits [
- # RBL hits are compared against this mapping, causing
- # the right hand side of the following statements to be
- # set in the validation context if the bits on the left
- # hand side are set.
- 0.0.0.1 = "list1_hits"
- 0.0.0.2 = "list2_hits"
- 0.0.0.4 = "list3_hits"
- 0.0.0.8 = "list4_hits"
- 0.0.0.16 = "list5_hits"
- 0.0.0.32 = "list6_hits"
- 0.0.0.64 = "list7_hits"
- 0.0.1.0 = "list8_hits"
- ]
- values [
- 127.0.0.2 = "simple_hits"
- ]
- address_headers = ( "Return-Path" "From" "Sender" "Reply-To" "Errors-To")
-
-}
-
-# You almost always want to list the sieve module as the very last
-# validation module in your ecelerity.conf, so that the other modules
-# run before it
-sieve "sieve1" {
- script "data_phase1" {
- source = "/opt/msys/ecelerity/etc/conf/default/my-data.siv"
- }
-}
-```
-
-This configuration will run the url_ripper module after the message body has been received, and look up all the URLs from the message and check them against the configured RBL. Once that is complete, the sieve module will then run the Sieve script contained in `/opt/msys/ecelerity/etc/site/my-data.siv`. [“An Example Sieve Policy for the Data Phase”](/momentum/3/3-reference/policy-implementing#policy.example.sieve.data.script) demonstrates a sample site policy.
-
-
-
-
-```
-if vctx :contains "list1_hits" "" {
- # we found URLs or IP addresses that match 0.0.0.1 (list1)
- # For this example, we decide that we don't want the spam mail
- # so we're going to reject it, but first, we're going to retaliate
- # against the offender by imposing a time cost.
- # ec_tarpit causes the connection to be put on hold for a while
- # (60 seconds), which is a cheap operation for Momentum, but is comparatively
- # expensive for a spammer.
- ec_tarpit 60 "spam:list1 tarpit";
- # after the tarpit time limit expires, we'll reject the mail
- ec_action 550 "5.7.1 reject content [list1]" "spam:Known Spam Source";
-}
-
-# similar actions can be taken on the other lists configured:
-if vctx :contains "list2_hits" "" {
- ec_tarpit 60 "spam:list2 tarpit";
- ec_action 550 "5.7.1 reject content [list2]" "spam:Known Spam Source";
-}
-
-# and so on
-```
-
-This example makes use of the Sieve counter mechanism to keep track of how you're handling mail. The first call to `ec_tarpit` uses `spam:list1 tarpit` as the counter name. This event is counted by Sieve as an informational event. The `ec_action` call counts the event as a rejection. You can view the current counters by issuing **sieve stats** via **ec_console**.
-
-The convention for naming counters is to use a short category name, followed by a colon character, followed by a more descriptive name.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/policy-predefined-context-conn.md b/content/momentum/3/3-reference/policy-predefined-context-conn.md
deleted file mode 100644
index 4c5392047..000000000
--- a/content/momentum/3/3-reference/policy-predefined-context-conn.md
+++ /dev/null
@@ -1,199 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Connection Context Variables"
-description: "Connection context variables are set upon the creation of a successful connection and contain information regarding the remote client Connection context variables are predefined either in a global context or within a module The global variables are discussed in the next section and the module specific variables follow The following..."
----
-
-
-
-Connection context variables are set upon the creation of a successful connection and contain information regarding the remote client. Connection context variables are predefined, either in a global context or within a module. The global variables are discussed in the next section and the module-specific variables follow.
-
-### Global Predefined Connection Context Variables
-
-The following connection context variables are predefined globally by Momentum:
-
-
-
-- auth_status
-
--
-
-The authentication status. When an SMTP client performs an SMTP AUTH action, the auth_status context key will be set to one of "pass", "fail", or "error". For more information about authentication see [“Authentication, Authorization and Accounting”](/momentum/3/3-reference/conf-aaa).
-
-
-
-- auth_user
-
--
-
-The authenticated username. When an SMTP client performs an SMTP AUTH action, the auth_user context key will be set to the username used during authorization. For more information about authentication see [“Authentication, Authorization and Accounting”](/momentum/3/3-reference/conf-aaa).
-
-
-
-- can_relay
-
--
-
-Whether relaying is allowed. When an SMTP client is allowed to relay through Momentum because of an entry in `relay_hosts` or a relaying declaration in an ESMTP_Listener IP access control list, the `can_relay` connection context variable is set to "true." See also [relay_hosts](/momentum/3/3-reference/3-reference-conf-ref-relay-hosts) and [“Authentication, Authorization and Accounting”](/momentum/3/3-reference/conf-aaa).
-
-
-
-- connection_message_count
-
--
-
-The number of messages on the connection.
-
-
-
-- connection_rcpt_count
-
--
-
-The number of recipients on the connection. This variable counts the *total* number of RCPT TOs on this open connection while `message_rcpt_count` counts the number of RCPT TOs since the last MAIL FROM.
-
-
-
-- datasource_error
-
--
-
-This context variable is accessible after execution of a Sieve function. If a scripting data source query cannot be completed due to an error, this variable will be set to the error message. See [ds_fetch](/momentum/3/3-reference/sieve-ref-ds-fetch) and following.
-
-
-
-- dns_status
-
--
-
-If the last Sieve `ec_dns_lookup` function call returned an error, this variable will contain the description of that error. See [ec_dns_lookup](/momentum/3/3-reference/sieve-ref-ec-dns-lookup). For the Lua function, [msys.dnsLookup](/momentum/3/3-reference/3-reference-lua-ref-msys-dnslookup), you can look at the function return value for an error description.
-
-
-
-- ehlo_domain
-
--
-
-The domain from the EHLO phase.
-
-This variable is accessible as of the EHLO phase.
-
-
-
-- ehlo_string
-
--
-
-The complete EHLO string.
-
-
-
-- message_rcpt_count
-
--
-
-The number of recipients for the current message. Since a given message "object" can only have one recipient, multiple recipients are a property of the current session and are tracked at the connection level not the message level. This variable counts the number of RCPT TOs since the last MAIL FROM while `connection_rcpt_count` counts the *total* number of RCPT TOs on this open connection.
-
-
-
-- tls
-
--
-
-Whether TLS is in use.
-
-
-
-- tls_cipher
-
--
-
-Identifies the cipher in use for a TLS enabled session
-
-This variable is accessible from the [outbound_tls_ciphers](/momentum/3/3-api/hooks-core-outbound-tls-ciphers) hook.
-
-
-
-- tls_cipher_algbits
-
--
-
-The number of bits the algorithm is based on, for example 128
-
-
-
-- tls_cipher_usebits
-
--
-
-The number of bits used, for example 40
-
-
-
-- tls_client_cert_subject
-
--
-
-Holds the subject of the peer certificate for a TLS enabled session.
-
-
-
-- tls_client_cert_subject_cn
-
--
-
-The common name of the subject of the peer certificate.
-
-
-
-- tls_client_cert_issuer
-
--
-
-Holds the issuer of the peer certificate for a TLS enabled session.
-
-
-
-- tls_client_cert_issuer_cn
-
--
-
-The common name of the issuer of the peer certificate.
-
-
-
-- tls_client_verified
-
--
-
-Will be set to the string `yes` if the peer certificate was verified against the configured Certificate Authorities.
-
-
-
-
-
-### Predefined Module-Specific Connection Context Variables
-
-The following sections show modules that support predefined module-specific connection context variables.
-
-** 6.1.2.1. The conntrol Module**
-
-The variables are as follows:
-
-* `conntrol_unrecognized_commands` – The number of unrecognized commands.
-
-* `conntrol_bad_commands` – The number of valid SMTP commands with syntax errors
-
-* `early_talker` – Whether the peer started issuing commands before Momentum sent the initial SMTP banner.
-
-For more information see [“Conntrol Runtime Usage”](/momentum/3/3-reference/3-reference-modules-conntrol#modules.conntrol.runtime.usage)
-
-** 6.1.2.2. The mail_loop Module**
-
-The variables are as follows:
-
-* `mail_loop_header_count` – The number of received headers detected.
-
-* `mail_loop_ip` – Set to 'match', if a self-connect was detected
-
-For more information see [“mail_loop Runtime Usage”](/momentum/3/3-reference/3-reference-modules-mail-loop#modules.mail_loop.runtime.usage)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/policy-validation.md b/content/momentum/3/3-reference/policy-validation.md
deleted file mode 100644
index d3543c812..000000000
--- a/content/momentum/3/3-reference/policy-validation.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Validation and the Validation Context"
-description: "The validation process in Momentum is extensible designed to consist of any number of disparate modules provided either by Message Systems a third party vendor or developed directly by a customer Momentum provides a validation context which allows validation modules to store and share validation information so that the final..."
----
-
-The validation process in Momentum is extensible, designed to consist of any number of disparate modules provided either by Message Systems, a third-party vendor or developed directly by a customer. Momentum provides a validation context which allows validation modules to store and share validation information, so that the final decision about what to do with a message (discard, reject, quarantine, modify, forward etc.) can be made using the policy scripts, based on the results from a variety of virus scanners, authentication results, block-list data and so on.
-
-The validation context contains two dictionaries of information, referred to as the `connection context` and `message context` respectively. The former holds information associated with the remote client connected to Momentum, whereas the latter holds information about the current message. The message context is emptied for each message transmitted on a given connection, whereas the connection context retains its information for the lifetime of that connection.
-
-A number of context variables are pre-defined by Momentum, depending on how the connection was made, and what modules are loaded. A complete list of pre-defined context variables can be found in [*Validation Context Variables*](/momentum/3/3-reference/3-reference-policy-context-variables) .
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/responses-by-code.md b/content/momentum/3/3-reference/responses-by-code.md
deleted file mode 100644
index 38c263019..000000000
--- a/content/momentum/3/3-reference/responses-by-code.md
+++ /dev/null
@@ -1,117 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Responses Sorted By Codes"
-description: "Responses are sorted by SMTP code and then enhanced code Table F 1 Responses sorted by code SMTP Code Enhanced Code Message Comment 4 3 0 Resource limitations please try later See message 4 3 5 configuration error please try later See message 4 3 5 message not yet parsed..."
----
-
-Responses are sorted by SMTP code and then enhanced code.
-
-
-
-
-| SMTP Code | Enhanced Code | Message | Comment |
-| --- | --- | --- | --- |
-| | 4.3.0 | Resource limitations, please try later | See message. |
-| | 4.3.5 | configuration error, please try later | See message. |
-| | 4.3.5 | message not yet parsed, can't reparse | See message. |
-| | 4.3.5 | message parse and assemble didn't round-trip | See message. |
-| | 4.7.5 | [internal] SSL certificate subject does not match host | See message. |
-| | 4.7.5 | [internal] remote node SSL certificate not signed by a valid CA | See message. |
-| | 4.7.5 | [internal] SSL cert must be signed by a valid CA | See message. |
-| | 4.7.5 | [internal] SSL cert common name does not match host | See message. |
-| | 5.5.0 | error while reading body | See message. |
-| | 5.7.0 | [internal] Message manually purged | Used console command, "fail domain name" |
-| | 5.7.0 | [internal] rejected by policy | See message. |
-| 421 | | This message is being 421'd | Service is unavailable |
-| 421 | 4.3.0 | message is too large to process at this time | See message. |
-| 421 | 4.3.4 | allocated resources exceeded | System outage |
-| 421 | 4.4.0 | [internal] no MXs for this domain could be reached at this time | See message. |
-| 421 | 4.4.5 | Service unavailable, concurrency limit reached | System outage |
-| 421 | 4.4.5 | Service unavailable | System outage |
-| 450 | 4.4.1 | [internal] Connection Timed Out | See message. |
-| 451 | | [internal] memory shortage while determining tls parameters | See message. |
-| 451 | 4.3.0 | transaction failed | See message. |
-| 451 | 4.4.1 | [internal] No valid hosts (unable to make any connections) | See message. |
-| 451 | 4.4.1 | [internal] No valid hosts | See message. |
-| 451 | 4.4.2 | [internal] send key failed | Cluster-related error |
-| 451 | 4.4.2 | [internal] send metadata failed | Cluster-related error |
-| 451 | 4.4.2 | [internal] no METADATA reponse | Cluster-related error |
-| 451 | 4.4.2 | [internal] no banner | See message. |
-| 451 | 4.4.2 | [internal] send HELO/EHLO failed | See message. |
-| 451 | 4.4.2 | [internal] no HELO/EHLO response | See message. |
-| 451 | 4.4.2 | [internal] XCLIENT argument hook failed | See message. |
-| 451 | 4.4.2 | [internal] send XCLIENT failed | See message. |
-| 451 | 4.4.2 | [internal] no XCLIENT response | See message. |
-| 451 | 4.4.2 | [internal] MAIL FROM argument hook failed | See message. |
-| 451 | 4.4.2 | [internal] MAIL FROM arguments too long | See message. |
-| 451 | 4.4.2 | [internal] send MAIL FROM failed | See message. |
-| 451 | 4.4.2 | [internal] no MAIL FROM response | See message. |
-| 451 | 4.4.2 | [internal] RCPT TO argument hook failed | See message. |
-| 451 | 4.4.2 | [internal] RCPT TO arguments too long | See message. |
-| 451 | 4.4.2 | [internal] send RCPT TO failed | See message. |
-| 451 | 4.4.2 | [internal] no RCPT TO response | See message. |
-| 451 | 4.4.2 | [internal] send DATA failed | See message. |
-| 451 | 4.4.2 | [internal] no DATA response | See message. |
-| 451 | 4.4.2 | [internal] send BODY failed | See message. |
-| 451 | 4.4.2 | [internal] no BODY response | See message. |
-| 451 | 4.4.2 | [internal] send RSET failed | See message. |
-| 451 | 4.4.2 | [internal] no RSET response | See message. |
-| 451 | 4.4.2 | [internal] connection closed by remote host | See message. |
-| 451 | 4.4.2 | [internal] send metadatadicts failed | Cluster-related error |
-| 451 | 4.7.5 | [internal] send XCLUSTERMETADATA failed | Cluster-related error |
-| 451 | 4.7.5 | [internal] no clustermetadata go-ahead | Cluster-related error |
-| 451 | 4.7.5 | [internal] send STARTTLS failed | See message. |
-| 451 | 4.7.5 | [internal] no tls go-ahead | See message. |
-| 451 | 4.7.5 | [internal] TLS negotiation failed | See message. |
-| 451 | 4.7.6 | [internal] XCLUSTERMETADATA required but not advertised | Cluster-related error |
-| 451 | 4.7.6 | [internal] STARTTLS required but not advertised | See message. |
-| 451 | 4.7.6 | [internal] XCLIENT required but not advertised | See message. |
-| 451 | 4.7.6 | [internal] XCLUSTERMETADATA supported version not advertised | Cluster-related error |
-| 452 | 4.5.3 | Service unavailable, batch limit reached | See message. |
-| 452 | 4.5.3 | Service unavailable, recipients per connection limit reached | See message. |
-| 452 | 4.5.3 | Service unavailable, recipients per message limit reached | See message. |
-| 454 | | certificate not yet valid: possible clock skew | SSL related |
-| 454 | | certificate expired | SSL related |
-| 454 | 4.4.4 | [internal] no MX or A for domain | See message. |
-| 500 | 5.5.2 | unrecognized command | See message. |
-| 501 | 5.5.1 | MAIL FROM already established | See message. |
-| 501 | 5.5.2 | RCPT TO syntax error | Triggered by an invalid address |
-| 501 | 5.5.2 | MAIL FROM syntax error | Triggered by an invalid address |
-| 501 | 5.5.2 | invalid EHLO | See message. |
-| 501 | 5.5.2 | invalid HELO | See message. |
-| 501 | 5.5.2 | MAIL FROM syntax error | See message. |
-| 501 | 5.5.2 | RCPT TO syntax error | See message. |
-| 501 | 5.5.4 | invalid arguments to RSET | See message. |
-| 501 | 5.5.4 | unexpected argument to DATA | See message. |
-| 501 | 5.5.4 | Syntax error (no parameters allowed) | See message. |
-| 501 | 5.5.4 | unexpected command | See message. |
-| 503 | | RCPT TO without MAIL FROM | See message. |
-| 503 | 5.5.1 | DATA without MAIL FROM | See message. |
-| 503 | 5.5.1 | DATA without RCPT TO | See message. |
-| 503 | 5.5.1 | bad sequence of commands | See message. |
-| 550 | 5.3.0 | [internal] message body missing | See message. |
-| 550 | 5.4.4 | [internal] NULL MX domain does not accept mail | See message. |
-| 550 | 5.5.1 | RFC2821 HELO/EHLO needed | See message. |
-| 550 | 5.6.0 | Lone CR or LF in headers (see RFC2822 section 2.2) | See message. |
-| 550 | 5.6.0 | Missing CR LF . CR LF | See message. |
-| 550 | 5.6.0 | Required headers not found (see RFC2822 section 3.6) | See message. |
-| 550 | 5.6.0 | Header not terminated by CR LF (see RFC2822 section 2.2) | See message. |
-| 550 | 5.6.0 | Invalid header found (see RFC2822 section 3.6) | See message. |
-| 550 | 5.6.0 | Missing required RFC2822 Date field (see RFC2822 section 3.6) | See message. |
-| 550 | 5.6.0 | Lone CR or LF in body (see RFC2822 section 2.3) | See message. |
-| 550 | 5.6.0 | Header line too long (see RFC2822 section 3.5) | See message. |
-| 550 | 5.6.0 | Body line too long (see RFC2822 section 3.5) | See message. |
-| 550 | 5.7.1 | relaying denied | See message. |
-| 550 | 5.7.1 | [internal] discarded by policy | See message. |
-| 550 | 5.7.1 | [internal] processed as FBL message, and disposition is blackhole | FBL module |
-| 550 | 5.7.1 | 550 [internal] [oob] | bounce_logger module |
-| 551 | 5.4.6 | [internal] Private/Loopback Address | See message. |
-| 551 | 5.7.1 | recipient blackholed | See message. |
-| 552 | 5.3.4 | message size limit exceeded | See message. |
-| 554 | | No Valid Domain | See message. |
-| 554 | 5.4.4 | [internal] Domain Lookup Failed | See message. |
-| 554 | 5.4.5 | [internal] Delivery not attempted (message expired) | See message. |
-| 554 | 5.4.7 | [internal] exceeded max retries without delivery | See message. |
-| 554 | 5.4.7 | [internal] exceeded max time without delivery | See message. |
-| 554 | 5.7.0 | [internal] Blackholed | "Blackhole" option is set to "internal" |
-| 554 | 5.7.0 | [internal] Message manually purged | Purged messages from the system console |
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/responses-by-message.md b/content/momentum/3/3-reference/responses-by-message.md
deleted file mode 100644
index 59e9663f7..000000000
--- a/content/momentum/3/3-reference/responses-by-message.md
+++ /dev/null
@@ -1,115 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Responses Sorted by Message"
-description: "Table F 2 Responses sorted by message SMTP Code Enhanced Code Message Comment 550 5 7 1 550 internal oob bounce logger module 550 5 6 0 Body line too long see RFC 2822 section 3 5 See message 503 5 5 1 DATA without MAIL FROM See message 503..."
----
-
-
-
-
-| SMTP Code | Enhanced Code | Message | Comment |
-| --- | --- | --- | --- |
-| 550 | 5.7.1 | 550 [internal] [oob] | bounce_logger module |
-| 550 | 5.6.0 | Body line too long (see RFC2822 section 3.5) | See message. |
-| 503 | 5.5.1 | DATA without MAIL FROM | See message. |
-| 503 | 5.5.1 | DATA without RCPT TO | See message. |
-| 550 | 5.6.0 | Header line too long (see RFC2822 section 3.5) | See message. |
-| 550 | 5.6.0 | Header not terminated by CR LF (see RFC2822 section 2.2) | See message. |
-| 550 | 5.6.0 | Invalid header found (see RFC2822 section 3.6) | See message. |
-| 550 | 5.6.0 | Lone CR or LF in body (see RFC2822 section 2.3) | See message. |
-| 550 | 5.6.0 | Lone CR or LF in headers (see RFC2822 section 2.2) | See message. |
-| 501 | 5.5.1 | MAIL FROM already established | See message. |
-| 501 | 5.5.2 | MAIL FROM syntax error | See message. |
-| 501 | 5.5.2 | MAIL FROM syntax error | Triggered by an invalid address |
-| 550 | 5.6.0 | Missing CR LF . CR LF | See message. |
-| 550 | 5.6.0 | Missing required RFC2822 Date field (see RFC2822 section 3.6) | See message. |
-| 554 | | No Valid Domain | See message. |
-| 501 | 5.5.2 | RCPT TO syntax error | See message. |
-| 501 | 5.5.2 | RCPT TO syntax error | Triggered by an invalid address |
-| 503 | | RCPT TO without MAIL FROM | See message. |
-| 550 | 5.5.1 | RFC2821 HELO/EHLO needed | See message. |
-| 550 | 5.6.0 | Required headers not found (see RFC2822 section 3.6) | See message. |
-| | 4.3.0 | Resource limitations, please try later | See message. |
-| 421 | 4.4.5 | Service unavailable | System outage |
-| 452 | 4.5.3 | Service unavailable, batch limit reached | See message. |
-| 421 | 4.4.5 | Service unavailable, concurrency limit reached | System outage |
-| 452 | 4.5.3 | Service unavailable, recipients per connection limit reached | See message. |
-| 452 | 4.5.3 | Service unavailable, recipients per message limit reached | See message. |
-| 501 | 5.5.4 | Syntax error (no parameters allowed) | See message. |
-| 421 | | This message is being 421'd | Service is unavailable |
-| 554 | 5.7.0 | [internal] Blackholed | "Blackhole" option is set to "internal" |
-| 450 | 4.4.1 | [internal] Connection Timed Out | See message. |
-| 554 | 5.4.5 | [internal] Delivery not attempted (message expired) | See message. |
-| 554 | 5.4.4 | [internal] Domain Lookup Failed | See message. |
-| 451 | 4.4.2 | [internal] MAIL FROM argument hook failed | See message. |
-| 451 | 4.4.2 | [internal] MAIL FROM arguments too long | See message. |
-| 554 | 5.7.0 | [internal] Message manually purged | Purged messages from the system console |
-| | 5.7.0 | [internal] Message manually purged | Used console command, "fail domain name" |
-| 550 | 5.4.4 | [internal] NULL MX domain does not accept mail | See message. |
-| 451 | 4.4.1 | [internal] No valid hosts | See message. |
-| 451 | 4.4.1 | [internal] No valid hosts (unable to make any connections) | See message. |
-| 551 | 5.4.6 | [internal] Private/Loopback Address | See message. |
-| 451 | 4.4.2 | [internal] RCPT TO argument hook failed | See message. |
-| 451 | 4.4.2 | [internal] RCPT TO arguments too long | See message. |
-| | 4.7.5 | [internal] SSL cert common name does not match host | See message. |
-| | 4.7.5 | [internal] SSL cert must be signed by a valid CA | See message. |
-| | 4.7.5 | [internal] SSL certificate subject does not match host | See message. |
-| 451 | 4.7.6 | [internal] STARTTLS required but not advertised | See message. |
-| 451 | 4.7.5 | [internal] TLS negotiation failed | See message. |
-| 451 | 4.4.2 | [internal] XCLIENT argument hook failed | See message. |
-| 451 | 4.7.6 | [internal] XCLIENT required but not advertised | See message. |
-| 451 | 4.7.6 | [internal] XCLUSTERMETADATA required but not advertised | Cluster-related error |
-| 451 | 4.7.6 | [internal] XCLUSTERMETADATA supported version not advertised | Cluster-related error |
-| 451 | 4.4.2 | [internal] connection closed by remote host | See message. |
-| 550 | 5.7.1 | [internal] discarded by policy | See message. |
-| 554 | 5.4.7 | [internal] exceeded max retries without delivery | See message. |
-| 554 | 5.4.7 | [internal] exceeded max time without delivery | See message. |
-| 451 | | [internal] memory shortage while determining tls parameters | See message. |
-| 550 | 5.3.0 | [internal] message body missing | See message. |
-| 451 | 4.4.2 | [internal] no BODY response | See message. |
-| 451 | 4.4.2 | [internal] no DATA response | See message. |
-| 451 | 4.4.2 | [internal] no HELO/EHLO response | See message. |
-| 451 | 4.4.2 | [internal] no MAIL FROM response | See message. |
-| 451 | 4.4.2 | [internal] no METADATA reponse | Cluster-related error |
-| 454 | 4.4.4 | [internal] no MX or A for domain | See message. |
-| 421 | 4.4.0 | [internal] no MXs for this domain could be reached at this time | See message. |
-| 451 | 4.4.2 | [internal] no RCPT TO response | See message. |
-| 451 | 4.4.2 | [internal] no RSET response | See message. |
-| 451 | 4.4.2 | [internal] no XCLIENT response | See message. |
-| 451 | 4.4.2 | [internal] no banner | See message. |
-| 451 | 4.7.5 | [internal] no clustermetadata go-ahead | Cluster-related error |
-| 451 | 4.7.5 | [internal] no tls go-ahead | See message. |
-| 550 | 5.7.1 | [internal] processed as FBL message, and disposition is blackhole | FBL module |
-| | 5.7.0 | [internal] rejected by policy | See message. |
-| | 4.7.5 | [internal] remote node SSL certificate not signed by a valid CA | See message. |
-| 451 | 4.4.2 | [internal] send BODY failed | See message. |
-| 451 | 4.4.2 | [internal] send DATA failed | See message. |
-| 451 | 4.4.2 | [internal] send HELO/EHLO failed | See message. |
-| 451 | 4.4.2 | [internal] send MAIL FROM failed | See message. |
-| 451 | 4.4.2 | [internal] send RCPT TO failed | See message. |
-| 451 | 4.4.2 | [internal] send RSET failed | See message. |
-| 451 | 4.7.5 | [internal] send STARTTLS failed | See message. |
-| 451 | 4.4.2 | [internal] send XCLIENT failed | See message. |
-| 451 | 4.7.5 | [internal] send XCLUSTERMETADATA failed | Cluster-related error |
-| 451 | 4.4.2 | [internal] send key failed | Cluster-related error |
-| 451 | 4.4.2 | [internal] send metadata failed | Cluster-related error |
-| 451 | 4.4.2 | [internal] send metadatadicts failed | Cluster-related error |
-| 421 | 4.3.4 | allocated resources exceeded | System outage |
-| 503 | 5.5.1 | bad sequence of commands | See message. |
-| 454 | | certificate expired | SSL related |
-| 454 | | certificate not yet valid: possible clock skew | SSL related |
-| | 4.3.5 | configuration error, please try later | See message. |
-| | 5.5.0 | error while reading body | See message. |
-| 501 | 5.5.2 | invalid EHLO | See message. |
-| 501 | 5.5.2 | invalid HELO | See message. |
-| 501 | 5.5.4 | invalid arguments to RSET | See message. |
-| 421 | 4.3.0 | message is too large to process at this time | See message. |
-| | 4.3.5 | message not yet parsed, can't reparse | See message. |
-| | 4.3.5 | message parse and assemble didn't round-trip | See message. |
-| 552 | 5.3.4 | message size limit exceeded | See message. |
-| 551 | 5.7.1 | recipient blackholed | See message. |
-| 550 | 5.7.1 | relaying denied | See message. |
-| 451 | 4.3.0 | transaction failed | See message. |
-| 501 | 5.5.4 | unexpected argument to DATA | See message. |
-| 501 | 5.5.4 | unexpected command | See message. |
-| 500 | 5.5.2 | unrecognized command | See message. |
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/responses.md b/content/momentum/3/3-reference/responses.md
deleted file mode 100644
index d9bd0c5c5..000000000
--- a/content/momentum/3/3-reference/responses.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Message Responses"
-description: "This appendix lists the various responses that may be returned by the MTA when attempting delivery Where applicable an explanation of the response is provided If a response is marked internal this usually indicates that the message did not originate with an external host but from the MTA itself Messages..."
----
-
-## Message Responses
-
-
-This appendix lists the various responses that may be returned by the MTA when attempting delivery. Where applicable an explanation of the response is provided. If a response is marked "[internal]", this usually indicates that the message did not originate with an external host but from the MTA itself. Messages so marked usually appear in the transient and permanent failure logs.
-
-Responses are first sorted by code and then alphabetically by the message.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-differences.md b/content/momentum/3/3-reference/sieve-differences.md
deleted file mode 100644
index f0e167a6a..000000000
--- a/content/momentum/3/3-reference/sieve-differences.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "The differences between Sieve and Sieve++"
-description: "The Sieve language is a mail filtering language defined in RFC 3028 and further extended in RFC 3685 Essentially Sieve is a standardized way of processing email and taking actions based on complicated logic It is a programming language that is specifically tailored to meet the requirements of processing and..."
----
-
-The Sieve language is a mail filtering language defined in [RFC 3028](http://tools.ietf.org/html/rfc3028) and further extended in [RFC 3685](http://tools.ietf.org/html/rfc3685). Essentially Sieve is a standardized way of processing email and taking actions based on complicated logic. It is a programming language that is specifically tailored to meet the requirements of processing and extracting components from email and taking actions that are appropriate for sorting email.
-
-Sieve itself was designed to process an email message once it has been received from the sending MTA. This is the first instance where Sieve++ extends beyond the capabilities of the traditional Sieve specification. With Sieve++, you can execute a script during any phase of the SMTP transaction: connect, ehlo, mail from, rcpt to, and the mail body itself. This provides you the powerful advantage of actually changing the SMTP responses made to the sending MTA.
-
-In Sieve, the specified actions allow you to "keep", "discard", "reject", "redirect" and "fileinto" (save to a specific folder) any message that is processed. Since Sieve++ works at the MTA level, it does not allow for "fileinto" as it does not act as an MDA (Mail Delivery Agent) without loading a IO_System module to provide those facilities. While we lack the native ability to "fileinto", we gain the ability to take SMTP actions such as issuing transient SMTP failures (45x), permanent failures (55x), time-based costs (a.k.a. tarpitting), or disconnecting the SMTP session.
-
-Sieve itself was designed to be extensible through the concept of a "require" block at the top of every script that specifies which capabilities that script will use. This allows for new capabilities to be added as well as ensuring that specific requested facilities can be provided at the time the script is compiled, rather than during an SMTP session.
-
-### Note
-
-When using the Momentum implementation of Sieve "require" blocks are *not* needed.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ecaddons.md b/content/momentum/3/3-reference/sieve-ecaddons.md
deleted file mode 100644
index b7eb43fe4..000000000
--- a/content/momentum/3/3-reference/sieve-ecaddons.md
+++ /dev/null
@@ -1,229 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Sieve++, Momentum-specific extensions"
-description: "For greater flexibility Momentum allows Sieve scripts to execute inline during the various phases of an SMTP session and provides additional actions such as terminating the connected TCP session that don't make sense in traditional Sieve This phased execution of Sieve scripts places certain restrictions on the tests and actions..."
----
-
-For greater flexibility, Momentum allows Sieve scripts to execute inline during the various phases of an SMTP session, and provides additional actions (such as terminating the connected TCP session) that don't make sense in traditional Sieve. This phased execution of Sieve scripts places certain restrictions on the tests and actions that can be performed during a given phase; for example, testing headers during the EHLO phase of the session doesn't make sense, since there is no email message available. According to the Sieve RFC, implementations **must** support the `header` test; while Momentum supports it, it is important to realize that it can only do so in phases where an email message is actually present.
-
-More information on configuring the sieve module can be found in [“sieve – The Sieve Module”](/momentum/3/3-reference/modules-sieve).
-
-The default Sieve implementation does not provide variables or variable interpolation. As such, there is no mechanism for testing one string against another (as in standard Sieve those strings are static). In Momentum's Sieve++, variable assignment is possible as well as variable interpolation (such as performing a DNS lookup).
-
-### Macros
-
-Momentum's Sieve++ exposes a simple macro language that allows convenient string construction containing context values and variables.
-
-The values in the context of the current connection (SMTP session) and message (SMTP transaction) can be interpolated using the `vctx_conn:key` macro and the `vctx_mess:key` macro, respectively.
-
-```
-if vctx_conn :contains "auth_user" "" {
- # The auth_user key is set in the connection context
- # so place it in a header: X-Authed-Username
- ec_header_add "X-Authed-Username" "%{vctx_conn:auth_user}";
-}
-```
-
-For a list of the predefined context variables see [*Validation Context Variables*](/momentum/3/3-reference/3-reference-policy-context-variables) .
-
-** RFC822 Macros**
-
-
-
-- "%{rfc822:date}"
-
--
-
-returns a string that can be used as the value of a `Date` header. The date would be the time that this macro is expanded.
-
-
-
-
-
-** RFC2822 Macros**
-
-The following macros return a portion of a RFC2822 compliant message. Each expanded macro ends with `\r\n`.
-
-
-
-- "%{rfc2822:message}"
-
--
-
-returns the whole message including headers and body.
-
-
-
-- "%{rfc2822:message,*`n`*}"
-
--
-
-returns the first `n` lines of the message, including headers. n needs to be a non-negative integer.
-
-
-
-- "%{rfc2822:message,*`n`*b}"
-
--
-
-returns the first `n` bytes of the message, including headers. n needs to be a non-negative integer.
-
-
-
-- "%{rfc2822:headers}"
-
--
-
-returns the headers of the message.
-
-
-
-- "%{rfc2822:body}"
-
--
-
-returns the message body.
-
-
-
-- "%{rfc2822:body,*`n`*}"
-
--
-
-returns the first `n` lines of the message body. n needs to be a non-negative integer.
-
-
-
-- "%{rfc2822:body,*`n`*b}"
-
--
-
-returns the first `n` bytes of the message body. n needs to be a non-negative integer.
-
-
-
-- "%{rfc2822:text}"
-
--
-
-returns the body of the first text part of a message if the message is a MIME message or the message body if the message is not a MIME message and contains only plain text. The returned string will always be UTF-8 encoded.
-
-
-
-- "%{rfc2822:part,*`n`*}"
-
--
-
-returns the `nth` part of a MIME message, including the headers of that part. The returned string is in its original charset. No charset conversion will be performed. If there is no `nth` part, this macro returns an empty string. If a message is not a MIME message, it is viewed as a MIME message with only one part by this macro.
-
-
-
-- "%{rfc2822:text,*`n`*}"
-
--
-
-returns the `nth text` part of a message, including the headers of that part. The returned string is in its original charset. No charset conversion will be performed. If there is no `nth text`part, this macro returns an empty string. If a message is not a MIME message, it is viewed as a MIME message with only one part by this macro.
-
-
-
-- "%{rfc2822:text,*`n`*,*`m`*}"
-
--
-
-returns the first `m` lines of the `nth text` part of a message The returned string will always be UTF-8 encoded. If there is no `nth text`part, this macro returns an empty string. If a message is not a MIME message, it is viewed as a MIME message with only one part by this macro.
-
-
-
-
-
-** SPF Macros**
-```
-spf_macros {
-}
-```
-
-In version 3.0, the spf_macros module is loaded automatically as required. You can access the SPF macros from Sieve using the `spfv1` prefix.
-
-For more information about the spf modules see [Section 14.69, “spf Modules – spf_macros, spf_v1 and senderid (SPF v2)”](modules.spf "14.69. spf Modules – spf_macros, spf_v1 and senderid (SPF v2)").
-
-The following expansion possibilities are provided by the spf_macros module:
-
-```
-# If the envelope sender is strong-bad@email.example.com,
-# and the IPv4 SMTP client IP is 192.0.2.3,
-# and the PTR domain name of the client IP is mx.example.org,
-# then the following strings have the following commented expansions:
-
-"%{spfv1:s}" # strong-bad@email.example.com
-"%{spfv1:o}" # email.example.com
-"%{spfv1:d}" # email.example.com
-"%{spfv1:d4}" # email.example.com
-"%{spfv1:d3}" # email.example.com
-"%{spfv1:d2}" # example.com
-"%{spfv1:d1}" # com
-"%{spfv1:dr}" # com.example.email
-"%{spfv1:d2r}" # example.email
-"%{spfv1:l}" # strong-bad
-"%{spfv1:l-}" # strong.bad
-"%{spfv1:lr}" # strong-bad
-"%{spfv1:lr-}" # bad.strong
-"%{spfv1:l1r-}" # strong
-"%{spfv1:i}" # 192.0.2.3
-
-"%{spfv1:ir}.%{spfv1:v}._spf.%{spfv1:d2}"
-# 3.2.0.192.in-addr._spf.example.com
-
-"%{spfv1:lr-}.lp._spf.%{spfv1:d2}"
-# bad.strong.lp._spf.example.com
-
-"%{spfv1:lr-}.lp.%{spfv1:ir}.%{spfv1:v}._spf.%{spfv1:d2}"
-# bad.strong.lp.3.2.0.192.in-addr._spf.example.com
-
-"%{spfv1:ir}.%{spfv1:v}.%{spfv1:l1r-}.lp._spf.%{spfv1:d2}"
-# 3.2.0.192.in-addr.strong.lp._spf.example.com
-
-"%{spfv1:d2}.trusted-domains.example.net"
-# example.com.trusted-domains.example.net
-```
-
-Variables (a Momentum Sieve++ extension to the language) can be interpolated in strings by enclosing the variable name in `${}`. For example:
-
-```
-$ip = ec_dns_lookup "%{spfv1:ir}.dnsbl.org" "a";
-if not ec_test :is "${ip}" "127.0.0.2" {
- $explanation = ec_dns_lookup "%{spfv1:ir}.dnsbl.org" "txt";
- ec_action 550 "5.7.1 ${explanation}";
-}
-```
-
-A number of non-standard tests and actions are made available for you in Sieve++; a complete reference can be found in [*Sieve++ Function Reference*](/momentum/3/3-reference/sieve-ref-3) .
-
-### Sieve++ General-purpose Data Types
-
-Momentum's Sieve implementation includes general-purpose functions for working with counters, hash tables, and IP-address based time series.
-
-** Counters (Gauges)**
-
-A simple type of counter is available using [ec_inc_counter](/momentum/3/3-reference/sieve-ref-ec-inc-counter). This type of counter is useful for reporting but not for conditional logic. The counter value can be viewed or reset using the Momentum console or viewed graphically in the web console. A Sieve script can only increment the counter; thus it cannot be used in a conditional test.
-
-A more general counter mechanism supporting increment, decrement and get operations is provided by the [ec_gauge_cache](/momentum/3/3-reference/sieve-ref-ec-gauge-cache) commands. Since the counter value is available in Sieve, the value can be used in an "if" conditional.
-
-** Hash tables**
-
-Hash tables can be created and manipulated in Sieve using the `ec_hash` family of functions, most notably [hash_create](/momentum/3/3-reference/sieve-ref-hash-create) and [hash_set](/momentum/3/3-reference/sieve-ref-hash-set). A hash lookup is expressed using bracket syntax (e.g., `$hash["key"]`).
-
-The hash keys must be strings or expressions that resolve to strings. A hash value can be any valid Sieve value (string, number, stringlist or hashes).
-
-** Audit series**
-
-Audit series enable IP-address based events to be tracked over a rolling set of time windows. This makes it possible to implement policy decisions based on recent activity from IP addresses or CIDR blocks.
-
-For example, an audit series can be configured with six windows of 5 minutes each. This stores data for a half-hour leading up to the present; (every 5 minutes, the oldest window is discarded, the remaining windows shift, and a new window representing the present is created). In each window, a CIDR tree efficiently stores the IP addresses that were added and their respective counts.
-
-A Sieve script can add an IP address into an audit series using [audit_series_add](/momentum/3/3-reference/sieve-ref-audit-series-add). The script can query how many times an IP address (or aggregate total for a CIDR block) appears in the audit series using [audit_series](/momentum/3/3-reference/sieve-ref-audit-series).
-
-The use of numerous small windows is usually preferable to a few large windows. For example, aggregating over six 5-minute windows provides less drastic fluctuations than would two 15-minute windows. This is due to the discarding of the oldest data when the windows shift. (For example, at the moment the windows are shifted, the former series would retain the most recent 25 minutes of data, while the latter would retain only the most recent 15 minutes).
-
-** Cluster replicated types**
-
-Users of the cluster module may benefit from special replicated data types. As described in , [“Replication Configurations”](/momentum/3/3-reference/3-reference-cluster-config-replication#cluster.replication.features) a number of functions have special support for replicating their values across all nodes of a cluster.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-enhancements.md b/content/momentum/3/3-reference/sieve-enhancements.md
deleted file mode 100644
index e3b0fce5d..000000000
--- a/content/momentum/3/3-reference/sieve-enhancements.md
+++ /dev/null
@@ -1,142 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "RFC Standard Sieve Enhancements"
-description: "This section describes a number of open standards or draft proposals for Sieve extensions that are implemented in Momentum and that may also be found in other implementations of Sieve The following comparisons and comparators are implemented as specified in RFC 3431 These relational comparisons require an argument that describes..."
----
-
-This section describes a number of open standards (or draft proposals) for Sieve extensions that are implemented in Momentum and that may also be found in other implementations of Sieve.
-
-### relational
-
-The following comparisons and comparators are implemented as specified in RFC 3431\. These relational comparisons require an argument that describes the nature of the relational match.
-
-`require ["relational", "comparator-i;ascii-numeric"];`
-
-
-| Relational Match | Meaning |
-| --- | --- |
-| gt | Greater than |
-| ge | Greater than or equal to |
-| lt | Less than |
-| le | Less than or equal to |
-| eq | Equal to |
-| ne | Not equal to |
-| bitwise-and | Bitwise and |
-
-** 8.3.1.1. Numeric Comparator**`:comparator "i;ascii-numeric"`
-
-Specifying this comparator will cause the Sieve engine to interpret the string value of the operands as numeric values.
-
-** 8.3.1.2. The :count tag**`:count `
-
-When present, this tag will cause the Sieve engine to use the number of items represented by the test, rather than a literal value. The test in the example below is triggered when there are 20 or more "Received" headers in the message.
-
-
-
-
-```
-# reject messages with 20 or more Received headers
-if header :count "ge" :comparator "i;ascii-numeric" "Received" "20" {
- ec_action 551 "mail loop detected";
- stop;
-}
-```
-
-** 8.3.1.3. the :value tag**`:value `
-
-The `:value` tag causes the Sieve engine to take the value of the item represented by the test. It can be used only with comparators that return sorting information (such as relational comparators).
-
-
-
-
-```
-# make priority greater than 1 wait 10 seconds
-if header :value "gt" :comparator "i;ascii-numeric" ["x-priority"] ["1"] {
- ec_tarpit 10 "suspect self-importance";
-}
-```
-
-### body analysis
-
-The RFC draft, "draft-degener-sieve-body-02" describes concise methodologies to analyze the bodies of email messages.
-
-`body ( keylist: string | stringlist )`
-
-The body test uses the body of the message in various forms as specified by the *`body transform`* . All available comparisons can be used.
-
-** 8.3.2.1. :raw**
-
-Raw indicates that the message should be presented as is. No content decoding will be performed and malformed MIME messages will still be processed by the comparison.
-
-
-
-
-```
-# Look for the PCRE /\bv[il1][a4].{,3}[gk].{,2}r[a4]\b/ (Viagra)
-# and make the transaction wait 2 minutes (120 seconds)
-if body :raw :regex "\\bv[il1][a4].{,3}[gk].{,2}r[a4]\\b" {
- ec_tarpit 120 "Possible viagra reference";
-}
-```
-
-** 8.3.2.2. :content**`:content ( content-types: string | stringlist )`
-
-This transform will selectively process MIME parts that match the specified content types. The content types specified may be of the form `type` or `type/subtype`. If only the type is specified, then subtypes are ignored during the selection. If both the type and subtype are specified, then an exact match is used for selection of MIME parts.
-
-All MIME parts are decoded according to the appropriate transfer encoding (base64, quoted-printable, etc.). If possible the content will be translated into UTF-8.
-
-If the MIME parts are binary, you should use `:binary` instead of `:content`.
-
-
-
-
-```
-if body :content "text/plain" :contains "CONGRATULATIONS!" {
- ec_action 550 "5.7.1 possible lottery spam";
- stop;
-}
-```
-
-** 8.3.2.3. :binary**`:binary ( content-types: string | stringlist ) [ :offset ( start: number ) ]`
-
-This acts similarly to the `:content` transform with a few exceptions. MIME transfer decoding is performed, but no charset transformation is attempted. The content of the body for the purposes of matches is interpreted as the lowercased hexadecimal representation.
-
-Additionally, you may specify an optional byte offset into the binary content using the `:offset` tag.
-
-
-
-
-```
-# Reject mp3 audio types
-if body :binary "audio/mp3" :contains "" {
- ec_action 550 "5.7.1 no mp3's via email please";
- stop;
-}
-```
-
-
-
-
-```
-# Check if the bytes at offsets 1000...1003 match some fictitious
-# signature 44, 3c, 0, 1; if yes, reject the message.
-if body :binary ["application"] :offset 1000 :matches "44 3c 00 01 *" {
- ec_action 550 "example virus detected";
- stop;
-}
-```
-
-** 8.3.2.4. :text**
-
-The `:text` transform iterates over all parts of an email and makes every effort to convert the data into textual information in UTF-8 format.
-
-
-
-
-```
-# Look for the string "some bad text"
-if body :text :contains "some bad text" {
- ec_action 550 "we don't accept email with some bad text";
- stop;
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-3-function-summary.md b/content/momentum/3/3-reference/sieve-ref-3-function-summary.md
deleted file mode 100644
index 64f44f9fe..000000000
--- a/content/momentum/3/3-reference/sieve-ref-3-function-summary.md
+++ /dev/null
@@ -1,167 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Sieve Function Summary"
-description: "This table lists all Sieve functions alphabetically giving a brief description Click the function name to see detailed information Table 16 1 Sieve functions Name Description Class Type Phases add recipient Add a new envelope recipient to the mail misc receiving data mailfrom rcptto spool address Return the address from..."
----
-
-This table lists all Sieve functions alphabetically giving a brief description. Click the function name to see detailed information.
-
-
-
-
-| Name | Description | Class | Type | Phases |
-| --- | --- | --- | --- | --- |
-| **[add_recipient](/momentum/3/3-reference/sieve-ref-add-recipient)** | Add a new envelope recipient to the mail | misc | receiving | data, mailfrom, rcptto, spool |
-| **[address](/momentum/3/3-reference/sieve-ref-address)** | Return the address from a header | misc | both | data, each_rcpt, mailfrom, rcptto, set_binding |
-| **[advertize_esmtp_capability](/momentum/3/3-reference/sieve-ref-advertize-esmtp-capability)** | Add a string to the EHLO response | misc | receiving | connect, ehlo |
-| **[audit_connections_on_listener](/momentum/3/3-reference/sieve-ref-audit-connections-on-listener)** | Return the number of connections currently established from a CIDR block | cidr | receiving | any |
-| **[audit_connections_on_service](/momentum/3/3-reference/sieve-ref-audit-connections-on-service)** | Return the number of connections currently established from a CIDR block | cidr | receiving | any |
-| **[audit_series](/momentum/3/3-reference/sieve-ref-audit-series)** | Return the audit series count associated with an IP address or CIDR block over a window range | cidr | receiving | any |
-| **[audit_series_add](/momentum/3/3-reference/sieve-ref-audit-series-add)** | Add to a named audit series | cidr | receiving | any |
-| **[audit_service](/momentum/3/3-reference/sieve-ref-audit-service)** | Return how many connections currently are established from a CIDR block to an arbitrary service | cidr | receiving | any |
-| **[beik_scan](/momentum/3/3-reference/3-reference-modules-beik#modules.beik.runtime)** | Analyze a message using BEIK | av | receiving | data |
-| **[brightmail](/momentum/3/3-reference/sieve-ref-brightmail)** | Scan using Brightmail | av | receiving | data |
-| **[cidrdb](/momentum/3/3-reference/sieve-ref-cidrdb)** | Check the CIDR information pathway specified by the first argument | cidr | receiving | any |
-| **[antivirus](/momentum/3/3-reference/sieve-ref-antivirus)** | Scan with Clamav | av | receiving | data |
-| **[cloudmark_score](/momentum/3/3-reference/sieve-ref-cloudmark-score)** | Analyze a message with Cloudmark Authority | av | both | data |
-| **[commtouch_scan](/momentum/3/3-reference/sieve-ref-commtouch-scan)** | Scan using the commtouch module | av | receiving | data |
-| **[antivirus](/momentum/3/3-reference/sieve-ref-antivirus)** | Scan with the csapi antivirus engine | av | receiving | data |
-| **[cidrdb](/momentum/3/3-reference/sieve-ref-cidrdb)** | Create the pathway for CIDR information | cidr | receiving | each_rcpt |
-| **[disable_esmtp_capability](/momentum/3/3-reference/sieve-ref-disable-esmtp-capability)** | Remove a string from the EHLO response | misc | receiving | connect, ehlo |
-| **[discard](/momentum/3/3-reference/sieve-ref-discard)** | Silently throw away a message | misc | receiving | data, each_rcpt, rcptto, spool |
-| **[disclaimer_add](/momentum/3/3-reference/sieve-ref-disclaimer-add)** | Add a disclaimer to an email | misc | receiving | data, each_rcpt, spool |
-| **[ds_execute](/momentum/3/3-reference/sieve-ref-ds-execute)** | Execute a query on a datasource | ds | na | any |
-| **[ds_fetch](/momentum/3/3-reference/sieve-ref-ds-fetch)** | Query and fetch a row from a datasource | ds | na | any |
-| **[ds_fetch_flat](/momentum/3/3-reference/sieve-ref-ds-fetch-flat)** | Query and fetch all rows from a datasource | ds | na | any |
-| **[ds_fetch_hash](/momentum/3/3-reference/sieve-ref-ds-fetch-hash)** | Query and fetch a row from a datasource | ds | na | any |
-| **[ec_action](/momentum/3/3-reference/sieve-ref-ec-action)** | Set SMTP status code | misc | receiving | any |
-| **[ec_add](/momentum/3/3-reference/sieve-ref-ec-add)** | Add two numbers | math | na | any |
-| **[ec_base64_decode](/momentum/3/3-reference/sieve-ref-ec-base-64-decode)** | Decode base64 encoded text | misc | na | any |
-| **[ec_base64_encode](/momentum/3/3-reference/sieve-ref-ec-base-64-encode)** | Encode text as base64 | misc | na | any |
-| **[ec_bounce_classify](/momentum/3/3-reference/sieve-ref-ec-bounce-classify)** | Perform bounce classification on the message | bounce | receiving | data, each_rcpt, set_binding, spool |
-| **[ec_ceil](/momentum/3/3-reference/sieve-ref-ec-ceil)** | Round up to the nearest integer | math | na | any |
-| **[ec_cluster_cache_get](/momentum/3/3-reference/sieve-ref-ec-cluster-cache-get)** | Retrieve a value from a cluster-wide replicated cache | cidr | both | accept, connect, data, ehlo, mailfrom, rcptto |
-| **[ec_cluster_cache_set](/momentum/3/3-reference/sieve-ref-ec-cluster-cache-set)** | Set a value in a cluster-wide replicated cache | cidr | both | accept, connect, data, ehlo, mailfrom, rcptto |
-| **[ec_config](/momentum/3/3-reference/sieve-ref-ec-config)** | Get Momentum configuration from Sieve | misc | na | any |
-| **[discard](/momentum/3/3-reference/sieve-ref-discard)** | Silently throw away a message (alias for discard) | misc | receiving | data, each_rcpt, rcptto, spool |
-| **[ec_disconnect](/momentum/3/3-reference/sieve-ref-ec-disconnect)** | Set SMTP status and close the SMTP connection | misc | receiving | any |
-| **[ec_div](/momentum/3/3-reference/sieve-ref-ec-div)** | Divide two numbers | math | na | any |
-| **[ec_dk_responsible_domain](/momentum/3/3-reference/sieve-ref-ec-dk-responsible-domain)** | Return the domain responsible for the current message | dk | sending | data, each_rcpt, set_binding, spool |
-| **[ec_dk_sign](/momentum/3/3-reference/sieve-ref-ec-dk-sign)** | Sign a message with the DomainKeys protocol | dk | sending | core_final_validation |
-| **[ec_dkim_domains](/momentum/3/3-reference/sieve-ref-ec-dkim-domains)** | Return a list of valid signing domains | dkim | sending | data, each_rcpt, set_binding, spool |
-| **[ec_dkim_responsible_domain](/momentum/3/3-reference/sieve-ref-ec-dkim-responsible-domain)** | Return the domain responsible for the current message | dkim | sending | data, each_rcpt, set_binding, spool |
-| **[ec_dkim_sign](/momentum/3/3-reference/sieve-ref-ec-dkim-sign)** | Sign a message with the DKIM protocol | dkim | sending | core_final_validation |
-| **[ec_dns_lookup](/momentum/3/3-reference/sieve-ref-ec-dns-lookup)** | Perform a DNS record lookup | misc | both | any |
-| **[ec_error_mode](/momentum/3/3-reference/sieve-ref-ec-error-mode)** | Set the error mode to "fail" or "continue" | misc | na | any |
-| **[split](/momentum/3/3-reference/sieve-ref-split)** | Explode a string into a stringlist, a synonym for split | string | na | any |
-| **[ec_floor](/momentum/3/3-reference/sieve-ref-ec-floor)** | Round down to the nearest integer | math | na | any |
-| **[ec_forward](/momentum/3/3-reference/sieve-ref-ec-forward)** | Forward a message | misc | both | data, each_rcpt, set_binding, spool |
-| **[ec_gauge_cache](/momentum/3/3-reference/sieve-ref-ec-gauge-cache)** | Create the given key in a given cache and decrement it | misc | na | any |
-| **[ec_gauge_cache](/momentum/3/3-reference/sieve-ref-ec-gauge-cache)** | Return the value of the specified key | misc | na | any |
-| **[ec_gauge_cache](/momentum/3/3-reference/sieve-ref-ec-gauge-cache)** | Create the given key in a given cache and increment it | misc | na | any |
-| **[ec_gauge_cache](/momentum/3/3-reference/sieve-ref-ec-gauge-cache)** | Create a cache with the given max number of elements | misc | na | any |
-| **[ec_get_message_code](/momentum/3/3-reference/sieve-ref-ec-get-message-code)** | Return the current SMTP status code for a message | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_creation_time](/momentum/3/3-reference/sieve-ref-ec-get-message-creation-time)** | Return the creation_time of the current message | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_id](/momentum/3/3-reference/sieve-ref-ec-get-message-id)** | Return the message's unique ID | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_mailfrom](/momentum/3/3-reference/sieve-ref-ec-get-message-mailfrom)** | Return the mailfrom of the current message | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_num_retries](/momentum/3/3-reference/sieve-ref-ec-get-message-num-retries)** | Return the num_retries of the current message | misc | sending | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_protocol](/momentum/3/3-reference/sieve-ref-ec-get-message-protocol)** | Return the protocol of the current message | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_rcptto](/momentum/3/3-reference/sieve-ref-ec-get-message-rcptto)** | Return the rcptto of the current message | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_received_from](/momentum/3/3-reference/sieve-ref-ec-get-message-received-from)** | Return the IP address that the message was received from | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_received_from_port](/momentum/3/3-reference/sieve-ref-ec-get-message-received-from-port)** | Return the port that the message was received from | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_received_via](/momentum/3/3-reference/sieve-ref-ec-get-message-received-via)** | Return the IP address that the message was received via | misc | receiving | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_received_via_port](/momentum/3/3-reference/sieve-ref-ec-get-message-received-via-port)** | Return the local port that the message was received on | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_size](/momentum/3/3-reference/sieve-ref-ec-get-message-size)** | Return the size of the current message in bytes | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_get_message_spool_name](/momentum/3/3-reference/sieve-ref-ec-get-message-spool-name)** | Return the filename of the message spool | misc | both | data, each_rcpt, rcptto, set_binding, spool |
-| **[ec_header_add](/momentum/3/3-reference/sieve-ref-ec-header-add)** | Prepend a header to the current message | misc | both | data, each_rcpt, spool |
-| **[ec_header_delete](/momentum/3/3-reference/sieve-ref-ec-header-delete)** | Remove a header from the current message | misc | both | data, each_rcpt, set_binding, spool |
-| **[ec_header_get](/momentum/3/3-reference/sieve-ref-ec-header-get)** | Obtain the values for a particular header | misc | both | data, each_rcpt, set_binding, spool |
-| **[ec_header_postfix](/momentum/3/3-reference/sieve-ref-ec-header-postfix)** | Append to a header of the current message | misc | both | data, each_rcpt, spool |
-| **[ec_header_prefix](/momentum/3/3-reference/sieve-ref-ec-header-prefix)** | Prepend to a header of the current message | misc | both | data, each_rcpt, spool |
-| **[ec_host_fingerprint](/momentum/3/3-reference/sieve-ref-ec-host-fingerprint)** | Return genre and detail of the passive host fingerprinting operation | misc | receiving | any |
-| **[ec_inc_counter](/momentum/3/3-reference/sieve-ref-ec-inc-counter)** | Increment a Sieve counter | misc | na | any |
-| **[ec_include](/momentum/3/3-reference/sieve-ref-ec-include)** | Include and run a Sieve script | meta | na | any |
-| **[ec_interfaces](/momentum/3/3-reference/sieve-ref-ec-interfaces)** | Obtain a list of network interfaces | resource | na | any |
-| **[ec_ip_connections](/momentum/3/3-reference/sieve-ref-ec-ip-connections)** | Audit how many connections an IP address has made | audit | receiving | any |
-| **[ec_ip_connections_cluster](/momentum/3/3-reference/sieve-ref-ec-ip-connections-cluster)** | Audit how many connections an IP address has made cluster-wide | audit | receiving | any |
-| **[ec_ip_receptions](/momentum/3/3-reference/sieve-ref-ec-ip-receptions)** | Audit how many receivings an IP address has made | audit | receiving | any |
-| **[ec_ip_receptions_cluster](/momentum/3/3-reference/sieve-ref-ec-ip-receptions-cluster)** | Audit how many receivings an IP address has made cluster-wide | audit | receiving | any |
-| **[ec_ip_rejections](/momentum/3/3-reference/sieve-ref-ec-ip-rejections)** | Audit how many rejections an IP address has made | audit | receiving | any |
-| **[ec_ip_rejections_cluster](/momentum/3/3-reference/sieve-ref-ec-ip-rejections-cluster)** | Audit how many rejections an IP address has made cluster-wide | audit | receiving | any |
-| **[keep](/momentum/3/3-reference/sieve-ref-keep)** | Keep the current message, a synonym for keep | misc | receiving | any |
-| **[ec_log](/momentum/3/3-reference/sieve-ref-ec-log)** | Log to the paniclog | misc | na | any |
-| **[ec_log_file](/momentum/3/3-reference/sieve-ref-ec-log-file)** | Log to a file/io wrapper | log | na | each_rcpt, set_binding, spool |
-| **[ec_maildir](/momentum/3/3-reference/sieve-ref-ec-maildir)** | Write the current message into a maildir mailbox | misc | receiving | each_rcpt |
-| **[ec_mem_usage](/momentum/3/3-reference/sieve-ref-ec-mem-usage)** | Return the amount of memory used by Momentum | resource | na | any |
-| **[ec_mime_boundary_create](/momentum/3/3-reference/sieve-ref-ec-mime-boundary-create)** | Return a string to be used as a boundary when creating a MIME message | string | sending | any |
-| **[ec_mime_parts](/momentum/3/3-reference/sieve-ref-ec-mime-parts)** | Test against metadata for each MIME part in a message | misc | both | data, each_rcpt, set_binding, spool |
-| **[ec_mod](/momentum/3/3-reference/sieve-ref-ec-mod)** | Calculate the modulus of two numbers | math | na | any |
-| **[ec_mul](/momentum/3/3-reference/sieve-ref-ec-mul)** | Perform multiplication of two numbers | math | na | any |
-| **[ec_nearbyint](/momentum/3/3-reference/sieve-ref-ec-nearbyint)** | Round to the nearest integer based on rounding direction | math | na | any |
-| **[ec_pcre_match](/momentum/3/3-reference/sieve-ref-ec-pcre-match)** | Perform a regular expression match | pcre | na | any |
-| **[ec_rand](/momentum/3/3-reference/sieve-ref-ec-rand)** | Generate a random number no larger than max or a random string from a list | math | na | any |
-| **[redirect](/momentum/3/3-reference/sieve-ref-redirect)** | Change the envelope recipient, a synonym for redirect | misc | both | data, each_rcpt, rcptto, spool |
-| **[reject](/momentum/3/3-reference/sieve-ref-reject)** | Reject the message, returning an MDN to the sender, a synonym for reject | misc | receiving | any |
-| **[ec_rewrite_mailfrom](/momentum/3/3-reference/sieve-ref-ec-rewrite-mailfrom)** | Change the envelope sender | misc | both | data, each_rcpt, rcptto, spool |
-| **[ec_rfc2047_encode_addresses](/momentum/3/3-reference/sieve-ref-ec-rfc-2047-encode-addresses)** | Create an RFC2047-compliant address | rfc | sending | data, each_rcpt, spool |
-| **[ec_rfc2047_encode_header](/momentum/3/3-reference/sieve-ref-ec-rfc-2047-encode-header)** | Encode a string for use in a RFC2047-compliant header | rfc | sending | any |
-| **[ec_rfc3464_delivery_status](/momentum/3/3-reference/sieve-ref-ec-rfc-3464-delivery-status)** | Return a string containing fields for a RFC3464 DSN | rfc | sending | data, each_rcpt, set_binding, spool |
-| **[ec_round](/momentum/3/3-reference/sieve-ref-ec-round)** | Round away from zero | math | na | any |
-| **[ec_set_binding](/momentum/3/3-reference/sieve-ref-ec-set-binding)** | Assign a message to a MultiVIP© binding | virtual | both | set_binding |
-| **[ec_set_binding](/momentum/3/3-reference/sieve-ref-ec-set-binding)** | Assign a message to a MultiVIP© binding group | virtual | both | set_binding |
-| **[ec_set_routing_gateway](/momentum/3/3-reference/sieve-ref-ec-set-routing-gateway)** | Dynamically change the gateway based on recipient | misc | sending | each_rcpt |
-| **[ec_shared_throttle](/momentum/3/3-reference/sieve-ref-ec-shared-throttle)** | Check to see if the specified throttle currently exceeds its quota | shaping | both | any |
-| **[ec_shared_throttle](/momentum/3/3-reference/sieve-ref-ec-shared-throttle)** | Create a shared throttle | shaping | both | any |
-| **[ec_shared_throttle](/momentum/3/3-reference/sieve-ref-ec-shared-throttle)** | Indicate to the specified throttle that it has received a message to be counted | shaping | both | any |
-| **[ec_shared_throttle](/momentum/3/3-reference/sieve-ref-ec-shared-throttle)** | Increment the named throttle, and tarpit for a length of time | shaping | both | any |
-| **[ec_spool_space](/momentum/3/3-reference/sieve-ref-ec-spool-space)** | Return information about the free space on the spool partition | resource | na | any |
-| **[ec_sub](/momentum/3/3-reference/sieve-ref-ec-sub)** | Perform subtraction of two numbers | math | na | any |
-| **[ec_tarpit](/momentum/3/3-reference/sieve-ref-ec-tarpit)** | Impose a time penalty | shaping | receiving | any |
-| **[ec_test](/momentum/3/3-reference/sieve-ref-ec-test)** | Function for using comparators | misc | na | any |
-| **[ec_thread_pool_get_queue_size](/momentum/3/3-reference/sieve-ref-ec-thread-pool-get-queue-size)** | Get the number of jobs queued against a job class | resource | both | any |
-| **[ec_throttle](/momentum/3/3-reference/sieve-ref-ec-throttle)** | Indicate to the specified throttle that it should remove a message from being counted | shaping | both | any |
-| **[ec_throttle](/momentum/3/3-reference/sieve-ref-ec-throttle)** | Create a throttle of the specified name | shaping | both | any |
-| **[ec_throttle](/momentum/3/3-reference/sieve-ref-ec-throttle)** | Indicate to the specified throttle that it should remove a message from being counted | shaping | both | any |
-| **[ec_throttle](/momentum/3/3-reference/sieve-ref-ec-throttle)** | Indicate to the specified throttle that it has received a message to be counted | shaping | both | any |
-| **[ec_throttle](/momentum/3/3-reference/sieve-ref-ec-throttle)** | Wait for the specified length of time | shaping | both | any |
-| **[ec_tolower](/momentum/3/3-reference/sieve-ref-ec-tolower)** | Change all characters to lower case | string | na | any |
-| **[ec_trace_context](/momentum/3/3-reference/sieve-ref-ec-trace-context)** | Add X-Trace-Context header to the current message | misc | both | data, each_rcpt, spool |
-| **[ec_trunc](/momentum/3/3-reference/sieve-ref-ec-trunc)** | Round toward zero | math | na | any |
-| **[ec_url_ripper](/momentum/3/3-reference/sieve-ref-ec-url-ripper)** | Extract domains and urls for lookup in DNSBL | misc | receiving | data |
-| **[ec_valid_binding](/momentum/3/3-reference/sieve-ref-ec-valid-binding)** | Check whether a named MultiVIP© binding exists | virtual | both | any |
-| **[ec_valid_binding](/momentum/3/3-reference/sieve-ref-ec-valid-binding)** | Check whether a named MultiVIP© binding group exists | virtual | both | any |
-| **[ec_valid_mime](/momentum/3/3-reference/sieve-ref-ec-valid-mime)** | Determine if the message is valid MIME | misc | both | data, each_rcpt, set_binding, spool |
-| **[eleven_scan](/momentum/3/3-reference/sieve-ref-eleven-scan)** | Scan with eleven | av | receiving | data |
-| **[envelope](/momentum/3/3-reference/sieve-ref-envelope)** | Return the envelope sender or recipient | misc | both | any |
-| **[antivirus](/momentum/3/3-reference/sieve-ref-antivirus)** | Scan with F-Secure | av | receiving | data |
-| **[generate_mail_raw](/momentum/3/3-reference/sieve-ref-generate-mail-raw)** | Generate and send out a message | misc | sending | any |
-| **[hash_create](/momentum/3/3-reference/sieve-ref-hash-create)** | Create a hash | hash | na | any |
-| **[hash_dump](/momentum/3/3-reference/sieve-ref-hash-dump)** | Dump the contents of a hash to the panic log | hash | na | any |
-| **[hash_get](/momentum/3/3-reference/sieve-ref-hash-get)** | Get the value associated with the specified key | hash | na | any |
-| **[hash_keys](/momentum/3/3-reference/sieve-ref-hash-keys)** | Return all the keys of a hash as a string list | hash | na | any |
-| **[hash_set](/momentum/3/3-reference/sieve-ref-hash-set)** | Set an element in a hash | hash | na | any |
-| **[hash_values](/momentum/3/3-reference/sieve-ref-hash-values)** | Return all the string values of a hash as a string list | hash | na | any |
-| **[is_true](/momentum/3/3-reference/sieve-ref-is-true)** | Provides a simple logical test on the value of a variable | misc | na | any |
-| **[join](/momentum/3/3-reference/sieve-ref-join)** | Join stringlist elements into a single string | string | na | any |
-| **[keep](/momentum/3/3-reference/sieve-ref-keep)** | Keep the current message | misc | receiving | any |
-| **[pe2_mark_bounced](/momentum/3/3-reference/sieve-ref-pe-2-mark-bounced)** | Log bounce events when the pe2_logger module is loaded passively | log | receiving | data |
-| **[pe2_mark_unsubscribed](/momentum/3/3-reference/sieve-ref-pe-2-mark-unsubscribed)** | Log unsubscribe events when the pe2_logger module is loaded passively | log | receiving | data |
-| **[qp_encode](/momentum/3/3-reference/sieve-ref-qp-encode)** | Quoted-printable encode a string | string | both | any |
-| **[cidrdb](/momentum/3/3-reference/sieve-ref-cidrdb)** | Obtain data associated with the CIDR information pathway | cidr | receiving | any |
-| **[redirect](/momentum/3/3-reference/sieve-ref-redirect)** | Change the envelope recipient | misc | both | data, each_rcpt, rcptto, spool |
-| **[reject](/momentum/3/3-reference/sieve-ref-reject)** | Reject the message, returning an MDN to the sender | bounce | receiving | any |
-| **[cidrdb](/momentum/3/3-reference/sieve-ref-cidrdb)** | Reload the information from the pathway specified by the argument | cidr | receiving | any |
-| **[reverse](/momentum/3/3-reference/sieve-ref-reverse)** | Reverse a string or a stringlist | string | na | any |
-| **[reverse_delim](/momentum/3/3-reference/sieve-ref-reverse-delim)** | Reverse a string based on a delimiter | string | na | any |
-| **[smtp_callback_verify](/momentum/3/3-reference/sieve-ref-smtp-callback-verify)** | Perform SMTP callback on an email address | misc | receiving | mailfrom, rcptto |
-| **[snmp_trap](/momentum/3/3-reference/sieve-ref-snmp-trap)** | Send SNMP traps from a Sieve script | snmp | na | any |
-| **[split](/momentum/3/3-reference/sieve-ref-split)** | Split a string into a stringlist | string | na | any |
-| **[stop](/momentum/3/3-reference/sieve-ref-stop)** | Stop processing the current script | control | na | any |
-| **[thread_pool_stats](/momentum/3/3-reference/sieve-ref-thread-pool-stats)** | Obtain information about thread pools | resource | na | any |
-| **[type](/momentum/3/3-reference/sieve-ref-type)** | Test the type of the value in a Sieve variable | misc | na | any |
-| **[vctx_conn_delete](/momentum/3/3-reference/sieve-ref-vctx-conn-delete)** | Delete a key from the connection context | vctx | both | any |
-| **[vctx_conn_get](/momentum/3/3-reference/sieve-ref-vctx-conn-get)** | Obtain the value of a connection context key | vctx | both | any |
-| **[vctx_conn_set](/momentum/3/3-reference/sieve-ref-vctx-conn-set)** | Set a value in the connection context | vctx | both | any |
-| **[vctx_mess_delete](/momentum/3/3-reference/sieve-ref-vctx-mess-delete)** | Delete a key from the message context | vctx | both | any |
-| **[vctx_mess_get](/momentum/3/3-reference/sieve-ref-vctx-mess-get)** | Obtain the value of a message context key | vctx | both | any |
-| **[vctx_mess_set](/momentum/3/3-reference/sieve-ref-vctx-mess-set)** | Set a value in the message context | vctx | both | any |
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-3.md b/content/momentum/3/3-reference/sieve-ref-3.md
deleted file mode 100644
index 0adab53cf..000000000
--- a/content/momentum/3/3-reference/sieve-ref-3.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Sieve++ Function Reference"
-description: "Table of Contents 16 1 Sieve Function Summary 16 2 Sieve Function Details..."
----
-
diff --git a/content/momentum/3/3-reference/sieve-ref-add-recipient.md b/content/momentum/3/3-reference/sieve-ref-add-recipient.md
deleted file mode 100644
index f830682ed..000000000
--- a/content/momentum/3/3-reference/sieve-ref-add-recipient.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "add_recipient"
-description: "add recipient add a new envelope recipient to the mail add recipient address This action will add an envelope recipient a RCPT TO address to the current mail The headers and the body of the message will not be changed in any way Existing recipients will also not be affected..."
----
-
-
-## Name
-
-add_recipient — add a new envelope recipient to the mail
-
-## Synopsis
-
-`add_recipient` { *`address`* }
-
-
-## Description
-
-This action will add an envelope recipient (a `RCPT TO`) address to the current mail. The headers and the body of the message will not be changed in any way. Existing recipients will also not be affected.
-
-### Warning
-
-This function should only be used in the each_rcpt phase.
-
-
-
-
-```
-if envelope :domain :is "to" "bar.com" {
- add_recipient "sideline@foo.com";
- stop;
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-address.md b/content/momentum/3/3-reference/sieve-ref-address.md
deleted file mode 100644
index ec24fad1a..000000000
--- a/content/momentum/3/3-reference/sieve-ref-address.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "address"
-description: "address return the address from a header address header element string This function implements the standard address Sieve test it parses addresses out of the header you request and tests against them For more information see Section 8 2 Sieve's Basic Syntax Example 16 2 address example This function returns..."
----
-
-
-## Name
-
-address — return the address from a header
-
-## Synopsis
-
-`address` { header_element } { *`string`* }
-
-
-## Description
-
-This function implements the standard "address" Sieve test; it parses addresses out of the header you request and tests against them. For more information see [“Sieve's Basic Syntax”](/momentum/3/3-reference/sieve-syntax-basic).
-
-
-
-
-```
-if address ["From", "To"] "lemon@test.messagesystems.com" {
- ec_log "lemon";
-} else {
- ec_log "not-lemon";
-}
-```
-
-This function returns the first matching address as a string value. When using the `test` form of address, with a comparator or regex, it will match against all addresses. See also [“Sieve's Basic Syntax”](/momentum/3/3-reference/sieve-syntax-basic).
-
-
-## See Also
-
-[envelope](/momentum/3/3-reference/sieve-ref-envelope)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-advertize-esmtp-capability.md b/content/momentum/3/3-reference/sieve-ref-advertize-esmtp-capability.md
deleted file mode 100644
index 3f204cff3..000000000
--- a/content/momentum/3/3-reference/sieve-ref-advertize-esmtp-capability.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "advertize_esmtp_capability"
-description: "advertize esmtp capability add a string to the EHLO response advertize esmtp capability string Use this function to add a string to the EHLO response This function is typically used in the connect phase To remove a string use disable esmtp capability Example 16 3 advertize esmtp capability example disable..."
----
-
-
-## Name
-
-advertize_esmtp_capability — add a string to the EHLO response
-
-## Synopsis
-
-`advertize_esmtp_capability` { *`string`* }
-
-
-## Description
-
-Use this function to add a string to the EHLO response. This function is typically used in the connect phase. To remove a string use `disable_esmtp_capability`.
-
-
-
-
-`advertize_esmtp_capability "8bitmime"`
-
-## See Also
-
-[disable_esmtp_capability](/momentum/3/3-reference/sieve-ref-disable-esmtp-capability)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-antivirus.md b/content/momentum/3/3-reference/sieve-ref-antivirus.md
deleted file mode 100644
index 388efcb45..000000000
--- a/content/momentum/3/3-reference/sieve-ref-antivirus.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "antivirus"
-description: "f secure avscan clamav avscan csapi avscan antivirus functions for Sieve f secure avscan clamav avscan csapi avscan These Sieve tests and actions are provided by the Section 14 5 antivirus Antivirus Modules you must have loaded and correctly configured it before you can successfully use them They can be..."
----
-
-
-## Name
-
-f_secure_avscan, clamav_avscan, csapi_avscan — antivirus functions for Sieve
-
-## Synopsis
-
-`f_secure_avscan`
-
-`clamav_avscan`
-
-`csapi_avscan`
-
-
-## Description
-
-These Sieve tests and actions are provided by the [“antivirus – Antivirus Modules”](/momentum/3/3-reference/3-reference-modules-antivirus); you must have loaded and correctly configured it before you can successfully use them. They can be used only in the data validation phase.
-
-### Note
-
-The fsecure module is not supported in version 3.1.
-
-The antivirus framework automatically registers Sieve actions for each antivirus engine that is loaded into Momentum, allowing you to selectively run the engine based on criteria in a Sieve script. The chief benefit of doing this is to reduce the CPU cost of scanning messages if some earlier validation has decided that the mail will be rejected. In order to reap this benefit, you should load your antivirus modules in "passive" mode:
-
-```
-clamav {
- Enabled = false
- ...
-}
-```
-
-Validation modules loaded in passive mode will not have their validation hooks called automatically, which means that inbound messages will not be virus scanned unless you explicitly call the corresponding Sieve action.
-
-As each AV module is loaded, the AV framework registers a Sieve action to trigger a scan. The action name is built up from the name of the AV engine with non alpha-numeric characters translated to underscores with `_avscan` appended to it. The F-Secure engine using **f_secure_avscan**, the ClamAV engine using **clamav_avscan** and the csapi engine using **csapi_avscan**. Other third party AV modules will be named in a similar fashion.
-
-Usage is as simple as:
-
-`clamav_avscan;`
-
-The action returns no value. The scanning process will mark up the validation context for further processing by a Sieve script. For example, add the following block in your `ecelerity.conf`:
-
-```
-clamav {
- Enabled = false
- daemon = "127.0.0.1:3310"
- timeout = "20"
- action = pass
- paranoid = false
- context_variable = "VIRUS"
- skip_context_variable = "skip_virus_check"
- file_base = "/var/tmp"
-}
-
-sieve "sieve1" {
- script "data_phase1" {
- source = "/path/to/clamav.siv"
- }
-}
-```
-
-The value of `context_variable` is prefixed to `_info` to create the vctx_mess context variable `VIRUS_info`. This variable is used in the following Sieve script saved as `/path/to/clamav.siv`:
-
-```
-clamav_avscan;
-
-if vctx :contains "VIRUS_info" "error" {
- ec_action 451 "AV system offline" "virus:check error";
- stop;
-}
-elsif vctx :contains "VIRUS_info" "" {
- ec_action 550 "Virus detected %{vctx_mess:clamav_status_info}" "virus:Viruses rejected";
- stop;
-}
-# if we got here, there was no virus detected
-```
-
-The %{vctx_mess:*`avscan`*_status_info} will contain textual information from the AV engine itself, typically the virus name. The actual name of this context variable is the engine name prepended to `_status_info` so it varies depending upon the antivirus engine used. (In this particular case it is `clamav_status_info`.) See [“antivirus – Antivirus Modules”](/momentum/3/3-reference/3-reference-modules-antivirus) for more details.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-audit-connections-on-listener.md b/content/momentum/3/3-reference/sieve-ref-audit-connections-on-listener.md
deleted file mode 100644
index cc96dd182..000000000
--- a/content/momentum/3/3-reference/sieve-ref-audit-connections-on-listener.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "audit_connections_on_listener"
-description: "audit connections on listener Return the number of connections currently established from a CIDR block audit connections on listener address mask audit connections on listener returns a stringlist containing a single member which is a string containing the number of connections the CIDR block argument currently has established to the..."
----
-
-
-## Name
-
-audit_connections_on_listener — Return the number of connections currently established from a CIDR block
-
-## Synopsis
-
-`audit_connections_on_listener` { *`address/mask`* }
-
-
-## Description
-
-`audit_connections_on_listener` returns a stringlist containing a single member, which is a string containing the number of connections the CIDR block argument currently has established to the SMTP listener on the system. The address may be omitted, to cause the action to use the current IP address instead. In that case, one could provide an argument of "/32" or "/24" to get the current connections for the IP address currently connecting or for the /24 CIDR block of the IP address currently connecting.
-
-### Note
-
-This feature requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-### IPv6 Support
-
-As of version 3.4, this feature supports IPv6.
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-
-
-
-```
-($connections) = audit_connections_on_listener "/32";
-($c_connections) = audit_connections_on_listener "/24";
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${connections}" "1000" {
- ec_tarpit 10 "too many connections /32";
-}
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${c_connections}" "10000" {
- ec_tarpit 10 "too many connections /24";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-audit-connections-on-service.md b/content/momentum/3/3-reference/sieve-ref-audit-connections-on-service.md
deleted file mode 100644
index b2191c2df..000000000
--- a/content/momentum/3/3-reference/sieve-ref-audit-connections-on-service.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "audit_connections_on_service"
-description: "audit connections on service Return the number of connections currently established from a CIDR block audit connections on service address mask audit connections on service returns a stringlist containing a single member which is a string containing the number of connections the CIDR block argument currently has established to the..."
----
-
-
-## Name
-
-audit_connections_on_service — Return the number of connections currently established from a CIDR block
-
-## Synopsis
-
-`audit_connections_on_service` { *`address/mask`* }
-
-
-## Description
-
-`audit_connections_on_service` returns a stringlist containing a single member, which is a string containing the number of connections the CIDR block argument currently has established to the SMTP service on the system. The address may be omitted, to cause the action to use the current IP address instead. In that case, one could provide an argument of "/32" or "/24" to get the current connections for the IP address currently connecting or for the /24 CIDR block of the IP address currently connecting.
-
-### Note
-
-This feature requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-### IPv6 Support
-
-As of version 3.4, this feature supports IPv6.
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-
-
-
-```
-($connections) = audit_connections_on_service "/32";
-($c_connections) = audit_connections_on_service "/24";
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${connections}" "1000" {
- ec_tarpit 10 "too many connections /32";
-}
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${c_connections}" "10000" {
- ec_tarpit 10 "too many connections /24";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-audit-series-add.md b/content/momentum/3/3-reference/sieve-ref-audit-series-add.md
deleted file mode 100644
index 67bf4f40a..000000000
--- a/content/momentum/3/3-reference/sieve-ref-audit-series-add.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "audit_series_add"
-description: "audit series add Add to a named series audit series add series name interval number amount to add audit series add hash Audit series enable IP address based events to be tracked over a rolling set of time windows For further background see the section called Audit series As of..."
----
-
-
-## Name
-
-audit_series_add — Add to a named series
-
-## Synopsis
-
-`audit_series_add` { *`series_name`* } { *`interval,number`* } [ *`amount_to_add`* ]
-`audit_series_add` { *`$hash`* }
-
-
-## Description
-
-Audit series enable IP-address based events to be tracked over a rolling set of time windows. For further background, see [the section called “Audit series”](/momentum/3/3-reference/sieve-ecaddons#sieve.ectypes_audit_series).
-
-### Note
-
-As of version 3.4, this feature supports IPv6.
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-`audit_series_add` increments the count associated with the IP address (see `ip` argument) by the provided amount, in the audit series having the specified name and monitor.
-
-The `monitor` is a "interval,number" string that specifies a time interval in seconds, and the number of windows of that size. E.g., "300,6" specifies that the series should have six windows of 300 seconds each.
-
-There are two forms for this command. The first form takes positional arguments, and the second form takes named arguments, passed as keys with their corresponding values in a hash. These keys are supported:
-
-
-
-- series
-
--
-
-A string identifying the series, for example, "mycounter".
-
-
-
-- monitor
-
--
-
-A string identifying the monitor, for example, "300,6".
-
-
-
-- count
-
--
-
-The number to add to the current window. The count defaults to 1.
-
-
-
-- replicate
-
--
-
-If this key is not used or its value is `0` then there is no replication. A value of `1` means do a `metrics` type of replication for this add, meaning that all nodes get updated audit_series data. A value of `-1` means do a `eccmgr_metrics` type of replication which updates eccmgr but not other nodes. Named audit series replication must be configured and the replicate type must be set in the cluster module as indicated. For more information see [“Replicated named audit series”](/momentum/3/3-reference/3-reference-cluster-config-replication#cluster.replicated_audit_series).
-
-
-
-- ip
-
--
-
-IP address to insert. If this is not specified, the remote side of the current active connection is used.
-
-
-
-- serialize
-
--
-
-To use `audit_series_add` on a single-node set this key to `1`.
-
-
-
-
-
-### Note
-
-This feature requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-
-
-
-`audit_series_add "mycounter" "1800,3" "3";`
-
-
-
-```
-$args = hash_create;
-hash_set $args "series" "mycounter";
-hash_set $args "monitor" "1,10";
-hash_set $args "count" 2;
-audit_series_add $args;
-```
-
-When using `audit_series_add`, on a single-node you need to set `serialize` to `1`. Add the following line to your script before invoking `audit_series_add`:
-
-`hash_set $args "serialize" 1;`
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-audit-series.md b/content/momentum/3/3-reference/sieve-ref-audit-series.md
deleted file mode 100644
index 9ce7b75ca..000000000
--- a/content/momentum/3/3-reference/sieve-ref-audit-series.md
+++ /dev/null
@@ -1,126 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "audit_series"
-description: "audit series Return the audit series count associated with an IP address or CIDR block over a window range audit series series name interval number mask start window end window audit series hash Audit series enable IP address based events to be tracked over a rolling set of time windows..."
----
-
-
-## Name
-
-audit_series — Return the audit series count associated with an IP address or CIDR block over a window range
-
-## Synopsis
-
-`audit_series` { *`series_name`* } { *`interval,number`* } { *`mask`* } [ *`start window`* ] [ *`end window`* ]
-`audit_series` { *`$hash`* }
-
-
-## Description
-
-Audit series enable IP-address based events to be tracked over a rolling set of time windows. For further background, see [the section called “Audit series”](/momentum/3/3-reference/sieve-ecaddons#sieve.ectypes_audit_series).
-
-### Note
-
-As of version 3.4, this feature supports IPv6.
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-This function returns the count for an IP address or CIDR block from the series having the specified name and "interval,number" setting. The returned count is a string which reflects the number of times that IP address was added to the series using [audit_series_add](/momentum/3/3-reference/sieve-ref-audit-series-add).
-
-The `ip` address defaults to the remote address of the current connection.
-
-The `mask` defaults to 32\. This mask specifies the number of leading bits of the IP address to use when generating the resulting count.
-
-The `start window` and `end window` are numbers in the range 0 through `number`-1. Window number 0 is always the current window, while window number `number`-1 is always the oldest window. If neither start or end window is specified, the count from the current time window will be returned. If just one window is provided, the count from that window will be returned. If the start and end window are both provided, the aggregate count for that window range will be returned.
-
-There are two forms for this command. The first form takes positional arguments, and the second form takes named arguments, passed as keys with their corresponding values in a hash. In the second form, these keys are supported:
-
-
-
-- series
-
--
-
-A string identifying the series, for example, "mycounter".
-
-
-
-- monitor
-
--
-
-A string identifying the `interval,number`, e.g., "300,6".
-
-
-
-- period_start
-
--
-
-Starting window number. The default is 0, which is the chronologically current window. For example, if the monitor is "300,6" then the six windows are numbered 0 (current) through 5 (oldest).
-
-
-
-- period_end
-
--
-
-Ending window number. It defaults to the value of `period_start`. If this key is specified, its value is a window number (which should be equal to or greater than period_start). The result will be an aggregate sum over the window range.
-
-
-
-- mask
-
--
-
-Mask to apply to the IP address of the current inbound SMTP session (or the given IP address if `ip` is specified). This determines the CIDR block that is the basis of the resulting count. The mask defaults to 32.
-
-
-
-- ip
-
--
-
-IP address to query. If this is not specified, the remote side of the current active connection is used.
-
-
-
-
-
-### Note
-
-This feature requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-
-
-
-```
-$mycounter = audit_series "mycounter" "1800,3" "32";
-$c_mycounter = audit_series "mycounter" "1800,3" "24";
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${mycounter}" "1000" {
- ec_tarpit 10 "too much /32";
-}
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${c_mycounter}" "10000" {
- ec_tarpit 10 "too much /24";
-}
-```
-
-
-
-
-```
-$args = hash_create;
-hash_set $args "series" "mycounter";
-hash_set $args "monitor" "300,6";
-hash_set $args "period_start" 0;
-hash_set $args "period_end" 2;
-hash_set $args "mask" 32;
-$count = audit_series $args;
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${count}" "1000" {
- ec_tarpit 10 "too much /32 in last fifteen minutes";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-audit-service.md b/content/momentum/3/3-reference/sieve-ref-audit-service.md
deleted file mode 100644
index f09951972..000000000
--- a/content/momentum/3/3-reference/sieve-ref-audit-service.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "audit_service"
-description: "audit service Return how many connections currently are established from a CIDR block to an arbitrary service audit service service name address mask audit service returns a stringlist containing a single member which is a string containing the number of connections the CIDR block provided currently has established to the..."
----
-
-
-## Name
-
-audit_service — Return how many connections currently are established from a CIDR block to an arbitrary service
-
-## Synopsis
-
-`audit_service` { *`service_name`* } { *`address/mask`* }
-
-
-## Description
-
-`audit_service` returns a stringlist containing a single member, which is a string containing the number of connections the CIDR block provided currently has established to the provided service. If the provided service is "SMTP" then the behavior is identical to `audit_connections_on_service`. If you have the cluster module loaded, then you can query the "inbound_cidr" service to audit connections to the whole cluster instead of just one server. In the address/mask argument, address may be omitted to cause the action to use the current IP address instead. In that case, one could provide an argument of "/32" or "/24" to get the current connections for the IP address currently connecting or for the /24 CIDR block of the IP address currently connecting.
-
-### Note
-
-As of version 3.4, this feature supports IPv6.
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-Services that may be audited are:
-
-* `ECStream`
-
-* `SMTP`
-
-* `Control`
-
-* `ECmmove2` (The service that handles duravip message moves.)
-
-* `ECCluster`
-
-* `inbound_cidr`
-
-### Note
-
-This feature requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-
-
-
-```
-($connections) = audit_service "inbound_cidr" "/32";
-($c_connections) = audit_service "inbound_cidr" "/24";
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${connections}" "1000" {
- ec_tarpit 10 "too many connections /32";
-}
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${c_connections}" "10000" {
- ec_tarpit 10 "too many connections /24";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-brightmail.md b/content/momentum/3/3-reference/sieve-ref-brightmail.md
deleted file mode 100644
index 1c33b13a5..000000000
--- a/content/momentum/3/3-reference/sieve-ref-brightmail.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "brightmail"
-description: "brightmail is default brightmail rules brightmail verdict brightmail scanner brightmail tracker brightmail functions for Sieve brightmail verdict brightmail is default brightmail rules brightmail scanner brightmail tracker These Sieve tests and actions are provided by the Section 14 14 brightmail Brightmail Module you must load and correctly configured this module before..."
----
-
-
-## Name
-
-*`brightmail`*_is_default, *`brightmail`*_rules, *`brightmail`*_verdict, *`brightmail`*_scanner, *`brightmail`*_tracker — brightmail functions for Sieve
-
-## Synopsis
-
-*`brightmail`*_verdict
-
-*`brightmail`*_is_default
-
-*`brightmail`*_rules
-
-*`brightmail`*_scanner
-
-*`brightmail`*_tracker
-
-
-## Description
-
-These Sieve tests and actions are provided by the [“brightmail – Brightmail Module”](/momentum/3/3-reference/3-reference-modules-brightmail); you must load and correctly configured this module before using these functions. Be sure to set the brightmail module option, `sieve_mode` to `on`. These functions can be invoked at the data, spool or each_rcpt phases. They will not work at the connect, ehlo, mailfrom or rcptto phases.
-
-### Note
-
-The names of these functions are determined by the value of the `sieve_prefix` configuration setting. For example, if the brightmail module is loaded with `sieve_prefix` set to `bm`, you would, for example, invoke the verdict function using the name `bm_verdict`. The default value of the `sieve_prefix` option is `brightmail`.
-
-The **brightmail_scanner** command is used to force a brightmail scan of a message; it should be called first before *any* of the other brightmail actions. Use this function to get a verdict from brightmail.
-
-```
-brightmail_scanner;
-if brightmail_verdict :is " " "spam" {
- ec_header_prefix "Subject" "[brightmail] ";
-}
-```
-
-**brightmail_verdict** returns the text destination from the verdict that applies to the current recipient of the current message. Typical return values would be either `inbox` or `spam`.
-
-You may also use **brightmail_verdict** as a test:
-
-```
-brightmail_scanner;
-if brightmail_verdict :is " " "spam" {
- ec_header_prefix "Subject" "[brightmail] ";
-}
-```
-
-**brightmail_is_default** is a test that will yield a positive result if the verdict for the current recipient on the current message is the "default" destination.
-
-The Brightmail protocol signals when the default disposition was found. So rather than matching an explicit default name of "default", you can use the `brightmail_is_default` Sieve action to see if there is a match. This makes your Sieve script independent of what the default verdict is named. `if not brightmail_is_default` effectively means that there is something suspicious about the message.
-
-```
-brightmail_scanner;
-if not brightmail_is_default {
- ec_tarpit 10 "non default brightmail result";
-}
-```
-
-**brightmail_rules** returns a stringlist of the rules noted in the verdict applying to the current recipient on the current message. Rules in the brightmail protocol are specified by number.
-
-```
-brightmail_scanner;
-if brightmail_rules :is " " "111" {
- ec_log "Brightmail rule #111 hit!";
-}
-```
-
-**brightmail_tracker** returns a string suitable for use as the X-Brightmail-Tracker header.
-
-```
-$tracker = brightmail_tracker;
-vctx_mess_set "bm_tracker" $tracker;
-$ruleslist = brightmail_rules;
-$rules = join " " $ruleslist;
-vctx_mess_set "bm_rules" $rules;
-```
-
-For more information about Brightmail see [http://www.symantec.com/business/products/family.jsp?familyid=brightmail](http://www.symantec.com/business/products/family.jsp?familyid=brightmail) .
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-cidrdb.md b/content/momentum/3/3-reference/sieve-ref-cidrdb.md
deleted file mode 100644
index 7d6c2cc23..000000000
--- a/content/momentum/3/3-reference/sieve-ref-cidrdb.md
+++ /dev/null
@@ -1,205 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "cidrdb"
-description: "define cidr reload cidr check cidr cidr functions for Sieve define cidr name for the CIDR information name of the datasource query string to the datasource refresh interval to rebuild CIDR define cidr hash reload cidr name for the CIDR information check cidr name for the CIDR information ip IP..."
----
-
-
-## Name
-
-define_cidr, reload_cidr, check_cidr — cidr functions for Sieve
-
-## Synopsis
-
-`define_cidr` { *`name for the CIDR information`* } { *`name of the datasource`* } { *`query string to the datasource`* } [ *`refresh interval to rebuild CIDR`* ]
-`define_cidr` { *`$hash`* }
-
-`reload_cidr` { *`name for the CIDR information`* }
-
-`check_cidr` { *`name for the CIDR information`* } [ :ip *`IP address to query`* ]
-
-`query_cidr` { *`name for the CIDR information`* } [ :ip *`IP address to query`* ]
-
-
-## Description
-
-This Sieve functionality requires that you have the cidrdb module loaded. See [“cidrdb – CIDRDB”](/momentum/3/3-reference/3-reference-modules-cidrdb)
-
-### Simple usage
-
-`define_cidr` creates the pathway for CIDR information. In the first form, the first argument names the resulting information stream so it can be referred to by the check_cidr function. The second argument names the datasource, and refers to the name it was given in the ds_core instantiation. The third argument is a query string to retrieve the CIDR blocks from the datasource specified in the second argument. The optional fourth argument allows you to specify the period on which to rebuild the CIDR tree (the default is to rebuild only when a reload command is issued via the console.) The first form creates a CIDR pathway with a `type` of `boolean`. The second form is described below.
-
-`reload_cidr` reloads the information from the pathway specified by the argument. In this way, if the information is being updated, such as a blacklist, the CIDR will always be aware of the most recent changes before it performs a check.
-
-`check_cidr` checks the CIDR information pathway specified by the first argument to determine if the IP associated with a current transaction would fit within any of the CIDR blocks. For CIDR pathways of `type` `boolean`, it returns true if it does and false otherwise. For CIDR pathways of `type` `value`, it always returns false.
-
-### Complex usage
-
-In the second form of `define_cidr`, a hash is used to define the CIDR pathway. These keys are supported:
-
-
-
-- cidrname
-
--
-
-Name for the CIDR information
-
-
-
-- dstype
-
--
-
-Data source type.
-
-A value of `dslayer` specifies that the data source layer should be used. A value of `rbldnsd` specifies that the data should be taken from a [rbldnsd](http://www.corpit.ru/mjt/rbldnsd/rbldnsd.8.html)-format file.
-
-
-
-- cachename
-
--
-
-When `dstype` is `dslayer`, this specifies the name of the data source instance to query.
-
-
-
-- query
-
--
-
-When `dstype` is `dslayer`, this specifies the query to issue to the data source instance identified by `cachename`.
-
-When `dstype` is `rbldnsd`, this specifies the URI of the rbldnsd-format file. The URI must include a `want` parameter with a value of `a` or `txt`, to specify whether to return the A or TXT record from the RBL.
-
-
-
-- type
-
--
-
-`boolean` specifies that the query will only return whether the IP associated with a current transaction would fit within any of the CIDR blocks.
-
-`value` specifies that the query will return the data associated with the CIDR. When using the data source layer, this data comes from the `value_column`. When using an rbldnsd-format file, this data comes from the field specified by the `query`.
-
-
-
-- refresh
-
--
-
-Refresh interval for rebuilding CIDR. If this is set to `0`, then the CIDR will only be refreshed when `reload_cidr` is called on the CIDR. The default refresh interval is 1800 seconds (30 minutes).
-
-
-
-- interpolate
-
--
-
-When set to `true`, `query_cidr` will replace any dollar signs in the value with the IP address, and return this interpolated value.
-
-
-
-- optimize
-
--
-
-Some RBLs distributed in RBLDNSD-format are not optimized from a CIDR standpoint—the CIDR blocks are not listed in a sorted order. When `optimize` is set to `true`, the CIDRs will be sorted when the data is loaded. This can increase performance and reduce memory usage, but there may be a lengthening in the time taken to load the data.
-
-
-
-- cidr_column
-
--
-
-For a CIDR pathway with a `type` of `value`, the name of the column containing the CIDR, as returned by `query`.
-
-
-
-- value_column
-
--
-
-For a CIDR pathway with a `type` of `value`, the name of the column containing the data associated with the CIDR, as returned by `query`. This data will be returned by `query_cidr` when the CIDR matches.
-
-
-
-- default_value
-
--
-
-For a CIDR pathway with a `type` of `value`, the default value for `query_cidr` to return if `query` does not return any data for the matched CIDR.
-
-
-
-
-
-`query_cidr` can be used to obtain data associated with the CIDR information pathway, for more complex applications. If the `type` is `value`, a string containing the data associated with the CIDR is returned. If the `type` is `boolean`, then `true` is returned on a CIDR match, otherwise `false`.
-
-### Examples
-
-
-
-
-```
-if check_cidr "test" "true"
-{
- ...
-}
-```
-
-
-
-
-```
-$cidr = hash_create;
-$cidrname = "myblacklist";
-hash_set $cidr "cidrname" "${cidrname}";
-hash_set $cidr "cachename" "cidrdb_sqlite";
-hash_set $cidr "dstype" "dslayer";
-hash_set $cidr "query" "SELECT CIDR,RESULT FROM MYRBL";
-hash_set $cidr "type" "value";
-hash_set $cidr "cidr_column" "CIDR";
-hash_set $cidr "value_column" "RESULT";
-hash_set $cidr "default_value" "127.0.0.0";
-
-define_cidr $cidr;
-$q = query_cidr :ip "%{spfv1:i}" "${cidrname}";
-
-# In this example, MYRBL is a home-grown set of RBLs, and RESULT has bits
-# set indicating RBL matches, e.g.: 127.0.0.x, where x is a bitwise AND
-# of the lists.
-$octets = split "." $q;
-if isset $octets 3 {
- $last_octet = $octets[3];
- if ec_test :value "bitwise-and" :comparator "i;ascii-numeric" $last_octet "1"
- {
- ec_log "%{spfv1:i} is blacklisted in SOMEBL";
- }
- if ec_test :value "bitwise-and" :comparator "i;ascii-numeric" $last_octet "2"
- {
- ec_log "%{spfv1:i} is blacklisted in ANOTHERBL";
- }
-}
-```
-
-
-
-
-```
-$cidr = hash_create;
-$cidrname = "myrbldnsd";
-hash_set $cidr "cidrname" "${cidrname}";
-hash_set $cidr "cachename" "cidrdb_myrbldnsd";
-hash_set $cidr "dstype" "rbldnsd";
-hash_set $cidr "query" "/path/to/my.rbldnsd?want=txt";
-hash_set $cidr "type" "value";
-hash_set $cidr "cidr_column" "cidr";
-hash_set $cidr "value_column" "str";
-hash_set $cidr "interpolate" "true";
-
-define_cidr $cidr;
-$q = query_cidr "${cidrname}";
-ec_log "Query result:${q}";
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-cloudmark-score.md b/content/momentum/3/3-reference/sieve-ref-cloudmark-score.md
deleted file mode 100644
index 4c2cfbef4..000000000
--- a/content/momentum/3/3-reference/sieve-ref-cloudmark-score.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "cloudmark_score"
-description: "cloudmark score Analyze a message with Cloudmark Authority cloudmark score Configuration Change This feature is available starting from Momentum 3 0 23 cloudmark score returns a string containing the numeric score assigned to the active message by the Cloudmark Authority Engine Additionally all of the validation context variables set by..."
----
-
-
-## Name
-
-cloudmark_score — Analyze a message with Cloudmark Authority
-
-## Synopsis
-
-`cloudmark_score`
-
-
-## Description
-
-**Configuration Change. ** This feature is available starting from Momentum 3.0.23.
-
-`cloudmark_score` returns a string containing the numeric score assigned to the active message by the Cloudmark Authority Engine. Additionally, all of the validation context variables set by the Cloudmark module will be set. For a list of these variables see [“Cloudmark Runtime Usage”](/momentum/3/3-reference/3-reference-modules-cloudmark#modules.cloudmark.runtime.usage).
-
-
-
-
-```
-$score = cloudmark_score;
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${score}" "80" {
- ec_tarpit 10 "tarpit before reject";
- ec_action 554 "5.7.1 your mail has been rejected by policy";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-commtouch-scan.md b/content/momentum/3/3-reference/sieve-ref-commtouch-scan.md
deleted file mode 100644
index 4c4213bb3..000000000
--- a/content/momentum/3/3-reference/sieve-ref-commtouch-scan.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "commtouch_scan"
-description: "commtouch scan email virus scan commtouch scan Use commtouch scan in a data phase Sieve script and then read the message context variable commtouch virus threat The possible return values are non virus unknown medium high virus Sieve scripts using commtouch scan can be used in the data phase Example..."
----
-
-
-## Name
-
-commtouch_scan — email virus scan
-
-## Synopsis
-
-`commtouch_scan`
-
-
-## Description
-
-Use commtouch_scan in a data phase Sieve script and then read the message context variable commtouch-virus-threat. The possible return values are:
-
-* non-virus
-
-* unknown
-
-* medium
-
-* high
-
-* virus
-
-Sieve scripts using `commtouch_scan` can be used in the data phase.
-
-
-
-
-```
-commtouch_scan;
-
-if vctx_mess :is :comparator "i;ascii-casemap" "commtouch-virus-threat" ["high", "virus"]
-{
- ec_action 550 "Virus detected" "virus:Viruses rejected";
- stop;
-}
-```
-
-Use of this function requires that the commtouch module be loaded.
-
-
-## See Also
-
-[“commtouch_ctasd – Commtouch_ctasd Module”](/momentum/3/3-reference/3-reference-modules-commtouch)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-disable-esmtp-capability.md b/content/momentum/3/3-reference/sieve-ref-disable-esmtp-capability.md
deleted file mode 100644
index 32b906909..000000000
--- a/content/momentum/3/3-reference/sieve-ref-disable-esmtp-capability.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "disable_esmtp_capability"
-description: "disable esmtp capability remove a string from the EHLO response disable esmtp capability string Use this function to remove a string from the EHLO response This function is typically used in the connect phase To add a string use advertize esmtp capability Example 16 16 disable esmtp capability example advertize..."
----
-
-
-## Name
-
-disable_esmtp_capability — remove a string from the EHLO response
-
-## Synopsis
-
-`disable_esmtp_capability` { *`string`* }
-
-
-## Description
-
-Use this function to remove a string from the EHLO response. This function is typically used in the connect phase. To add a string use `advertize_esmtp_capability`.
-
-
-
-
-`disable_esmtp_capability "8bitmime"`
-
-## See Also
-
-[advertize_esmtp_capability](/momentum/3/3-reference/sieve-ref-advertize-esmtp-capability)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-discard.md b/content/momentum/3/3-reference/sieve-ref-discard.md
deleted file mode 100644
index b2a6b2d93..000000000
--- a/content/momentum/3/3-reference/sieve-ref-discard.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "discard"
-description: "discard ec discard discard the current message it will not be delivered discard ec discard reason Discard is used to silently throw away the message It does so by simply canceling the implicit keep If discard is used with other actions the other actions still happen Discard is compatible with..."
----
-
-
-## Name
-
-discard, ec_discard — discard the current message; it will not be delivered
-
-## Synopsis
-
-`discard`
-
-`ec_discard` [ *`reason`* ]
-
-
-## Description
-
-Discard is used to silently throw away the message. It does so by simply canceling the implicit keep. If discard is used with other actions, the other actions still happen. Discard is compatible with all other actions. (For instance fileinto+discard is equivalent to fileinto.)
-
-If discard throws the message away, the message will appear (to the sender) to have been accepted and delivered; no error status or out-of-band delivery notification will occur.
-
-In the following script, any mail from the bad-guy.com domain is thrown out.
-
-
-
-
-```
-if envelope :domain :is "from" "bad-guy.com" {
- discard;
-}
-```
-
-This is a terminal action; no further Sieve rules will be run for the current message in the current phase.
-
-For an overview of Sieve actions see [“Actions”](/momentum/3/3-reference/sieve-syntax-basic#sieve.syntax.basic.actions).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-disclaimer-add.md b/content/momentum/3/3-reference/sieve-ref-disclaimer-add.md
deleted file mode 100644
index 48be0827e..000000000
--- a/content/momentum/3/3-reference/sieve-ref-disclaimer-add.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "disclaimer_add"
-description: "disclaimer add add a disclaimer to an email disclaimer add hash Use the disclaimer add function to append a message to an email For example this function may be used to indicate that an email has been scanned Sieve scripts using disclaimer add can be used in any stage or..."
----
-
-
-## Name
-
-disclaimer_add — add a disclaimer to an email
-
-## Synopsis
-
-`disclaimer_add` { *`hash`* }
-
-
-## Description
-
-Use the `disclaimer_add` function to append a message to an email. For example, this function may be used to indicate that an email has been scanned.
-
-Sieve scripts using `disclaimer_add` can be used in any stage or environment where you have a complete message body.
-
-
-
-
-```
-$h = hash_create;
- hash_set $h "html" "
- This email has been scanned
- for viruses.
-
-
-
";
- disclaimer_add $h;
-```
-
-
-
-
-```
-$h = hash_create;
- hash_set $h "plain" "This email has been scanned for viruses";
- disclaimer_add $h;
-```
-
-When using `html` as a key, the module will look for all text/html parts that are not attachments and append the HTML disclaimer. When using `plain` as a key, the module will look for all text/plain parts that are not attachments and append the plain disclaimer. If using both, it will look for both, adding the html disclaimer to the html parts, and the plain disclaimer to the plain parts.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ds-execute.md b/content/momentum/3/3-reference/sieve-ref-ds-execute.md
deleted file mode 100644
index 1b4139225..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ds-execute.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ds_execute"
-description: "ds execute execute a query on a datasource ds execute cachename query params This function executes a query that does not return a result set The query will be queued to the thread pool and the current Sieve script will be suspended until the query completes While the Sieve script..."
----
-
-
-## Name
-
-ds_execute — execute a query on a datasource
-
-## Synopsis
-
-`ds_execute` { *`cachename`* } { *`query`* } [ *`params`* ]
-
-
-## Description
-
-This function executes a query that does not return a result set. The query will be queued to the thread pool and the current Sieve script will be suspended until the query completes. While the Sieve script is suspended, Momentum will continue to schedule other events.
-
-If you need to execute a query that fetches a row or all rows from a datasource, you need to use [ds_fetch](/momentum/3/3-reference/sieve-ref-ds-fetch), [ds_fetch_hash](/momentum/3/3-reference/sieve-ref-ds-fetch-hash). or [ds_fetch_flat](/momentum/3/3-reference/sieve-ref-ds-fetch-flat).
-
-### Note
-
-The ds_core module and datasource drivers are loaded automatically as required and do not need to be explicitly included. See [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) for more information.
-
-By specifying the optional *`params`* parameter, you can create parameterized queries. Where supported by the underlying datasource driver, parameterized queries are mapped to native prepared statements for more optimal database performance.
-
-Parameterized queries use one of three different kinds of placeholder indicator, depending on the underlying driver. If you want to use the ODBC style `?` parameter marker, then the *`params`* parameter should be a stringlist containing the values to be substituted for each marker.
-
-Alternatively, you may use Oracle style `:name` parameter markers, which are useful for creating more readable queries. If you use these, then *`params`* should be a hash table where the keys of the hash correspond to the names of the parameters; the values in the hash will be substituted for the placeholders.
-
-The last form is similar to Oracle style named markers, except that a dollar sign is used instead of the colon: `$name`. This style of naming is used by datasource drivers where the native query syntax treats the `:` and `?` characters specially. Rather than requiring tedious quoting/escaping of those characters an alternative symbol was chosen.
-
-Most drivers support both `?` and `:name` style parameters. Those that don't, only support the `$name` style. The definitive list of drivers and their supported placeholders can be found in [“Datasource Drivers”](/momentum/3/3-reference/3-reference-modules-ds-core#modules.ds_core.drivers).
-
-
-
-
-```
-if size :over 1M {
- ($deny) = ds_fetch "mssql" "select deny from LargeMsgSender where sender = ?"
- ["%{vctx_mess:mailfrom_localpart}@%{vctx_mess:mailfrom_domain}"];
- #cache_life should be 0 for real-time check;
- if ec_test :is "${deny}" "1" {
- ec_action 550 "5.7.1 sender rejected by policy";
- } else {
- ds_execute "mssql" "insert into LargeMsgSender values (1, ?)"
- ["%{vctx_mess:mailfrom_localpart}@%{vctx_mess:mailfrom_domain}"];
- ec_action 550 "5.7.1 sender rejected by policy";
- }
-}
-```
-
-
-## See Also
-
-[ds_fetch](/momentum/3/3-reference/sieve-ref-ds-fetch). [ds_fetch_flat](/momentum/3/3-reference/sieve-ref-ds-fetch-flat). [ds_fetch_hash](/momentum/3/3-reference/sieve-ref-ds-fetch-hash).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ds-fetch-flat.md b/content/momentum/3/3-reference/sieve-ref-ds-fetch-flat.md
deleted file mode 100644
index 58c6b17eb..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ds-fetch-flat.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ds_fetch_flat"
-description: "ds fetch flat query and fetch all rows from a datasource ds fetch flat cachename query params This function issues a query against a datasource cache If the data is available in the cache it will return a string list immediately containing all rows of the result If the data..."
----
-
-
-## Name
-
-ds_fetch_flat — query and fetch all rows from a datasource
-
-## Synopsis
-
-`ds_fetch_flat` { *`cachename`* } { *`query`* } [ *`params`* ]
-
-
-## Description
-
-This function issues a query against a datasource cache. If the data is available in the cache, it will return a string list immediately containing all rows of the result. If the data is not cached, the query will be queued to the thread pool and the current Sieve script will be suspended until the query completes. While the Sieve script is suspended, Momentum will continue to schedule other events.
-
-All rows of the data are returned as a stringlist. For example, if you select two columns from a datasource, Index 0 of the list holds the value of the first column of the first row returned from the datasource, Index 1 the second column of the first row, Index 2 the first column of the second row, and so on. If you need to work with a datasource that can return multiple values for a particular column in a particular row, then you may use [ds_fetch_hash](/momentum/3/3-reference/sieve-ref-ds-fetch-hash) to retrieve the row as a hash instead.
-
-If your query cannot be completed due to an error, the connection validation context variable `datasource_error` will contain the error message. For successful queries, this connection context variable is deleted.
-
-### Note
-
-The ds_core module and datasource drivers are loaded automatically as required and do not need to be explicitly included. See [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) for more information.
-
-By specifying the optional *`params`* parameter, you can create parameterized queries. Where supported by the underlying datasource driver, parameterized queries are mapped to native prepared statements for more optimal database performance.
-
-Parameterized queries use one of three different kinds of placeholder indicator, depending on the underlying driver. If you want to use the ODBC style `?` parameter marker, then the *`params`* parameter should be a stringlist containing the values to be substituted for each marker.
-
-Alternatively, you may use Oracle style `:name` parameter markers, which are useful for creating more readable queries. If you use these, then *`params`* should be a hash table where the keys of the hash correspond to the names of the parameters; the values in the hash will be substituted for the placeholders.
-
-The last form is similar to Oracle style named markers, except that a dollar sign is used instead of the colon: `$name`. This style of naming is used by datasource drivers where the native query syntax treats the `:` and `?` characters specially. Rather than requiring tedious quoting/escaping of those characters an alternative symbol was chosen.
-
-Most drivers support both `?` and `:name` style parameters. Those that don't, only support the `$name` style. The definitive list of drivers and their supported placeholders can be found in [“Datasource Drivers”](/momentum/3/3-reference/3-reference-modules-ds-core#modules.ds_core.drivers).
-
-
-
-
-```
-$address = envelope "to";
-$aliases = ds_fetch_flat "mydb" "select expansion from alias where user = ?" [$address];
-ec_forward "sender@mailfrom.com" $aliases "forwarded via sieve";
-```
-
-
-## See Also
-
-[ds_execute](/momentum/3/3-reference/sieve-ref-ds-execute), [ds_fetch](/momentum/3/3-reference/sieve-ref-ds-fetch), [ds_fetch_hash](/momentum/3/3-reference/sieve-ref-ds-fetch-hash)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ds-fetch-hash.md b/content/momentum/3/3-reference/sieve-ref-ds-fetch-hash.md
deleted file mode 100644
index 74c01d517..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ds-fetch-hash.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ds_fetch_hash"
-description: "ds fetch hash query and fetch a row from a datasource as a hash ds fetch hash cachename query params This function issues a query against a datasource cache If the data is available in the cache it will return immediately with the first row of the data If the..."
----
-
-
-## Name
-
-ds_fetch_hash — query and fetch a row from a datasource, as a hash
-
-## Synopsis
-
-`ds_fetch_hash` { *`cachename`* } { *`query`* } [ *`params`* ]
-
-
-## Description
-
-This function issues a query against a datasource cache. If the data is available in the cache, it will return immediately with the first row of the data. If the data is not cached, the query will be queued to the thread pool and the current Sieve script will be suspended until the query completes. While the Sieve script is suspended, Momentum will continue to schedule other events.
-
-The first row of the data is returned as a hash. The values of the columns are stored in the hash, keyed by the column names. If the datasource can provide multiple values for a column, then the value will be a stringlist containing each possible value for that column, in the order that they were returned from the datasource.
-
-If your query cannot be completed due to an error, the connection validation context variable `datasource_error` will contain the error message. For successful queries, this connection context variable is deleted.
-
-### Note
-
-The ds_core module and datasource drivers are loaded automatically as required and do not need to be explicitly included. See [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) for more information.
-
-By specifying the optional *`params`* parameter, you can create parameterized queries. Where supported by the underlying datasource driver, parameterized queries are mapped to native prepared statements for more optimal database performance.
-
-Parameterized queries use one of three different kinds of placeholder indicator, depending on the underlying driver. If you want to use the ODBC style `?` parameter marker, then the *`params`* parameter should be a stringlist containing the values to be substituted for each marker.
-
-Alternatively, you may use Oracle style `:name` parameter markers, which are useful for creating more readable queries. If you use these, then *`params`* should be a hash table where the keys of the hash correspond to the names of the parameters; the values in the hash will be substituted for the placeholders.
-
-The last form is similar to Oracle style named markers, except that a dollar sign is used instead of the colon: `$name`. This style of naming is used by datasource drivers where the native query syntax treats the `:` and `?` characters specially. Rather than requiring tedious quoting/escaping of those characters an alternative symbol was chosen.
-
-Most drivers support both `?` and `:name` style parameters. Those that don't, only support the `$name` style. The definitive list of drivers and their supported placeholders can be found in [“Datasource Drivers”](/momentum/3/3-reference/3-reference-modules-ds-core#modules.ds_core.drivers).
-
-
-
-
-```
-$prefs = ds_fetch_hash "mssql" "select * from prefs where rcpt = ?"
- ["%{rcptto_localpart}@%{rcptto_domain}"];
-
-if isset $prefs "antivirus_enable" {
- $enable = $prefs["antivirus_enable"];
- if ec_test "${enable}" :is "1" {
- clamav_avscan;
-
- if vctx :is "clamav_status" "error" {
- ec_action 451 "temporary issue while running avscan"
- "transient:avscan error %{vctx_mess:clamav_info}";
- }
-
- if vctx :is "clamav_status" "virus" {
- ec_action 550 text:
-5.7.1 rejected by policy: virus.
-%{vctx_mess:clamav_info}
-.
- "virus:%{vctx_mess:clamav_info}";
- }
- }
-}
-```
-
-For an explanation of the context variables used in the preceding example see [“antivirus Configuration”](/momentum/3/3-reference/3-reference-modules-antivirus#modules.antivirus.configuration).
-
-
-## See Also
-
-[ds_execute](/momentum/3/3-reference/sieve-ref-ds-execute), [ds_fetch](/momentum/3/3-reference/sieve-ref-ds-fetch), [ds_fetch_flat](/momentum/3/3-reference/sieve-ref-ds-fetch-flat)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ds-fetch.md b/content/momentum/3/3-reference/sieve-ref-ds-fetch.md
deleted file mode 100644
index ba3191c59..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ds-fetch.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ds_fetch"
-description: "ds fetch query and fetch a row from a datasource ds fetch cachename query params This function issues a query against a datasource cache If the data is available in the cache it will return immediately with the first row of the data If the data is not cached the..."
----
-
-
-## Name
-
-ds_fetch — query and fetch a row from a datasource
-
-## Synopsis
-
-`ds_fetch` { *`cachename`* } { *`query`* } [ *`params`* ]
-
-
-## Description
-
-This function issues a query against a datasource cache. If the data is available in the cache, it will return immediately with the first row of the data. If the data is not cached, the query will be queued to the thread pool and the current Sieve script will be suspended until the query completes. While the Sieve script is suspended, Momentum will continue to schedule other events.
-
-The first row of the data is returned as a stringlist. If you need to work with a datasource that can return multiple values for a particular column in a particular row, then you need to use [ds_fetch_hash](/momentum/3/3-reference/sieve-ref-ds-fetch-hash) to retrieve the row as a hash instead.
-
-### Note
-
-If you select more than one column from the row, the ordering of the elements in the returned stringlist is not always the same as the columns in your query. To select more than one column from the row and preserve the ordering, you need to use [ds_fetch_hash](/momentum/3/3-reference/sieve-ref-ds-fetch-hash) instead.
-
-If you need to execute a query that doesn't return a result, for example, insert, update or delete, you should use [ds_execute](/momentum/3/3-reference/sieve-ref-ds-execute) instead.
-
-If your query cannot be completed due to an error, the connection validation context variable `datasource_error` will contain the error message. For successful queries, this connection context variable is deleted.
-
-### Note
-
-The ds_core module and datasource drivers are loaded automatically as required and do not need to be explicitly included. See [“ds_core – Datasource Query Core”](/momentum/3/3-reference/3-reference-modules-ds-core) for more information.
-
-By specifying the optional *`params`* parameter, you can create parameterized queries. Where supported by the underlying datasource driver, parameterized queries are mapped to native prepared statements for more optimal database performance.
-
-Parameterized queries use one of three different kinds of placeholder indicator, depending on the underlying driver. If you want to use the ODBC style `?` parameter marker, then the *`params`* parameter should be a stringlist containing the values to be substituted for each marker.
-
-Alternatively, you may use Oracle style `:name` parameter markers, which are useful for creating more readable queries. If you use these, then *`params`* should be a hash table where the keys of the hash correspond to the names of the parameters; the values in the hash will be substituted for the placeholders.
-
-The last form is similar to Oracle style named markers, except that a dollar sign is used instead of the colon: `$name`. This style of naming is used by datasource drivers where the native query syntax treats the `:` and `?` characters specially. Rather than requiring tedious quoting/escaping of those characters an alternative symbol was chosen.
-
-Most drivers support both `?` and `:name` style parameters. Those that don't, only support the `$name` style. The definitive list of drivers and their supported placeholders can be found in [“Datasource Drivers”](/momentum/3/3-reference/3-reference-modules-ds-core#modules.ds_core.drivers).
-
-
-
-
-```
-($deny) = ds_fetch "mssql" "select deny from blacklist where sender = ?"
- ["%{vctx_mess:mailfrom_localpart}@%{vctx_mess:mailfrom_domain}"];
-if ec_test :is "${deny}" "1" {
- ec_action 550 "5.7.1 sender rejected by policy" "policy:blacklisted";
-}
-```
-
-You can use this action to select more than one column from a row and the ordering of the elements in the returned stringlist is the same with the ordering of columns in your query. Index 0 of the list holds the value of the first column returned from the datasource. Index 1 the second and so on.
-
-
-## See Also
-
-[ds_execute](/momentum/3/3-reference/sieve-ref-ds-execute), [ds_fetch_hash](/momentum/3/3-reference/sieve-ref-ds-fetch-hash), [ds_fetch_flat](/momentum/3/3-reference/sieve-ref-ds-fetch-flat)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-action.md b/content/momentum/3/3-reference/sieve-ref-ec-action.md
deleted file mode 100644
index b6debd315..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-action.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_action"
-description: "ec action set SMTP status code ec action smtp code reason counter This action will issue the provided SMTP code and reason to the remote MTA Multi line reasons may be provided each line will be prefixed with the SMTP code for you automatically The optional counter string is used..."
----
-
-
-## Name
-
-ec_action — set SMTP status code
-
-## Synopsis
-
-`ec_action` { *`smtp-code`* } { *`reason`* } [ *`counter`* ]
-
-
-## Description
-
-This action will issue the provided SMTP code and reason to the remote MTA. Multi-line reasons may be provided; each line will be prefixed with the SMTP code for you automatically.
-
-The optional counter string is used to count the number of hits for this particular action; if omitted, the script filename and line number will be assumed. You can see the hit count via the web console or via **ec_console** using the **sieve stats** command.
-
-
-
-
-```
-require "ec_action";
-if envelope :domain :is "from" "bad-guy.com" {
- ec_action 550 "5.7.1 We don't want mail from %{spfv1:p}";
-}
-```
-
-```
-REMOTE > MAIL FROM:
-LOCAL > 550 5.7.1 We don't want mail from mta01-ft.bad-guy.com
-```
-
-This is a terminal action; no further Sieve rules will be run for the current message in the current phase.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-add.md b/content/momentum/3/3-reference/sieve-ref-ec-add.md
deleted file mode 100644
index 374366f15..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-add.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_add"
-description: "ec add perform addition of two numbers ec add number 1 number 2 ec add takes two numbers and returns their sum Example 16 25 ec add example..."
----
-
-
-## Name
-
-ec_add — perform addition of two numbers
-
-## Synopsis
-
-`ec_add` { *`number1`* } { *`number2`* }
-
-
-## Description
-
-`ec_add` takes two numbers and returns their sum.
-
-
-
-
-```
-$a = "55.54";
-$b = 0;
-$sum = ec_add $a $b;
-ec_log "${a} + ${b} is ${sum}";
-#sum is 55.540000
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-base-64-decode.md b/content/momentum/3/3-reference/sieve-ref-ec-base-64-decode.md
deleted file mode 100644
index 0b1aa583d..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-base-64-decode.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_base64_decode"
-description: "ec base 64 decode decode base 64 encoded text ec base 64 decode coded text Convert base 64 encoded text to plain text Sieve scripts using base 64 decode can be used in any phase Example 16 26 ec base 64 encode example ec base 64 encode..."
----
-
-
-## Name
-
-ec_base64_decode — decode base64 encoded text
-
-## Synopsis
-
-`ec_base64_decode` { *`coded_text`* }
-
-
-## Description
-
-Convert base 64 encoded text to plain text.
-
-Sieve scripts using `base64_decode` can be used in any phase.
-
-
-
-
-`$dec = ec_base64_decode $enc;`
-
-## See Also
-
-[ec_base64_encode](/momentum/3/3-reference/sieve-ref-ec-base-64-encode)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-base-64-encode.md b/content/momentum/3/3-reference/sieve-ref-ec-base-64-encode.md
deleted file mode 100644
index c947cbc99..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-base-64-encode.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_base64_encode"
-description: "ec base 64 encode base 64 encode text ec base 64 encode plain text Convert plain text to a base 64 representation Sieve scripts using ec base 64 encode can be used in any phase Example 16 27 ec base 64 encode example ec base 64 decode..."
----
-
-
-## Name
-
-ec_base64_encode — base64 encode text
-
-## Synopsis
-
-`ec_base64_encode` { *`plain_text`* }
-
-
-## Description
-
-Convert plain text to a base 64 representation.
-
-Sieve scripts using `ec_base64_encode` can be used in any phase.
-
-
-
-
-`$enc = ec_base64_encode $plain;`
-
-## See Also
-
-[ec_base64_decode](/momentum/3/3-reference/sieve-ref-ec-base-64-decode)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-bounce-classify.md b/content/momentum/3/3-reference/sieve-ref-ec-bounce-classify.md
deleted file mode 100644
index a4ee2b7cc..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-bounce-classify.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_bounce_classify"
-description: "ec bounce classify perform bounce classification on the message code classification orig rcpt ec bounce classify ec bounce classify allows you to perform bounce classification on a message from within Sieve It returns a string list which contains three members code The numeric bounce classification code See Section E 2..."
----
-
-
-## Name
-
-ec_bounce_classify — perform bounce classification on the message
-
-## Synopsis
-
-`($code, $classification, $orig_rcpt) = ec_bounce_classify`
-
-
-## Description
-
-`ec_bounce_classify` allows you to perform bounce classification on a message from within Sieve++. It returns a string list which contains three members:
-
-* $code - The numeric bounce classification code. See [“Bounce Classification Codes”](/momentum/3/3-reference/3-reference-bounce-logger-classification-codes) for information about the built-in classification codes. To create your own classification codes see [“bounce_classifier – Bounce Classifier”](/momentum/3/3-reference/modules-bounce-classifier).
-
-* $classification - The text description for the bounce classification.
-
-* $orig_rcpt - The original recipient of the e-mail message which generated the bounce. If this value is not able to be determined, it will be a blank string.
-
-
-
-
-```
-if envelope :all :regex "to" "^bounces-.+@mydomain.com$") {
- ($code, $classification, $orig_rcpt) = ec_bounce_classify;
- ec_log "Bounce ${classification} code ${code} for address ${orig_rcpt}";
- discard;
-}
-```
-
-
-### See Also
-
-[Table 9.7, “logging options”](/momentum/3/3-reference/options-summary#logging-options-table)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-ceil.md b/content/momentum/3/3-reference/sieve-ref-ec-ceil.md
deleted file mode 100644
index f4049b57d..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-ceil.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_ceil"
-description: "ec ceil round up to the nearest integer ec ceil number ec ceil rounds the given number up to the nearest integer Example 16 29 ec ceil example..."
----
-
-
-## Name
-
-ec_ceil — round up to the nearest integer
-
-## Synopsis
-
-`ec_ceil` { *`number`* }
-
-
-## Description
-
-`ec_ceil` rounds the given number up to the nearest integer.
-
-
-
-
-```
-$a = 65.43;
-$b = -41.65;
-$c = 43;
-$ceila = ec_ceil $a;
-$ceilb = ec_ceil $b;
-$ceilc = ec_ceil $c;
-#ceila is 66.000000
-#ceilb is -41.000000
-#ceilc is 43.000000
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-cluster-cache-get.md b/content/momentum/3/3-reference/sieve-ref-ec-cluster-cache-get.md
deleted file mode 100644
index bd336f4e4..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-cluster-cache-get.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_cluster_cache_get"
-description: "ec cluster cache get Retrieve a value from a cluster wide replicated cache ec cluster cache get replication name key ec cluster cache get retrieves the value for the given key and cache name This feature requires the cluster module The cluster configuration stanza must include a replicate directive that..."
----
-
-
-## Name
-
-ec_cluster_cache_get — Retrieve a value from a cluster-wide replicated cache
-
-## Synopsis
-
-`ec_cluster_cache_get` { *`replication_name`* } { *`key`* }
-
-
-## Description
-
-`ec_cluster_cache_get` retrieves the value for the given key and cache name.
-
-### Note
-
-This feature requires the cluster module. The cluster configuration stanza must include a `replicate` directive that names this cache. See [“Replicated Caches”](/momentum/3/3-reference/3-reference-cluster-config-replication#cluster.replicatedcache).
-
-
-
-
-```
-$value = ec_cluster_cache_get "mycache" "mykey";
-ec_log "mykey: ${value}";
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-cluster-cache-set.md b/content/momentum/3/3-reference/sieve-ref-ec-cluster-cache-set.md
deleted file mode 100644
index 1985b7fcf..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-cluster-cache-set.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_cluster_cache_set"
-description: "ec cluster cache set Set a value in a cluster wide replicated cache ec cluster cache set replication name key value ttl ec cluster cache set sets the value for the given key and cache name The ttl is a string specifying the number of seconds until the value expires..."
----
-
-
-## Name
-
-ec_cluster_cache_set — Set a value in a cluster-wide replicated cache
-
-## Synopsis
-
-`ec_cluster_cache_set` { *`replication_name`* } { *`key`* } { *`value`* } { *`ttl`* }
-
-
-## Description
-
-`ec_cluster_cache_set` sets the value for the given key and cache name. The `ttl` is a string specifying the number of seconds until the value expires (unless it ends with "H" or "M" for hours or minutes). The value will not expire if the `ttl` is "0".
-
-### Note
-
-This feature requires the cluster module. The cluster configuration stanza must include a `replicate` directive that names this cache. See [“Replicated Caches”](/momentum/3/3-reference/3-reference-cluster-config-replication#cluster.replicatedcache).
-
-
-
-
-`ec_cluster_cache_set "mycache" "mykey" "myvalue" "0";`
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-config.md b/content/momentum/3/3-reference/sieve-ref-ec-config.md
deleted file mode 100644
index 0ad35a979..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-config.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_config"
-description: "ec config get Momentum configuration from Sieve ec config get eval anonymous scope name scope name instance name optname This action implements a subset of the console config command Only the get and eval actions are currently supported but otherwise behavior is identical Simple option values are returned as strings..."
----
-
-
-## Name
-
-ec_config — get Momentum configuration from Sieve
-
-## Synopsis
-
-`ec_config` { "get" | "eval" } [ *``* | *``* *``* ...] { *`optname`* }
-
-
-## Description
-
-This action implements a subset of the console config command. Only the get and eval actions are currently supported, but otherwise behavior is identical. Simple option values are returned as strings, options that would be specified in parentheses in the config file (such as lists or ACLs) are returned as stringlists, and dictionary options are returned as hashes.
-
-
-
-
-```
-$opt = ec_config "get" "Debug_Flags" "DEBUG";
-# first, see if the option was set
-if type :is $opt "stringlist" {
- # now check the option value
- $dummy = join "," $opt;
- if ec_test $dummy "SMTP" {
- ec_log "SMTP debugging is turned on";
- }
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-disconnect.md b/content/momentum/3/3-reference/sieve-ref-ec-disconnect.md
deleted file mode 100644
index cf06141cf..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-disconnect.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_disconnect"
-description: "ec disconnect set SMTP status and close the SMTP connection ec disconnect smtp code reason counter This takes the same argument and performs the same action as ec action except that subsequent to sending the response to the remote MTA the SMTP session is terminated NOTE to be strictly RFC..."
----
-
-
-## Name
-
-ec_disconnect — set SMTP status and close the SMTP connection
-
-## Synopsis
-
-`ec_disconnect` { *`smtp-code`* } { *`reason`* } [ *`counter`* ]
-
-
-## Description
-
-This takes the same argument and performs the same action as ec_action except that subsequent to sending the response to the remote MTA, the SMTP session is terminated. NOTE: to be strictly RFC compliant, the SMTP code here should almost always be 421.
-
-The optional counter string is used to count the number of hits for this particular action; if omitted, the script filename and line number will be assumed. You can see the hit count via the web console or via `ec_console` using the `sieve stats` command.
-
-This is a terminal action; no further Sieve rules will be run for the current message in the current phase.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-div.md b/content/momentum/3/3-reference/sieve-ref-ec-div.md
deleted file mode 100644
index ab90ceaea..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-div.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_div"
-description: "ec div perform division of two numbers ec div number 1 number 2 ec div takes two numbers and divides the first number by the second and returns the result Example 16 33 ec div example..."
----
-
-
-## Name
-
-ec_div — perform division of two numbers
-
-## Synopsis
-
-`ec_div` { *`number1`* } { *`number2`* }
-
-
-## Description
-
-`ec_div` takes two numbers and divides the first number by the second and returns the result.
-
-
-
-
-```
-$a = -86;
-$b = 43;
-$div = ec_div $a $b;
-ec_log "${a} / ${b} is ${div}";
-#div is -2.000000
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-dk-responsible-domain.md b/content/momentum/3/3-reference/sieve-ref-ec-dk-responsible-domain.md
deleted file mode 100644
index 27e93ed1f..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-dk-responsible-domain.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_dk_responsible_domain"
-description: "ec dk responsible domain Return the responsible domain for the current message ec dk responsible domain ec dk responsible domain returns a string containing the responsible domain of the current message This can be used as an argument to the ec dk sign extension This feature requires the Domain Keys..."
----
-
-
-## Name
-
-ec_dk_responsible_domain — Return the responsible domain for the current message
-
-## Synopsis
-
-`ec_dk_responsible_domain`
-
-
-## Description
-
-`ec_dk_responsible_domain` returns a string containing the responsible domain of the current message. This can be used as an argument to the [ec_dk_sign](/momentum/3/3-reference/sieve-ref-ec-dk-sign) extension.
-
-### Note
-
-This feature requires the DomainKeys module. See [“domainkeys – Yahoo! DomainKeys”](/momentum/3/3-reference/3-reference-modules-domainkeys) for more information.
-
-
-
-
-```
-$responsible = ec_dk_responsible_domain;
-if ec_test :is "foo.com" $responsible {
- ec_log "foo.com is responsible for this message.";
-}
-else {
- ec_log "foo.com is not responsible for this message.";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-dk-sign.md b/content/momentum/3/3-reference/sieve-ref-ec-dk-sign.md
deleted file mode 100644
index a8ea48a83..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-dk-sign.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_dk_sign"
-description: "ec dk sign Sign a message with the Domain Keys protocol ec dk sign parameters hash ec dk sign signs the current message with a Domain Key signature By default it uses the configured parameters on the Domain Key module configuration stanza If desired a hash table of parameter overrides..."
----
-
-
-## Name
-
-ec_dk_sign — Sign a message with the DomainKeys protocol
-
-## Synopsis
-
-`ec_dk_sign` [ *`parameters_hash`* ]
-
-
-## Description
-
-`ec_dk_sign` signs the current message with a DomainKey signature. By default it uses the configured parameters on the DomainKey module configuration stanza. If desired, a hash table of parameter overrides may be passed as the only argument to the Sieve extension. It may contain the following parameters:
-
-
-
-- base_domain
-
--
-
-Override the default signing domain.
-
-
-
-- selector
-
--
-
-Override the default signing selector.
-
-
-
-- keyfile
-
--
-
-Override the default signing key file, which may be parameterized as defined in the [“domainkeys – Yahoo! DomainKeys”](/momentum/3/3-reference/3-reference-modules-domainkeys) configuration documentation.
-
-
-
-- keybuf
-
--
-
-Override the default signing key. This hash entry must contain the PEM encoded private key to use for signing the messages. This must be a contiguous string, with no line breaks and no white space, without the --BEGIN and --END tags that are found in the key file itself. The format is similar to the format used to store the public key in the DomainKeys DNS records.
-
-
-
-
-
-The `core_final_validation` hook is triggered from the SWAPOUT pool as the last step before journaling the message to spool. Because you are guaranteed that nothing will change the message contents, it is best to execute `ec_dk_sign` in the `core_final_validation` hook. This is important because message modifications that occur after a signature is computed will render the signature invalid. This hook point must run synchronously; doing otherwise will lead to undefined behavior.
-
-### Warning
-
-While it is possible to use this function in the data phase, doing so will have a massive impact on performance, as the system would be occupied with signing instead of processing mail, and the throughput would suffer tremendously. However, there can only be one Sieve script bound to the core_final_validation hook. If you want to sign both DKIM and DomainKeys, put your code into the same file.
-
-Set the sieve `async` option to `false` when using the core_final_validation_hook otherwise you may experience spool corruption.
-
-Sieve scripts implementing the core_final_validation hook should not modify the message since it may have already been written to the spool.
-
-Documentation for how to execute a Sieve script at a hook point can be found on the [“sieve – The Sieve Module”](/momentum/3/3-reference/modules-sieve) documentation page.
-
-### Note
-
-This feature requires the DomainKeys module. See [“domainkeys – Yahoo! DomainKeys”](/momentum/3/3-reference/3-reference-modules-domainkeys) for more information.
-
-
-
-
-```
-$params = hash_create;
-hash_set $params "selector" "myselector";
-hash_set $params "base_domain" "my.signing.domain.com";
-ec_dk_sign $params;
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-dkim-domains.md b/content/momentum/3/3-reference/sieve-ref-ec-dkim-domains.md
deleted file mode 100644
index e7dccaedd..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-dkim-domains.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_dkim_domains"
-description: "ec dkim domains Return a list of valid signing domains ec dkim domains ec dkim domains returns a stringlist of the domain portion of the identities which had valid DKIM signatures for the current message Note that since DKIM allows for third party signatures one should check that there is..."
----
-
-
-## Name
-
-ec_dkim_domains — Return a list of valid signing domains
-
-## Synopsis
-
-`ec_dkim_domains`
-
-
-## Description
-
-`ec_dkim_domains` returns a stringlist of the domain portion of the identities which had valid DKIM signatures for the current message. Note that since DKIM allows for third party signatures, one should check that there is a valid signature relating to the 'responsible domain' of the message, which is provided by the [ec_dkim_responsible_domain](/momentum/3/3-reference/sieve-ref-ec-dkim-responsible-domain) extension.
-
-### Note
-
-This feature requires the DKIM module. See [“dkim – DomainKeys Identified Mail Signatures”](/momentum/3/3-reference/modules-dkim) for more information.
-
-
-
-
-```
-$responsible = ec_dkim_responsible_domain;
-$domains = ec_dkim_domains;
-if ec_test :is $domains $responsible {
- ec_log "Valid DKIM signature found";
-}
-else {
- ec_log "No valid DKIM signature found";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-dkim-responsible-domain.md b/content/momentum/3/3-reference/sieve-ref-ec-dkim-responsible-domain.md
deleted file mode 100644
index fbb091620..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-dkim-responsible-domain.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_dkim_responsible_domain"
-description: "ec dkim responsible domain Return the responsible domain for the current message ec dkim responsible domain ec dkim responsible domain returns a string containing the responsible domain of the current message This can be used as an argument to the ec dkim sign extension or as a comparison against the..."
----
-
-
-## Name
-
-ec_dkim_responsible_domain — Return the responsible domain for the current message
-
-## Synopsis
-
-`ec_dkim_responsible_domain`
-
-
-## Description
-
-`ec_dkim_responsible_domain` returns a string containing the responsible domain of the current message. This can be used as an argument to the [ec_dkim_sign](/momentum/3/3-reference/sieve-ref-ec-dkim-sign) extension or as a comparison against the return values of the [ec_dkim_domains](/momentum/3/3-reference/sieve-ref-ec-dkim-domains) extension.
-
-### Note
-
-This feature requires the DKIM module. See [“dkim – DomainKeys Identified Mail Signatures”](/momentum/3/3-reference/modules-dkim) for more information.
-
-
-
-
-```
-$responsible = ec_dkim_responsible_domain;
-$domains = ec_dkim_domains;
-if ec_test :is $domains $responsible {
- ec_log "Valid DKIM signature found";
-}
-else {
- ec_log "No valid DKIM signature found";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-dkim-sign.md b/content/momentum/3/3-reference/sieve-ref-ec-dkim-sign.md
deleted file mode 100644
index d774a45ff..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-dkim-sign.md
+++ /dev/null
@@ -1,150 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_dkim_sign"
-description: "ec dkim sign Sign a message with the DKIM protocol ec dkim sign parameters hash ec dkim sign signs the current message with a DKIM signature By default it uses the configured parameters on the DKIM module configuration stanza If desired a hash table of parameter overrides may be passed..."
----
-
-
-## Name
-
-ec_dkim_sign — Sign a message with the DKIM protocol
-
-## Synopsis
-
-`ec_dkim_sign` [ *`parameters_hash`* ]
-
-
-## Description
-
-`ec_dkim_sign` signs the current message with a DKIM signature. By default it uses the configured parameters on the DKIM module configuration stanza. If desired, a hash table of parameter overrides may be passed as the only argument to the Sieve extension. It may contain the following parameters:
-
-### Note
-
-This feature requires the DKIM module. See [“dkim – DomainKeys Identified Mail Signatures”](/momentum/3/3-reference/modules-dkim) for more information.
-
-
-
-- base_domain/signing_domain
-
--
-
-Override the default signing domain. These two parameters are synonyms for one another, each will have the same effect.
-
-
-
-- header_canon
-
--
-
-Override the default header canonicalization setting.
-
-
-
-- body_canon
-
--
-
-Override the default body canonicalization setting.
-
-
-
-- digest
-
--
-
-Override the default digest setting.
-
-
-
-- headerlist
-
--
-
-Override the default list of headers to sign.
-
-
-
-- identity
-
--
-
-Override the default signing identity.
-
-
-
-- selector
-
--
-
-Override the default signing selector.
-
-
-
-- keyfile
-
--
-
-Override the default signing key file, which may be parameterized as defined in the [“dkim – DomainKeys Identified Mail Signatures”](/momentum/3/3-reference/modules-dkim) configuration documentation.
-
-
-
-- keybuf
-
--
-
-Override the default signing key. This hash entry must contain the PEM encoded private key to use for signing the messages. This must be a contiguous string, with no line breaks and no white space, without the --BEGIN and --END tags that are found in the key file itself. The format is similar to the format used to store the public key in the DKIM DNS records.
-
-
-
-- body_length_limit
-
--
-
-Override the default body_length_limit setting.
-
-
-
-- lifetime
-
--
-
-**Configuration Change. ** This feature is available starting from Momentum 3.1.
-
-Override the default lifetime setting.
-
-
-
-
-
-The `core_final_validation` hook is triggered from the SWAPOUT pool as the last step before journaling the message to spool. Because you are guaranteed that nothing will change the message contents, it is best to execute `ec_dkim_sign` in the `core_final_validation` hook. This is important because message modifications that occur after a signature is computed will render the signature invalid. This hook point must run synchronously; doing otherwise will lead to undefined behavior.
-
-### Warning
-
-While it is possible to use this function in the data phase, doing so will have a massive impact on performance, as the system would be occupied with signing instead of processing mail, and the throughput would suffer tremendously. However, there can only be one Sieve script bound to the core_final_validation hook. If you want to sign both DKIM and DomainKeys, put your code into the same file.
-
-Set the sieve `async` option to `false` when using the core_final_validation_hook otherwise you may experience spool corruption.
-
-Sieve scripts implementing the core_final_validation hook should not modify the message since it may have already been written to the spool.
-
-Find a sample sieve configuration below:
-
-```
-sieve "sieve1" {
- hook "core_final_validation" {
- source = "/path/to/dkim_sign_script.siv"
- async = "false"
- }
-}
-```
-
-Documentation for how to execute a Sieve script at a hook point can be found on the [“sieve – The Sieve Module”](/momentum/3/3-reference/modules-sieve) documentation page.
-
-
-
-
-```
-$params = hash_create;
-hash_set $params "selector" "myselector";
-hash_set $params "signing_domain" "my.signing.domain.com";
-ec_dkim_sign $params;
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-dns-lookup.md b/content/momentum/3/3-reference/sieve-ref-ec-dns-lookup.md
deleted file mode 100644
index 9ac2ad49b..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-dns-lookup.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_dns_lookup"
-description: "ec dns lookup perform a DNS record lookup ec dns lookup what a aaaa txt ptr ns mx server This function will perform a DNS resource record lookup on the provided string searching for the resource record type specified The return value should be assigned to a variable If no..."
----
-
-
-## Name
-
-ec_dns_lookup — perform a DNS record lookup
-
-## Synopsis
-
-`ec_dns_lookup` { *`what`* } { [[ "a" ] | [ "aaaa" ] | [ "txt" ] | [ "ptr" ] | [ "ns" ] | [ "mx" ]] } [ *`server`* ]
-
-
-## Description
-
-This function will perform a DNS resource record lookup on the provided string, searching for the resource record type specified. The return value should be assigned to a variable. If no records are found, the variable will contain an empty string. If one record is found, the variable will contain a string representing the result. If more than one record is found, the variable will contain a stringlist representing the results. For MX lookups, the results will be ordered by the MX priority value, in ascending order.
-
-### Note
-
-Starting with Momentum 2.2, ec_dns_lookup always returns a stringlist. If no records were found then the first element of the stringlist will be an empty string.
-
-For example, in order to determine if the connecting IP address has reverse DNS that resolves to the connecting IP we could:
-
-
-
-
-```
-$ptr = ec_dns_lookup "%{spfv1:ir}.in-addr.arpa" "ptr";
-$a = ec_dns_lookup "${ptr}" "a";
-if not ec_test :is $a "%{spfv1:i}" {
- # act on lacking FCrDNS
-}
-```
-
-To check for DNS lookup errors examine the dns_status context variable in the following way:
-
-```
-$dns_error = vctx_conn_get "dns_status";
-if not ec_test :is "${dns_error}" "" {
- ec_log "got dns error: ${dns_error}";
-}
-```
-
-`dns_status` may contain one of a number of response codes (RCODE). As defined by RFC 2136, these are:
-
-* `NOERROR` – No error condition. The text "SUCCESS" is returned in this case.
-
-* `FORMERR` – The name server was unable to interpret the request due to a format error.
-
-* `SERVFAIL` – The name server encountered an internal failure while processing this request, for example an operating system error or a forwarding timeout.
-
-* `NXDOMAIN` – Some name that ought to exist, does not exist.
-
-* `NOTIMP` – The name server does not support the specified Opcode.
-
-* `REFUSED` – The name server refuses to perform the specified operation for policy or security reasons.
-
-* `YXDOMAIN` – Some name that ought not to exist, does exist.
-
-* `YXRRSET` – Some RRset that ought not to exist, does exist.
-
-* `NXRRSET` – Some RRset that ought to exist, does not exist.
-
-* `NOTAUTH` – The server is not authoritative for the zone named in the Zone Section.
-
-* `NOTZONE` A name used in the Prerequisite or Update Section is not within the zone denoted by the Zone Section.
-
-The optional *`server`* argument can be used to specify the hostname or IP address of an alternate DNS server to query.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-error-mode.md b/content/momentum/3/3-reference/sieve-ref-ec-error-mode.md
deleted file mode 100644
index 4f4524b74..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-error-mode.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_error_mode"
-description: "ec error mode set the error mode to fail or continue ec error mode continue fail ec error mode affects how Sieve handles certain kinds of errors for instance passing incorrect parameters to Sieve functions failed includes low memory conditions The default is to fail the incoming session with a..."
----
-
-
-## Name
-
-ec_error_mode — set the error mode to "fail" or "continue"
-
-## Synopsis
-
-`ec_error_mode` { *`continue|fail`* }
-
-
-## Description
-
-**ec_error_mode** affects how Sieve handles certain kinds of errors (for instance, passing incorrect parameters to Sieve functions, failed includes, low memory conditions). The default is to `fail` the incoming session with a transient error response, but you may set it to `continue` to have the script continue executing past the failure point.
-
-The ability to change this behavior was introduced in 2.2, and the default was changed to `fail`. In prior releases, the default was effectively `continue` and this could not be altered.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-floor.md b/content/momentum/3/3-reference/sieve-ref-ec-floor.md
deleted file mode 100644
index e181fa3f5..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-floor.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_floor"
-description: "ec floor round down to the nearest integer ec floor number ec floor rounds the given number down to the nearest integer Example 16 40 ec floor example..."
----
-
-
-## Name
-
-ec_floor — round down to the nearest integer
-
-## Synopsis
-
-`ec_floor` { *`number`* }
-
-
-## Description
-
-`ec_floor` rounds the given number down to the nearest integer.
-
-
-
-
-```
-$a = 65.43;
-$b = -41.65;
-$c = 43;
-$floora = ec_floor $a;
-$floorb = ec_floor $b;
-$floorc = ec_floor $c;
-#floora is 65.000000
-#floorb is -42.000000
-#floorc is 43.000000
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-forward.md b/content/momentum/3/3-reference/sieve-ref-ec-forward.md
deleted file mode 100644
index 7fdabd366..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-forward.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_forward"
-description: "ec forward forward a message ec forward sender address recipient address text subject counter This action will create a new message with the supplied sender address and recipient address on the envelope and will use the supplied text for the body of the new message If the optional subject is..."
----
-
-
-## Name
-
-ec_forward — forward a message
-
-## Synopsis
-
-`ec_forward` { *`sender_address`* } { *`recipient_address`* } { *`text`* } [ *`subject`* ] [ *`counter`* ]
-
-
-## Description
-
-This action will create a new message with the supplied *`sender_address`* and *`recipient_address`* on the envelope, and will use the supplied *`text`* for the body of the new message.
-
-If the optional *`subject`* is provided, the new message will use that for the `Subject:` header, otherwise Momentum will take the subject of the original message and prefix it with the text "Fwd:".
-
-The message to be forwarded will be attached as an rfc2822/message attachment, complete with all header information.
-
-If multiple recipient addresses are supplied as a stringlist instead of a single string, each recipient will receive a message created in the above manner. This has the same effects as calling `ec_forward` multiple times with a single recipient address.
-
-The optional *`counter`* parameter to `ec_forward` is used to count the number of hits for this particular action; if omitted, the script filename and line number will be assumed. You can see the hit count via the web console or via **ec_console** using the **sieve stats** command.
-
-Sieve scripts using `ec_forward` can be used in any phase after and including data_phase1.
-
-
-
-
-```
-ec_forward "sender@mailfrom.com" "recipient@rcptto.com" text:
-This is a multi-line forwarded message, and
-this is the second line.
-.
- "I thought you might like this"
-;
-```
-
-
-
-
-```
-$rcptto = ["rcpt1@rcptto.com", "rcpt2@rcptto.com", "rcpt3@rcptto.com"];
-
-ec_forward "sender@mailfrom.com" $rcptto text:
-forwarded message
-second line
-.
-;
-```
-
-
-
-
-`ec_forward "sender@mailfrom.com" ["rcpt1@rcptto.com", "rcpt2@rcptto.com"] "forwarded via sieve";`
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-gauge-cache.md b/content/momentum/3/3-reference/sieve-ref-ec-gauge-cache.md
deleted file mode 100644
index 6456e4e37..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-gauge-cache.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_gauge_cache"
-description: "ec gauge cache init ec gauge cache inc ec gauge cache dec ec gauge cache get gauge cache functions for Sieve ec gauge cache init name for the cache max number of elements time to expiration of an element replicate ec gauge cache inc name for the cache name for..."
----
-
-
-## Name
-
-ec_gauge_cache_init, ec_gauge_cache_inc, ec_gauge_cache_dec, ec_gauge_cache_get — gauge cache functions for Sieve
-
-## Synopsis
-
-`ec_gauge_cache_init` { *`name for the cache`* } { *`max number of elements`* } { *`time to expiration of an element`* } [ *`replicate`* ]
-
-`ec_gauge_cache_inc` { *`name for the cache`* } { *`name for the key to inc`* }
-
-`ec_gauge_cache_dec` { *`name for the cache`* } { *`name for the key to dec`* }
-
-`ec_gauge_cache_get` { *`name for the cache`* } { *`name for the key to get`* }
-
-
-## Description
-
-`ec_gauge_cache_init` creates the cache with the given max number of elements and max time in seconds before an element automatically expires out of the cache. The final, optional argument is an integer replication flag. If non-zero, it indicates that increments and decrements for this cache should be broadcast among all nodes on a cluster. For this to be used, gauge cache replication must first be enabled; see [“Shared Gauge Caches”](/momentum/3/3-reference/3-reference-cluster-config-replication#cluster.replication.gauge_cache).
-
-`ec_gauge_cache_inc` creates the given key in a given cache if it does not exist and increments it.
-
-`ec_gauge_cache_dec` creates the given key in a given cache if it does not exist and decrements it.
-
-`ec_gauge_cache_get` returns the value of the specified key in the specified cache.
-
-
-
-
-```
-$user = vctx_conn_get "auth_user";
-ec_gauge_cache_init "cache1" 10 300;
-ec_gauge_cache_inc "cache1" "${user}";
-$test = ec_gauge_cache_get "cache1" "${user}";
-if ec_test :value "gt" :comparator "i;ascii-numeric""${test}" "10" {
- ec_action "550" "Too much spamming";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-code.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-code.md
deleted file mode 100644
index 9e0ea1d27..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-code.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_code"
-description: "ec get message code Returns the current SMTP status code for a message ec get message code ec get message code returns the current SMTP code and description associated with a message The code reflects the status of the message from the point of view of the mail system It..."
----
-
-
-## Name
-
-ec_get_message_code — Returns the current SMTP status code for a message
-
-## Synopsis
-
-`ec_get_message_code`
-
-
-## Description
-
-`ec_get_message_code` returns the current SMTP code and description associated with a message. The code reflects the status of the message from the point of view of the mail system. It has the form of an SMTP response; a three-digit response code followed by a (possibly multiline) textual description, terminated with canonical line endings (CRLF).
-
-If Momentum were to construct an out-of-band bounce message, this code is used as the reason.
-
-In the following script, the codes are checked on each message and logged.
-
-
-
-
-```
-$log = ec_get_message_code;
-ec_log $log;
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-creation-time.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-creation-time.md
deleted file mode 100644
index b7c5b6b20..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-creation-time.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_creation_time"
-description: "ec get message creation time Return the creation time of the current message ec get message creation time ec get message creation time returns the creation time of the current message It returns with seconds precision as an integer In the following script the creation time is checked against a..."
----
-
-
-## Name
-
-ec_get_message_creation_time — Return the creation_time of the current message.
-
-## Synopsis
-
-`ec_get_message_creation_time`
-
-
-## Description
-
-`ec_get_message_creation_time` returns the creation time of the current message. It returns with seconds precision as an integer.
-
-In the following script, the creation_time is checked against a specific value and the mail is permanently failed if it does not match.
-
-
-
-
-```
-$now = "%{t}";
-$nearfuture = ec_add $now "15";
-$t = ec_get_message_creation_time;
-if ec_test :value "lt" :comparator "i;ascii-numeric" $t $now {
- ec_action 550 "ec_get_message_creation_time failed. ${t} is less than ${now}";
-}
-if ec_test :value "gt" :comparator "i;ascii-numeric" $t $nearfuture {
- ec_action 550 "ec_get_message_creation_time failed. ${t} is greater than than ${nearfuture}";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-id.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-id.md
deleted file mode 100644
index 6fca72d27..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-id.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_id"
-description: "ec get message id Returns the message's unique ID ec get message id ec get message id returns the unique on this Momentum instance ID of this message This is the same value that is returned in the 250 OK response when a message is accepted by Momentum and is..."
----
-
-
-## Name
-
-ec_get_message_id — Returns the message's unique ID.
-
-## Synopsis
-
-`ec_get_message_id`
-
-
-## Description
-
-`ec_get_message_id` returns the unique (on this Momentum instance) ID of this message. This is the same value that is returned in the 250 OK response when a message is accepted by Momentum, and is related to the spool name of the message. This value also appears in the second (numbered 1) field of main and bounce log entries pertaining to this message. For more information see [“The `mainlog.ec` Format”](/momentum/3/3-reference/log-formats-version-3#log_formats.mainlog3) and [“The bounce_logger”](/momentum/3/3-reference/log-formats-version-3#log_formats.bouncelog3).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-mailfrom.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-mailfrom.md
deleted file mode 100644
index c66c2abb0..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-mailfrom.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_mailfrom"
-description: "ec get message mailfrom Return the mailfrom of the current message ec get message mailfrom ec get message mailfrom returns the mail from of the current message It has the form of MAIL FROM bar bar com In the following script the mailfrom is checked against a specific value and..."
----
-
-
-## Name
-
-ec_get_message_mailfrom — Return the mailfrom of the current message.
-
-## Synopsis
-
-`ec_get_message_mailfrom`
-
-
-## Description
-
-`ec_get_message_mailfrom` returns the mail from of the current message. It has the form of MAIL FROM:.
-
-In the following script, the mailfrom is checked against a specific value and the mail is permanently failed if it does not match.
-
-
-
-
-```
-$mfrom = ec_get_message_mailfrom;
-if not ec_test :contains "${mfrom}" "MAIL FROM:" {
- ec_action 550 "ec_get_message_mailfrom failed (read ${mfrom})";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-num-retries.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-num-retries.md
deleted file mode 100644
index 56251bb1f..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-num-retries.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_num_retries"
-description: "ec get message num retries Return the num retries of the current message ec get message num retries ec get message num retries returns the number of retries the current message has had It returns this as an integer In the following script the num retries is checked and if..."
----
-
-
-## Name
-
-ec_get_message_num_retries — Return the num_retries of the current message.
-
-## Synopsis
-
-`ec_get_message_num_retries`
-
-
-## Description
-
-`ec_get_message_num_retries` returns the number of retries the current message has had. It returns this as an integer..
-
-In the following script, the num_retries is checked and if a retry has occur, the message is permanently failed.
-
-
-
-
-```
-$n = ec_get_message_num_retries;
-if not ec_test :is "${n}" "0" {
- ec_action 550 "ec_get_message_num_retries failed. Expected 0, got ${n}";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-protocol.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-protocol.md
deleted file mode 100644
index 2cbf2a3dd..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-protocol.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_protocol"
-description: "ec get message protocol Return the protocol of the current message ec get message protocol ec get message protocol returns the protocol that the message was received via It takes the form of ESMTP ECSTREAM LMTP INTERNAL POP 3 IMAP or CLUSTER In the following script the protocol is checked..."
----
-
-
-## Name
-
-ec_get_message_protocol — Return the protocol of the current message.
-
-## Synopsis
-
-`ec_get_message_protocol`
-
-
-## Description
-
-`ec_get_message_protocol` returns the protocol that the message was received via. It takes the form of ESMTP, ECSTREAM, LMTP, INTERNAL, POP3, IMAP, or CLUSTER.
-
-In the following script, the protocol is checked against a specific value and the mail is permanently failed if it does not match.
-
-
-
-
-```
-$p = ec_get_message_protocol;
-if not ec_test :is "${p}" "ESMTP" {
- ec_action 550 "ec_get_message_protocol. Expected ESMTP, got ${p}";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-rcptto.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-rcptto.md
deleted file mode 100644
index a09357a09..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-rcptto.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_rcptto"
-description: "ec get message rcptto Return the rcptto of the current message ec get message rcptto ec get message rcptto returns the rcptto of the current message It has the form of RCPT TO bar bar com In the following script the rcptto is checked against a specific value and the..."
----
-
-
-## Name
-
-ec_get_message_rcptto — Return the rcptto of the current message.
-
-## Synopsis
-
-`ec_get_message_rcptto`
-
-
-## Description
-
-`ec_get_message_rcptto` returns the rcptto of the current message. It has the form of RCPT TO:.
-
-In the following script, the rcptto is checked against a specific value and the mail is permanently failed if it does not match.
-
-
-
-
-```
-$rcpt = ec_get_message_rcptto;
-if not ec_test :contains "${rcpt}" "RCPT TO:" {
- ec_action 550 "ec_get_message_rcptto failed (read ${rcpt})";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-from-port.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-from-port.md
deleted file mode 100644
index 6d18e1314..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-from-port.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_received_from_port"
-description: "ec get message received from port Return the port that the message was received from ec get message received from port ec get message received from port returns the port from which the message was received It takes the form of an integer In the following script the received from..."
----
-
-
-## Name
-
-ec_get_message_received_from_port — Return the port that the message was received from.
-
-## Synopsis
-
-`ec_get_message_received_from_port`
-
-
-## Description
-
-`ec_get_message_received_from_port` returns the port from which the message was received. It takes the form of an integer.
-
-In the following script, the received_from_port is checked against a specific value and the mail is permanently failed if it does not match.
-
-
-
-
-```
-$p = ec_get_message_received_from_port;
-if not ec_test :is "${p}" "$port" {
- ec_action 550 "ec_get_message_received_from_port failed. Expected $port, got ${p}";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-from.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-from.md
deleted file mode 100644
index 43e9553e5..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-from.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_received_from"
-description: "ec get message received from Return the IP address that the message was received from ec get message received from ec get message received from returns the IP address that the message was sent from It returns the address in dot decimal notation 192 126 1 20 for example In..."
----
-
-
-## Name
-
-ec_get_message_received_from — Return the IP address that the message was received from
-
-## Synopsis
-
-`ec_get_message_received_from`
-
-
-## Description
-
-`ec_get_message_received_from` returns the IP address that the message was sent from. It returns the address in dot-decimal notation, 192.126.1.20 for example.
-
-In the following script, the received_from is checked against a specific value and the mail is permanently failed if it does not match.
-
-
-
-
-```
-$ip = ec_get_message_received_from;
-if not ec_test :is "${ip}" "127.0.0.1" {
- ec_action 550 "ec_get_message_received_from failed. Expected 127.0.0.1, got ${ip}";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-via-port.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-via-port.md
deleted file mode 100644
index 226d2b82f..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-via-port.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_received_via_port"
-description: "ec get message received via port Return the local port that the message was received on ec get message received via port ec get message received via port returns the local port on which the message was received It takes the form of an integer In the following script the..."
----
-
-
-## Name
-
-ec_get_message_received_via_port — Return the local port that the message was received on.
-
-## Synopsis
-
-`ec_get_message_received_via_port`
-
-
-## Description
-
-`ec_get_message_received_via_port` returns the local port on which the message was received. It takes the form of an integer.
-
-In the following script, the received_via_port is checked against a specific value and the mail is permanently failed if it does not match.
-
-
-
-
-```
-$p = ec_get_message_received_via_port;
-if not ec_test :is "${p}" "$local_port" {
- ec_action 550 "ec_get_message_received_via_port failed. Expected $local_port, got ${p}";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-via.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-via.md
deleted file mode 100644
index 20bad75b5..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-received-via.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_received_via"
-description: "ec get message received via Return the IP address that the message was received via ec get message received via ec get message received via returns the IP address of the interface that the message was received on It returns the address in dot decimal notation 192 126 1 20..."
----
-
-
-## Name
-
-ec_get_message_received_via — Return the IP address that the message was received via
-
-## Synopsis
-
-`ec_get_message_received_via`
-
-
-## Description
-
-`ec_get_message_received_via` returns the IP address of the interface that the message was received on. It returns the address in dot-decimal notation, 192.126.1.20 for example.
-
-In the following script, the IP address returned by ec_get_message_received_via is checked against a specific value and the mail is permanently failed if it does not match.
-
-
-
-
-```
-$ip = ec_get_message_received_via;
-if not ec_test :is "${ip}" "127.0.0.1" {
- ec_action 550 "ec_get_message_received_via failed. Expected 127.0.0.1, got ${ip}";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-size.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-size.md
deleted file mode 100644
index 9cfe88241..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-size.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_size"
-description: "ec get message size Return the size of the current message ec get message size ec get message size returns the size of the current message in bytes It returns this as a string In the following script the size is checked and if it is greater than 1 megabyte..."
----
-
-
-## Name
-
-ec_get_message_size — Return the size of the current message.
-
-## Synopsis
-
-`ec_get_message_size`
-
-
-## Description
-
-`ec_get_message_size` returns the size of the current message in bytes. It returns this as a string.
-
-In the following script, the size is checked and if it is greater than 1 megabyte the message is permanently failed.
-
-
-
-
-```
-$n = ec_get_message_size;
-if ec_test :value "ge" :comparator "i;ascii-numeric" $n 1048576 {
- ec_action 550 "message too large.";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-get-message-spool-name.md b/content/momentum/3/3-reference/sieve-ref-ec-get-message-spool-name.md
deleted file mode 100644
index e14d24c96..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-get-message-spool-name.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_get_message_spool_name"
-description: "ec get message spool name Returns the message's spool filename ec get message spool name ec get message spool name returns the base filename to which this message has been or will be spooled unless it is handled by an alternate IO module The spool format is opaque and a..."
----
-
-
-## Name
-
-ec_get_message_spool_name — Returns the message's spool filename.
-
-## Synopsis
-
-`ec_get_message_spool_name`
-
-
-## Description
-
-`ec_get_message_spool_name` returns the base filename to which this message has been or will be spooled, unless it is handled by an alternate IO module. The spool format is opaque, and a message lives in more than one file, so this function is only useful for debugging.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-header-add.md b/content/momentum/3/3-reference/sieve-ref-ec-header-add.md
deleted file mode 100644
index 1e89d3a58..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-header-add.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_header_add"
-description: "ec header add prepend a header to the current message ec header add field name field body This will prepend an RFC 2822 header named field name with the content field body to the current message You should not use this function in the set binding phases regardless of version..."
----
-
-
-## Name
-
-ec_header_add — prepend a header to the current message
-
-## Synopsis
-
-`ec_header_add` { *`field-name`* } { *`field-body`* }
-
-
-## Description
-
-This will prepend an RFC2822 header named with the content to the current message.
-
-### Note
-
-You should not use this function in the set_binding phases (regardless of version), and, as of Momentum 2.2.2.37, it will not work in these phases.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-header-delete.md b/content/momentum/3/3-reference/sieve-ref-ec-header-delete.md
deleted file mode 100644
index 9c6776bd4..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-header-delete.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_header_delete"
-description: "ec header delete remove a header from the current message ec header delete field name This will delete the named RFC 2822 header from the current email message You should not use this function in the set binding phases regardless of version and as of Momentum 2 2 2 37..."
----
-
-
-## Name
-
-ec_header_delete — remove a header from the current message
-
-## Synopsis
-
-`ec_header_delete` { *`field-name`* }
-
-
-## Description
-
-This will delete the named RFC2822 header from the current email message.
-
-### Note
-
-You should not use this function in the set_binding phases (regardless of version), and, as of Momentum 2.2.2.37, it will not work in these phases.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-header-get.md b/content/momentum/3/3-reference/sieve-ref-ec-header-get.md
deleted file mode 100644
index 427edd2cb..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-header-get.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_header_get"
-description: "ec header get obtain the values for a particular header ec header get field name This will find all headers with the matching field name and return a string list of their bodies Example 16 56 ec header get example 1 Example 16 57 ec header get example 2 The..."
----
-
-
-## Name
-
-ec_header_get — obtain the values for a particular header
-
-## Synopsis
-
-`ec_header_get` { *`field-name`* }
-
-
-## Description
-
-This will find all headers with the matching field-name and return a string list of their bodies.
-
-
-
-
-```
-$category_headers = ec_header_get "X-Category";
-$first_header = $category_headers[0];
-ec_log "The category is ${first_header}";
-```
-
-
-
-
-```
-($hdr) = ec_header_get "X-Category";
-ec_log "The category is ${hdr}";
-```
-
-### Note
-
-The parameter passed to this function is case insensitive.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-header-postfix.md b/content/momentum/3/3-reference/sieve-ref-ec-header-postfix.md
deleted file mode 100644
index aba00a070..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-header-postfix.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_header_postfix"
-description: "ec header postfix append to a header of the current message ec header postfix field name field body This will find the header named field name and should it exist append the specified newtext to the field body of the header You should not use this function in the set..."
----
-
-
-## Name
-
-ec_header_postfix — append to a header of the current message
-
-## Synopsis
-
-`ec_header_postfix` { *`field-name`* } { *`field-body`* }
-
-
-## Description
-
-This will find the header named and should it exist, append the specified newtext to the field body of the header.
-
-### Note
-
-You should not use this function in the set_binding phases (regardless of version), and, as of Momentum 2.2.2.37, it will not work in these phases.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-header-prefix.md b/content/momentum/3/3-reference/sieve-ref-ec-header-prefix.md
deleted file mode 100644
index 370fbd504..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-header-prefix.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_header_prefix"
-description: "ec header prefix prepend to a header in the current message ec header prefix field name field body This will find the header named field name and should it exist prepend the specified newtext to the field body of the header You should not use this function in the set..."
----
-
-
-## Name
-
-ec_header_prefix — prepend to a header in the current message
-
-## Synopsis
-
-`ec_header_prefix` { *`field-name`* } { *`field-body`* }
-
-
-## Description
-
-This will find the header named and should it exist, prepend the specified newtext to the field body of the header.
-
-### Note
-
-You should not use this function in the set_binding phases (regardless of version), and, as of Momentum 2.2.2.37, it will not work in these phases.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-host-fingerprint.md b/content/momentum/3/3-reference/sieve-ref-ec-host-fingerprint.md
deleted file mode 100644
index da9225b2d..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-host-fingerprint.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_host_fingerprint"
-description: "ec host fingerprint return genre and detail of the passive host fingerprinting operation ec host fingerprint Configuration Change This feature is available starting from Momentum 3 0 26 In order to use this command you must have the Policy Tools suite installed Passive OS fingerprinting is installed as part of..."
----
-
-
-## Name
-
-ec_host_fingerprint — return genre and detail of the passive host fingerprinting operation
-
-## Synopsis
-
-`ec_host_fingerprint`
-
-
-## Description
-
-**Configuration Change. ** This feature is available starting from Momentum 3.0.26.
-
-In order to use this command, you must have the Policy Tools suite installed. Passive OS fingerprinting is installed as part of the Policy Tools suite. This functionality yields information about inbound connections. For more information about installing the Policy Tools suite see [“Installing Additional Packages”](/momentum/3/3-reference/install-additional-packages).
-
-The `ec_host_fingerprint` function returns the genre and detail regarding the current inbound connection.
-
-
-
-
-```
-($genre, $detail) = ec_host_fingerprint;
-ec_header_add "X-Host-Fingerprint" "%{i} %{p} ${genre} ${detail}";
-```
-
-**Configuration Change. ** This feature is available starting from Momentum 3.0.24.
-
-Passive operating system fingerprinting runs as a daemon that Momentum communicates with over a socket, `/tmp/p0fd`. This daemon is started using the command: **/etc/init.d/msys-p0f start** . The fingerprints are all included in the msys-p0f package and are located here: `/opt/msys/3rdParty/etc/p0f/`. These fingerprints do not need to be modified.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-inc-counter.md b/content/momentum/3/3-reference/sieve-ref-ec-inc-counter.md
deleted file mode 100644
index 6d4499f17..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-inc-counter.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_inc_counter"
-description: "ec inc counter increment a Sieve counter ec inc counter counter ec inc counter allows you to increment an arbitrary Sieve counter The convention for naming counters is a short category name followed by a colon followed by a more descriptive name for the counter The counter values can be..."
----
-
-
-## Name
-
-ec_inc_counter — increment a Sieve counter
-
-## Synopsis
-
-`ec_inc_counter` { *`counter`* }
-
-
-## Description
-
-`ec_inc_counter` allows you to increment an arbitrary Sieve counter. The convention for naming counters is a short category name, followed by a colon, followed by a more descriptive name for the counter. The counter values can be obtained on the console using the **sieve:*`sieve1`* stats** command.
-
-Most of the built-in Sieve actions will either implicitly increment a counter, or allow you to specify your own for that action; `ec_inc_counter` allows to you count the number of times that a particular part of your script is run, and can be useful for later statistical analysis.
-
-
-
-
-```
-if envelope :domain :is "from" "good-guy.com" {
- ec_inc_counter "stats:mail from the good guys";
-}
-```
-
-See also [ec_gauge_cache](/momentum/3/3-reference/sieve-ref-ec-gauge-cache) for a more general-purpose counter mechanism supporting increment, decrement and get operations in Sieve.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-include.md b/content/momentum/3/3-reference/sieve-ref-ec-include.md
deleted file mode 100644
index 55a924b06..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-include.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_include"
-description: "ec include include and run a Sieve script ec include uri stringlist of args The ec include action will fetch the named script from the script cache if it is not present in the cache it will be fetched from the underlying storage If the storage driver supports it the..."
----
-
-
-## Name
-
-ec_include — include and run a Sieve script
-
-## Synopsis
-
-`ec_include` { *`uri`* } [ *`stringlist-of-args`* ]
-
-
-## Description
-
-The `ec_include` action will fetch the named script from the script cache; if it is not present in the cache, it will be fetched from the underlying storage. If the storage driver supports it, the fetch can occur asynchronously; processing of the Sieve script is suspended while the fetch completes, allowing Momentum to continue to service other events as they become ready.
-
-Each cached script has a time to live determined by the sieve module configuration option, `cache_life` so cached scripts are periodically refreshed. However, if you make changes to a script, a best practise is to flush the Sieve cache immediately using the ec_console command, **sieve:sieve1 flush cache** . For more information about this command see [“Flushing the Cache”](/momentum/3/3-reference/modules-sieve#modules.sieve.sieve.flush.cache).
-
-Once the script has been located and compiled, the current Sieve script state is pushed onto a stack and the new script is executed. Execution continues until a terminal action is taken, or when the end of the new script is reached, whichever is soonest. If a terminal action is taken, processing for the phase is stopped in the usual way. If the end of the script was reached, the state for the original script is popped off the stack, and execution resumes at the statement immediately following the `ec_include` action.
-
-`ec_include` accepts an optional stringlist that can be used to pass parameters to the underlying storage layer. For example, the datasource storage layer will use the stringlist as positional parameters in a prepared SQL statement.
-
-If an included script can not be found, an error is logged to your paniclog and execution continues with the statement immediately following the include action.
-
-If an include fails, then a Sieve error is raised, which will cause the current inbound session to transiently fail. You can allow the script to continue processing by using `ec_error_mode`. See [ec_error_mode](/momentum/3/3-reference/sieve-ref-ec-error-mode) for more information.
-
-
-
-
-```
-require "ec_include";
-ec_include "/some/other/script.siv";
-```
-
-
-
-
-```
-require "ec_include";
-ec_include ":datasource:sievecache:select script from scripts where id = ?" [$id];
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-interfaces.md b/content/momentum/3/3-reference/sieve-ref-ec-interfaces.md
deleted file mode 100644
index 45dac0383..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-interfaces.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_interfaces"
-description: "ec interfaces obtain a list of network interfaces ec interfaces This function returns a stringlist of all I Pv 4 addresses assigned to the local machine except for localhost 127 0 0 1 This feature is an extension to the Sieve system and can be made available by loading the..."
----
-
-
-## Name
-
-ec_interfaces — obtain a list of network interfaces
-
-## Synopsis
-
-`ec_interfaces`
-
-
-## Description
-
-This function returns a stringlist of all IPv4 addresses assigned to the local machine except for localhost (127.0.0.1).
-
-### Note
-
-This feature is an extension to the Sieve system and can be made available by loading the mail_loop module. See [“mail_loop – Mail Loop Detection”](/momentum/3/3-reference/3-reference-modules-mail-loop) for more information.
-
-This function can be useful for detecting spoofing attacks that use the local machine's IP address as the argument to EHLO (a common spamming mistake).
-
-
-
-
-```
-$ips = ec_interfaces;
-if ec_test :contains "%{spfv1:h}" $ips {
- ec_action 550 "spoof from %{spfv1:i} claiming to be me %{spfv1:h}";
-}
-stop;
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-ip-connections-cluster.md b/content/momentum/3/3-reference/sieve-ref-ec-ip-connections-cluster.md
deleted file mode 100644
index f29857c52..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-ip-connections-cluster.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_ip_connections_cluster"
-description: "ec ip connections cluster Audit how many connections an IP address has made cluster wide ec ip connections cluster time series index mask ec ip connections cluster hash ec ip connections cluster returns a string containing the number of connections that have occurred for a CIDR block within a configured..."
----
-
-
-## Name
-
-ec_ip_connections_cluster — Audit how many connections an IP address has made cluster-wide
-
-## Synopsis
-
-`ec_ip_connections_cluster` { *`time_series_index`* } [ *`mask`* ]
-`ec_ip_connections_cluster` { *`$hash`* }
-
-
-## Description
-
-`ec_ip_connections_cluster` returns a string containing the number of connections that have occurred for a CIDR block within a configured time window. The referenced CIDR block is constructed by applying the `mask` option value to the SMTP connection's remote IP address. There are two forms of this command.
-
-In the first form, the `time_series_index` value selects a monitor corresponding to its position in the inbound_audit configuration stanza (A `time_series_index` of '0' corresponds to the first monitor in the inbound_audit configuration stanza). The audit data returned for this monitor is based on a weighted sliding average of the current time window within this monitor and the previous time window, thus smoothing the transition between windows. If `mask` is not specified, the default value of '32' is used to compute the CIDR block.
-
-In the second form, a hash is used to pass the arguments. These keys are supported:
-
-
-
-- monitor
-
--
-
-A string matching a monitor definition within the inbound_audit configuration stanza, for example, "300,6". By default the first monitor listed in the configuration stanza is used.
-
-
-
-- period_start
-
--
-
-Starting window number. The default is 0, which is the chronologically current window. For example, if the inbound_audit configuration stanza defines a monitor as "300,6", then the monitor contains six windows numbered 0 (current) through 5 (oldest). Each time window in this example is 300 seconds duration.
-
-
-
-- period_end
-
--
-
-Ending window number. It defaults to the value of `period_start`. If this key is specified, its value is a window number (which should be equal to or greater than period_start). The result will be an aggregate sum over the window range.
-
-
-
-- mask
-
--
-
-This is the mask used to compute CIDR block. The mask defaults to '32'.
-
-
-
-
-
-**Configuration Change. ** This feature requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-### Note
-
-This feature also requires the cluster module. The cluster configuration stanza must specify metrics replication including the parameter `connect`:
-
-```
-cluster {
- # ... other cluster config ...
- Replicate "inbound_cidr" {}
-}
-```
-
-
-
-```
-$connections = ec_ip_connections_cluster "0" "32";
-$c_connections = ec_ip_connections_cluster "0" "24";
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${connections}" "1000" {
- ec_tarpit 10 "too many connections /32";
-}
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${c_connections}" "10000" {
- ec_tarpit 10 "too many connections /24";
-}
-```
-
-
-
-
-```
-$args = hash_create;
-hash_set $args "period_start" "0";
-hash_set $args "period_end" "2";
-hash_set $args "monitor" "300,6";
-hash_set $args "mask" "32";
-$count = ec_ip_connections_cluster $args;
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${count}" "10000" {
- ec_tarpit 10 "too many connections /32 in last fifteen minutes";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-ip-connections.md b/content/momentum/3/3-reference/sieve-ref-ec-ip-connections.md
deleted file mode 100644
index 17836ff3e..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-ip-connections.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_ip_connections"
-description: "ec ip connections Audit how many connections an IP address has made ec ip connections time series index mask ec ip connections hash ec ip connections returns a string containing the number of connections that have occurred for a CIDR block within a configured time window The referenced CIDR block..."
----
-
-
-## Name
-
-ec_ip_connections — Audit how many connections an IP address has made
-
-## Synopsis
-
-`ec_ip_connections` { *`time_series_index`* } [ *`mask`* ]
-`ec_ip_connections` { *`$hash`* }
-
-
-## Description
-
-`ec_ip_connections` returns a string containing the number of connections that have occurred for a CIDR block within a configured time window. The referenced CIDR block is constructed by applying the `mask` option value to the SMTP connection's remote IP address. There are two forms of this command.
-
-### Note
-
-As of version 3.4, this feature supports IPv6.
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-In the first form, the `time_series_index` value selects a monitor corresponding to its position in the inbound_audit configuration stanza (A `time_series_index` of '0' corresponds to the first monitor in the inbound_audit configuration stanza). The audit data returned for this monitor is based on a weighted sliding average of the current time window within this monitor and the previous time window, thus smoothing the transition between windows. If `mask` is not specified, the default value of '32' is used to compute the CIDR block.
-
-In the second form, a hash is used to pass the arguments. These keys are supported:
-
-
-
-- monitor
-
--
-
-A string matching a monitor definition within the inbound_audit configuration stanza, for example, "300,6". By default the first monitor listed in the configuration stanza is used.
-
-
-
-- period_start
-
--
-
-Starting window number. The default is 0, which is the chronologically current window. For example, if the inbound_audit configuration stanza defines a monitor as "300,6", then the monitor contains six windows numbered 0 (current) through 5 (oldest). Each time window in this example is 300 seconds duration.
-
-
-
-- period_end
-
--
-
-Ending window number. It defaults to the value of `period_start`. If this key is specified, its value is a window number (which should be equal to or greater than period_start). The result will be an aggregate sum over the window range.
-
-
-
-- mask
-
--
-
-This is the mask used to compute CIDR block. The mask defaults to '32'.
-
-
-
-
-
-### Note
-
-This feature requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-
-
-
-```
-$connections = ec_ip_connections "0" "32";
-$c_connections = ec_ip_connections "0" "24";
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${connections}" "1000" {
- ec_tarpit 10 "too many connections /32";
-}
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${c_connections}" "10000" {
- ec_tarpit 10 "too many connections /24";
-}
-```
-
-
-
-
-```
-$args = hash_create;
-hash_set $args "period_start" "0";
-hash_set $args "period_end" "2";
-hash_set $args "monitor" "300,6";
-hash_set $args "mask" "32";
-$count = ec_ip_connections $args;
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${count}" "10000" {
- ec_tarpit 10 "too many connections /32 in last fifteen minutes";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-ip-receptions-cluster.md b/content/momentum/3/3-reference/sieve-ref-ec-ip-receptions-cluster.md
deleted file mode 100644
index ad9c3bb57..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-ip-receptions-cluster.md
+++ /dev/null
@@ -1,102 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_ip_receptions_cluster"
-description: "ec ip receptions cluster Audit how many receptions an IP address has made cluster wide ec ip receptions cluster time series index mask ec ip receptions cluster hash ec ip receptions cluster returns a string containing the number of receptions that have occurred for a CIDR block within a configured..."
----
-
-
-## Name
-
-ec_ip_receptions_cluster — Audit how many receptions an IP address has made cluster-wide
-
-## Synopsis
-
-`ec_ip_receptions_cluster` { *`time_series_index`* } [ *`mask`* ]
-`ec_ip_receptions_cluster` { *`$hash`* }
-
-
-## Description
-
-`ec_ip_receptions_cluster` returns a string containing the number of receptions that have occurred for a CIDR block within a configured time window. The referenced CIDR block is constructed by applying the `mask` option value to the SMTP connection's remote IP address. There are two forms of this command.
-
-In the first form, the `time_series_index` value selects a monitor corresponding to its position in the inbound_audit configuration stanza (A `time_series_index` of '0' corresponds to the first monitor in the inbound_audit configuration stanza). The audit data returned for this monitor is based on a weighted sliding average of the current time window within this monitor and the previous time window, thus smoothing the transition between windows. If `mask` is not specified, the default value of '32' is used to compute the CIDR block.
-
-In the second form, a hash is used to pass the arguments. These keys are supported:
-
-
-
-- monitor
-
--
-
-A string matching a monitor definition within the inbound_audit configuration stanza, for example, "300,6". By default the first monitor listed in the configuration stanza is used.
-
-
-
-- period_start
-
--
-
-Starting window number. The default is 0, which is the chronologically current window. For example, if the inbound_audit configuration stanza defines a monitor as "300,6", then the monitor contains six windows numbered 0 (current) through 5 (oldest). Each time window in this example is 300 seconds duration.
-
-
-
-- period_end
-
--
-
-Ending window number. It defaults to the value of `period_start`. If this key is specified, its value is a window number (which should be equal to or greater than period_start). The result will be an aggregate sum over the window range.
-
-
-
-- mask
-
--
-
-This is the mask used to compute CIDR block. The mask defaults to '32'.
-
-
-
-
-
-This feature also requires the cluster module. The cluster configuration stanza must specify metrics replication including the parameter `reception`:
-
-```
-cluster {
- # ... other cluster config ...
- Replicate = "inbound_cidr" {}
-}
-```
-
-This feature also requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-
-
-
-```
-$receptions = ec_ip_receptions_cluster "0" "32";
-$c_receptions = ec_ip_receptions_cluster "0" "24";
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${receptions}" "1000" {
- ec_tarpit 10 "too many receptions /32";
-}
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${c_receptions}" "10000" {
- ec_tarpit 10 "too many receptions /24";
-}
-```
-
-
-
-
-```
-$args = hash_create;
-hash_set $args "period_start" "0";
-hash_set $args "period_end" "2";
-hash_set $args "monitor" "300,6";
-hash_set $args "mask" "32";
-$count = ec_ip_receptions_cluster $args;
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${count}" "10000" {
- ec_tarpit 10 "too many receptions /32 in last fifteen minutes";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-ip-receptions.md b/content/momentum/3/3-reference/sieve-ref-ec-ip-receptions.md
deleted file mode 100644
index 417b163f7..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-ip-receptions.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_ip_receptions"
-description: "ec ip receptions Audit how many receptions an IP address has made ec ip receptions time series index mask ec ip receptions hash ec ip receptions returns a string containing the number of receptions that have occurred for a CIDR block within a configured time window The referenced CIDR block..."
----
-
-
-## Name
-
-ec_ip_receptions — Audit how many receptions an IP address has made
-
-## Synopsis
-
-`ec_ip_receptions` { *`time_series_index`* } [ *`mask`* ]
-`ec_ip_receptions` { *`$hash`* }
-
-
-## Description
-
-`ec_ip_receptions` returns a string containing the number of receptions that have occurred for a CIDR block within a configured time window. The referenced CIDR block is constructed by applying the `mask` option value to the SMTP connection's remote IP address. There are two forms of this command.
-
-### Note
-
-As of version 3.4, this feature supports IPv6.
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-In the first form, the `time_series_index` value selects a monitor corresponding to its position in the inbound_audit configuration stanza (A `time_series_index` of '0' corresponds to the first monitor in the inbound_audit configuration stanza). The audit data returned for this monitor is based on a weighted sliding average of the current time window within this monitor and the previous time window, thus smoothing the transition between windows. If `mask` is not specified, the default value of '32' is used to compute the CIDR block.
-
-In the second form, a hash is used to pass the arguments. These keys are supported:
-
-
-
-- monitor
-
--
-
-A string matching a monitor definition within the inbound_audit configuration stanza, for example, "300,6". By default the first monitor listed in the configuration stanza is used.
-
-
-
-- period_start
-
--
-
-Starting window number. The default is 0, which is the chronologically current window. For example, if the inbound_audit configuration stanza defines a monitor as "300,6", then the monitor contains six windows numbered 0 (current) through 5 (oldest). Each time window in this example is 300 seconds duration.
-
-
-
-- period_end
-
--
-
-Ending window number. It defaults to the value of `period_start`. If this key is specified, its value is a window number (which should be equal to or greater than period_start). The result will be an aggregate sum over the window range.
-
-
-
-- mask
-
--
-
-This is the mask used to compute CIDR block. The mask defaults to '32'.
-
-
-
-
-
-### Note
-
-This feature requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-
-
-
-```
-$receptions = ec_ip_receptions "0" "32";
-$c_receptions = ec_ip_receptions "0" "24";
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${receptions}" "1000" {
- ec_tarpit 10 "too many receptions /32";
-}
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${c_receptions}" "10000" {
- ec_tarpit 10 "too many receptions /24";
-}
-```
-
-
-
-
-```
-$args = hash_create;
-hash_set $args "period_start" "0";
-hash_set $args "period_end" "2";
-hash_set $args "monitor" "300,6";
-hash_set $args "mask" "32";
-$count = ec_ip_receptions $args;
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${count}" "10000" {
- ec_tarpit 10 "too many receptions /32 in last fifteen minutes";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-ip-rejections-cluster.md b/content/momentum/3/3-reference/sieve-ref-ec-ip-rejections-cluster.md
deleted file mode 100644
index 86b04928b..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-ip-rejections-cluster.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_ip_rejections_cluster"
-description: "ec ip rejections cluster Audit how many rejections an IP address has made cluster wide ec ip rejections cluster time series index mask ec ip rejections cluster hash ec ip rejections cluster returns a string containing the number of rejections that have occurred for a CIDR block within a configured..."
----
-
-
-## Name
-
-ec_ip_rejections_cluster — Audit how many rejections an IP address has made cluster-wide
-
-## Synopsis
-
-`ec_ip_rejections_cluster` { *`time_series_index`* } [ *`mask`* ]
-`ec_ip_rejections_cluster` { *`$hash`* }
-
-
-## Description
-
-`ec_ip_rejections_cluster` returns a string containing the number of rejections that have occurred for a CIDR block within a configured time window. The referenced CIDR block is constructed by applying the `mask` option value to the SMTP connection's remote IP address. There are two forms of this command.
-
-In the first form, the `time_series_index` value selects a monitor corresponding to its position in the inbound_audit configuration stanza (A `time_series_index` of '0' corresponds to the first monitor in the inbound_audit configuration stanza). The audit data returned for this monitor is based on a weighted sliding average of the current time window within this monitor and the previous time window, thus smoothing the transition between windows. If `mask` is not specified, the default value of '32' is used to compute the CIDR block.
-
-In the second form, a hash is used to pass the arguments. These keys are supported:
-
-
-
-- monitor
-
--
-
-A string matching a monitor definition within the inbound_audit configuration stanza, for example, "300,6". By default the first monitor listed in the configuration stanza is used.
-
-
-
-- period_start
-
--
-
-Starting window number. The default is 0, which is the chronologically current window. For example, if the inbound_audit configuration stanza defines a monitor as "300,6", then the monitor contains six windows numbered 0 (current) through 5 (oldest). Each time window in this example is 300 seconds duration.
-
-
-
-- period_end
-
--
-
-Ending window number. It defaults to the value of `period_start`. If this key is specified, its value is a window number (which should be equal to or greater than period_start). The result will be an aggregate sum over the window range.
-
-
-
-- mask
-
--
-
-This is the mask used to compute CIDR block. The mask defaults to '32'.
-
-
-
-
-
-### Note
-
-This feature also requires the cluster module. The cluster configuration stanza must specify metrics replication including the parameter `rejection`:
-
-```
-cluster {
- # ... other cluster config ...
- Replicate "inbound_cidr" {}
-}
-```
-
-This feature also requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-
-
-
-```
-$rejections = ec_ip_rejections_cluster "0" "32";
-$c_rejections = ec_ip_rejections_cluster "0" "24";
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${rejections}" "1000" {
- ec_tarpit 10 "too many rejections /32";
-}
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${c_rejections}" "10000" {
- ec_tarpit 10 "too many rejections /24";
-}
-```
-
-
-
-
-```
-$args = hash_create;
-hash_set $args "period_start" "0";
-hash_set $args "period_end" "2";
-hash_set $args "monitor" "300,6";
-hash_set $args "mask" "32";
-$count = ec_ip_rejections_cluster $args;
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${count}" "10000" {
- ec_tarpit 10 "too many rejections /32 in last fifteen minutes";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-ip-rejections.md b/content/momentum/3/3-reference/sieve-ref-ec-ip-rejections.md
deleted file mode 100644
index e68cc7907..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-ip-rejections.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_ip_rejections"
-description: "ec ip rejections Audit how many rejections an IP address has made ec ip rejections time series index mask ec ip rejections hash ec ip rejections returns a string containing the number of rejections that have occurred for a CIDR block within a configured time window The referenced CIDR block..."
----
-
-
-## Name
-
-ec_ip_rejections — Audit how many rejections an IP address has made
-
-## Synopsis
-
-`ec_ip_rejections` { *`time_series_index`* } [ *`mask`* ]
-`ec_ip_rejections` { *`$hash`* }
-
-
-## Description
-
-`ec_ip_rejections` returns a string containing the number of rejections that have occurred for a CIDR block within a configured time window. The referenced CIDR block is constructed by applying the `mask` option value to the SMTP connection's remote IP address. There are two forms of this command.
-
-### Note
-
-As of version 3.4, this feature supports IPv6.
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-In the first form, the `time_series_index` value selects a monitor corresponding to its position in the inbound_audit configuration stanza (A `time_series_index` of '0' corresponds to the first monitor in the inbound_audit configuration stanza). The audit data returned for this monitor is based on a weighted sliding average of the current time window within this monitor and the previous time window, thus smoothing the transition between windows. If `mask` is not specified, the default value of '32' is used to compute the CIDR block.
-
-In the second form, a hash is used to pass the arguments. These keys are supported:
-
-
-
-- monitor
-
--
-
-A string matching a monitor definition within the inbound_audit configuration stanza, for example, "300,6". By default the first monitor listed in the configuration stanza is used.
-
-
-
-- period_start
-
--
-
-Starting window number. The default is 0, which is the chronologically current window. For example, if the inbound_audit configuration stanza defines a monitor as "300,6", then the monitor contains six windows numbered 0 (current) through 5 (oldest). Each time window in this example is 300 seconds duration.
-
-
-
-- period_end
-
--
-
-Ending window number. It defaults to the value of `period_start`. If this key is specified, its value is a window number (which should be equal to or greater than period_start). The result will be an aggregate sum over the window range.
-
-
-
-- mask
-
--
-
-This is the mask used to compute CIDR block. The mask defaults to '32'.
-
-
-
-
-
-### Note
-
-This feature requires the inbound_audit module. See [“inbound_audit – Inbound traffic analytics”](/momentum/3/3-reference/3-reference-modules-inbound-audit) for more information.
-
-
-
-
-```
-$rejections = ec_ip_rejections "0" "32";
-$c_rejections = ec_ip_rejections "0" "24";
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${rejections}" "1000" {
- ec_tarpit 10 "too many rejections /32";
-}
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${c_rejections}" "10000" {
- ec_tarpit 10 "too many rejections /24";
-}
-```
-
-
-
-
-```
-$args = hash_create;
-hash_set $args "period_start" "0";
-hash_set $args "period_end" "2";
-hash_set $args "monitor" "300,6";
-hash_set $args "mask" "32";
-$count = ec_ip_rejections $args;
-
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${count}" "10000" {
- ec_tarpit 10 "too many rejections /32 in last fifteen minutes";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-log-file.md b/content/momentum/3/3-reference/sieve-ref-ec-log-file.md
deleted file mode 100644
index 26a84345e..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-log-file.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_log_file"
-description: "ec log file log to a file io wrapper ec log file file uri arbitrary text ec log file allows you to log arbitrary information to a specified file or io wrapper Unlike the ec log action the raw message plus an appended newline will be written to the file..."
----
-
-
-## Name
-
-ec_log_file — log to a file/io wrapper
-
-## Synopsis
-
-`ec_log_file` { *`file uri`* } { *`arbitrary_text`* }
-
-
-## Description
-
-`ec_log_file` allows you to log arbitrary information to a specified file or io wrapper. Unlike the `ec_log` action the raw message, plus an appended newline, will be written to the file, with no additional context or timestamp information unless present in the user-defined message. The message will be written regardless of the Debug_Flags setting.
-
-
-
-
-```
-if envelope :domain :is "from" "good-guy.com" {
- ec_log_file "/var/log/logfile" "got mail from the good guys";
-}
-```
-
-
-
-
-```
-if envelope :domain :is "from" "good-guy.com" {
- ec_log_file "jlog:///var/log/ecelerity/queue.rt=>master" "got mail from the good guys";
-}
-```
-
-Be sure that you have permission to write to the directory containing the output file.
-
-Since the Sieve validation phases through the data phase are executed in the scheduler thread, no I/O should be done during these phases. Use this function *after* the data phase.
-
-
-## See Also
-
-[ec_log](/momentum/3/3-reference/sieve-ref-ec-log)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-log.md b/content/momentum/3/3-reference/sieve-ref-ec-log.md
deleted file mode 100644
index d223ddc6d..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-log.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_log"
-description: "ec log log to the paniclog ec log message ec log allows you to log arbitrary information to the paniclog The log record will be prefixed with the script source filename and the line number at which the ec log was executed The message is logged at the CRITICAL level..."
----
-
-
-## Name
-
-ec_log — log to the paniclog
-
-## Synopsis
-
-`ec_log` { *`message`* }
-
-
-## Description
-
-`ec_log` allows you to log arbitrary information to the paniclog. The log record will be prefixed with the script source filename and the line number at which the `ec_log` was executed. The message is logged at the CRITICAL level for the LOG1 subsystem. These messages will appear in the paniclog under the default Debug_Flags settings.
-
-
-
-
-```
-if envelope :domain :is "from" "good-guy.com" {
- ec_log "got mail from the good guys";
-}
-```
-
-### Note
-
-This function cannot log messages longer than `1972` characters. Longer messages are truncated. If your requirements exceed this maximum use [ec_log_file](/momentum/3/3-reference/sieve-ref-ec-log-file) instead.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-maildir.md b/content/momentum/3/3-reference/sieve-ref-ec-maildir.md
deleted file mode 100644
index c0ee8d044..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-maildir.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_maildir"
-description: "ec maildir write the current message into a maildir mailbox ec maildir email address This action will store the current message into the maildir for the specified email address It can only be called in the each rcpt phase This is a terminal action no further Sieve rules will be..."
----
-
-
-## Name
-
-ec_maildir — write the current message into a maildir mailbox
-
-## Synopsis
-
-`ec_maildir` { *`email-address`* }
-
-
-## Description
-
-This action will store the current message into the maildir for the specified email address.
-
-It can only be called in the each_rcpt phase.
-
-This is a terminal action; no further Sieve rules will be run for the current message in the current phase.
-
-
-
-
-```
-require "ec_maildir";
-if envelope :domain :is "to" "localdomain.com" {
- ec_maildir "%{vctx_mess:rcptto_localpart}@%{vctx_mess:rcptto_domain}";
-}
-```
-
-
-
-
-```
-require "ec_maildir";
-if envelope :domain :is "to" ["localdomain.com", "otherdomain.com"] {
- $rcpt = envelope "to";
- ec_maildir "${rcpt}";
-}
-```
-
-
-## See Also
-
-[envelope](/momentum/3/3-reference/sieve-ref-envelope).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-mem-usage.md b/content/momentum/3/3-reference/sieve-ref-ec-mem-usage.md
deleted file mode 100644
index b63f15076..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-mem-usage.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_mem_usage"
-description: "ec mem usage Return the amount of memory used by Momentum ec mem usage Action which returns the total amount of memory being used by Momentum in M Bs Example 16 80 ec mem usage example..."
----
-
-
-## Name
-
-ec_mem_usage — Return the amount of memory used by Momentum
-
-## Synopsis
-
-`ec_mem_usage`
-
-
-## Description
-
-Action which returns the total amount of memory being used by Momentum in MBs.
-
-
-
-
-```
-$megsused = ec_mem_usage;
-if $megsused "ge" :comparator "i;ascii-numeric" "4096" {
- ec_disconnect "451" "Resources not available";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-mime-boundary-create.md b/content/momentum/3/3-reference/sieve-ref-ec-mime-boundary-create.md
deleted file mode 100644
index 582e44b87..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-mime-boundary-create.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_mime_boundary_create"
-description: "ec mime boundary create return a string to be used as a boundary when creating a MIME message ec mime boundary create ec mime boundary create returns a string that can be used as a boundary when creating a MIME message It doesn't include the required before or after the..."
----
-
-
-## Name
-
-ec_mime_boundary_create — return a string to be used as a boundary when creating a MIME message
-
-## Synopsis
-
-`ec_mime_boundary_create`
-
-
-## Description
-
-`ec_mime_boundary_create` returns a string that can be used as a boundary when creating a MIME message. It doesn't include the `--` required before or after the boundary string.
-
-Please see [ec_rfc3464_delivery_status](/momentum/3/3-reference/sieve-ref-ec-rfc-3464-delivery-status) for an usage example.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-mime-parts.md b/content/momentum/3/3-reference/sieve-ref-ec-mime-parts.md
deleted file mode 100644
index 7a78e3986..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-mime-parts.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_mime_parts"
-description: "ec mime parts test against metadata for each MIME part in a message ec mime parts comparison metadata value This test allows the metadata of every MIME part of a message to be inspected The metadata attribute is extracted from each MIME part and compared to the specified value using..."
----
-
-
-## Name
-
-ec_mime_parts — test against metadata for each MIME part in a message
-
-## Synopsis
-
-`ec_mime_parts` { *`comparison`* } { *`metadata`* } { *`value`* }
-
-
-## Description
-
-This test allows the metadata of every MIME part of a message to be inspected. The "metadata" attribute is extracted from each MIME part and compared to the specified "value" using the provided comparison method. Currently supported metadata attributes are:
-
-* "filename"
-
-
-
-
-```
-if ec_mime_parts :regex "filename"
- "^.*\\.(scr|bat|pif|com|cpl|exe|vbs|hta|cmd|zip)$" {
- ec_action 550 "5.7.1 bad attachment";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-mod.md b/content/momentum/3/3-reference/sieve-ref-ec-mod.md
deleted file mode 100644
index 7e25e01d3..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-mod.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_mod"
-description: "ec mod calculate the modulus of two numbers ec mod number 1 number 2 ec mod calculates the modulus of two numbers and returns the result Example 16 82 ec mod example..."
----
-
-
-## Name
-
-ec_mod — calculate the modulus of two numbers
-
-## Synopsis
-
-`ec_mod` { *`number1`* } { *`number2`* }
-
-
-## Description
-
-`ec_mod` calculates the modulus of two numbers and returns the result.
-
-
-
-
-```
-$a = 87;
-$b = 43;
-$mod = ec_mod $a $b;
-ec_log "${a} mod by ${b} is ${mod}";
-#mod is 1
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-mul.md b/content/momentum/3/3-reference/sieve-ref-ec-mul.md
deleted file mode 100644
index 1addaeaff..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-mul.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_mul"
-description: "ec mul perform multiplication of two numbers ec mul number 1 number 2 ec mul takes two numbers and returns the result of multiplication Example 16 83 ec mul example..."
----
-
-
-## Name
-
-ec_mul — perform multiplication of two numbers
-
-## Synopsis
-
-`ec_mul` { *`number1`* } { *`number2`* }
-
-
-## Description
-
-`ec_mul` takes two numbers and returns the result of multiplication.
-
-
-
-
-```
-$a = 55;
-$b = 43;
-$mul = ec_mul $a $b;
-ec_log "${a} * ${b} is ${mul}";
-#mul is 2365.000000
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-nearbyint.md b/content/momentum/3/3-reference/sieve-ref-ec-nearbyint.md
deleted file mode 100644
index ab49108b9..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-nearbyint.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_nearbyint"
-description: "ec nearbyint round to the nearest integer based on rounding direction ec nearbyint number ec nearbyint rounds the given number to the nearest integer based on rounding direction Example 16 84 ec nearbyint example..."
----
-
-
-## Name
-
-ec_nearbyint — round to the nearest integer based on rounding direction
-
-## Synopsis
-
-`ec_nearbyint` { *`number`* }
-
-
-## Description
-
-`ec_nearbyint` rounds the given number to the nearest integer based on rounding direction.
-
-
-
-
-```
-$a = 65.43;
-$b = -41.65;
-$c = 43;
-$nearbyinta = ec_nearbyint $a;
-$nearbyintb = ec_nearbyint $b;
-$nearbyintc = ec_nearbyint $c;
-#nearbyinta is 65.000000
-#nearbyintb is -42.000000
-#nearbyintc is 43.000000
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-pcre-match.md b/content/momentum/3/3-reference/sieve-ref-ec-pcre-match.md
deleted file mode 100644
index bc116e756..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-pcre-match.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_pcre_match"
-description: "ec pcre match perform a regular expression match ec pcre match string pattern ec pcre match performs a regular expression match and returns a stringlist containing the matched strings The zeroth element of the stringlist consists of the part of the string that matched the whole given pattern the first..."
----
-
-
-## Name
-
-ec_pcre_match — perform a regular expression match
-
-## Synopsis
-
-`ec_pcre_match` { *`string`* } { *`pattern`* }
-
-
-## Description
-
-`ec_pcre_match` performs a regular expression match and returns a stringlist containing the matched strings. The zeroth element of the stringlist consists of the part of the string that matched the whole given pattern, the first element corresponds to the first captured subpattern, the second element to the second captured subpattern, and so on.
-
-
-
-
-```
-$email = "foo@bar.com.cn";
-($a, $b, $c) = ec_pcre_match $email "(.*)@(.*)\.com";
-
-# $a is "foo@bar.com", $b is "foo" and $c is "bar"
-ec_log "the string matched is ${a}, $1 is ${b}, $2 is ${c}.";
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-rand.md b/content/momentum/3/3-reference/sieve-ref-ec-rand.md
deleted file mode 100644
index 057dc7746..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-rand.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_rand"
-description: "ec rand generate a random number no larger than max 1 or a random string from a list ec rand max list ec rand returns a random number no larger than max 1 It returns a random string from a stringlist Example 16 86 ec rand example If you wished..."
----
-
-
-## Name
-
-ec_rand — generate a random number no larger than max -1 or a random string from a list.
-
-## Synopsis
-
-`ec_rand` { *`max/list`* }
-
-
-## Description
-
-`ec_rand` returns a random number no larger than max - 1\. It returns a random string from a stringlist.
-
-
-
-
-If you wished to allow 90% of messages and fail 10% of the messages without differentiating between the messages themselves, we could use ec_rand to do so as below:
-
-```
-$num = ec_rand 10;
-if ec_test :is $num "0" {
- ec_action 421 "Service not available.";
-}
-```
-
-If you wished to log a random reason for your mail to be failed in the paniclog.
-
-```
-$reason = ["Service not available.", "Bad mailfrom.", "Malformed EHLO."];
-$r = ec_rand $reason;
-ec_log "${r}";
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-rewrite-mailfrom.md b/content/momentum/3/3-reference/sieve-ref-ec-rewrite-mailfrom.md
deleted file mode 100644
index 9ab9bd91c..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-rewrite-mailfrom.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_rewrite_mailfrom"
-description: "ec rewrite mailfrom change the envelope sender ec rewrite mailfrom address counter This action will replace the envelope sender the MAIL FROM address on the envelope with the one supplied The headers and the body of the message will not be changed The optional counter parameter to ec rewrite mailfrom..."
----
-
-
-## Name
-
-ec_rewrite_mailfrom — change the envelope sender
-
-## Synopsis
-
-`ec_rewrite_mailfrom` { *`address`* } [ *`counter`* ]
-
-
-## Description
-
-This action will replace the envelope sender (the `MAIL FROM`) address on the envelope with the one supplied. The headers and the body of the message will not be changed.
-
-The optional counter parameter to `ec_rewrite_mailfrom` is used to count the number of hits for this particular action; if omitted, the script filename and line number will be assumed. You can see the hit count via the web console or via **ec_console** using the **sieve stats** command.
-
-Sieve scripts using `ec_rewrite_mailfrom` can be set during data_phase1 or any subsequent phase except the set_binding_phase.
-
-
-
-
-```
-if envelope :domain :is "from" "bar.com" {
- ec_rewrite_mailfrom "bar@foo.com";
- stop;
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-rfc-2047-encode-addresses.md b/content/momentum/3/3-reference/sieve-ref-ec-rfc-2047-encode-addresses.md
deleted file mode 100644
index 8c18c411b..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-rfc-2047-encode-addresses.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_rfc2047_encode_addresses"
-description: "ec rfc 2047 encode addresses create an RFC 2047 compliant address ec rfc 2047 encode addresses addresses ec rfc 2047 encode addresses create an RFC 2047 compliant address and is intended for use in mail generation This function might be used in the following way If you are generating email..."
----
-
-
-## Name
-
-ec_rfc2047_encode_addresses — create an RFC2047-compliant address
-
-## Synopsis
-
-`ec_rfc2047_encode_addresses` { *`addresses`* }
-
-
-## Description
-
-`ec_rfc2047_encode_addresses` create an RFC2047-compliant address and is intended for use in mail generation. This function might be used in the following way. If you are generating email (perhaps via generate_mail_raw) and want to add a To: header of the form: `To: "FirstName LastName" ` and FirstName and/or LastName may have non-ASCII characters, you can call ec_rfc2047_encode_addresses to correctly escape them, per RFC2047, so that they will be understood by MIME compliant software; you would pass the right hand side of the above to the action and it will parse out the address information and correctly compose it for you and return the result.
-
-
-
-
-$to = "*`FirstName LastName`* ";
-$encoded = ec_rfc2047_encode_addresses $to;
-...
-
-You might use this function in one of the custom bounce generation hooks, or at any point after data (when you have a message).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-rfc-2047-encode-header.md b/content/momentum/3/3-reference/sieve-ref-ec-rfc-2047-encode-header.md
deleted file mode 100644
index d7d70fcc8..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-rfc-2047-encode-header.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_rfc2047_encode_header"
-description: "ec rfc 2047 encode header encode a header to be RFC 2047 compliant ec rfc 2047 encode header raw ec rfc 2047 encode header takes a string and encodes the string following according to RFC 2047 using UTF 8 for the character encoding It will avoid encoding the string if..."
----
-
-
-## Name
-
-ec_rfc2047_encode_header — encode a header to be RFC2047 compliant
-
-## Synopsis
-
-`ec_rfc2047_encode_header $raw`
-
-
-## Description
-
-`ec_rfc2047_encode_header` takes a string and encodes the string following according to RFC2047, using UTF-8 for the character encoding. It will avoid encoding the string if possible. The primary use for this action is when building up headers for use in email.
-
-```
-($subject) = ec_header_get "Subject";
-$subject = ec_rfc2047_encode_header "Re: ${subject}";
-
-generate_mail_raw $from $to text:
-From: ${from}
-To: ${to}
-Subject: ${subject}
-
-hello
-.
-;
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-rfc-3464-delivery-status.md b/content/momentum/3/3-reference/sieve-ref-ec-rfc-3464-delivery-status.md
deleted file mode 100644
index 4c6f6a8bf..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-rfc-3464-delivery-status.md
+++ /dev/null
@@ -1,113 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_rfc3464_delivery_status"
-description: "ec rfc 3464 delivery status return a string containing fields for a RFC 3464 DSN ec rfc 3464 delivery status hash ec rfc 3464 delivery status returns a string containing fields to populate the report part of a RFC 3464 compliant DSN Each field ends with r n Sample output..."
----
-
-
-## Name
-
-ec_rfc3464_delivery_status — return a string containing fields for a RFC3464 DSN
-
-## Synopsis
-
-`ec_rfc3464_delivery_status` [ *`hash`* ]
-
-
-## Description
-
-`ec_rfc3464_delivery_status` returns a string containing fields to populate the report part of a RFC3464 compliant DSN. Each field ends with `\r\n`. Sample output is shown below:
-
-```
-Arrival-Date: Tue, 10 Oct 2006 16:17:51 -0400
-Reporting-MTA: dns; mx-0-1.example.com
-
-Remote-MTA: dns; mx-s1-1.omniti.com
-Diagnostic-Code: smtp; 550 relay not permitted
-Action: failed
-Final-Recipient: rfc822; rcpt@omniti.com
-Last-Attempt-Date: Tue, 10 Oct 2006 16:38:22 -0400
-Status: 5.0.0
-```
-
-Here is an example to generate a RFC3464 compliant DSN message when a permanent delivery failure happens. You should turn off `generate_bounces` in the `ecelerity.conf` file to avoid sending an extra bounce message.
-
-To configure this script to run at the `core_log_permanent_failure_v1` hook point, use the following configuration:
-
-```
-sieve "sieve1" {
- hook "core_log_permanent_failure_v1" {
- script = /path/to/script
- async = "true"
- }
-}
-
-generate_bounces = false
-```
-
-
-
-```
-$failed_addr = envelope :all "to";
-$to = envelope :all "from";
-$from = "";
-
-# Don't bounce to the null sender.
-if ec_test :is $to "" {
- stop;
-}
-
-$report = ec_rfc3464_delivery_status;
-$boundary = ec_mime_boundary_create;
-
-generate_mail_raw $from $to text:
-Return-Path: <>
-From: Mail Delivery System
-To: ${to}
-Subject: Mail Delivery Failure
-Date: %{rfc822:date}
-Content-Type: multipart/report; report-type=delivery-status;
- boundary="${boundary}"
-
---${boundary}
-Content-Type: text/plain; charset=UTF-8
-
-This message was created automatically by the mail system (ecelerity).
-
-A message that you sent could not be delivered to one or more of its
-recipients. This is a permanent error. The following address(es) failed:
-${failed_addr}
-
---${boundary}
-Content-Type: message/delivery-status
-
-${report}
---${boundary}
-Content-Type: text/plain; charset=UTF-8
-Content-Disposition: inline
-
------- This is a copy of the headers of the original message. ------
-
-%{rfc2822:headers}
---${boundary}--
-.
-;
-```
-
-You can also pass in a hash of headers to ec_rfc3464_delivery_status, adding custom fields or overriding the standard [RFC 3464](http://www.rfc-editor.org/rfc/rfc3464.txt) per-message and per-recipient fields. See the following example:
-
-```
-$h = hash_create;
-hash_set $h "X-Foo" "bar";
-$report = ec_rfc3464_delivery_status $h;
-...
-```
-
-### Note
-
-Strings in Sieve are all UTF-8 encoded. It is recommended that you use `Content-Type: text/plain; charset=UTF-8` for a `text/plain` part.
-
-
-## See Also
-
-[generate_mail_raw](/momentum/3/3-reference/sieve-ref-generate-mail-raw) [ec_mime_boundary_create](/momentum/3/3-reference/sieve-ref-ec-mime-boundary-create)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-round.md b/content/momentum/3/3-reference/sieve-ref-ec-round.md
deleted file mode 100644
index 9bce9f9e5..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-round.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_round"
-description: "ec round round away from zero ec round number ec round rounds the given number to the nearest integer but away from 0 Example 16 90 ec round example..."
----
-
-
-## Name
-
-ec_round — round away from zero
-
-## Synopsis
-
-`ec_round` { *`number`* }
-
-
-## Description
-
-`ec_round` rounds the given number to the nearest integer, but away from 0.
-
-
-
-
-```
-$a = 65.43;
-$b = -41.65;
-$c = 43;
-$rounda = ec_round $a;
-$roundb = ec_round $b;
-$roundc = ec_round $c;
-#rounda is 66.000000
-#roundb is -42.000000
-#roundc is 43.000000
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-set-binding.md b/content/momentum/3/3-reference/sieve-ref-ec-set-binding.md
deleted file mode 100644
index c52d332a1..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-set-binding.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_set_binding"
-description: "ec set binding ec set binding group Assign a message to a Multi VIP binding ec set binding binding ec set binding group binding group ec set binding assigns the current message to the binding you specify If the binding does not exist then an error message will be logged..."
----
-
-
-## Name
-
-ec_set_binding, ec_set_binding_group — Assign a message to a MultiVIP© binding
-
-## Synopsis
-
-`ec_set_binding` [ *`binding`* ]
-
-`ec_set_binding_group` [ *`binding_group`* ]
-
-
-## Description
-
-`ec_set_binding` assigns the current message to the *`binding`* you specify. If the binding does not exist, then an error message will be logged to the paniclog, and the current binding assignment for the message will not be changed.
-
-### Note
-
-If you assign messages to bindings, it is important to ensure that *all* messages are assigned to bindings, or to make sure that the fallback binding (otherwise known as "default") does what you want. Good scripting practice would be to ensure that there is always an `else` clause or some other way of ensuring that all messages are always dealt with in some way. For example, you could create a variable at the top of your script with the most general binding, then `if` blocks to assign a message to a more specific binding if it matches. At the end of the script, assuming no `if` condition applies, the `else` clause would assign the message to the most general binding.
-
-You can use this function to set the binding to the `default` binding. For more information see [the section called “The "default" Binding”](/momentum/3/3-reference/3-reference-conf-ref-binding#conf.ref.binding.default).
-
-`ec_set_binding_group` assigns the current message to a randomly selected binding that belongs to the *`binding_group`* you specify. The selection algorithm will not consider bindings that are currently unplumbed.
-
-
-
-
-In the following script, mail for `example.com` is routed out of a binding named `example`, which is set to send mail out via 10.0.0.1\. All other mail is routed via the default binding. The `ecelerity.conf` for this setup looks something like the following:
-
-```
-Binding "example" {
- Bind_Address = 10.0.0.1
-}
-
-sieve "sieve1" {
- script "set_binding_phase1" {
- source = "/path/to/myscript.siv"
- }
-}
-```
-
-and the contents of `myscript.siv`:
-
-```
-if envelope :domain :is "to" "example.com" {
- ec_set_binding "example";
-}
-```
-
-
-
-
-In the following script, mail for `example.com` is routed out of one of the bindings in the binding group named `example`, which is set to send mail out via the range of IPs from 10.0.0.1 to 10.0.0.5\. All other mail is routed via the default binding. The `ecelerity.conf` for this setup looks something like the following:
-
-```
-Binding_Group "example" {
- Binding "ex1" {
- Bind_Address = 10.0.0.1
- }
- Binding "ex2" {
- Bind_Address = 10.0.0.2
- }
- Binding "ex3" {
- Bind_Address = 10.0.0.3
- }
- Binding "ex4" {
- Bind_Address = 10.0.0.4
- }
- Binding "ex5" {
- Bind_Address = 10.0.0.5
- }
-}
-
-sieve "sieve1" {
- script "set_binding_phase1" {
- source = "/path/to/myscript.siv"
- }
-}
-```
-
-and the contents of `myscript.siv`:
-
-```
-if envelope :domain :is "to" "example.com" {
- ec_set_binding_group "example";
-}
-```
-
-
-## See Also
-
-[“MultiVIP© Interfaces”](/momentum/3/3-reference/operations-multivip), .
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-set-routing-gateway.md b/content/momentum/3/3-reference/sieve-ref-ec-set-routing-gateway.md
deleted file mode 100644
index 3a225e968..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-set-routing-gateway.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_set_routing_gateway"
-description: "ec set routing gateway dynamically change the gateway based on recipient ec set routing gateway address This action sets the gateway for the message in much the same way as the gateway configuration option the message will be queued to the domain specified by the gateway A gateway set with..."
----
-
-
-## Name
-
-ec_set_routing_gateway — dynamically change the gateway based on recipient
-
-## Synopsis
-
-`ec_set_routing_gateway` { *`address`* }
-
-
-## Description
-
-This action sets the gateway for the message in much the same way as the [gateway](/momentum/3/3-reference/3-reference-conf-ref-gateway) configuration option; the message will be queued to the domain specified by the gateway. A gateway set with this action will override a possible Gateway configuration setting that would otherwise be applicable to the message. See also [routes](/momentum/3/3-reference/3-reference-conf-ref-routes) for domain-wide routing. The headers and the body of the message will not be changed.
-
-The required *`address`* parameter can be either a dotted literal IP address, a hostname that resolves to an A record, or a domain name which resolves to one or more MX records.
-
-Sieve scripts using `ec_set_routing_gateway` should be called in the each_rcpt_phase only.
-
-
-
-
-```
-if envelope :domain :is "to" "do-set_routing_gateway.com" {
- ec_set_routing_gateway "foo.com";
- }
-```
-
-### Note
-
-In order to prevent I/O on the scheduler, when using `ec_set_routing_gateway`, the [keep_message_dicts_in_memory](/momentum/3/3-reference/3-reference-conf-ref-keep-message-dicts-in-memory) option should be set to true.
-
-### Warning
-
-The sievelib module must be loaded explicitly in your configuration for correct operation of `ec_set_routing_gateway`.
-
-
-## See Also
-
-[gateway](/momentum/3/3-reference/3-reference-conf-ref-gateway), [routes](/momentum/3/3-reference/3-reference-conf-ref-routes)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-shared-throttle.md b/content/momentum/3/3-reference/sieve-ref-ec-shared-throttle.md
deleted file mode 100644
index c18c5cc6c..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-shared-throttle.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_shared_throttle"
-description: "ec shared throttle create ec shared throttle inc ec shared throttle check ec shared throttle tarpit Shared Named Throttling ec shared throttle create name messages seconds epsilon ec shared throttle inc name ec shared throttle check name ec shared throttle tarpit name Allow any number of shared named throttles to..."
----
-
-
-## Name
-
-ec_shared_throttle_create, ec_shared_throttle_inc, ec_shared_throttle_check, ec_shared_throttle_tarpit — Shared Named Throttling
-
-## Synopsis
-
-`ec_shared_throttle_create` { *`name`* } { *`messages/seconds`* } [ *`epsilon`* ]
-
-`ec_shared_throttle_inc` { *`name`* }
-
-`ec_shared_throttle_check` { *`name`* }
-
-`ec_shared_throttle_tarpit` { *`name`* }
-
-
-## Description
-
-Allow any number of shared named throttles to be created within Sieve to handle a variety of throttling situations and permutations that the single inbound throttle cannot.
-
-**ec_shared_throttle_create** creates a throttle named name with a throttle of X/Y where X is a number of messages and Y is an interval of time in seconds. Note that the throttle will do nothing on its own, but with the other functions, its full functionality can be exploited. This must be called before other functions attempt to access the throttle.
-
-Epsilon is a positive floating point number strictly less than one that specifies how much of a throttle can be consumed in one iteration of information passage around the cluster. It defaults to `0.95` and is unlikely to need changing. The higher it is, the faster the throttle can converge, but as you increase it you risk a single machine hogging the whole throttle.
-
-**ec_shared_throttle_inc** indicates to the specified throttle that it has received a message to be counted by its mechanisms. This will not stop more messages than desired from passing into the system. This should be called before **ec_shared_throttle_check**.
-
-**ec_shared_throttle_check** checks to see if the specified throttle currently exceeds its quota. If it does so, then **ec_shared_throttle_check** returns true, otherwise, it returns false. This does not work when nested with the :is command. It needs to be assigned to a Sieve variable and then checked in a statement such as: $var = ec_shared_throttle_check "foo" if **ec_test** :is $var "true" {
-
-**ec_shared_throttle_tarpit** increments the named throttle, and tarpits for length of time such that the throttle will return to a state where it is once again permissable to send a message through.
-
-### Note
-
-The cluster module must be configured with the shared named throttle parameters as defined here: [“Shared named throttles”](/momentum/3/3-reference/3-reference-cluster-config-replication#cluster.replication.named_throttles)
-
-
-
-
-```
-...
-
-ec_shared_throttle_create "foo" "30/1";
-ec_shared_throttle_tarpit "foo";
-
-...
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-spool-space.md b/content/momentum/3/3-reference/sieve-ref-ec-spool-space.md
deleted file mode 100644
index 9053a46ec..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-spool-space.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_spool_space"
-description: "ec spool space Return information about the free space on the spool partition ec spool space Method which returns the total and available space in M Bs and the percentage of used space as an int from 0 to 100 on the disk partition with the Momentum spool Example 16..."
----
-
-
-## Name
-
-ec_spool_space — Return information about the free space on the spool partition
-
-## Synopsis
-
-`ec_spool_space`
-
-
-## Description
-
-Method which returns the total and available space in MBs and the percentage of used space (as an int, from 0 to 100) on the disk partition with the Momentum spool.
-
-
-
-
-```
-($totalmegs, $availmegs, $pct) = ec_spool_space;
-# Turn away connections if more than 90% of disk is free
-if ec_test :value "gt" :comparator "i;ascii-numeric" $pct "90" {
- ec_disconnect "421" "Disk is too full";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-sub.md b/content/momentum/3/3-reference/sieve-ref-ec-sub.md
deleted file mode 100644
index 047139ca8..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-sub.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_sub"
-description: "ec sub perform subtraction of two numbers ec sub number 1 number 2 ec sub takes two numbers subtracts the second number from the first number and returns the result Example 16 96 ec sub example..."
----
-
-
-## Name
-
-ec_sub — perform subtraction of two numbers
-
-## Synopsis
-
-`ec_sub` { *`number1`* } { *`number2`* }
-
-
-## Description
-
-`ec_sub` takes two numbers, subtracts the second number from the first number and returns the result.
-
-
-
-
-```
-$a = 43;
-$b = "55.54";
-$sub = ec_sub $a $b;
-ec_log " ${a} - ${b} is ${sub}";
-#sub is -12.540000
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-tarpit.md b/content/momentum/3/3-reference/sieve-ref-ec-tarpit.md
deleted file mode 100644
index 514addd61..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-tarpit.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_tarpit"
-description: "ec tarpit impose a time penalty ec tarpit seconds counter This instructs Momentum that the SMTP session should be put on hold for the specified number of seconds The optional counter string is used to count the number of hits for this particular action if omitted the script filename and..."
----
-
-
-## Name
-
-ec_tarpit — impose a time penalty
-
-## Synopsis
-
-`ec_tarpit` { *`seconds`* } [ *`counter`* ]
-
-
-## Description
-
-This instructs Momentum that the SMTP session should be put on hold for the specified number of seconds.
-
-The optional counter string is used to count the number of hits for this particular action; if omitted, the script filename and line number will be assumed. You can see the hit count via **ec_console** using the **sieve:*`sieve1`* stats** command.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-test.md b/content/momentum/3/3-reference/sieve-ref-ec-test.md
deleted file mode 100644
index d8f46e4cb..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-test.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_test"
-description: "ec test generic test ec test comparison value other value Instead of building comparators into every extension function Momentum provides a generic test facility called ec test through which all comparators can be used See Section 8 2 3 Comparisons for a discussion of Sieve comparators A short example of..."
----
-
-
-## Name
-
-ec_test — generic test
-
-## Synopsis
-
-`ec_test` { *`comparison`* } { *`value`* } { *`other-value`* }
-
-
-## Description
-
-Instead of building comparators into every extension function, Momentum provides a generic test facility called `ec_test` through which all comparators can be used. See [“Comparisons”](/momentum/3/3-reference/sieve-syntax-basic#sieve.syntax.basic.comparisons) for a discussion of Sieve comparators.
-
-A short example of variable assignment, interpolation and testing is testing for an SPF -all record. In order to search for an SPF record that explicitly states that a domain sends no email, we look for a TXT record for the domain part of the envelope sender and attempt to match it against something that looks like: "v=spf1 -all".
-
-
-
-
-```
-$txt = ec_dns_lookup "%{spvf1:d}" "txt";
-if ec_test :regex "${txt}" "v=spf1\\s+-all" {
- ec_action 550 "SPF says %{spvf1:d} sends no email.";
-}
-```
-
-For a description of the types of comparisons you can perform using `ec_test` see [“Comparisons”](/momentum/3/3-reference/sieve-syntax-basic#sieve.syntax.basic.comparisons).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-thread-pool-get-queue-size.md b/content/momentum/3/3-reference/sieve-ref-ec-thread-pool-get-queue-size.md
deleted file mode 100644
index 728031abd..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-thread-pool-get-queue-size.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_thread_pool_get_queue_size"
-description: "ec thread pool get queue size get the number of jobs queued against a jobclass ec thread pool get queue size jobclass This action returns the number of jobs currently queued against the named jobclass It can be run in any phase One suggested use case is turning away incoming..."
----
-
-
-## Name
-
-ec_thread_pool_get_queue_size — get the number of jobs queued against a jobclass
-
-## Synopsis
-
-`ec_thread_pool_get_queue_size` { *`jobclass`* }
-
-
-## Description
-
-This action returns the number of jobs currently queued against the named jobclass. It can be run in any phase. One suggested use case is turning away incoming mail with a 4XX code when an antivirus module's queue of messages to scan grows beyond some maximum size.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-throttle.md b/content/momentum/3/3-reference/sieve-ref-ec-throttle.md
deleted file mode 100644
index 522a11912..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-throttle.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_throttle"
-description: "ec throttle create ec throttle inc ec throttle dec ec throttle check ec throttle tarpit Named Throttling ec throttle create name messages seconds ec throttle inc name ec throttle dec name ec throttle check name ec throttle tarpit name Allow any number of named throttles to be created within Sieve..."
----
-
-
-## Name
-
-ec_throttle_create, ec_throttle_inc, ec_throttle_dec, ec_throttle_check, ec_throttle_tarpit — Named Throttling
-
-## Synopsis
-
-`ec_throttle_create` { *`name`* } { *`messages/seconds`* }
-
-`ec_throttle_inc` { *`name`* }
-
-`ec_throttle_dec` { *`name`* }
-
-`ec_throttle_check` { *`name`* }
-
-`ec_throttle_tarpit` { *`name`* }
-
-
-## Description
-
-Allow any number of named throttles to be created within Sieve to handle a variety of throttling situations and permutations that the single inbound throttle cannot.
-
-**ec_throttle_create** creates a throttle named *`name`* with a throttle of X/Y where X is a number of messages and Y is an interval of time in seconds. Note that the throttle will do nothing on its own, but with the other functions, its full functionality can be exploited. This must be called before other functions attempt to access the throttle. The `siv_throttle_cache_size` option determines the maximum number of named throttles that can be created. For more information see [siv_throttle_cache_size](/momentum/3/3-reference/3-reference-conf-ref-siv-throttle-cache-size). A throttle is removed from the cache when either of the following occur:
-
-* The throttle cache is full and another **ec_throttle_create** request is issued. The least recently used throttle will be removed from the cache in this case.
-
-* The time interval specified on **ec_throttle_create** is exceeded by one second.
-
-In order to ensure correct thottling behavior, once a throttle has been removed from the cache, a new **ec_throttle_create** must be issued for the removed throttle name before using other throttle functions on it. Issuing an **ec_throttle_create** on the name of a throttle that is already in the throttle cache is a null operation.
-
-**ec_throttle_inc** indicates to the specified throttle that it has received a message to be counted by its mechanisms. This will not stop more messages than desired from passing into the system. This should be called before **ec_throttle_check**.
-
-**ec_throttle_dec** indicates to the specified throttle that it should remove a message from being counted by its mechanisms. This is intended to allow a message which is added via **ec_throttle_inc** to later be removed.
-
-**ec_throttle_check** checks to see if the specified throttle currently exceeds its quota. If it does so, then **ec_throttle_check** returns true, otherwise, it returns false. This does not work when nested with the :is command. It needs to be assigned to a Sieve variable and then checked in a statement such as:
-
-```
-$var = ec_throttle_check "foo";
-if ec_test :is $var "true" {
-...
-```
-
-**ec_throttle_tarpit** increments the named throttle and returns if the resulting throttle quota has not been exceeded. Otherwise, **ec_throttle_tarpit** waits (tarpits) for a length of time such that the throttle will return to a state where it is once again permissible to send a message through.
-
-
-
-
-```
-...
-
-ec_throttle_create "foo" "30/1";
-ec_throttle_tarpit "foo";
-
-...
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-tolower.md b/content/momentum/3/3-reference/sieve-ref-ec-tolower.md
deleted file mode 100644
index 70bc827c2..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-tolower.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_tolower"
-description: "ec tolower change all characters to lower case ec tolower string Change all characters in the argument to lower case Numerals remain unchanged Example 16 99 ec tolower example..."
----
-
-
-## Name
-
-ec_tolower — change all characters to lower case
-
-## Synopsis
-
-`ec_tolower` { *`string`* }
-
-
-## Description
-
-Change all characters in the argument to lower case. Numerals remain unchanged.
-
-
-
-
-```
-$a = "%{vctx_mess:mailfrom_localpart}";
- $b = ec_tolower $a;
- ec_log "${a} lower to ${b}";
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-trace-context.md b/content/momentum/3/3-reference/sieve-ref-ec-trace-context.md
deleted file mode 100644
index 51256e03f..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-trace-context.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_trace_context"
-description: "ec trace context add X Trace Context header to the current message ec trace context The ec trace context action allows debugging information to be added to the header of the current email in transit ec trace will place a complete copy of the message and connection contexts in a..."
----
-
-
-## Name
-
-ec_trace_context — add X-Trace-Context header to the current message
-
-## Synopsis
-
-`ec_trace_context`
-
-
-## Description
-
-The ec_trace_context action allows debugging information to be added to the header of the current email "in-transit". ec_trace will place a complete copy of the message and connection contexts in a new "X-Trace-Context" header of the email.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-trunc.md b/content/momentum/3/3-reference/sieve-ref-ec-trunc.md
deleted file mode 100644
index 1d26300d6..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-trunc.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_trunc"
-description: "ec trunc round toward zero ec trunc number ec trunc rounds the given number toward 0 Example 16 100 ec trunc example..."
----
-
-
-## Name
-
-ec_trunc — round toward zero
-
-## Synopsis
-
-`ec_trunc` { *`number`* }
-
-
-## Description
-
-`ec_trunc` rounds the given number toward 0.
-
-
-
-
-```
-$a = 65.43;
-$b = -41.65;
-$c = 43;
-$trunca = ec_trunc $a;
-$truncb = ec_trunc $b;
-$truncc = ec_trunc $c;
-#trunca is 65.000000
-#truncb is -41.000000
-#truncc is 43.000000
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-url-ripper.md b/content/momentum/3/3-reference/sieve-ref-ec-url-ripper.md
deleted file mode 100644
index bb00c91f7..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-url-ripper.md
+++ /dev/null
@@ -1,113 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_url_ripper"
-description: "ec url ripper Extract domains and urls for lookup in DNSBL ec url ripper ec url ripper runs in the data phase It extracts domains and urls in an email's headers and body and looks them up in the DNSBL specified in your Momentum configuration file Additionally those domains and..."
----
-
-
-## Name
-
-ec_url_ripper — Extract domains and urls for lookup in DNSBL
-
-## Synopsis
-
-`ec_url_ripper`
-
-
-## Description
-
-`ec_url_ripper` runs in the data phase. It extracts domains and urls in an email's headers and body and looks them up in the DNSBL specified in your Momentum configuration file. Additionally, those domains and urls found can be resolved to IP addresses, which will be looked up. You need to load the [“url_ripper – URL Extraction”](/momentum/3/3-reference/3-reference-modules-url-ripper) module passively to use this action.
-
-This action returns a hash. The hash will be empty if no domains or urls in the email are listed on the specified DNSBL. If any is listed, a hash key will be the corresponding context key specified in the configuration and the associated value will be a string list containing the domains and urls that get listed. The value of the matched context key will also be updated in this case.
-
-
-
-
-Using the following script, domains and urls in an email are extracted and looked up in DNSBL. The `ecelerity.conf` for this setup looks something like the following:
-
-```
-url_ripper "url_ripper1" {
- enabled = false
- base = "multi.surbl.org"
- bits [
- 0.0.1.0 = "xbl_hits"
- 0.0.0.1 = "sbl_hits"
- 0.0.0.2 = "sc_surbl_hits"
- 0.0.0.4 = "ws_surbl_hits"
- 0.0.0.8 = "ph_surbl_hits"
- 0.0.0.16 = "ob_surbl_hits"
- 0.0.0.32 = "ab_surbl_hits"
- 0.0.0.64 = "jp_surbl_hits"
- ]
- values [
- 127.0.0.2 = "simple_hits"
- ]
- address_headers = ( "Errors-To" "From:Reply-To" "Return-Path:Sender" )
-}
-
-sieve "sieve1" {
- script "data_phase1" {
- source = "/path/to/myscript.siv"
- }
-}
-```
-
-and the contents of `myscript.siv`:
-
-```
-# Check SURBL
-# url_ripper is defined in ecelerity.conf
-# if anyof (
- vctx_mess :contains "xbl_hits" "",
- vctx_mess :contains "sbl_hits" "",
- vctx_mess :contains "sc_surbl_hits" "",
- vctx_mess :contains "ws_surbl_hits" "",
- vctx_mess :contains "ph_surbl_hits" "",
- vctx_mess :contains "ob_surbl_hits" "",
- vctx_mess :contains "ab_surbl_hits" "",
- vctx_mess :contains "jp_surbl_hits" "",
- vctx_mess :contains "simple_hits" ""
-) {
- ec_action 550 "SURBL hit!";
-}
-```
-
-
-
-
-For a URIBL check configure the url_ripper module as follows:
-
-```
-# ecelerity.conf stanza
-#
-url_ripper "url_ripper1" {
- base = "multi.uribl.com"
- max_lookups = 100
- forward = true
- bits [
- 0.0.0.2 = "black_hits"
- 0.0.0.4 = "grey_hits"
- 0.0.0.8 = "red_hits"
- ]
- address_headers = ( "Errors-To" "From:Reply-To" "Return-Path" "Sender" )
-}
-```
-
-Use the following Sieve script for a URIBL check:
-
-```
-# Check URIBL
-# url_ripper is defined in ecelerity.conf
-# if anyof (
- vctx_mess :contains "black_hits" "",
- vctx_mess :contains "grey_hits" "",
- vctx_mess :contains "red_hits" ""
-) {
- ec_action 550 "URIBL hit!";
-}
-```
-
-
-## See Also
-
-[“url_ripper – URL Extraction”](/momentum/3/3-reference/3-reference-modules-url-ripper)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-valid-binding.md b/content/momentum/3/3-reference/sieve-ref-ec-valid-binding.md
deleted file mode 100644
index 517df8342..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-valid-binding.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_valid_binding"
-description: "ec valid binding ec valid binding group Check whether a named Multi VIP binding exists ec valid binding binding ec valid binding group binding group ec valid binding is a Sieve test that checks whether the specified binding binding exists ec valid binding group is a Sieve test that checks..."
----
-
-
-## Name
-
-ec_valid_binding, ec_valid_binding_group — Check whether a named MultiVIP© binding exists
-
-## Synopsis
-
-`ec_valid_binding` [ *`binding`* ]
-
-`ec_valid_binding_group` [ *`binding_group`* ]
-
-
-## Description
-
-`ec_valid_binding` is a Sieve test that checks whether the specified binding *`binding`* exists.
-
-`ec_valid_binding_group` is a Sieve test that checks whether the specified binding group *`binding_group`* exists.
-
-
-
-
-The following example shows how you can check whether a binding or binding group exists before assigning a message to it. Note that the binding `smtp-04` and binding group `group-c` do not exist.
-
-```
-Binding_Group "group-a" {
- Binding "smtp-01" {
- EHLO_Hostname = smtp-01.com
- }
-}
-
-Binding_Group "group-b" {
- Binding "smtp-02" {
- EHLO_Hostname = smtp-02.com
- }
- Binding "smtp-03" {
- EHLO_Hostname = smtp-03.com
- }
-}
-
-sieve "sieve1" {
- script "set_binding_phase1" {
- source = "/path/to/myscript.siv"
- }
-}
-```
-
-and the contents of `myscript.siv`:
-
-```
-$to = envelope :domain "to";
-if ec_test :is $to "foo.com" {
- if ec_valid_binding "smtp-04" {
- ec_set_binding "smtp-04";
- } elsif ec_valid_binding "smtp-01" {
- ec_set_binding "smtp-01";
- }
-} elsif ec_test :is $to "bar.com" {
- if ec_valid_binding_group "group-c" {
- ec_set_binding_group "group-c";
- } elsif ec_valid_binding_group "group-b" {
- ec_set_binding_group "group-b";
- }
-}
-```
-
-
-## See Also
-
-[ec_set_binding](/momentum/3/3-reference/sieve-ref-ec-set-binding).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-ec-valid-mime.md b/content/momentum/3/3-reference/sieve-ref-ec-valid-mime.md
deleted file mode 100644
index 04c4db770..000000000
--- a/content/momentum/3/3-reference/sieve-ref-ec-valid-mime.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_valid_mime"
-description: "ec valid mime determine if the message is valid MIME ec valid mime As a part of a conditional test ec valid mime evaluates true if Momentum's internal MIME parser did not find any MIME errors improper headers or encapsulation Note that Momentum's MIME parser follows the RFC mantra be..."
----
-
-
-## Name
-
-ec_valid_mime — determine if the message is valid MIME
-
-## Synopsis
-
-`ec_valid_mime`
-
-
-## Description
-
-As a part of a conditional test, ec_valid_mime evaluates true if Momentum's internal MIME parser did not find any MIME errors (improper headers or encapsulation). Note that Momentum's MIME parser follows the RFC mantra, "be lenient on what you accept." We are lenient when parsing MIME headers to attempt to find the MIME parts that certain MUAs (like Outlook) would find to aid virus detection and other processes based on content analysis.
-
-
-
-
-```
-if not ec_valid_mime {
- ec_header_add "X-MIME-Analysis" "Broken";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-eleven-scan.md b/content/momentum/3/3-reference/sieve-ref-eleven-scan.md
deleted file mode 100644
index f3e38333f..000000000
--- a/content/momentum/3/3-reference/sieve-ref-eleven-scan.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "eleven_scan"
-description: "eleven scan email virus scan eleven scan Configuration Change This feature is available starting from Momentum 3 1 Use of this function requires that the eleven module be loaded The eleven module implements the spam filter and e mail categorization service available from http www eleven de Use eleven scan..."
----
-
-
-## Name
-
-eleven_scan — email virus scan
-
-## Synopsis
-
-`eleven_scan`
-
-
-## Description
-
-**Configuration Change. ** This feature is available starting from Momentum 3.1.
-
-Use of this function requires that the eleven module be loaded. The `eleven` module implements the spam filter and e-mail categorization service available from [http://www.eleven.de/](http://www.eleven.de/) .
-
-Use eleven_scan in a data phase Sieve script and then read the context variable `eleven-result`. The possible values are:
-
-* non-virus
-
-* unknown
-
-* medium
-
-* high
-
-* virus
-
-Other message context variables are:
-
-* eleven-majorscore – the numeric classification of the scan
-
-* eleven-minorscore – the numeric minor classification
-
-* eleven-result-subtype – the string representation corresponding to the eleven-minorscore number
-
-For a description of the possible values for these variables see [“Runtime Usage”](/momentum/3/3-reference/3-reference-modules-eleven#modules.eleven.runtime).
-
-Sieve scripts using `eleven_scan` should be used in the data phase.
-
-
-
-
-```
-eleven_scan;
-
-if vctx :contains "eleven-majorscore" "error" {
- ec_action 451 "AV system offline" "virus:check error";
- stop;
-}
-
-if vctx :is :comparator "i;ascii-casemap" "eleven-result" ["spam", "dangerous"]
-{
- ec_action 550 "Virus detected" "virus:Viruses rejected";
- stop;
-}
-```
-
-
-## See Also
-
-[“eleven – Module”](/momentum/3/3-reference/3-reference-modules-eleven)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-envelope.md b/content/momentum/3/3-reference/sieve-ref-envelope.md
deleted file mode 100644
index 0a5149aaf..000000000
--- a/content/momentum/3/3-reference/sieve-ref-envelope.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "envelope"
-description: "envelope return the envelope sender or recipient recip envelope to sender envelope from sender domain envelope domain from Returns the envelope sender or recipient into a variable You may use the localpart domain user and detail subaddressing tags to obtain the corresponding parts of the address address..."
----
-
-
-## Name
-
-envelope — return the envelope sender or recipient
-
-## Synopsis
-
-`$recip = envelope "to";`
-
-`$sender = envelope "from";`
-
-`$sender_domain = envelope :domain "from";`
-
-
-## Description
-
-Returns the envelope sender or recipient into a variable. You may use the `:localpart`, `:domain`, `:user` and `:detail` subaddressing tags to obtain the corresponding parts of the address.
-
-
-## See Also
-
-[address](/momentum/3/3-reference/sieve-ref-address).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-files.md b/content/momentum/3/3-reference/sieve-ref-files.md
deleted file mode 100644
index d0cc2bdb8..000000000
--- a/content/momentum/3/3-reference/sieve-ref-files.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Sieve Function Details"
-description: "This section contains detailed descriptions of the Momentum Sieve functions..."
----
-
-This section contains detailed descriptions of the Momentum Sieve functions.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-generate-mail-raw.md b/content/momentum/3/3-reference/sieve-ref-generate-mail-raw.md
deleted file mode 100644
index f8a02fbde..000000000
--- a/content/momentum/3/3-reference/sieve-ref-generate-mail-raw.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "generate_mail_raw"
-description: "generate mail raw generate and send out a message generate mail raw from addr to addr addr list text This function generates and sends out a message It sets the envelope from and to using the addresses given and uses the string contained in the third parameter as the message..."
----
-
-
-## Name
-
-generate_mail_raw — generate and send out a message
-
-## Synopsis
-
-`generate_mail_raw` { *`from_addr`* } { *`to_addr | addr_list`* } { *`text`* }
-
-
-## Description
-
-This function generates and sends out a message. It sets the envelope `from` and `to` using the addresses given and uses the string contained in the third parameter as the message, including message headers and body. It can send a message to multiple recipients if the second parameter is a string list containing multiple addresses.
-
-
-
-
-```
-$to = "sender@omniti.com";
-$from = "rcpt@omniti.com";
-generate_mail_raw $from $to text:
-From: ${from}
-To: ${to}
-Subject: a testing email
-
-testing
-.
-;
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-hash-create.md b/content/momentum/3/3-reference/sieve-ref-hash-create.md
deleted file mode 100644
index d7e8910f8..000000000
--- a/content/momentum/3/3-reference/sieve-ref-hash-create.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "hash_create"
-description: "hash create create a hash hash create This function returns a new empty hash table You may use hash set to set elements in the hash and use array style syntax to retrieve the value of an element Example 16 107 hash create example hash set hash dump and hash..."
----
-
-
-## Name
-
-hash_create — create a hash
-
-## Synopsis
-
-`hash_create`
-
-
-## Description
-
-This function returns a new, empty, hash table. You may use `hash_set` to set elements in the hash, and use array style syntax to retrieve the value of an element:
-
-
-
-
-```
-$hash = hash_create;
-hash_set $hash "mykey" "myvalue";
-$value = $hash["mykey"];
-
-ec_log "The value is ${value}";
-```
-
-
-## See Also
-
-[hash_set](/momentum/3/3-reference/sieve-ref-hash-set), [hash_dump](/momentum/3/3-reference/sieve-ref-hash-dump) and [hash_get](/momentum/3/3-reference/sieve-ref-hash-get).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-hash-dump.md b/content/momentum/3/3-reference/sieve-ref-hash-dump.md
deleted file mode 100644
index e6f178f32..000000000
--- a/content/momentum/3/3-reference/sieve-ref-hash-dump.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "hash_dump"
-description: "hash dump dump the contents of the hash to the paniclog hash dump hash hash dump dumps the contents of the hash to the paniclog This function can occasionally be useful when debugging but should be avoided in production especially on heavy throughput systems Example 16 108 hash dump example..."
----
-
-
-## Name
-
-hash_dump — dump the contents of the hash to the paniclog
-
-## Synopsis
-
-`hash_dump` { *`hash`* }
-
-
-## Description
-
-`hash_dump` dumps the contents of the hash to the paniclog. This function can occasionally be useful when debugging but should be avoided in production especially on heavy throughput systems.
-
-
-
-
-```
-$aliases = ds_fetch_flat "mydb" "select expansion from alias where user = ?" [$address];
-hash_dump $aliases;
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-hash-get.md b/content/momentum/3/3-reference/sieve-ref-hash-get.md
deleted file mode 100644
index ef3a4d33c..000000000
--- a/content/momentum/3/3-reference/sieve-ref-hash-get.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "hash_get"
-description: "hash get get the value associated with the specified key hash get hash key Get the value of the specified key from a hash Hash keys must be strings or expressions that resolve to strings Sieve scripts using hash get can be used in any phase Configuration Change This feature..."
----
-
-
-## Name
-
-hash_get — get the value associated with the specified key
-
-## Synopsis
-
-`hash_get` { *`$hash`* } { *`$key`* }
-
-
-## Description
-
-Get the value of the specified key from a hash. Hash keys must be strings or expressions that resolve to strings.
-
-Sieve scripts using `hash_get` can be used in any phase.
-
-**Configuration Change. ** This feature is available starting from Momentum 3.0.16.
-
-Since 3.0.17, passing an incorrect value to this function returns an error message. Previously, no error was returned.
-
-
-
-
-```
-$hash = hash_create;
- hash_set $hash "mykey" "myvalue";
- $value = hash_get $hash "mykey";
-```
-
-
-## See Also
-
-[hash_create](/momentum/3/3-reference/sieve-ref-hash-create), [hash_dump](/momentum/3/3-reference/sieve-ref-hash-dump) and [hash_get](/momentum/3/3-reference/sieve-ref-hash-get)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-hash-keys.md b/content/momentum/3/3-reference/sieve-ref-hash-keys.md
deleted file mode 100644
index c24c66c2a..000000000
--- a/content/momentum/3/3-reference/sieve-ref-hash-keys.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "hash_keys"
-description: "hash keys return all the keys of a hash as a stringlist hash keys hash This function works on a hash created by hash create and returns a stringlist containing all the keys of the hash If the given hash is not empty the elements in the returned stringlist are..."
----
-
-
-## Name
-
-hash_keys — return all the keys of a hash as a stringlist
-
-## Synopsis
-
-`hash_keys` { *`hash`* }
-
-
-## Description
-
-This function works on a hash created by [hash_create](/momentum/3/3-reference/sieve-ref-hash-create) and returns a stringlist containing all the keys of the hash. If the given hash is not empty, the elements in the returned stringlist are in random order. For an empty hash, the returned stringlist contains nothing.
-
-
-
-
-```
-$hash = hash_create;
-hash_set $hash "mykey1" "myval1";
-hash_set $hash "mykey2" "myval2";
-hash_set $hash "mykey3" "myval3";
-$keys = hash_keys $hash;
-#keys is now a stringlist containing "mykey1", "mykey2" and "mykey3"
-```
-
-
-## See Also
-
-[hash_create](/momentum/3/3-reference/sieve-ref-hash-create), [hash_set](/momentum/3/3-reference/sieve-ref-hash-set)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-hash-set.md b/content/momentum/3/3-reference/sieve-ref-hash-set.md
deleted file mode 100644
index 890020ae1..000000000
--- a/content/momentum/3/3-reference/sieve-ref-hash-set.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "hash_set"
-description: "hash set set an element in a hash hash set hash key value This function sets a value in a hash table for a particular key Hash keys must be strings but can be expressions that resolve to strings whereas hash values can be any valid Sieve value string number..."
----
-
-
-## Name
-
-hash_set — set an element in a hash
-
-## Synopsis
-
-`hash_set` { *`hash`* } { *`key`* } { *`value`* }
-
-
-## Description
-
-This function sets a value in a hash table for a particular key. Hash keys must be strings (but can be expressions that resolve to strings), whereas hash values can be any valid Sieve value (string, number, stringlist or hashes).
-
-**Configuration Change. ** This feature is available starting from Momentum 3.0.16.
-
-Since 3.0.17, passing an incorrect value to this function returns an error message. Previously, no error was returned.
-
-
-
-
-```
-$hash = hash_create;
-hash_set $hash "mykey" "myvalue";
-$value = $hash["mykey"];
-
-ec_log "The value is ${value}";
-```
-
-
-## See Also
-
-[hash_create](/momentum/3/3-reference/sieve-ref-hash-create), [hash_dump](/momentum/3/3-reference/sieve-ref-hash-dump) and [hash_get](/momentum/3/3-reference/sieve-ref-hash-get).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-hash-values.md b/content/momentum/3/3-reference/sieve-ref-hash-values.md
deleted file mode 100644
index 583f23062..000000000
--- a/content/momentum/3/3-reference/sieve-ref-hash-values.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "hash_values"
-description: "hash values return all the string values of a hash as a stringlist hash values hash This function works on a hash created by hash create If the given hash stores strings as its values these values will be returned in a stringlist elements of which are in random order..."
----
-
-
-## Name
-
-hash_values — return all the string values of a hash as a stringlist
-
-## Synopsis
-
-`hash_values` { *`hash`* }
-
-
-## Description
-
-This function works on a hash created by [hash_create](/momentum/3/3-reference/sieve-ref-hash-create). If the given hash stores strings as its values, these values will be returned in a stringlist, elements of which are in random order. For an empty hash, the returned stringlist contains nothing.
-
-
-
-
-```
-$hash = hash_create;
-hash_set $hash "mykey1" "myval1";
-hash_set $hash "mykey2" "myval2";
-hash_set $hash "mykey3" "myval3";
-$vals = hash_values $hash;
-#vals is now a stringlist containing "myval1", "myval2" and "myval3"
-```
-
-
-## See Also
-
-[hash_create](/momentum/3/3-reference/sieve-ref-hash-create), [hash_set](/momentum/3/3-reference/sieve-ref-hash-set)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-is-true.md b/content/momentum/3/3-reference/sieve-ref-is-true.md
deleted file mode 100644
index a4b117344..000000000
--- a/content/momentum/3/3-reference/sieve-ref-is-true.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "is_true"
-description: "is true test if a value is true is true variable is true variable 0 is true variable key The is true is intended to provide a simple logical test on the value of a variable Example 16 113 is true example..."
----
-
-
-## Name
-
-is_true — test if a value is "true"
-
-## Synopsis
-
-`is_true` { *`$variable`* }
-
-`is_true` { *`$variable[0]`* }
-
-`is_true` { *`$variable["key"]`* }
-
-
-## Description
-
-The `is_true` is intended to provide a simple logical test on the value of a variable.
-
-
-
-
-```
-$result = ds_fetch "mydatabase"
- "select allow from senders where sender = ?"
- ["%{mailfrom_localpart}@%{mailfrom_domain}"];
-if is_true $result {
- ec_log "Allowed mail from %{mailfrom_localpart}@%{mailfrom_domain}";
-} else {
- ec_action 550 "You're not allowed";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-join.md b/content/momentum/3/3-reference/sieve-ref-join.md
deleted file mode 100644
index 150892f7f..000000000
--- a/content/momentum/3/3-reference/sieve-ref-join.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "join"
-description: "join join stringlist elements into a single string join delimiter stringlist This function uses its first argument as a delimiter to join all the elements in the stringlist and returns the result as a string For example to join MX records with a we could Example 16 114 join example..."
----
-
-
-## Name
-
-join — join stringlist elements into a single string
-
-## Synopsis
-
-`join` { *`delimiter`* } { *`stringlist`* }
-
-
-## Description
-
-This function uses its first argument as a delimiter to join all the elements in the stringlist and returns the result as a string.
-
-For example, to join MX records with a ",", we could:
-
-
-
-
-```
-$mxs = ec_dns_lookup "messagesystems.com" "mx";
-$res = join "," $mxs;
-
-ec_log "Message Systems MX records ${res}";
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-keep.md b/content/momentum/3/3-reference/sieve-ref-keep.md
deleted file mode 100644
index e1742155a..000000000
--- a/content/momentum/3/3-reference/sieve-ref-keep.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "keep"
-description: "keep ec keep keep the current message stop processing further rules keep ec keep reason The keep and ec keep actions are used to explicitly indicate that the mail should be kept Momentum will continue to deliver it to its final destination This is a terminal action no further Sieve..."
----
-
-
-## Name
-
-keep, ec_keep — keep the current message; stop processing further rules
-
-## Synopsis
-
-`keep`
-
-`ec_keep` [ *`reason`* ]
-
-
-## Description
-
-The `keep` and `ec_keep` actions are used to explicitly indicate that the mail should be kept; Momentum will continue to deliver it to its final destination.
-
-This is a terminal action; no further Sieve rules will be run for the current message in the current phase.
-
-In the following script, any mail from the good-guy.com domain is kept, all other mail is thrown out.
-
-
-
-
-```
-if envelope :domain :is "from" "good-guy.com" {
- keep;
-} else {
- discard;
-}
-```
-
-For an overview of Sieve actions see [“Actions”](/momentum/3/3-reference/sieve-syntax-basic#sieve.syntax.basic.actions).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-pe-2-mark-bounced.md b/content/momentum/3/3-reference/sieve-ref-pe-2-mark-bounced.md
deleted file mode 100644
index c1f45d76c..000000000
--- a/content/momentum/3/3-reference/sieve-ref-pe-2-mark-bounced.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "pe2_mark_bounced"
-description: "pe 2 mark bounced log bounce events when the pe 2 logger module is loaded passively pe 2 mark bounced reason bounce code This function requires that the pe 2 logger module be loaded Use this function to log bounce events when the pe 2 logger module is loaded in..."
----
-
-
-## Name
-
-pe2_mark_bounced — log bounce events when the pe2_logger module is loaded passively
-
-## Synopsis
-
-`pe2_mark_bounced` { *`reason`* } [ *`bounce_code`* ]
-
-
-## Description
-
-### Note
-
-This function requires that the pe2_logger module be loaded.
-
-Use this function to log bounce events when the pe2_logger module is loaded in passive mode. Note that on an inbound MTA the pe2_logger module must be loaded in passive mode. The first argument to this function is a string parameter and is required. The second argument, the bounce type, is optional. The bounce code should be one of the classification codes listed at [Table E.12, “Bounce classification codes”](/momentum/3/3-reference/3-reference-bounce-logger-classification-codes#log_formats.bounce.classification.codes).
-
-You may use any Sieve logic you wish to determine whether an incoming message is an bounce. In the following example this is done by prefixing `bounces-` to the local part of the address.
-
-
-
-
-```
-if envelope :localpart :matches "to" "bounces-*" {
- $msg = ec_header_get "Subject";
- $res = pe2_mark_bounced "${msg}" 40;
- if ec_test "${res}" "0" {
- ec_action 500 "pe2_mark_bounced failed";
- }
- if not ec_test "${res}" "1" {
- ec_action 550 "pe2_mark_bounced failed unexpectedly";
- }
-}
-```
-
-
-## See Also
-
-[“pe2_logger – Module”](/momentum/3/3-reference/modules-pe-2-logger), [pe2_mark_unsubscribed](/momentum/3/3-reference/sieve-ref-pe-2-mark-unsubscribed)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-pe-2-mark-unsubscribed.md b/content/momentum/3/3-reference/sieve-ref-pe-2-mark-unsubscribed.md
deleted file mode 100644
index bd98cf0b4..000000000
--- a/content/momentum/3/3-reference/sieve-ref-pe-2-mark-unsubscribed.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "pe2_mark_unsubscribed"
-description: "pe 2 mark unsubscribed log unsubscribe events when the pe 2 logger module is loaded passively pe 2 mark unsubscribed This function requires that the pe 2 logger module be loaded Use this function to log unsubscribe events when the pe 2 logger module is loaded in passive mode Note..."
----
-
-
-## Name
-
-pe2_mark_unsubscribed — log unsubscribe events when the pe2_logger module is loaded passively
-
-## Synopsis
-
-`pe2_mark_unsubscribed`
-
-
-## Description
-
-### Note
-
-This function requires that the pe2_logger module be loaded.
-
-Use this function to log unsubscribe events when the pe2_logger module is loaded in passive mode. Note that on an inbound MTA the pe2_logger module must be loaded in passive mode. You may use any Sieve logic you wish to determine whether an incoming message is an unsubscribe. In the following example this is done by prefixing `unsub-` to the local part of the address.
-
-
-
-
-```
-if envelope :localpart :matches "to" "unsub-*" {
- $res = pe2_mark_unsubscribed;
- if ec_test "${res}" "failure" {
- ec_action 500 "pe2_mark_unsubscribed failed";
- }
- if not ec_test "${res}" "success" {
- ec_action 550 "pe2_mark_unsubscribed failed unexpectedly";
- }
- discard;
-}
-```
-
-
-## See Also
-
-[“pe2_logger – Module”](/momentum/3/3-reference/modules-pe-2-logger), [pe2_mark_bounced](/momentum/3/3-reference/sieve-ref-pe-2-mark-bounced)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-qp-encode.md b/content/momentum/3/3-reference/sieve-ref-qp-encode.md
deleted file mode 100644
index 9c921f965..000000000
--- a/content/momentum/3/3-reference/sieve-ref-qp-encode.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "qp_encode"
-description: "qp encode quoted printable encode a string qp encode string charset Quoted printable encode all the encodable characters in a string and return the result A character encoding may be specified as an optional second argument Example 16 118 qp encode example..."
----
-
-
-## Name
-
-qp_encode — quoted-printable encode a string
-
-## Synopsis
-
-`qp_encode` { *`string`* } [ *`charset`* ]
-
-
-## Description
-
-Quoted-printable encode all the encodable characters in a string and return the result. A character encoding may be specified as an optional second argument.
-
-
-
-
-```
-$encoded = qp_encode "Postal Engine ®";
- $encoded2 = qp_encode "Postal Engine ®" "ISO-8859-1";
- ec_log "encoded: ${encoded}";
- ec_log "encoded2: ${encoded2}";
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-redirect.md b/content/momentum/3/3-reference/sieve-ref-redirect.md
deleted file mode 100644
index 7887af065..000000000
--- a/content/momentum/3/3-reference/sieve-ref-redirect.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "redirect"
-description: "redirect ec redirect change the envelope recipient redirect address ec redirect address counter This action will replace the rcptto address on the envelope to the one supplied and redirect the message The headers and the body of the message will not be changed The optional counter parameter to ec redirect..."
----
-
-
-## Name
-
-redirect, ec_redirect — change the envelope recipient
-
-## Synopsis
-
-`redirect` { *`address`* }
-
-`ec_redirect` { *`address`* } [ *`counter`* ]
-
-
-## Description
-
-This action will replace the rcptto address on the envelope to the one supplied and redirect the message. The headers and the body of the message will not be changed.
-
-The optional counter parameter to `ec_redirect` is used to count the number of hits for this particular action; if omitted, the script filename and line number will be assumed. You can see the hit count via **ec_console** using the **sieve stats** command.
-
-Sieve scripts using `redirect` or `ec_redirect` can be set during data_phase1 or any subsequent phase except the set_binding_phase. It is recommended that this action be used in the each_rcpt_phase.
-
-
-
-
-```
-if envelope :domain :is "from" "do-redirect.com" {
- redirect "bar@foo.com";
- stop;
-}
-```
-
-
-
-
-```
-require "ec_redirect";
-if envelope :domain :is "from" "do-redirect.com" {
- ec_redirect "bar@foo.com" "policy:do-redirect.com";
- stop;
-}
-```
-
-This is a terminal action; no further Sieve rules will be run for the current message in the current phase and the message will not be logged. If a log entry is desirable, use [ec_forward](/momentum/3/3-reference/sieve-ref-ec-forward).
-
-For an overview of Sieve actions see [“Actions”](/momentum/3/3-reference/sieve-syntax-basic#sieve.syntax.basic.actions).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-reject.md b/content/momentum/3/3-reference/sieve-ref-reject.md
deleted file mode 100644
index 54e53e859..000000000
--- a/content/momentum/3/3-reference/sieve-ref-reject.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "reject"
-description: "reject ec reject reject the message returning an MDN to the sender reject message ec reject message counter This action will cause Momentum to bounce the current message and stop processing further rules The message parameter will be used to form the body of the bounce message that is sent..."
----
-
-
-## Name
-
-reject, ec_reject — reject the message, returning an MDN to the sender
-
-## Synopsis
-
-`reject` { *`message`* }
-
-`ec_reject` { *`message`* } [ *`counter`* ]
-
-
-## Description
-
-This action will cause Momentum to bounce the current message, and stop processing further rules. The *`message`* parameter will be used to form the body of the bounce message that is sent back to the envelope sender of the message.
-
-If this action is executed before a complete message has been received, Momentum will instead send back a 550 status response, using the *`message`* as the message portion.
-
-The optional counter parameter to `ec_reject` is used to count the number of hits for this particular action; if omitted, the script filename and line number will be assumed. You can see the hit count via **ec_console** using the **sieve stats** command.
-
-
-
-
-```
-if envelope :domain :is "from" "do-reject.com" {
- reject "we don't accept mail from do-reject.com";
-}
-```
-
-
-
-
-```
-require "ec_reject";
-if envelope :domain :is "from" "do-reject.com" {
- ec_reject "we don't accept mail from do-reject.com" "policy:bounce do-reject.com";
-}
-```
-
-This is a terminal action; no further Sieve rules will be run for the current message in the current phase.
-
-For an overview of Sieve actions see [“Actions”](/momentum/3/3-reference/sieve-syntax-basic#sieve.syntax.basic.actions).
-
-
-## See Also
-
-[generate_bounces_for_multi_recipient_policy_rejections](/momentum/3/3-reference/3-reference-conf-ref-generate-bounces-for-multi-recipient-policy-rejections)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-reverse-delim.md b/content/momentum/3/3-reference/sieve-ref-reverse-delim.md
deleted file mode 100644
index 46db8eeb5..000000000
--- a/content/momentum/3/3-reference/sieve-ref-reverse-delim.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "reverse_delim"
-description: "reverse delim reverse a string based on a delimiter reverse delim delimiter string reverse delim splits the string using delimiter as the delimiter then reverses the order of the elements and joins them back together around delimiter..."
----
-
-
-## Name
-
-reverse_delim — reverse a string based on a delimiter
-
-## Synopsis
-
-`reverse_delim` { *`delimiter`* } { *`string`* }
-
-
-## Description
-
-`reverse_delim` splits the *`string`* using *`delimiter`* as the delimiter, then reverses the order of the elements, and joins them back together around *`delimiter`*.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-reverse.md b/content/momentum/3/3-reference/sieve-ref-reverse.md
deleted file mode 100644
index fefe276a9..000000000
--- a/content/momentum/3/3-reference/sieve-ref-reverse.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "reverse"
-description: "reverse reverse a string or a stringlist reverse arg If the first argument to reverse is a string the string will be reversed so that abc becomes cba If it is a stringlist then the order of the elements in the string list will be reversed Example 16 123 reverse..."
----
-
-
-## Name
-
-reverse — reverse a string or a stringlist
-
-## Synopsis
-
-`reverse` { *`arg`* }
-
-
-## Description
-
-If the first argument to `reverse` is a string, the string will be reversed, so that `abc` becomes `cba`. If it is a stringlist, then the order of the elements in the string list will be reversed.
-
-
-
-
-```
-$string = reverse "hello";
-ec_log "hello backwards is ${string}";
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-smtp-callback-verify.md b/content/momentum/3/3-reference/sieve-ref-smtp-callback-verify.md
deleted file mode 100644
index 06a6cbaf4..000000000
--- a/content/momentum/3/3-reference/sieve-ref-smtp-callback-verify.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "smtp_callback_verify"
-description: "smtp callback verify Perform smtp callback on an email address smtp callback verify email address sender address smtp callback verify performs a smtp callback on an email address you specify You need to load the Section 14 67 smtp cbv SMTP Callback Verification module passively to use this action You..."
----
-
-
-## Name
-
-smtp_callback_verify — Perform smtp callback on an email address
-
-## Synopsis
-
-`smtp_callback_verify` { *`email_address`* } [ *`sender_address`* ]
-
-
-## Description
-
-`smtp_callback_verify` performs a smtp callback on an *`email_address`* you specify. You need to load the [“smtp_cbv – SMTP Callback Verification”](/momentum/3/3-reference/3-reference-modules-smtp-cbv) module passively to use this action.
-
-You can specify an optional *`sender_address`* to use as the MAIL FROM: address when performing the callback. If this argument is not specified, the default value in the config file will be used. Specifying this argument will not change the `mailfrom` value in the config file.
-
-This action returns a stringlist, ["status", "message"]. `status` is one of `pass`, `fail`, `transient`, or `error`. `message` is the full DSN (Delivery Status Notification).
-
-
-
-
-In the following script, a smtp callback is performed on all incoming mails with a NULL sender address. The `ecelerity.conf` for this setup looks something like the following:
-
-```
-smtp_cbv "smtp_cbv1" {
- Enabled = false
- phase = "mailfrom"
-}
-
-sieve "sieve1" {
- script "mailfrom_phase1" {
- source = "/path/to/myscript.siv"
- }
-}
-```
-
-and the contents of `myscript.siv`:
-
-```
-$from = envelope "from";
-($rv) = smtp_callback_verify "${from}";
-if ec_test :is "${rv}" "fail" {
- ec_action 550 "from address not reachable";
-}
-```
-
-
-## See Also
-
-[“smtp_cbv – SMTP Callback Verification”](/momentum/3/3-reference/3-reference-modules-smtp-cbv),
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-snmp-trap.md b/content/momentum/3/3-reference/sieve-ref-snmp-trap.md
deleted file mode 100644
index 4f5c432cf..000000000
--- a/content/momentum/3/3-reference/sieve-ref-snmp-trap.md
+++ /dev/null
@@ -1,120 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "snmp_trap"
-description: "snmp trap Send SNMP traps from a Sieve script snmp trap hash snmp trap sends an SNM Pv 2 trap described by the given hash which must be created by hash create The hash may have the following elements address IP address of the server to send the trap to..."
----
-
-
-## Name
-
-snmp_trap — Send SNMP traps from a Sieve script
-
-## Synopsis
-
-`snmp_trap` { *`hash`* }
-
-
-## Description
-
-`snmp_trap` sends an SNMPv2 trap described by the given hash, which must be created by [hash_create](/momentum/3/3-reference/sieve-ref-hash-create). The hash may have the following elements:
-
-
-
-- address
-
--
-
-IP address of the server to send the trap to. If no address is specified, the port and community options are ignored and the trap is sent to the server(s) specified by one or more `Trap_Destination` stanzas within the `SNMP_TRAPS` stanza in [SNMP](/momentum/3/3-reference/3-reference-conf-ref-snmp).
-
-### Warning
-
-Currently, the `snmp_trap` action does **not** fall back to the address configured in the `Trap_Destination` stanzas within the `SNMP_TRAPS` scope. As a workaround, use this hash element to configure an explicit trap address when sending a trap from Sieve.
-
-
-
-- port
-
--
-
-UDP port number on the destination server, as specified by `address`, to send the trap to. The default port number is UDP port 162.
-
-
-
-- community
-
--
-
-Set the Community option value to the desired SNMP community the traps are to be a part of. "Public" is the default value for this option.
-
-
-
-- mib
-
--
-
-The object identifier (OID) to use for the trap. The default value is a generic trap using the OmniTI Enterprise MIB, "1.3.6.1.4.1.19552.1.4.7".
-
-
-
-- trapvar.type
-
--
-
-The type of trap variable to send. This may be one of the following: "COUNTER", "GAUGE", "STRING", "IPADDRESS". "STRING" is the default value for this option.
-
-
-
-- trapvar.mib
-
--
-
-The object identifier (OID) to use for the trap variable. The default value corresponds to a generic trap using the OmniTI Enterprise MIB and is "1.3.6.1.4.1.19552.1.4.1.0".
-
-
-
-- trapvar
-
--
-
-The actual contents of the trap variable to send. This option specifies the data to be transferred in the trap.
-
-
-
-
-
-The following example will send an SNMP trap to the server specified by the `SNMP_TRAPS` stanza of [SNMP](/momentum/3/3-reference/3-reference-conf-ref-snmp) (if any) when a message is received that contains a `X-Spam-Status` header with a value of `Yes`.
-
-
-
-
-```
-if header :contains "X-Spam-Status" "Yes" {
- $hash = hash_create;
- hash_set $hash "trapvar" "SPAM detected";
-
- snmp_trap $hash;
- ec_action 550 "spam detected";
- }
-```
-
-To send the trap to a specific host and port combination, something like the following can be used.
-
-
-
-
-```
-if header :contains "X-Spam-Status" "Yes" {
- $hash = hash_create;
- hash_set $hash "address" "10.1.2.3";
- hash_set $hash "port" 1062;
- hash_set $hash "trapvar" "SPAM detected";
-
- snmp_trap $hash;
- ec_action 550 "spam detected";
- }
-```
-
-
-## See Also
-
-[*MIB Files*](/momentum/3/3-reference/3-reference-snmp-mib)
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-split.md b/content/momentum/3/3-reference/sieve-ref-split.md
deleted file mode 100644
index 364f6ec72..000000000
--- a/content/momentum/3/3-reference/sieve-ref-split.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "split"
-description: "split ec explode split a string into a stringlist split delimiter string ec explode delimiter string split uses its first argument as a delimiter to explode a given string into a stringlist For example to split an IP address into its component octets we might do something like this Example..."
----
-
-
-## Name
-
-split, ec_explode — split a string into a stringlist
-
-## Synopsis
-
-`split` { *`delimiter`* } { *`string`* }
-
-`ec_explode` { *`delimiter`* } { *`string`* }
-
-
-## Description
-
-`split` uses its first argument as a delimiter to explode a given string into a stringlist.
-
-For example, to split an IP address into its component octets, we might do something like this:
-
-
-
-
-```
-($a, $b, $c, $d) = split "." "%{spfv1:i}";
-
-ec_log "the IP address is ${a}.${b}.${c}.${d}";
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-stop.md b/content/momentum/3/3-reference/sieve-ref-stop.md
deleted file mode 100644
index 7bfa56e9c..000000000
--- a/content/momentum/3/3-reference/sieve-ref-stop.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "stop"
-description: "stop stop processing the current script stop The stop action is used to explicitly indicate that the current script should stop processing This is similar to the keep function keep but does not increment any internal stats counters This is a terminal action no further Sieve rules will be run..."
----
-
-
-## Name
-
-stop — stop processing the current script
-
-## Synopsis
-
-`stop`
-
-
-## Description
-
-The `stop` action is used to explicitly indicate that the current script should stop processing. This is similar to the keep function: [keep](/momentum/3/3-reference/sieve-ref-keep), but does not increment any internal stats counters.
-
-This is a terminal action; no further Sieve rules will be run for the current message in the current phase.
-
-For an overview of Sieve actions see [“Actions”](/momentum/3/3-reference/sieve-syntax-basic#sieve.syntax.basic.actions).
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-thread-pool-stats.md b/content/momentum/3/3-reference/sieve-ref-thread-pool-stats.md
deleted file mode 100644
index b5d6c302b..000000000
--- a/content/momentum/3/3-reference/sieve-ref-thread-pool-stats.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "thread_pool_stats"
-description: "thread pool stats Obtain information about thread pools thread pool stats poolname jobname thread pool stats takes a thread pool name as its first argument and returns a hash containing various information about the pool including the number of threads in the pool queue size and number of invocations If..."
----
-
-
-## Name
-
-thread_pool_stats — Obtain information about thread pools
-
-## Synopsis
-
-`thread_pool_stats` { *`poolname`* } [ *`jobname`* ]
-
-
-## Description
-
-`thread_pool_stats` takes a thread pool name as its first argument and returns a hash containing various information about the pool, including the number of threads in the pool, queue size, and number of invocations.
-
-If the optional `jobname` is also specified, the queue size and the number of running instances for that specific job in the pool is also returned.
-
-### Note
-
-The list of thread pools can be obtained on the console using the `threads stats` command.
-
-The returned hash contains these keys and associated values:
-
-
-
-- poolname
-
--
-
-The name of the pool (e.g. "CPU", "IO", "SWAPIN", etc).
-
-
-
-- queue_sz
-
--
-
-The queue size (number of jobs pending for this thread pool).
-
-
-
-- invocations
-
--
-
-The number of jobs that have been handled by this thread pool.
-
-
-
-- job_num_queued
-
--
-
-The queue size for the specific job described in `jobname`. This will be present only if the `jobname` argument was given.
-
-
-
-- job_num_running
-
--
-
-The number of running instances of the specific job described in `jobname`. This will be present only if the `jobname` argument was given.
-
-
-
-
-
-
-
-
-```
-$stats = thread_pool_stats "CPU";
-$qsize = $stats["queue_sz"];
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${qsize}" "100" {
- ec_tarpit 10 "CPU queue backlog";
-}
-```
-
-
-
-
-```
-$stats = thread_pool_stats "CPU" "clamav_avscan";
-$jqsize = $stats["job_num_queued"];
-if ec_test :value "gt" :comparator "i;ascii-numeric" "${jqsize}" "100" {
- ec_action 451 "resource unavailable";
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-type.md b/content/momentum/3/3-reference/sieve-ref-type.md
deleted file mode 100644
index 28ed571c8..000000000
--- a/content/momentum/3/3-reference/sieve-ref-type.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "type"
-description: "type test the type of the value in a Sieve variable type variable string Some actions such as ec config can return more than one type of value Use this test to check the type of the value in a Sieve variable Possible types are string number stringlist hash tag..."
----
-
-
-## Name
-
-type — test the type of the value in a Sieve variable
-
-## Synopsis
-
-`type` { *`variable`* } { *`string`* }
-
-
-## Description
-
-Some actions (such as `ec_config`) can return more than one type of value. Use this test to check the type of the value in a Sieve variable. Possible types are:
-
-* "string"
-
-* "number"
-
-* "stringlist"
-
-* "hash"
-
-* "tag"
-
-
-
-
-```
-$opt = ec_config "get" "Debug_Flags" "DEBUG";
-# first, see if the option was set
-if type :is $opt "stringlist" {
- # now check the option value
- $dummy = join "," $opt;
- if ec_test $dummy "SMTP" {
- ec_log "SMTP debugging is turned on";
- }
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-vctx-conn-delete.md b/content/momentum/3/3-reference/sieve-ref-vctx-conn-delete.md
deleted file mode 100644
index e5446191c..000000000
--- a/content/momentum/3/3-reference/sieve-ref-vctx-conn-delete.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "vctx_conn_delete"
-description: "vctx conn delete delete a key from the connection context vctx conn delete key Calling this action will remove the key value pair associated with the specified key from the current session's connection context if that key exists..."
----
-
-
-## Name
-
-vctx_conn_delete — delete a key from the connection context
-
-## Synopsis
-
-`vctx_conn_delete` { *`key`* }
-
-
-## Description
-
-Calling this action will remove the key/value pair associated with the specified key from the current session's connection context, if that key exists.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-vctx-conn-get.md b/content/momentum/3/3-reference/sieve-ref-vctx-conn-get.md
deleted file mode 100644
index f2e3bf7ad..000000000
--- a/content/momentum/3/3-reference/sieve-ref-vctx-conn-get.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "vctx_conn_get"
-description: "vctx conn get obtain the value of a connection context key vctx conn get key Calling this function will return the value associated with the specified key in the current session's connection context..."
----
-
-
-## Name
-
-vctx_conn_get — obtain the value of a connection context key
-
-## Synopsis
-
-`vctx_conn_get` { *`key`* }
-
-
-## Description
-
-Calling this function will return the value associated with the specified key in the current session's connection context.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-vctx-conn-set.md b/content/momentum/3/3-reference/sieve-ref-vctx-conn-set.md
deleted file mode 100644
index dafec2b41..000000000
--- a/content/momentum/3/3-reference/sieve-ref-vctx-conn-set.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "vctx_conn_set"
-description: "vctx conn set set a value in the connection context vctx conn set key value Calling this action will set or replace the key value pair specified as arguments in the current session's connection context..."
----
-
-
-## Name
-
-vctx_conn_set — set a value in the connection context
-
-## Synopsis
-
-`vctx_conn_set` { *`key`* } { *`value`* }
-
-
-## Description
-
-Calling this action will set (or replace) the key/value pair specified as arguments in the current session's connection context.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-vctx-mess-delete.md b/content/momentum/3/3-reference/sieve-ref-vctx-mess-delete.md
deleted file mode 100644
index 4f98cb6f5..000000000
--- a/content/momentum/3/3-reference/sieve-ref-vctx-mess-delete.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "vctx_mess_delete"
-description: "vctx mess delete delete a key from the message context vctx mess delete key Calling this action will remove the key value pair associated with the specified key from the current message context if that key exists..."
----
-
-
-## Name
-
-vctx_mess_delete — delete a key from the message context
-
-## Synopsis
-
-`vctx_mess_delete` { *`key`* }
-
-
-## Description
-
-Calling this action will remove the key/value pair associated with the specified key from the current message context, if that key exists.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-vctx-mess-get.md b/content/momentum/3/3-reference/sieve-ref-vctx-mess-get.md
deleted file mode 100644
index c315d1d47..000000000
--- a/content/momentum/3/3-reference/sieve-ref-vctx-mess-get.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "vctx_mess_get"
-description: "vctx mess get obtain the value of a message context key vctx mess get key Calling this function will return the value associated with the specified key in the current message context..."
----
-
-
-## Name
-
-vctx_mess_get — obtain the value of a message context key
-
-## Synopsis
-
-`vctx_mess_get` { *`key`* }
-
-
-## Description
-
-Calling this function will return the value associated with the specified key in the current message context.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-ref-vctx-mess-set.md b/content/momentum/3/3-reference/sieve-ref-vctx-mess-set.md
deleted file mode 100644
index 7bfb142e3..000000000
--- a/content/momentum/3/3-reference/sieve-ref-vctx-mess-set.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "vctx_mess_set"
-description: "vctx mess set set a value in the message context vctx mess set key value Calling this action will set or replace the key value pair specified as arguments in the current message context..."
----
-
-
-## Name
-
-vctx_mess_set — set a value in the message context
-
-## Synopsis
-
-`vctx_mess_set` { *`key`* } { *`value`* }
-
-
-## Description
-
-Calling this action will set (or replace) the key/value pair specified as arguments in the current message context.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/sieve-syntax-basic.md b/content/momentum/3/3-reference/sieve-syntax-basic.md
deleted file mode 100644
index 48164ff99..000000000
--- a/content/momentum/3/3-reference/sieve-syntax-basic.md
+++ /dev/null
@@ -1,417 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Sieve's Basic Syntax"
-description: "A Sieve script consists of an optional require block followed by a series of tests and commands Sieve scripts are stored using UTF 8 encoding and textual comparisons are performed in UTF 8 where possible require is a portability concession in the Sieve specification that allows scripts to be used..."
----
-
-A Sieve script consists of an optional `require` block followed by a series of tests and commands. Sieve scripts are stored using UTF-8 encoding, and textual comparisons are performed in UTF-8 where possible.
-
-### Note
-
-`require` is a portability concession in the Sieve specification that allows scripts to be used on different vendors implementation of Sieve safely/correctly. There is a slight performance hit at compile time to use `require`, but is inconsequential as scripts are cached.
-
-### Arguments
-
-Sieve supports three basic argument types: strings, numbers and string lists.
-
-Strings may take one of two forms; the first is data enclosed in double quotes, the second is a multi-line escape, similar in concept to "here documents" found in other languages. With quoted strings, a backslash character quotes the character that follows (this is **not** the same as traditional C-style escaping!) and newlines can be embedded as is.
-
-Multi-line strings are introduced using the `text:` tag; all tokens following that marker are added to the string until a line consisting of a single ``.`' is found. You should "dot-stuff" lines to quote a literal ‘`.`’. This is similar to the DATA phase of SMTP.
-
-Numbers are positive integers (greater than or equal to zero) followed by an optional magnitude operator such as K for kilobyte and M for megabyte. String lists consist of a comma separated list of strings enclosed in square brackets.
-
-
-
-
-```
-"this is a string";
-
-# sieve renders \n as a literal n character, NOT a newline
-"this is a single line with an \n in the middle";
-
-# here's how to break the line
-"this text runs on
-two lines";
-
-# or using multi-line syntax
-text:
-this text runs on
-two lines
-.
-```
-
-
-
-
-```
-require "discard" ;
-
-if size :under 1M  {
- keep;
-} else {
- discard;
-}
-if header :contains ["from", "reply-to"]  "bad.guy@example.com" {
- discard;
-}
-```
-
-|
-
-[](#sieve.ex.discard)
-
- | `"discard"`
-
-This is the string `discard`.
-
- |
-|
-
-[](#sieve.ex.size)
-
- | `1M`
-
-This is the number `1048576`.
-
- |
-|
-
-[](#sieve.ex.list)
-
- | `["from", "reply-to"]`
-
-This is a string list consisting of `from` and `reply-to`.
-
- |
-
-### Actions
-
-The baseline standard Sieve actions are quite limited in scope compared to the range of actions that one might want to take during each phase of an SMTP transaction. All standard Sieve actions are implemented with the exception of "fileinto", and several other Momentum-specific actions are implemented as Sieve extensions.
-
-
-
-- keep
-
--
-
-The message should be kept and the Sieve script should be terminated. If used in a non-message phase of the SMTP transaction, the default action of returning an "OK" SMTP result will be taken.
-
-
-
-- redirect
-
--
-
-The `rcptto` address is replaced with the address supplied and the message is redirected. The message's headers and body is not changed. No further Sieve actions or scripts will be performed on the message.
-
-
-
-- discard
-
--
-
-The message will be silently discarded. This mechanism is only available if a message is present (during the data, spool and each_rcpt phases).
-
-
-
-- reject
-
--
-
-The message will be rejected "inline" by providing a permanent failure message (550) back to the sending MTA. If it is not possible to reject the message inline then a mail delivery notification (MDN) will be sent describing the failure. For example, if multiple envelope recipients have been specified in the SMTP transaction and the Sieve script is executing in the each_rcpt phase, it is impossible to provide a failure code to the remote MTA as that code may conflict with the decision made by the Sieve script when executed subsequently on the next recipient of the same message.
-
-
-
-- stop
-
--
-
-Stop processing the current script. No further tests nor actions will be run. If the message status has been set to anything other than a 250 response code, no further Sieve scripts will be run for that message. Otherwise, execution will continue with the next script in the phase, or with the next phase.
-
-
-
-
-
-### Comparisons
-
-As with any language that is used for decision making, you must be able to provide an expression that yields a truth value. Sieve provides several such tests:
-
-** 8.2.3.1. :over**
-
-Used to compare message sizes. This will yield true if it is larger than the argument.
-
-** 8.2.3.2. :under**
-
-Used to compare message sizes. This will yield true if it is smaller than the argument.
-
-
-
-
-This example discards messages larger than 1 megabyte or smaller than 100 bytes.
-
-```
-if size :over 1M {
- discard;
-} elsif size :under 100 {
- discard;
-}
-```
-
-** 8.2.3.3. :is**
-
-Provides absolute matching semantics. The two values being compared must be the same to yield true.
-
-
-
-
-```
-# This rejects the transaction if either the context variable "connect-blacklist"
-# or "mailfrom-blacklist" has the exact value "match"
-if vctx :is ["connect-blacklist", "mailfrom-blacklist"] "match" {
- ec_action 550 "5.7.1 you're blacklisted here.";
- stop;
-}
-```
-
-** 8.2.3.4. :contains**
-
-Provides substring matching. This will return true if the specified string or a member of the string list is found within the subject string(s). All non-null strings `contains` the empty string `""`. This is a feature of the language that may be used to check for the existence of a key or header, depending on the test.
-
-
-
-
-```
-# This checks if the can_relay context key is set (exists)
-if vctx :contains "can_relay" "" {
- keep;
- stop;
-}
-# This checks to see if the subject of the email contains the word "test"
-if header :contains "Subject" "test" {
- ec_log "Test message seen";
-}
-```
-
-** 8.2.3.5. :matches**
-
-Provides glob-style expression matching. The pattern for matching can specify a wild card match using the "*" and "?" characters, matching zero or more characters, and a single character, respectively. In order to match an actual "*" or "?", they must be escaped as "\\?" and "\\*", respectively.
-
-
-
-
-```
-# Match subjects like "Hey you! Make .. Money... Fast" and
-# "University Dipl0mas 4sale" and make them wait 2 minutes, transient fail
-# them and snip the connection.
-if header :matches "subject" ["*make*money*fast*", "*university*dipl*mas*"] {
- ec_tarpit 120 "my tag";
- ec_action 451 "perhaps some other time";
- ec_disconnect;
-}
-```
-
-** 8.2.3.6. :regex**
-
-This comparison provides the much more powerful semantics of Perl-compatible regular expressions (PCREs). PCREs are extremely flexible and powerful and describing them is beyond the scope of this manual. Extensive documentation can be found in the Perl distribution that ships with Momentum by typing . **`man -M /opt/msys/3rdParty/man pcrepattern`** .
-
-
-
-
-```
-# if a message's subject contains 2 or 4 digits dash 2 digits dash 2 digits bordered
-# by word boundaries, then log that it has a date in it.
-if header :regex "subject" "\\b(\\d{4}|\\d{2})-\\d{2}-\\d{2}\\b" {
- ec_log "has date";
-}
-```
-
-### Note
-
-In a Sieve string, `\\` represents a single `\` character.
-
-### Comparators
-
-Unless specified otherwise, Sieve will always compare strings as strings in a case sensitive manner. Often, you will want to match case insensitively or based on the numeric values. You can specify an alternate comparator for `:is`, `:contains`, `:matches` and `:regex` comparisons by using the `:comparator` tag.
-
-The following comparators are available:
-
-
-
-- "i;octet"
-
--
-
-The default comparator; the strings are compared octet by octet for equality. This is a case-sensitive comparison.
-
-
-
-- "i;ascii-casemap"
-
--
-
-Strings are compared octet-by-octet for equality, mapping uppercase characters to lowercase. This is a case-*in*sensitive comparison.
-
-
-
-- "i;ascii-numeric"
-
--
-
-The numeric value of the strings are used for the comparison. If the string contains numbers and letters, or a series of whitespace separated numbers, only the first number portion is taken.
-
-
-
-
-
-```
-# We keep getting bad messages with the phrase "sPeCIaL DEal" in the subject.
-# But would like to receive mails with subjects containing "Special Deal".
-if header :contains :comparator "i;octet" "Subject" "sPeCIaL DEal" {
- discard;
- stop;
-}
-```
-
-### Tests
-
-Sieve's standard tests are very specific to email messages and their parts. Tests can be performed on the envelope sender, the addresses contained in headers, arbitrary content contained in headers, the existence of headers, arbitrary content in the body of the message and finally the size of the message. Sieve's tests are the beginning of an expression that will yield a truth value and are found exclusively within an `if` conditional statement.
-
-In addition to the tests specified in the Sieve RFC, Momentum implements a plethora of other convenient tests and actions that can be performed on a message, the SMTP session and the overall context of the transaction.
-
-** 8.2.5.1. Standard Sieve Tests**** 8.2.5.1.1. true**`if true { ... }`
-
-Takes no arguments and evaluates to true.
-
-** 8.2.5.1.2. false**`if false { ... }`
-
-Takes no arguments and evaluates to false.
-
-** 8.2.5.1.3. not**`if not { ... }`
-
-Inverts the result of the given test; true becomes false and false becomes true.
-
-** 8.2.5.1.4. isset**`if isset ( | ) { ... }`
-
-The `isset` test will check whether an element of a stringlist or hash exists. The arguments are a stringlist and a number, or a hash and a string.
-
-
-
-
-```
-$a = ["one", "two"];
-$b = ["only_one"];
-
-if isset $a 1 {
- ec_log "element 1 exists (correct)";
-}
-
-if not isset $b 1 {
- ec_log "element 1 of b does not exist (correct!)";
-}
-$c = hash_create;
-hash_set $c "thing" "value";
-
-if isset $c "thing" {
- ec_log "element \"thing\" of c exists (correct)";
-}
-
-if not isset $c "nothing" {
- ec_log "element \"nothing\" of c does not exist (correct!)";
-}
-```
-
-** 8.2.5.1.5. size**`if size :over { ... }``if size :under { ... }`
-
-The size will be evaluated with either the :over or :under comparison and the result will be based on the size of the entire message including headers, prior to any character conversion. NOTE: also included in the size is an extra byte for every line in the email message that begins with a '.'. This extra byte represents the additional '.' character introduced to preserve SMTP transparency described in RFC 2821 (so-called dot "stuffing").
-
-
-
-
-```
-if size :over 10M {
- ...
-} elsif size :under 1K {
- ...
-}
-```
-
-** 8.2.5.1.6. exists**`if exists ( string | stringlist ) { ... }`
-
-The exists test will check for the existence of a header in the email message, returning true if it exists and false otherwise.
-
-
-
-
-```
-# Reject messages without a Date header
-if not exists "Date" {
- reject;
-}
-```
-
-** 8.2.5.1.7. envelope**`if envelope ( "from" | "to" ) ( keylist: string | stringlist ) { ... }`
-
-The envelope test allows you to investigate the email addresses provided as the envelope sender (the MAIL FROM command) and the envelope recipient (the RCPT TO command) and compare it to the keylist.
-
-*`address part`* is one of `:all`, `:localpart` (left of the @), or `:domain` (right of the @). The `subaddress` Sieve extension provides `:user` and `:detail` selectors to break apart the `:localpart` of the email address. In other words, Sieve sees an email address in the following format: `user+detail@domain` or `localpart@domain`.
-
-In many Sieve implementations this test is not always 100% accurate due to the message already having been accepted and subjected to alias expansion. In Momentum, you have direct access to the MAIL FROM: and RCPT TO: commands issued in the SMTP session and can be certain that these tests will be correct.
-
-
-
-
-```
-if envelope :localpart :is "to" ["postmaster", "abuse"] {
- keep;
-}
-if envelope :domain :is "from" "bad-guy.com" {
- ec_disconnect;
- ec_action 550 "5.7.1 stopping calling here.";
-}
-```
-
-** 8.2.5.1.8. address**
-```
-if address ( headers: string | stringlist )
- ( keylist: string | stringlist ) { ... }
-```
-
-The address test will analyze addresses in the specified headers compared to the keylist.
-
-*`address part`* is one of `:all`, `:localpart`, `:domain`, `:user`, `:detail` as mentioned in the `envelope` test above.
-
-
-
-
-```
-# Reject mail with support@a-common-bank.com (and .net and .org) in the
-# "From", "Reply-To", or "Sender" headers
-if address :all :regex ["From", "Reply-To", "Sender"]
- "^support@a-common-bank.(com|org|net)$" {
- ec_log "Phishing attempt";
- discard;
-}
-```
-
-** 8.2.5.1.9. header**`if header ( headers: string | stringlist) ( keylist: string | stringlist ) { ... }`
-
-The header test will examine all headers matching the headers specified and compare them to the keylist. The test will return true at the first successful match.
-
-
-
-
-```
-# mail with X-Spam-Status: Yes
-if header :contains "X-Spam-Status" "yes" {
- ec_action 550 "no spam thank you"
- stop;
-}
-```
-
-** 8.2.5.1.10. is_valid_ip**`if is_valid_ip (string | stringlist) { ... }`
-
-`is_valid_ip` returns true if a given address is a valid IP address, false otherwise. It also accepts a list of addresses and returns true only when all of them are valid IP addresses.
-
-** 8.2.5.1.11. is_rfc821_ip**`if is_rfc821_ip (string | stringlist) { ... }`
-
-`is_rfc821_ip` returns true if a given address is a valid address judged by `is_valid_ip` or such an address in `[]`. It also accepts a list of addresses and returns true only when each of them is valid.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/snmp-mib-per-domain-metrics.md b/content/momentum/3/3-reference/snmp-mib-per-domain-metrics.md
deleted file mode 100644
index 2dad22fae..000000000
--- a/content/momentum/3/3-reference/snmp-mib-per-domain-metrics.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "1.3.6.1.4.1.19552.1.2 – Per-domain Metrics"
-description: "The per domain MIB is defined as 1 3 6 1 4 1 19552 1 2 L A B C S G where A B C indicates the domain name and L represents the length of that domain For example aol com would be represented as In this case 7..."
----
-
-The per-domain MIB is defined as: `1.3.6.1.4.1.19552.1.2.L.A.B.C.S.G` where `A.B.C` indicates the domain name, and `L` represents the length of that domain. For example, `aol.com` would be represented as:
-
-```
-7.97.111.108.46.99.111.109
-7 a o l . c o m
-```
-
-In this case `7` indicates the length of 'aol.com'. The length and the binding identifier replace `L.A.B.C` in the MIB. `G` corresponds to the MTAGroupIndexID (see RFC 2789, MTA MIB) `S` represents the metric type. We define the following metrics:
-
-* 0: domain name
-
-* 1: receptions
-
-* 2: failures
-
-* 3: deliveries
-
-* 4: transient failures
-
-* 5: outbound connections
-
-* 6: active queue size
-
-* 7: delayed queue size
-
-For more information about Mail Monitoring MIBs see [RFC2789](http://tools.ietf.org/html/rfc2789).
-
-The `aol.com` domain name would have the following entry on the default binding: 1.3.6.1.4.1.19552.1.2.7.97.111.108.46.99.111.109.0.1: string 'aol.com'
-
-### Determining the ID for an MTAGroupIndexID
-
-The MTAGroupIndexID can be determined by using snmpwalk and sutracting 1 from last number of the desired binding. You can also use snmpwalk to get the MTAGroupIndexID in order to determine per-domain stats.
-
-For example:
-
-```
-shell> /opt/msys/3rdParty/bin/snmpwalk -v1 -c public
-10.79.20.132:8162 1.3.6.1.4.1.19552.1.3
-SNMPv2-Example::enterprises.19552.1.3.1.1 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.1.2 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.1.3 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.1.4 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.2.1 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.2.2 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.2.3 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.2.4 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.3.1 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.3.2 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.3.3 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.3.4 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.4.1 = STRING: "none/all"
-SNMPv2-Example::enterprises.19552.1.3.4.2 = STRING: "none/default"
-SNMPv2-Example::enterprises.19552.1.3.4.3 = STRING: "none/cdp"
-SNMPv2-Example::enterprises.19552.1.3.4.4 = STRING: "none/example"
-```
-
-In the output above, `cdp` and `example` are binding names. The MTAGroupIndexID of `cdp` is `2` because `2` is one less than the last number in `SNMPv2-SMI::enterprises.19552.1.3.4.3`.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/subclusters.md b/content/momentum/3/3-reference/subclusters.md
deleted file mode 100644
index 34d7331b0..000000000
--- a/content/momentum/3/3-reference/subclusters.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Subclusters"
-description: "The cluster may be further divided into subclusters which enables the following use cases Geographically disparate data centers connected via a WAN link that need to share traffic metrics but want to avoid moving other data across the WAN link because it is either unneccessary or too expensive Staging and..."
----
-
-The cluster may be further divided into subclusters, which enables the following use-cases:
-
-* Geographically disparate data centers connected via a WAN link that need to share traffic metrics, but want to avoid moving other data across the WAN link because it is either unneccessary or too expensive.
-
-* Staging and production environments, where new configurations are tested in a replica of the intended production environment before they are rolled out.
-
-Subclusters are logical divisions of the cluster and need not have any direct relationship to network topology. You may run multiple subclusters on the same subnet, have them on separate subnets, or have a subcluster span subnets, provided that you configure the messaging bus so that it knows how to route to all the nodes that are part of the overall cluster. A given node is associated with one and only one subcluster.
-
-### Note
-
-When installing a multi-cluster environment, any non-default subclusters (subclusters that the manager does not belong to) are not preconfigured by the installer. In particular, a subcluster configuration file is generated, but the line that activates the clustering is not uncommented: `# include ecelerity-cluster.conf`.
-
-*You must manually uncomment this line on nodes that do not belong to the same subcluster as the manager.* See [“Best Practices for Manually Changing Configuration Files”](/momentum/3/3-reference/conf-manual-changes) for instructions on manually changing configuration files.
-
-DuraVIP™ does not work across different subnets, meaning you cannot have a DuraVIP™ migrate between servers on different LAN segments, because there is no way to alter the underlying networking. The system will allow you to configure DuraVIP™s across segments, but such configurations will not work properly.
-
-### Using Subclusters
-
-Installing subclusters is essentially the same as a normal cluster installation with the exception: Subcluster names **must** be lower case and **must** be a single word.
-
-The subcluster names that you assigned during installation will *not* appear in the file system under the `/opt/msys/ecelerity/etc` directory. Working copies of subcluster configurations are stored in the `/opt/msys/ecelerity/etc/default` directory.
-
-If you are unsure of the subcluster name of a specific node, you can determine it from the command line by issuing the command **`/opt/msys/3rdParty/bin/svn info /opt/msys/ecelerity/etc/conf`** . This should result in output similar to the following:
-
-```
-Path: /opt/msys/ecelerity/etc/conf
-URL: http://scmgr:2027/config/west/boot
-Repository Root: http://scmgr:2027/config/west
-Repository UUID: 1fd6f902-c58e-4964-bfd7-c624aa062895
-Revision: 4
-Node Kind: directory
-Schedule: normal
-Last Changed Author: admin
-Last Changed Rev: 4
-Last Changed Date: 2009-11-23 12:09:41 -0700 (Mon, 23 Nov 2009)
-```
-
-The subcluster name can be determined by looking at the `Repository Root` line. In this particular case, the name is `west`.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-administration.md b/content/momentum/3/3-reference/web-3-administration.md
deleted file mode 100644
index 286e3702a..000000000
--- a/content/momentum/3/3-reference/web-3-administration.md
+++ /dev/null
@@ -1,298 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Administration"
-description: "The options available from the Administration page are pictured in the following image Figure 3 32 Administration options Use Advanced Configuration Editor to change the configuration of Momentum You can add or remove modules or listeners and also change their configuration The Policy Configuration Editor menu option provides a graphical..."
----
-
-The options available from the Administration page are pictured in the following image:
-
-
-
-
-
-
-Use Advanced Configuration Editor to change the configuration of Momentum. You can add or remove modules or listeners and also change their configuration
-
-The Policy Configuration Editor menu option provides a graphical tool for implementing policy scripts. *Note*: This page is not currently available for Momentum for Receiving.
-
-The Automated Alerting Configuration menu option provides a graphical tool for implementing alerting scripts.
-
-The Configuration Snippets menu option provides a tool for creating reusable configuration code snippets.
-
-The User Management menu is used to create, remove or update users and groups. This menu option only appears if a superuser logs in. The user named `admin` created during installation is a superuser.
-
-### Note
-
-The User Management menu is unavailable if you choose to authenticate against Active Directory.
-
-The Return Path Credentials menu is used to manage the Return Path Tools.
-
-The drop-down list boxes on the left, determine how any changes you make are applied. In a cluster configuration you can select a specific subcluster and node to edit and your changes will only apply to the selected node. To make changes that apply to all nodes select the `default` subcluster and the `default` node. In a cluster configuration, you need to select from these list boxes before the central menu options are enabled.
-
-If you decide to make changes to a specific node, you will be asked to create a copy of the default configuration file. You should see a screen similar to the following:
-
-
-
-
-
-
-After clicking the COPY button, you must commit your changes in order for them to take effect. Committing your changes creates a directory below the `/opt/msys/ecelerity/etc/conf` directory bearing the name of the node. In this directory you will find an `ecelerity.conf` file that is applicable to this node only. You now have an `ecelerity.conf` file specific to this node.
-
-### Note
-
-When you create a node-specific configuration file, the directory bearing the node name and the node-specific `ecelerity.conf` file is created on all nodes in the cluster.
-
-### Configuring Momentum Using the Web Console
-
-
-
-The simplest way to configure Momentum in version 3.0 is by using the web console.
-
-Changing your configuration through the web UI changes a session-specific checkout of the configuration file stored in the repository and any changes are validated when they are committed. Every minute the running configuration is checked for updates by a cron job and if the on-disk configuration changes, the running Momentum process is reloaded.
-
-You can change configuration options manually by directly editing the `ecelerity.conf` file. To avoid possible conflicting changes, don't do this while the web console is running. For instructions on manually changing configuration files see [“Best Practices for Manually Changing Configuration Files”](/momentum/3/3-reference/conf-manual-changes). If you make manual changes that conflict with changes made through the web UI, the running configuration will *not* get replaced with the repository version.
-
-### Note
-
-Options that relate to configuration of the cluster manager or the message bus, must be configured manually. For more information see [eccluster.conf](/momentum/3/3-reference/eccluster-conf-3) and [mbus.conf](/momentum/3/3-reference/mbus-conf).
-
-As of version 3.4, the `mbusd.conf` file is no longer used. For more information see [“msgc – Modules”](/momentum/3/3-reference/3-reference-modules-msgc).
-
-** 3.8.1.1. Changing Global Configuration Options**
-
-To change or add configuration options, navigate to the Administration page. Use the drop-down list boxes on the left to determine which node or nodes your changes will affect and then choose the Advanced Configuration Editor option.
-
-When you first navigate to this page the default scope is the global scope and all the options that are valid in the global scope appear in the option box pictured in [“Global configuration options”](/momentum/3/3-reference/web-3-administration#figure_global_options).
-
-
-
-
-
-
-Options that are specified in your configuration file are shown in normal type. If an option is grayed-out then it hasn't been specified. If a grayed-out option has a default value, it is shown. In [“Global configuration options”](/momentum/3/3-reference/web-3-administration#figure_global_options), `Alias_Schemes` has not been specified and does not have a default value. On the other hand, `Server_Max_File_Descriptors` has been specified and has a value of `80000`.
-
-To add or edit an option simply click it and set its value. To search for a value, enter the option name into the text box labelled OPTION. The list of options is updated as you type.
-
-Be sure to click Commit All Changes when you are finished.
-
-If the current value of an option differs from the default value, you can "assign" the default value by locating the option and then choosing the DEFAULT button. The DEFAULT button only appears when an option has a default value and has also been assigned a value (regardless of whether that value is the default or not). Clicking this button removes the specific option from the configuration file, effectively assigning it its default value.
-
-** 3.8.1.2. Committing Changes**
-
-Pressing the Commit All Changes button displays the following screen:
-
-
-
-
-
-
-Press the Commit button to confirm your changes. When your changes have been processed you should see the message `Configuration Successfully Saved`.
-
-If you decide against the changes, use the Rollback button.
-
-### Warning
-
-If you think that changes may have been made by someone else since your web UI session started, you should consider rolling back any pending changes you may have made (especially if you suspect they might conflict). You may want to log out and back in again to make sure that your working copy is fully up to date.
-
-** 3.8.1.3. Implicitly Loaded Scopes**
-
-Some scopes that appear in the web UI need not ever be explicitly loaded.
-
-* `select_scheduler` and `devpoll_scheduler`
-
- These scopes represent the various platform specific schedulers; the best available scheduler is loaded on demand and these scopes need not be set explicitly. The `Scheduler_Selection` option affects which of these are loaded and used.
-
-* `xclient_inbound, xremoteip_inbound, xsetcontext_inbound` and `xdumpcontext`
-
- These scopes never need to be loaded explicitly; the `SMTP_Extensions` option affects which of these are loaded and used.
-
-** 3.8.1.4. The `Custom` Value**
-
-When there is an option such as `Blackhole`, with values that map to specific numeric values, the web UI lets you select `Custom` and configure the raw value. However, you would rarely choose `Custom`, and certainly not with the `Blackhole` option. One option where a custom value may sometimes make sense is `Connection_Allocation_Aggressiveness`. Before changing a custom value be sure to consult the option documentation.
-
-** 3.8.1.5. Changing Module Configuration Options**
-
-To change or add a module configuration option navigate to the Administration page choose the Advanced Configuration Editor menu and select a module from the list box on the left. After selecting a module you should see a list of all available options on the left side of the screen. The following image shows a partial list of the ec_logger options:
-
-
-
-
-
-
-Options that are currently specified in your configuration file are shown in normal type and grayed-out options indicate options that are not specified. If a grayed-out option has a default or a fallback value it is also shown. For example, in [“Module configuration options”](/momentum/3/3-reference/web-3-administration#figure_module_options), `Debug_Level` has not been specified but has a default value of `ERROR`.
-
-To add or edit an option simply click it and set its value. To search for a value, enter the option name into the text box labelled OPTION. The list of options is updated as you type.
-
-Be sure to click Commit All Changes when you are finished.
-
-For a complete list and explanation of the options available for each module see [*Modules Reference*](/momentum/3/3-reference/3-reference-modules) .
-
-** 3.8.1.6. Adding a Module**
-
-To add a module navigate to the Administration page and choose the Advanced Configuration Editor option. Click the New Scope button to create a new module and you should see a list of available modules as shown in the following:
-
-
-
-
-
-
-Choose the module you wish to add. If the module you are adding is not a singleton, you must give the module a name by entering text into the available textbox. For more information on this topic see [module](/momentum/3/3-reference/3-reference-console-commands-module). Edit a module's options as shown in [“Changing Module Configuration Options”](/momentum/3/3-reference/web-3-administration#web3.module_config).
-
-Be sure to click Commit All Changes when you are finished.
-
-** 3.8.1.6.1. Adding an ECStream_Listener**
-
-The ECStream_Listener does not appear in the list box of scopes until the `ecstream` module is added. To add an ECStream_Listener follow these steps:
-
-1. Click the New Scope button and select the `ecstream` scope.
-
-2. Create the ecstream scope and commit the change.
-
-3. Click the New Scope button and find the ECStream_Listener in the list box.
-
-4. Add an ECStream_Listener and commit your changes.
-
-** 3.8.1.7. Adding a Sieve Module**
-
-The sieve module is used to implement policy. For a description of Sieve see [*Sieve++*](/momentum/3/3-reference/3-reference-sieve) and for an example of implementing policy using Sieve see [“Implementing Policy Using Sieve”](/momentum/3/3-reference/policy-implementing).
-
-Sieve scripts are run at specific hook points or during a specific phase. Before adding the sieve module, you need to create a script. Sample Sieve scripts are found in the `/opt/msys/ecelerity/etc/sieve-scripts/` directory. You can adapt these scripts for your own purposes and save them wherever you like. You can also use the revision control system to keep track of any changes and to share files across different nodes. This is described in [“Sieve Scripts and Revision Control”](/momentum/3/3-reference/modules-sieve#modules.sieve.revision.control).
-
-A sieve module is added in the same way as any other module. This process is described in [“Adding a Module”](/momentum/3/3-reference/web-3-administration#web3.adding_module).
-
-The point of adding a sieve module is in order to run a script at a specific phase. To do this you must add a script scope as shown in the following:
-
-
-
-
-
-
-The name of a script scope cannot be an arbitrary name of your choosing. The scope name must be a valid script phase. Valid phases are:
-
-* accept_phase1
-
-* accept_phase2
-
-* connect_phase1
-
-* connect_phase2
-
-* ehlo_phase1
-
-* ehlo_phase2
-
-* mailfrom_phase1
-
-* mailfrom_phase2
-
-* rcptto_phase1
-
-* rcptto_phase2
-
-* data_phase1
-
-* data_phase2
-
-* spool_phase1
-
-* spool_phase2
-
-* each_rcpt_phase1
-
-* each_rcpt_phase2
-
-* set_binding_phase1
-
-* set_binding_phase2
-
-Phase1 and Phase2 allow Sieve scripts to be split across two files while remaining completely self-contained and operational. This is useful for separating site-specific Sieve logic from vendor and/or third party Sieve logic. The convention is to run site-specific scripts during phase1 and vendor supplied rulesets during phase2.
-
-*Note*: If you do not use one of the legitimate phase names, creation of the script scope fails and you will not be able to continue.
-
-Once the script scope is created, you **must** identify the script that will run by setting the `source` option of the script scope. Do this by pointing the source to the desired script.
-
-### Note
-
-A live server will never reload a faulty configuration. Any errors that you introduce into your configuration come into effect on reboot or when the ecelerity process is restarted. For example, if you do not set `source` to a valid file, affected nodes will fail to start the MTA on reboot.
-
-Within the sieve scope you may also configure the `cache_size` and `cache_life` options. The `cache_size` and `cache_life` options control the number of compiled script cache entries to maintain, and the time-to-live for those entries. These options have default values of `200` and `260` respectively. The compiled script cache is used whenever your Sieve scripts use the `ec_include` action to include another Sieve script. Both of these values are also tunable from the system console.
-
-### Modifying a Binding
-
-To change a binding navigate to the Administration page and choose the Advanced Configuration Editor option. To change an existing binding, select the desired binding from the list box on the left, click it and you should see a list of all available options on the right side of the screen.
-
-
-
-
-
-
-Binding options are modified in exactly the same way as global options. For more information see [“Changing Global Configuration Options”](/momentum/3/3-reference/web-3-administration#web3.global_config).
-
-### Modifying a Listener
-
-
-
-To change a listener navigate to the Administration page and choose the Advanced Configuration Editor option. Select the desired listener from the list box, click it and you should see something similar to the following:
-
-
-
-
-
-
-This displays the ESMTP_Listener in the global scope. Two listen stanzas are shown on the left and options valid within the ESMTP_Listener scope are shown on the right.
-
-Adding or editing options that are valid in the ESMTP_Listener scope is the same as editing a module option. For a description of this task see [“Changing Module Configuration Options”](/momentum/3/3-reference/web-3-administration#web3.module_config).
-
-To add or edit options in the `Listen` scope select the scope you wish to change and its options show up in the option list on the right. Scroll down to find a specific option or search for it by entering the option name in the text box beside OPTION:.
-
-As with module options, options that are not explicitly set are grayed.
-
-Be sure to click the Update button and the Commit All Changes button when you are finished.
-
-** 3.8.3.1. Configuring the ECStream_Listener in the Web UI**
-
-If you are adding an ECStream_Listener using the web UI, you must first add the `ecstream` module. You cannot configure ECStream options until the `ecstream` module has been added.
-
-### Creating Configuration Snippets
-
-Configuration snippets can be especially useful when you need to add the same or similar code to different nodes in a cluster.
-
-Use the Configuration Snippets menu item to navigate to the Configuration Snippet Library. When you first navigate to this page you should see something like the following:
-
-
-
-
-
-
-The CREATE A NEW SNIPPET frame is used to create new snippets. The textbox is used for the snippet name. Use the Select Type drop-down list box to set the type to one of the following values:
-
-* General Snippet
-
-* Binding Snippet
-
-* Domain Snippet
-
-The Select Availability drop-down list box is used to determine whether the snippet applies to the whole cluster, to a subcluster or is specific to a particular node. A cluster-wide snippet appears under the Global Configuration Snippets column and node-specific snippets under the column bearing the node or subcluster name.
-
-To create a snippet, enter a name in the textbox and select the the type of snippet that you would like to create. Doing this opens a new configuration page with the appropriate scopes on the left hand side and options on the right.
-
-### Note
-
-A temporary file is used during the process of creating a snippet. For this reason you are encouraged to use only alphanumeric characters and underscores in snippet names. If you use other characters, Momentum will attempt to convert them into an ‘`_`’.
-
-For example, if you choose to create a binding snippet you can choose a `Domain` or `Host` scope from the scope type drop-down list box. Options visible within the binding scope are displayed on the right hand side of the page. The binding snippet will have the default name `Inconsequential`. When you have finished creating a snippet click the Done button. This saves the snippet and returns you to the Configuration Snippet Library page and displays the newly created snippet under the appropriate column.
-
-Any configuration snippets can be edited by clicking the snippet name. To delete a snippet click the X button. Snippets are saved to the repository so don't forget to commit your changes.
-
-When using the advanced configuration editor, you can access existing snippets by clicking the Manage Snippets button. Clicking this button opens a snippet management frame as pictured below:
-
-
-
-
-
-
-Only snippets that are visible in the current scope are displayed. For example, if you are configuring a specific node, no global configuration snippets will be visible.
-
-To add a snippet, select the snippet that you wish to add and click the ADD button. For a snippet addition to take effect, you must commit your changes. Once you have included a snippet, the message to the left of the Manage Snippets button changes from `No configuration snippets included at this scope` to `There is one snippet included at this scope`.
-
-Use the snippet management frame to remove a snippet from your configuration. To remove a snippet click the X beside the desired snippet. *Note*: Doing this removes the snippet from your configuration but does not remove it from the Configuration Snippet library.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-automated-alerting.md b/content/momentum/3/3-reference/web-3-automated-alerting.md
deleted file mode 100644
index 947f59728..000000000
--- a/content/momentum/3/3-reference/web-3-automated-alerting.md
+++ /dev/null
@@ -1,144 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Automated Alerting Configuration"
-description: "To navigate to the automated alerting page choose Automated Alerting Configuration from the Administration menu You can use automated alerting to track the following events Rejections Track when permanent failure rates on a Binding or a Domain exceed a defined percentage Errors Track when a line is written to paniclog..."
----
-
-To navigate to the automated alerting page choose Automated Alerting Configuration from the Administration menu.
-
-You can use automated alerting to track the following events:
-
-* Rejections – Track when permanent failure rates on a Binding or a Domain exceed a defined percentage.
-
-* Errors – Track when a line is written to paniclog.ec with debug condition of ERROR or higher.
-
-The response can be in the form of an email or an SNMP trap.
-
-### Note
-
-Automated alerting requires that TMPDIR *not* be mounted with the `noexec` option. For more information see [“The `environment` File”](/momentum/3/3-reference/conf-ecelerity-conf#conf.environment.file).
-
-### Creating Rejection Alerts
-
-Rejection-based alerting only make sense if used with the `get_binding_domain_failure_rate` function, otherwise no meaningful results are produced. This "phase" alerts an administrator when delivery rates exceed a certain rejection threshold. These scriptlets are run at one minute intervals. For detailed documentation of the `get_binding_domain_failure_rate` function see [“The `get_binding_domain_failure_rate` Function”](/momentum/3/3-reference/web-3-automated-alerting#web3.get_binding_domain_failure_rate).
-
-The interface for automated alerting is identical to the policy editor interface. Select the type of alert that you wish to create by choosing either the REJECTIONS ALERTS tab or the LOG ALERTING tab.
-
-If you select REJECTION ALERTS and then choose to define a condition, you should see something similar to the following:
-
-
-
-
-
-
-As you can see, the available actions are:
-
-* Assign a variable – Variables are described in detail in [“Using Variables”](/momentum/3/3-reference/web-3-policy-editor#web3.policy.editor.variables).
-
-* Perform a regex match – Regex matching is described in detail in [“Using Regular Expressions with the Policy Editor”](/momentum/3/3-reference/web-3-policy-editor#web3.policy.editor.regex).
-
-* Get rate of failure for a given binding/domain combo – This is described in detail in [“The `get_binding_domain_failure_rate` Function”](/momentum/3/3-reference/web-3-automated-alerting#web3.get_binding_domain_failure_rate).
-
-* Send an email alert – See the explanation following [“Email alert”](/momentum/3/3-reference/web-3-automated-alerting#figure_email-alert).
-
-* Send an SNMP trap – This is described following [“SNMP alert”](/momentum/3/3-reference/web-3-automated-alerting#figure_snmp_alert).
-
-If you choose `Get rate of failure for a given binding/domain combo(get_binding_domain_failure_rate)` you will need to supply an existing binding and domain pair. The `period` is the time window in seconds over which you are tracking the failure rate.
-
-
-
-
-
-
-Use the action `Get rate of failure for a given binding/domain combo` to create a rejection rate condition. Note that this rate will be a floating-point number obtained by comparing the number of messages that fail permanently to the total number of messages sent on a specific Binding::Domain.
-
-If you choose to send an email as a result of exceeding the specified failure rate you need to provide the information as shown in the following image:
-
-
-
-
-
-
-Builds a simple, non-MIME, RFC2822 email message based on the supplied sender, recipient, subject and body content. The from and to must be simple RFC2821 email addresses, that is, addresses of the form user@domain with no friendly names or other surrounding punctuation.
-
-Pass in the following values in this order:
-
-1. from: the envelope sender, the "From" header for the generated email
-
-2. to: the envelope recipient, the "To" header for the generated email
-
-3. subject: the subject line for the generated email
-
-4. body: the body of the message
-
-5. throttle: if non-zero, limits sending to one message every "throttle" seconds.
-
-The body will have its line endings canonicalized and apply SMTP transfer encoding (also known as "dot-stuffing") applied. The generated message will have a Message-ID, Date and Received header generated, will be submitted for binding assignment, digital signing, be logged as a reception and then injected into the mail queue.
-
-** 3.11.1.1. The `get_binding_domain_failure_rate` Function**
-
-This function is only available for rejection-based alerts. It is intended to be called multiple times within the scriptlet (usually as a condition of an `If` statement). It returns the percentage failure rate of deliveries to a given binding/domain combination over a given period.
-
-Zero is returned if not enough data is available to make a result "statistically valid" (fewer than 100 attempted deliveries), the binding is not found, or the domain is not found.
-
-This function expects the following arguments:
-
-* `binding` – a string representing the binding in the binding/domain combination.
-
-* `domain` – a string representing the domain in the binding/domain combination.
-
-* `period` – an integer value in seconds representing the period over which the alert is valid.
-
-The following pseudo-code illustrates the use of this function:
-
-
-
-
-```
-If ANY of the following conditions are met:
-get_binding_domain_failure_rate("default", "test.messagesystems.com", 1800) Greater than 0.1
-Then take the following action(s):
-send_email("alert@example.com", "admin@company.com", "failure, test.messagesystems.com",
- "test.messagesystems.com threshold exceeded", 180)
-
-If ANY of the following conditions are met:
-get_binding_domain_failure_rate("pink_binding", "hotmail.com", 3600) Greater than 0.5
-Then take the following action(s):
-send_trap("string", "50% failure to hotmail.com", "10.10.19.83", "662",
- "public", "1.3.6.1.4.1.19552.1.4.7", "1.3.6.1.4.1.19552.1.4.1.0", 120)
-```
-
-In this example, an email will be sent if more than 10% of the mail delivery attempts to `test.messagesystems.com` over the default binding fail within a 30 minute period, and an SNMP trap will be generated if more than 50% of email delivery attempts to `hotmail.com` over `pink_binding` fail within an hour period.
-
-As of version 3.0.17, you may use `send_email` to send email to multiple recipients. Use commas or spaces to separate recipients.
-
-### Logging Alerts
-
-Use the Logging Alerts tab to create an email alert when a line is written to the `paniclog.ec` file with a debug level of `ERROR` or `CRITICAL`. This is done in exactly the same way that a rejection alert is created.
-
-If you wish to send an SNMP alert instead of an email alert you need to supply the values shown in the following image:
-
-
-
-
-
-
-A description of the fields follows:
-
-* `type` – The data type of the payload. Can be one of "string", "counter", "gauge" or "ip".
-
-* `payload` – The data to be sent with the trap. For "string" data, this must be a string. For "ip" data, this must be a string version of an IPv4 address. For "counter" and "gauge" types, it must be numeric.
-
-* `address` – The trap server address; an IPv4 address string.
-
-* `port` – The port number of the trap server.
-
-* `community` – The community for authorization by the trap daemon.
-
-* `mib` – The Management Information Base (MIB) for the trap. If not specified, this defaults to the Momentum enterprise MIB ("1.3.6.1.4.1.19552.1.4.7").
-
-* `trapvarmib` – The Object IDentifier (OID) to use for the trap variable. If unspecified, defaults to "1.3.6.1.4.1.19552.1.4.1.0".
-
-* `throttle` – If this value is non-zero, it limits sending to one trap every "throttle" seconds. For example, if `throttle` is set to `300`, then an email alert may be sent every 5 minutes. If multiple paniclog entries of debug level `ERROR` or `CRITICAL` are written within 5 minutes, then only one email alert is sent.
-
-Also choose the desired operator and value. You can access the log entry using the `logline` variable which contains the entire text of the log entry.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-dashboard.md b/content/momentum/3/3-reference/web-3-dashboard.md
deleted file mode 100644
index 931f5767d..000000000
--- a/content/momentum/3/3-reference/web-3-dashboard.md
+++ /dev/null
@@ -1,110 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "The Dashboard"
-description: "The dashboard is meant to give you a quick overview of the state of your MTA Summary statistics are shown on the left side of the page as pictured below Figure 3 2 Summary statistics Summary statistics and queue sizes are shown by protocol There is provision for displaying SMPP..."
----
-
-The dashboard is meant to give you a quick overview of the state of your MTA. Summary statistics are shown on the left side of the page as pictured below:
-
-
-
-
-
-
-Summary statistics and queue sizes are shown by protocol. There is provision for displaying SMPP and MM7 statistics even if the Mobile modules are not loaded. If your installation supports Mobile Momentum and you wish to view Mobile statistics in the web UI, be sure to load the "real time" loggers. For more information see [“Logging and the Web UI”](/momentum/3/3-reference/operations-logging#operations.logging.web.ui).
-
-Real-time statistics are shown on the left side of the page below the summary statistics:
-
-
-
-
-
-
-At a glance you can see the number of items in the active and delayed queues and the number of receptions, deliveries and bounces. Statistics for client errors and rejections are also shown.
-
-When the dashboard is first opened, the STATS tab is selected. You can choose how to view the statistics by choosing from the Statistical Breakdown by drop-down list box. The options are:
-
-* Domains
-
-* Bindings
-
-* Domains and Bindings
-
-Choose the TRANSFAILURES tab to view transient failures and choose the BOUNCES tab to view bounces.
-
-On the right hand side of the screen is a graphical representation of the inbound and outbound queues, the connections and also a graph that shows the total in both queues. You should see something similar to the graphs pictured below:
-
-
-
-
-
-
-By default you are shown statistics for the last hour. If you wish to view a different time period use the controls shown below:
-
-
-
-
-
-
-To specify a custom period, use the Custom Period text boxes. You can also zoom in a specific time frame using the buttons to the right of Zoom label.
-
-### Viewing by Domain
-
-From the dashboard you can view a specific domain by clicking the domain name in the statistical breakdown list or by clicking the DOMAIN menu option on the main menu.
-
-When viewing a specific domain the left side of the screen contains statistical information for that specific domain and graphs of inbound and outbound traffic.
-
-The following tabs are found on the right hand side of the screen:
-
-* Transfailures
-
-* Bounces
-
-* Queues
-
-* Return Path
-
-* Stats
-
-The TRANSFAILURES (transient failures) tab shows a list of transient failures with reason, count and percentage columns.
-
-The BOUNCES tab shows all bounces broken down by classification.
-
-The STATS tab shows the same information as is shown in the Real-Time Stats frame but organizes the information by binding.
-
-The RETURN PATH tab shows a deliverability report for the current domain. This tab is for users who subscribe to the [Return Path](http://www.returnpath.net) services.
-
-Return Path provides statistics for email marketing campaigns. These statistics are updated every five minutes by the `/opt/msys/ecwebui/scripts/returnpath_poll.pl` script. Clicking this tab dumps Campaigns and ISP Data from the `returnpath` schema.
-
-Campaigns:
-
-```
-campaignid, matchingid, subject, fromdomain, inboxpercent,
-bulkpercent, missingpercent, duplicatecount, firstseen, lastseen, customername
-```
-
-ISP Data:
-
-```
-campaignid, isp, inboxpercent, bulkpercent, missingpercent,
-dupicatecount, firstseen, lastseen
-```
-
-### Note
-
-The Return Path functionality was removed as of Momentum 3.5.1.
-
-A discussion of the QUEUES tab follows.
-
-** 3.3.1.1. The Queues Tab**
-
-Select the QUEUES tab to view mail that is in the queues. The Show drop-down list box lets you view the active queue, the delayed queue or both.
-
-You can view the details of any item in the queue by clicking the + button beside a specific item. Doing this displays the details of an email as shown below:
-
-
-
-
-
-
-When viewing the message detail you can rebounce, purge or retry a specific message using the buttons on the upper left hand side. You can also do this for *all* the messages that appear in the queue.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-filters.md b/content/momentum/3/3-reference/web-3-filters.md
deleted file mode 100644
index b3625e383..000000000
--- a/content/momentum/3/3-reference/web-3-filters.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Filtering"
-description: "In addition to selecting a specific domain you can also filter for specific subclusters nodes bindings and in Momentum for Receiving pathways To do this choose the Filter menu option You should see something similar to the following Figure 3 8 Filtering In the SUB CLUSTERS NODES section as a..."
----
-
-In addition to selecting a specific domain you can also filter for specific subclusters, nodes, bindings and, in Momentum for Receiving, pathways. To do this choose the Filter menu option. You should see something similar to the following:
-
-
-
-
-
-
-In the SUB_CLUSTERS & NODES section, as a minimum, you must select at least one sub-cluster or one node. Failure to do so results in the following error message: `The subcluster / node selection must contain at least one subcluster or node.` The SUB_CLUSTERS & NODES configuration then reverts to the previous configuration.
-
-In addition to selecting the nodes and subclusters you can also select a specific binding from the list of bindings that appears on the right hand side of the page. As of version 3.0.23, you can also filter pathways.
-
-To select all bindings, click the SELECT ALL link and to deselect all bindings use the DESELECT ALL link.
-
-The filters that you choose show up as the Selected Filters on any web page.
-
-
-
-
-
-
-The meanings of the letters in parentheses are as follows:
-
-* `c` – cluster
-
-* `n` – node
-
-* `b` – binding
-
-* `p` – pathway (since 3.0.23)
-
-You can toggle the display of selected filters by clicking the Selected Filters tab.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-overview.md b/content/momentum/3/3-reference/web-3-overview.md
deleted file mode 100644
index fc0d7cbad..000000000
--- a/content/momentum/3/3-reference/web-3-overview.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Web Console Overview"
-description: "The web console opens on the dashboard a page that gives you a quick overview of the state of your system The menu options are as shown below Figure 3 1 Overview The reporting page offers a more specific view of the data presented on the dashboard page and the..."
----
-
-The web console opens on the dashboard—a page that gives you a quick overview of the state of your system. The menu options are as shown below.
-
-
-
-
-
-
-The reporting page offers a more specific view of the data presented on the dashboard page and the administrative page is used to change your configuration and to manage users while the status page displays the status of your installation. In a cluster configuration it displays a status line for each node, providing an easy means of determining that your nodes are online.
-
-### Note
-
-[“Overview”](/momentum/3/3-reference/web-3-overview#figure_console_overview) shows Momentum for Receiving. Momentum for Sending does not have a Paths menu option.
-
-As of version 3.4, domain information is available under the REPORTING menu only.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-paths-page.md b/content/momentum/3/3-reference/web-3-paths-page.md
deleted file mode 100644
index 499b91b77..000000000
--- a/content/momentum/3/3-reference/web-3-paths-page.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "The Paths Page"
-description: "Configuration Change This feature is available starting from Momentum 3 0 23 As of version 3 0 23 the Paths page is available for Momentum for Receiving When Momentum is first installed no audit series are displayed on this page Figure 3 30 Paths In order to populate the Series..."
----
-
-**Configuration Change. ** This feature is available starting from Momentum 3.0.23.
-
-As of version 3.0.23, the Paths page is available for Momentum for Receiving. When Momentum is first installed, no audit series are displayed on this page.
-
-
-
-
-
-
-In order to populate the Series to display text area, set up audit_series for the types of events you wish to view such as connections, messages and spam. In order to do this you must first load and configure the inbound_audit module. For instructions on doing this see [inbound_audit](/momentum/3/3-reference/3-reference-modules-inbound-audit).
-
-Once the inbound_audit module is loaded, you can create audit series as described in [Sieve audit_series](https://support.messagesystems.com/docs/web/sieve.ecaddons#sieve.ectypes_audit_series) and [audit_series](https://support.messagesystems.com/docs/web/sieve.ref.audit_series). The audit series that you create will show up in the Series to display text area. Select a CIDR block and the series that you wish to display and click the SHOW REPORT button. You should see something similar to the following:
-
-
-
-
-
-
-The audit series that you select are displayed to the right of the IP address. To view the details for a specific IP address, click the IP address.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-policy-editor.md b/content/momentum/3/3-reference/web-3-policy-editor.md
deleted file mode 100644
index 98c49a98d..000000000
--- a/content/momentum/3/3-reference/web-3-policy-editor.md
+++ /dev/null
@@ -1,270 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "The Policy Configuration Editor"
-description: "In version 3 0 of Momentum you can implement policy using the policy editor To use the editor navigate to the Administration page and choose the Policy Configuration Editor You should see a screen similar to the following Figure 3 46 Configuring policy There are three phases that policies may..."
----
-
-In version 3.0 of Momentum you can implement policy using the policy editor. To use the editor, navigate to the Administration page and choose the Policy Configuration Editor. You should see a screen similar to the following:
-
-
-
-
-
-
-There are three phases that policies may be bound to. These are:
-
-* `Data` – This phase executes first and is analogous to the Sieve++ data_phase1\. Scriptlets in this phase are called after the entire body of the message has been received. Additionally, this phase is called only once per message (as opposed to once for each recipient).
-
- During this phase, calling `get_rcptto` doesn't make sense as there could be multiple recipients for the message.
-
-* `Each Recipient` – Prior to execution of this phase, one message is created for all RCPT TOs found in the envelope. This phase handler is then called for each of these messages.
-
- Beginning in this phase, `get_rcptto` can be used to determine the destination address of the message and destination-based policy decisions can be made. This is the second phase.
-
-* `Set Binding` – This phase, like the `Each Recipient` phase, is called once for each recipient of a message. It is the only phase that may successfully set a binding or binding group.
-
- If you wish to set a binding based on the results of a previous phase, you should use the `vctx_mess_*` or `vctx_conn_*` functions to do this. For more information about these functions see [“Actions”](/momentum/3/3-reference/web-3-policy-editor#web3.script.actions). Setter functions should be used in previous phases, and getter functions in this phase.
-
- The `Set Binding` phase executes last.
-
-To create policy scripts you must have the alerting module installed. The default configuration file contains this module but if you migrated from Momentum version 2.2, you will need to add it. For instructions on adding this module see [“Adding a Module”](/momentum/3/3-reference/web-3-administration#web3.adding_module).
-
-### Note
-
-If you are familiar with Lua, you can write your own policy scripts without the help of the web UI. For more information see [“Implementing Policy Using Scriptlets”](/momentum/3/3-reference/3-reference-implementing-policy-scriptlets). Note that scripts created manually cannot be edited in the web UI and those created using the web UI cannot be edited by hand.
-
-### Creating a Script
-
-To create a script to execute during the data phase first select the DATA tab. Mouse over the Add a top-level statement line to expose the down arrow. Click this arrow and choose INSERT INTO LINE and IF STATEMENT. You should see something similar to the following image.
-
-
-
-
-
-
-Use the ASSIGN VARIABLE option to assign a value to a variable. If you know Lua and wish to create custom code, choose the CUSTOM CODE option.
-
-Clicking IF STATEMENT produces the following output:
-
-
-
-
-
-
-To add a condition to the `if` statement mouse over the line If ALL of the following conditions are met:, click the down arrow and choose to insert a condition. Doing this opens the condition dialog box.
-
-
-
-
-
-
-Create a condition by selecting a function, an operator and a value. Pay special attention to the note about double quotation marks.
-
-### Actions
-
-Clicking the down arrow on the Function drop-down list box displays the available functions. Find below a description of these functions:
-
-* `get_mess_recv_via` – Returns the IP:port combination on which the message was received. The format is `192.168.0.5:587`.
-
- ### Warning
-
- In versions of Momentum prior to 3.0.18, using this function causes duplicate sending. To fix this problem upgrade to version 3.0.18 or download the appropriate version of the packages, msys-ecelerity-core-3.0.17.34536-*`TYPE.version.os.arch`*.rpm and msys-ecelerity-cluster-3.0.17.34536-*`TYPE.version.os.arch`*.rpm. These packages can be installed on top of an existing 3.0.17 installation in the following way:**rpm -Uvh *`filename`*** .
-
- This function accepts one argument, `ip_only`, which returns only the IP on which the message was received. If only the IP is desired, `ip_only` must be set to `1`. Setting `ip_only` to any other value returns the full IP/port combination. This function is typically used to identify a binding assignment where the binding is identified by an IP.
-
-* `get_mess_recv_from` – Returns the IP:port combination from which the message was received. The format is `192.168.0.5:2025`.
-
- ### Warning
-
- In versions of Momentum prior to 3.0.18, using this function causes duplicate sending. To fix this problem upgrade to version 3.0.18 or download the appropriate version of the packages, msys-ecelerity-core-3.0.17.34536-*`TYPE.version.os.arch`*.rpm and msys-ecelerity-cluster-3.0.17.34536-*`TYPE.version.os.arch`*.rpm. These packages can be installed on top of an existing 3.0.17 installation in the following way:**rpm -Uvh *`filename`*** .
-
- Like `get_mess_recv_via`, this function accepts one argument `ip_only`. If only the IP is desired, `ip_only` must be set to `1`. Setting `ip_only` to any other value returns the full IP/port combination. This function is used to set policy based on the sending address or network
-
-* `vctx_mess_get` – Returns a message validation context value by passing in the key. The argument must be a string value. This function returns the context value or `nil`, if the message context variable is not set.
-
- Since variables in Lua scriptlets do not persist between phases, it is often useful or necessary to use the `vctx_mess_get` and the `vctx_mess_set` functions to keep state between phases. These functions set variables that last for the lifetime of the message. For this reason they are useful to do destination-based policy assignment between the validate_data_spool_each_rcpt phase and the validate_set_binding phase.
-
- The message context is cleared when the client sends a RSET command. If you need to set a variable to last the lifetime of the connection (to implement quick-pass rules for trusted senders, for example), use `vctx_conn_get` and `vctx_conn_set` instead, as they last for the lifetime of the connection.
-
-* `vctx_mess_set` – Sets a message validation context value by passing in the key and the value. Be sure to enclose the value in double quotation marks. This function returns `1` on success and `nil` on failure. See also the `vctx_mess_get` function above.
-
-* `vctx_conn_get` – Returns a connection validation context value by passing in the key. This function is analogous to the `vctx_mess_get` function. See above for more detail.
-
-* `vctx_conn_set` – Sets a connection validation context value by passing in the key and value. Be sure to enclose the value in double quotation marks. This function is analogous to the `vctx_mess_set` function. See above for more detail.
-
-* `get_mailfrom` – Returns the envelope MAIL FROM. This function takes no arguments and returns a string in the format "*`user@example.com`*".
-
-* `get_rcptto` – Returns the envelope RCPT TO. This function takes no arguments and returns a string in the format "*`user@example.com`*".
-
-* `get_header` – Get the value of the specified header. On success this function returns the value of the header field passed in or `nil` if the header can't be found.
-
-* `del_header` – Delete a header passing in the name of the header to be deleted. It does not return a value.
-
-* `set_binding` – Set the binding to the value passed in. If commas appear, it is a list of bindings, and one binding is picked at random.
-
-* `set_binding_group` – This function randomly picks a binding from the named binding group and assigns the message to it. This function will not pick bindings that are unplumbed or that belong to a different node in the cluster; it always picks a valid binding that belongs to the node.
-
-* `get_variable` – Returns the value of the script variable passed in.
-
-* `set_variable` – Sets the value of a script variable. Pass in the name of the variable to be set and the value to set it to. Be sure to enclose the value in double quotation marks. For more information see [“Using Variables”](/momentum/3/3-reference/web-3-policy-editor#web3.policy.editor.variables).
-
-* `pcre_match` – Performs a PCRE regex match operation. Pass in the string to be matched and the PCRE regex pattern to match against. Be sure to enclose both values in double quotation marks. For more information see [“Using Regular Expressions with the Policy Editor”](/momentum/3/3-reference/web-3-policy-editor#web3.policy.editor.regex).
-
-### Using Variables
-
-Variables my be set by selecting `Assign a variable` from the script editor's insertion menu. Each variable must be named and assigned a value. Names must begin with either an underscore or an alphabetic character. Variables may not start with a number. Values may be:
-
-* A string enclosed in double quotation marks
-
-* A number
-
-* A list, a series of strings, numbers, or lists enclosed in square brackets
-
-* The result of another function call
-
-* Another variable
-
-Variables can be used wherever a literal value would be used, including:
-
-* Conditionals
-
-* Comparisons
-
-* As function arguments
-
-* Assigned to other values
-
-When using a variable, for example, as the argument to a function, simply type the variable name. *Strings not enclosed by quotation marks are always assumed to be variable names.*
-
-### Note
-
-When assigning literal strings as values always use quotation marks. A common error is to use a bare string. Such "strings" are interpreted as uninitialized variables and have a default value of `nil`. Also, when setting list variables to literal strings be sure to use quotation marks.
-
-** 3.10.3.1. Variable Lifetime**
-
-A variable set in a policy or alerting script only exists through one execution of a script.
-
-Take, for example, two emails that are sent through the system, five minutes apart. The first is sent by `george@example.com` and the second by `james@test.com`. Both pass through a binding assignment script that sets a variable called `domain`, containing the domain name part of the sender address. During processing of the first message, the domain variable is set to `example.com`. When the second message is processed, domain has no value before being set to `test.com`. Variable values do not persist from one script execution to the next.
-
-In the Policy and Alerting editors, variables may be accessed anywhere in a script after their value has been set. Additionally, they are only usable in the phase in which they are defined.
-
-### Operators
-
-The numeric operators are as follows:
-
-* `Greater than`
-
-* `Greater than or equal to`
-
-* `Less than`
-
-* `Less than or equal to`
-
-* `Is` and `Isn't` are used for Numeric equality and inequality as well as for string comparison
-
-These operators function exactly as you would expect.
-
-The string comparison operators are as follows:
-
-* `Contains` – Returns true if the substring is found, otherwise false.
-
-* `Doesn't contain` – the negation of `Contains`.
-
-* `Is` – tests for an exact match. For example, comparing the string `foo` to `foo.com` yields false, but comparing it to `foo` yields true.
-
-* `Isn't` – The negation of `Is`.
-
-* `Matches` – Returns true if the regular expression matches the subject. This operator uses PCRE matching functionality for value comparison. All the features of PCRE matching by the `pcre_match` function (including captures) are available. For more information see [“Using Regular Expressions with the Policy Editor”](/momentum/3/3-reference/web-3-policy-editor#web3.policy.editor.regex).
-
-* `Doesn't match` – The negation of `Matches`.
-
-### Using Regular Expressions with the Policy Editor
-
-`pcre_match` is a useful function in the Policy and Alerting script editors. It takes two arguments, subject and pattern. The subject is the string to be matched, and the pattern is the regular expression to match against the string.
-
-For a good overview of PCRE functionality, see the `pcrepattern` manpage The PCRE implementation in the policy editor supports most of the features listed in this manpage, with the exception of callouts.
-
-### Note
-
-The pattern must not be delimited by forward slashes, pipes, commas, or any other delimiter as you would do in Perl.
-
-When doing regular expression matching using the policy editor, Perl-compatible matching escape sequences need to be double-backslashed.
-
-For example, the following expression works:
-
-```
-require("msys.pcre");
-print(tostring(msys.pcre_match("127.0.0.1:25", "\\d+\\.\\d+\\.\\d+\\.\\d+:\\d+")));
-```
-
-Single-backslashes do not work.
-
-Double backslashes must also precede the special characters ‘`w`’, ‘`W`’, ‘`s`’, ‘`S`’, and so on.
-
-PCRE captures are supported within the script editor. There are two types of captures: un-named captures (known plainly as "captures") and named captures. Both captures and named captures let you match certain portions of a subject and reference those portions using variables.
-
-Captures return their matches in numeric order and are referenced using the numeric index preceded by a dollar sign. The first capture is referenced using `$1`, the second using `$2` and so on. Find an example below.
-
-
-
-
-
-
-Named captures differ in that the captures are assigned names, improving readability of the regular expression. As with captures, named captures are prefixed with a dollar sign. A named capture called `localpart` would be referenced in the script as `$localpart`. In the following example, `$localpart` would be equal to `foo.com`.
-
-`pcre_match("me@foo.com", "^(?\\w+)@(?[\\w\\d\\.\\-]+)$");`
-### Creating a Simple Script
-
-This section creates a script that sets a binding based on the email address of the recipient.
-
-The steps are as follows:
-
-1. Go to the Policy Configuration Editor page and choose the SET BINDING tab.
-
-2. Add a top level statement that inserts an `if` statement into the first line.
-
-3. Insert a condition into the `if` statement line.
-
-4. In the condition dialog box, choose the function `Get Envelope Recipient`, choose the operator `Is` and then add the value that you wish to match to the `Value` text box. Be sure to enclose this literal in double quotation marks.
-
-5. Insert a line into the Then take the following actions: line choosing Take an action. From the dialog box choose `Assign a binding`.
-
-6. Add a literal to the Binding textbox being sure to enclose this value in double quotation marks.
-
-7. Remove the Otherwise take these action(s): line. This line is only required if you wish to specify an `else` condition.
-
-Your screen should look something like the following:
-
-
-
-
-
-
-Be sure to click the Save button before navigating away from this page. Like configuration changes, scripts are saved to the repository so clicking the Save button displays your changes before committing to the repository. Once your script has been saved, it should always appear whenever you navigate to the SET BINDING tab.
-
-The preceding example assumes that a binding named `gmail` has already been defined. Whenever there is a recipient with the email address `person@gmail.com`, that email will be assigned to the `gmail` binding.
-
-If you wish to edit a script, click the line that you wish to edit. To delete a line click the down arrow and click DELETE. To remove a Then take the following action(s) line, you must delete the line that holds the `if` statement. If you wish to add an `else` condition to an existing `if` statement, click the down arrow on the `if` statement line, choose INSERT INTO LINE and then ELSE STATEMENT.
-
-### Warning
-
-Scripts created using the web UI **cannot** be edited by hand.
-
-### Inserting Custom Code
-
-If you are familiar with the Lua scripting language you can insert custom code into a script. Do this by choosing the CUSTOM CODE option shown in the following image:
-
-
-
-
-
-
-Choosing this option opens a dialog box with a text area used for entering Lua code.
-
-For example, to add custom code to the script described in [“Creating a Simple Script”](/momentum/3/3-reference/web-3-policy-editor#web3.create.simple.script), insert a line after the final line and choose the CUSTOM CODE option. Enter the text `print("Assigned to gmail binding")` and then save your changes.
-
-After this change, each time that your script executes, a log entry similar to the following entry, will be written to the `paniclog.ec` file.
-
-`1250701342:scriptlet: Assigned to gmail binding.`
-
-Using `print` from within a scriptlet is equivalent to using the `ec_log` function from a Sieve script.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-reports.md b/content/momentum/3/3-reference/web-3-reports.md
deleted file mode 100644
index 08fba005d..000000000
--- a/content/momentum/3/3-reference/web-3-reports.md
+++ /dev/null
@@ -1,337 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "The Reporting Page"
-description: "Navigate to the Reports page and choose from the following options presented in the Report list box Deliveries Rejections As of version 3 0 23 Bounces Transient Failures Delivery Times Long Short Codes Mobile Momentum only Mobile Latency Mobile Momentum only Domain Adaptive Delivery Available only when the adaptive module..."
----
-
-Navigate to the Reports page and choose from the following options presented in the Report list box.
-
-* Deliveries
-
-* Rejections (As of version 3.0.23.)
-
-* Bounces
-
-* Transient Failures
-
-* Delivery Times
-
-* Long & Short Codes (Mobile Momentum only)
-
-* Mobile Latency (Mobile Momentum only)
-
-* Domain
-
-* Adaptive Delivery (Available only when the adaptive module is loaded)
-
-### Note
-
-The various reports displayed under this menu are based on the watchlist rather than all traffic. The watchlist is a schema that is created automatically in the ecelerity PostgreSQL database. If you wish to see stats for all domains you need to change the value of the `rt_stats_watchlist_only` option in the ec_rotate.conf file.
-
-As of Momentum version 3.3, a reporting role has been added. For more information see [“Adding the Reporting Role to a User”](/momentum/3/3-reference/web-3-users#web3.reporting.role.creating).
-
-### Deliveries
-
-When you first navigate to the Reporting page, delivery statistics are displayed. You should see a report such as the following:
-
-
-
-
-
-
-You can expand the information about a domain by clicking the + to the left of a domain name. Doing this displays:
-
-* Delivered
-
-* In-Band Bounces
-
-* Out-of-Band Bounces
-
-* Permanent Failures
-
-* Max Delivery Time
-
-As with other reporting menus, you can select the period show, and export data to a CSV file if you wish.
-
-### Rejections
-
-**Configuration Change. ** This feature is available starting from Momentum 3.0.23.
-
-To view rejections select `Rejections` from the list box on the REPORTING page. You should see something similar to the following:
-
-
-
-
-
-
-As with other reporting menus, you can select the period shown, view detail by clicking + and also export data to a CSV file if you wish.
-
-### Bounces
-
-Overall bounce statistics are detailed on the left side of the page. Domain-specific information is detailed on the right hand side.
-
-To view the bounce report select `Bounces` from the list box on the REPORTING page. You should see something similar to the following:
-
-
-
-
-
-
-As with other reporting menus, you can select the period show, and export data to a CSV file if you wish.
-
-To view details relating to a specific domain, click the + to the left of a domain name. Doing this takes you to the domain view discussed in [“Domain”](/momentum/3/3-reference/web-3-reports#web3.reports.domains).
-
-### Transient Failures
-
-This page displays overall transient failure statistics and the top twenty watched domains with transient failures.
-
-
-
-
-
-
-You can toggle the details of a top twenty domain using the button to the left of the domain name.
-
-### Delivery Times
-
-Use the Delivery Times link for a graphical display of deliveries as shown in the following:
-
-
-
-
-
-
-### Long & Short Codes (Mobility only)
-
-Use the Long & Short Codes link for a graphical display of SMS data by protocol as shown in the following:
-
-
-
-
-
-
-Choose how data is displayed by selecting from the list box on the left side of the report. Use the list box on the right for displaying:
-
-* in number of messages
-
-* in volume of messages
-
-* in segments
-
-### Mobile Latency (Mobility only)
-
-Use the Mobile Latency link for a graphical display of latency as shown in the following:
-
-
-
-
-
-
-To download a CSV file of this report, click the Export report as CSV (for Excel) link. The data associated with the report shown in [“Mobile latency”](/momentum/3/3-reference/web-3-reports#figure_mobile_latency) is as follows:
-
-```
-"Mobile Latency Breakdown"
-"Time Range",Count
-"< 5 seconds","3,735"
-"5 seconds - 30 seconds",0
-"30 seconds - 1 minutes",0
-"1 minutes - 2 minutes",0
-"2 minutes - 5 minutes",0
-"5 minutes - 10 minutes",0
-"10 minutes - 30 minutes",0
-"30 minutes - 1 hours",0
-"1 hours - 2 hours",0
-"2 hours - 3 hours",0
-"3 hours - 4 hours",0
-"4 hours - 5 hours",0
-"5 hours - 6 hours",0
-"6 hours - 8 hours",0
-"8 hours - 10 hours",0
-"10 hours - 12 hours",0
-"More than 12 hours",0
-```
-
-### Domain
-
-To view the report for a domain, select `Domain` from the list box on the REPORTING page. When you make this selection, you are first prompted for the name of a domain. After entering one, you should see something similar to the following:
-
-
-
-
-
-
-As with other reporting menus, you can select the period shown.
-
-When this page is first opened, the Transfails tab is selected. This tab shows transient failures by reason as shown in [“Domain reports”](/momentum/3/3-reference/web-3-reports#figure_domain_reports).
-
-Use the Bounces tab to display hard bounces by classification.
-
-Choose the Queues tab to display the messages in the queues. You should see something similar to the following:
-
-
-
-
-
-
-By default messages in both the active and the delayed queues are shown. You can change this using the Show list box. After doing this, refresh the display using the SHOW button.
-
-You can retry, bounce or purge the entire domain using the buttons bearing the action names.
-
-View message details by clicking the + button beside a message. You can retry, bounce or purge a specific message using the buttons that are exposed along with message details.
-
-The RETURN PATH tab is for users who subscribe to the [Return Path](http://www.returnpath.net) services. It shows a deliverability report for the current domain.
-
-The STATS tab displays the following columns:
-
-* binding name
-
-* active queue
-
-* delayed queue
-
-* recipients
-
-* delivered
-
-* permanent failures
-
-* transient failures
-
-### Custom Reports
-
-**Configuration Change. ** This feature is available as of version 3.3.
-
-To view custom reports select the Custom option from the Reports drop-down list box on the REPORTING page. Available reports are shown in the list box on the right as pictured below:
-
-
-
-
-
-
-### Note
-
-To create custom reports, see your Professional Services representative.
-
-Note that the Custom reporting option will not appear if there are no custom reports defined in the system.
-
-Riak server failure may cause unpredictable results for Custom reports. If, for example, the Custom Reports menu item disappears, this may indicate that a Riak server has failed.
-
-After selecting a report, you should see something similar to the following:
-
-
-
-
-
-
-The REPORT DATA tab shows the parameters that are required in order to create a report. In the example show in [“Report data tab”](/momentum/3/3-reference/web-3-reports#figure_custom_report_data), a domain, date and threshold are required. You must supply a value for each parameter.
-
-Once you have specified criteria, use the RUN REPORT button to display the data. You should see something like the following:
-
-
-
-
-
-
-Use the down arrow icon on the right above the report columns to download the report in CSV format. Use the icon beside the download icon to create a menu link to the current report.
-
-The parameter listing along the top, which gives you a rough idea of how the report was created. For more detail see the DETAILS tab.
-
-Use the RE-RUN button to rerun a report. The parameter interface will be displayed with the current values pre-filled. The user may alter these before running the report again.
-
-### Adaptive Reports
-
-### Note
-
-This menu option is available as of Momentum version 3.3 and is only applicable if you are using the adaptive module and have set `enable_jlog` to `true`. For more information see [“adaptive – Adaptive Delivery”](/momentum/3/3-reference/3-reference-modules-adaptive).
-
-Adaptive reports are dependent upon the [adaptive_loader](/momentum/3/3-reference/executable-adaptive-loader) script.
-
-To view adaptive reports, click the Reporting tab and choose Adaptive Delivery from the drop-down list box. You should see something similar to the following:
-
-
-
-
-
-
-When you choose `Adaptive Reports` the following reports are available from the drop-down list box on the right:
-
-* Top 20 Bindings by Number of Receptions – This report has the following column headers: Binding, Receptions, Deliveries, Transfails and Permfails.
-
-* Top 20 Domains by Number of Receptions – This report has the same column headers as "Top 20 Bindings by Number of Receptions".
-
-* Binding/Domains Modified by AD – This report has the same column headers as "Top 20 Bindings by Number of Receptions".
-
-* Bounce Classes by Specific Adaptive – This report has the following column headers: Binding/Domain, Bounce Class, Transfails and Permfails
-
-* AD Adjustments – This report has the following column headers: Binding, Domain, Node, Variable, Initial, Updated and Changes
-
-* AD Suspensions – This report has the following column headers: Binding, Domain, Node, Start and Stop
-
-* AD Blackholes – This report has the same column headers as "AD Suspensions"
-
-* Top 20 Permanent Failure Reasons – This report has the following column headers: Reason and Bounced
-
-* AD Summary/Statistics Report – This report has the following column headers: Receptions, Deliveries, Transfails and Permfails
-
-** 3.6.10.1. Adaptive Delivery Report Details**
-
-The bindings and domains reports show the top twenty bindings and domains. The Adaptive Delivery bindings report is shown below:
-
-
-
-
-
-
-Use the down arrow button to the right of a report name to download the current report in CSV format.
-
-To fine-tune the time period for a report choose from the controls below the Report list box. You can manually specify a start and end time using the text boxes immediately below the Report list box. For ease of use, clicking in either of these text boxes displays a calendar widget. For a fixed time period, such as the previous week, use the appropriate button. Click Update after choosing a period.
-
-By default the bindings report is sorted by receptions. You can change the way that any report is sorted by clicking a column heading. For example, to sort by deliveries click the Deliveries header.
-
-The domains report has the same format as the bindings report.
-
-The Bindings/Domains Modified by AD report is as follows:
-
-
-
-
-
-
-The Adaptive Delivery bounce classes report is as follows:
-
-
-
-
-
-
-Any custom codes set up using [“bounce_classifier_override – The Bounce Classifier Override Module”](/momentum/3/3-reference/3-reference-modules-bounce-classifier-override) will also show up in this report. The text associated with a custom code is User-Defined Classification: *`code_number`*.
-
-The Adaptive Delivery adjustments report is as follows:
-
-
-
-
-
-
-The Adaptive Delivery blackholes report is as follows:
-
-
-
-
-
-
-The Adaptive Delivery suspensions report has the same column headers as "AD Blackholes".
-
-The Adaptive Delivery top twenty permanent failures report is as follows:
-
-
-
-
-
-
-The Adaptive Delivery summary statistics report is as follows:
-
-
-
-
-
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-starting-web-console.md b/content/momentum/3/3-reference/web-3-starting-web-console.md
deleted file mode 100644
index 9b2a4b372..000000000
--- a/content/momentum/3/3-reference/web-3-starting-web-console.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Starting the Web Console"
-description: "The web console is configured to start automatically as a service on the machine where it is installed If you did not start the web console immediately after installation you can start it up as a service by issuing the command etc init d ecwebconsole start Doing this starts up..."
----
-
-The web console is configured to start automatically as a service on the machine where it is installed.
-
-If you did not start the web console immediately after installation you can start it up as a service by issuing the command, **`/etc/init.d/ecwebconsole start`** . Doing this starts up the `httpd` daemon. `restart` and `stop` are also valid options with **ecwebconsole**.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-status.md b/content/momentum/3/3-reference/web-3-status.md
deleted file mode 100644
index c44ed897a..000000000
--- a/content/momentum/3/3-reference/web-3-status.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Cluster Status"
-description: "Choose the STATUS menu option to view the status of all the nodes in your cluster Figure 3 7 Node status Use this page for a quick overview of the status of individual nodes and for determining whether nodes are online or not Use the SHOW NODE CONTROLS link to..."
----
-
-Choose the STATUS menu option to view the status of all the nodes in your cluster.
-
-
-
-
-
-
-Use this page for a quick overview of the status of individual nodes and for determining whether nodes are online or not.
-
-Use the SHOW NODE CONTROLS link to display buttons for restarting or shutting down specific nodes.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3-users.md b/content/momentum/3/3-reference/web-3-users.md
deleted file mode 100644
index 0a5ab4b3c..000000000
--- a/content/momentum/3/3-reference/web-3-users.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Administering Users From the Web Console"
-description: "In order to administer users you must be logged in as a superuser The user named admin created during installation is a superuser You cannot create superusers through the web UI use ec uipasswd instead If you choose to authenticate against Active Directory the User Management menu will be removed..."
----
-
-
-
-In order to administer users, you must be logged in as a superuser. The user named `admin` created during installation is a superuser. You cannot create superusers through the web UI, use [ec_uipasswd](/momentum/3/3-reference/executable-ec-uipasswd) instead.
-
-### Warning
-
-If you choose to authenticate against Active Directory, the User Management menu will be removed from the web UI.
-
-To administer users click the Administration tab and choose the User Management link. This menu is used to create, remove or update users and groups.
-
-If this is the first time that you have logged in to the web console you should see something similar to the following:
-
-
-
-
-
-
-To begin adding a new user click the New User button. Supply a username and password and click the Create button to create the new user.
-
-When a user is newly created, you can assign groups to that user as shown in the following:
-
-
-
-
-
-
-By default, all new users are members of the `users` group. To make a user a superuser, select the `admin` group from the left column and click the ADD button. To apply your changes, click the UPDATE button.
-
-The newly created user should appear below the `admin` user. An X appears to the left on the same line as the new user name. Use this button to delete the user. Notice that you cannot delete the `admin` user. You can, however, change the password for the admin user by clicking on `admin` and entering a new password in the text box that opens on the right side of the page. You can also change the password for regular users in the same way.
-
-You may also use the **ec_uipasswd** command to administer users. You can use this command to give a regular user superuser privileges if you did not do this when the user was created. You can also add users or groups using the **ec_uipasswd** command. If you have forgotten the password for the administrator, you can use this command to create a new superuser in order to log in to the web UI. For more information see [ec_uipasswd](/momentum/3/3-reference/executable-ec-uipasswd).
-
-Adding or changing users takes effect immediately and does not require that files be committed. However, the default configuration on nodes is to cache database lookups for a few minutes, so changes to passwords may take a few minutes to take effect.
-
-### Adding the Reporting Role to a User
-
-**Configuration Change. ** The reporting role is available as of Momentum version 3.3.
-
-By default all new users added through the web UI have access to the reporting menu. To add a user with the reporting role only, create a new user as described in [“Administering Users From the Web Console”](/momentum/3/3-reference/web-3-users) and then select this user from the list of users. You should see something similar to the following:
-
-
-
-
-
-
-By default, all new users are members of the `users` group. If you wish to create a user with only the reporting role, first remove the `users` role and then add `reporting`.
-
-A user with only the reporting role does not have access to the ADMINISTRATION menu and is not presented with any "Reset", "Purge", "Bounce", "Retry" or "Suspend" buttons. Nor can this user access the node controls from the stats Tab.
-
-### Note
-
-Like the `admin` role, the reporting role is fixed and cannot be removed from the web UI.
-
-** 3.9.1.1. The Reporting Role and LDAP**
-
-If you are authenticating using LDAP you cannot add or change users through the web UI. However, you can implement a reporting role by setting up a reporting user role (see [“Setting Up Active Directory Authentication With Momentum 3.2.2”](/momentum/3/3-reference/conf-ldaps)) and by making the changes described below.
-
-Set up an LDAP environment that defines a reporting user role. Substitute the name of that role into the `REPORT_ROLE` configuration option in the `/opt/msys/ecwebui/config/webui-receiving.conf` (or `webui-sending.conf`) file.
-
-### Note
-
-There is an additional configuration option in `/opt/msys/ecwebui/config/webui-receiving.conf` called `REPORT_ROLE_OVERRIDE`. When this option is set to `true` if a user has the "reporting role" and one or more other roles (except the admin role), the reporting role overrides the other roles. This has the affect of stripping the user of privileges associated with other roles.
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/web-3.md b/content/momentum/3/3-reference/web-3.md
deleted file mode 100644
index 145a815d8..000000000
--- a/content/momentum/3/3-reference/web-3.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Using the Web Console"
-description: "You can monitor and configure Momentum from a web browser The web console provides a convenient interface useful for viewing graphical representations of the state of Momentum changing configuration options viewing logs and reports and numerous other tasks You can open the web console from the server hosting the application..."
----
-
-
-
-
-You can monitor and configure Momentum from a web browser. The web console provides a convenient interface useful for viewing graphical representations of the state of Momentum, changing configuration options, viewing logs and reports and numerous other tasks.
-
-You can open the web console from the server hosting the application or from elsewhere if remote access is allowed. Open the web console by pointing your web browser at the appropriate IP address or domain name.
-
-### Note
-
-As of version 3.2, during installation you can choose to require use of SSL for the web UI. If you are using SSL be sure to use the HTTPS protocol when logging in.
-
-Log in to the web console using the admin credentials created during installation. The default value for the username is `admin` and the password is whatever you chose during installation. To change these credentials or add a new user see [“Administering Users From the Web Console”](/momentum/3/3-reference/web-3-users). If the web console is not running, see [“Starting the Web Console”](/momentum/3/3-reference/web-3-starting-web-console).
-
-To function properly, the web UI requires a recent version of Flash. On some Linux distributions you may need to upgrade this component.
-
-### Note
-
-The Momentum web UI supports the following browsers:
-
-* Firefox version 3.6 and higher on PC and Mac
-
-* Internet Explorer versions 8 and 9
\ No newline at end of file
diff --git a/content/momentum/3/3-reference/webui-common-example.md b/content/momentum/3/3-reference/webui-common-example.md
deleted file mode 100644
index 9d47505d7..000000000
--- a/content/momentum/3/3-reference/webui-common-example.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Example LDAP webui-common.conf File"
-description: "This appendix provides a sample webui common conf file for use when setting up Active Directory authentication with Momentum 3 2 2 For more information see Section 2 3 Setting Up Active Directory Authentication With Momentum 3 2 2 The character in the following example is used to indicate that..."
----
-
-## Example LDAP `webui-common.conf` File
-
-This appendix provides a sample `webui-common.conf` file for use when setting up Active Directory authentication with Momentum 3.2.2\. For more information see [“Setting Up Active Directory Authentication With Momentum 3.2.2”](/momentum/3/3-reference/conf-ldaps).
-
-### Note
-
-The ‘`»`’ character in the following example is used to indicate that the `query` should appear on one line. If this line is not broken up, it will be truncated in some forms of the documentation.
-
-```
-# Holds definitions needed by both ecelerity and eccmgr when used with
-# the webui and user management database
-
-# WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
-# For this to actually work, you'll also need to set the Control_Listener
-# to use AuthLoginParameters instead of AuthDigestMD5Parameters.
-# WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
-
-Datasource "activedirectory_auth" {
- uri = ( "ldaps://ads.example.com" )
- no_cache = true
-}
-
-Datasource "activedirectory_groups" {
- uri = ( "ldaps://ads.example.com" )
- no_cache = true
-}
-
-ds_ldap {
- debug_level = "DEBUG"
-}
-
-ds_core {
- debug_level = "DEBUG"
-}
-
-auth_ds {
- Scheme "ecauth" {
- Authenticate {
- # Return the primaryGroupID field, which is an integer.
- # The auth_ds module will authenticate the user
- # if the following query succeeds, and the primaryGroupID is non-zero.
- query = "ldaps:///CN=$user,CN=Users,DC=ads,DC=example,DC=com?primaryGroupID??(&(objectClass=user)»
- (|(memberOf=cn=Momo-SuperAdmins,cn=users,dc=ads,dc=example,dc=com)»
- (memberOf=cn=Momo-Admins,cn=users,dc=ads,dc=example,dc=com)»
- (memberOf=cn=Momo-Users,cn=users,dc=ads,dc=example,dc=com)))»
- ?bindname=CN=$user%2cCN=Users%2cDC=ads%2cDC=example%2cDC=com,»
- x-bindpw=$pass,x-disable-connection-cache=true"
- cache = "activedirectory_auth"
- map = [
- user = "%{username}"
- pass = "%{password}"
- ]
- }
- # Groups aren't supported in Momentum 3.2.0.
- }
-}
-```
\ No newline at end of file
diff --git a/content/momentum/3/3-rest/index.md b/content/momentum/3/3-rest/index.md
deleted file mode 100644
index 5e861750b..000000000
--- a/content/momentum/3/3-rest/index.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Category File"
-type: "custom"
-name: "The Momentum REST Injector"
-description: "Message Systems Inc Copyright 2011 2014 Message Systems Inc Confidential Proprietary Abstract This book documents the Momentum REST Injector used in Momentum 3 x Document generated on 2018 Aug 28 Table of Contents 1 Overview 2 Configuring Momentum to Use the Injector 2 1 The httpsrv and restinjector Modules 2..."
----
-
-### Message Systems, Inc.
-
-Copyright © 2011-2014 Message Systems, Inc.
-
-
-
-Confidential & Proprietary.
-
-**Abstract**
-
-This book documents the Momentum REST Injector used in Momentum 3.x.
-
-Document generated on: 2018-Aug-28
-
-* * *
-
-
diff --git a/content/momentum/3/3-rest/rest-configuring.md b/content/momentum/3/3-rest/rest-configuring.md
deleted file mode 100644
index 90cc622db..000000000
--- a/content/momentum/3/3-rest/rest-configuring.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Configuring Momentum to Use the Injector"
-description: "Messages are injected into Momentum by activating the httpsrv restinjector and HTTP Listener modules A simple configuration follows Example 2 1 Configuring Momentum for REST Injection Manually changing the ecelerity conf file is described in Best Practices for Manually Changing Configuration Files You can also make these changes through the..."
----
-
-
-Messages are injected into Momentum by activating the `httpsrv`, `restinjector` and HTTP_Listener modules. A simple configuration follows:
-
-
-
-
-```
-# Set the debugging level for the http server
-httpsrv {debug_level = "debug"}
-
-# Set up the http listener
-HTTP_Listener {
- Listen ":8081" {}
-}
-
-# Activate the REST API for injection
-restinjector {}
-```
-
-Manually changing the `ecelerity.conf` file is described in "[Best Practices for Manually Changing Configuration Files](/momentum/3/3-reference/conf-manual-changes)". You can also make these changes through the Momentum web console.
-
-### Note
-
-Unlike the SMTP listener, there is no `mcmt_reception` option within the HTTP_Listener scope. *This listener is always MCMT enabled* .
-
-Configuration is described in detail in the following sections.
-
-## The httpsrv and restinjector Modules
-
-These modules only support the two options common to all modules, namely `enabled` and `debug_level`. In [“Configuring Momentum for REST Injection”](/momentum/3/3-rest/rest-configuring#rest.injector.configuration) the debug level is set to `debug` for test purposes only.
-
-For more information about the `debug_level` option see "[Module Debugging](/momentum/3/3-reference/modules-overview-implicit#modules.overview.debugging)".
-
-### Note
-
-Setting the `debug_level` to `debug` results in numerous `paniclog.ec` entries and can quickly use up disk space.
-
-If you are adding these modules through the web UI, you must add the httpsrv module and commit this change before you can add the HTTP_Listener.
\ No newline at end of file
diff --git a/content/momentum/3/3-rest/rest-http-listener.md b/content/momentum/3/3-rest/rest-http-listener.md
deleted file mode 100644
index a364ebd33..000000000
--- a/content/momentum/3/3-rest/rest-http-listener.md
+++ /dev/null
@@ -1,108 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "HTTP_Listener"
-description: "The HTTP Listener is a listener module that can enclose Peer and Listen scopes like other listeners All the options that are valid in the SMTP Listener scope and its nested Peer and Listen scopes are likewise valid in the HTTP Listener scope and its nested scopes Configuration Change As..."
----
-
-The HTTP_Listener is a listener module that can enclose Peer and Listen scopes like other listeners. All the options that are valid in the SMTP_Listener scope and its nested Peer and Listen scopes are likewise valid in the HTTP_Listener scope and its nested scopes.
-
-**Configuration Change. ** As of version 3.6, the default value for `tcp_recv_buffer_size` and `tcp_send_buffer_size` within the HTTP_Listener scope is 32768.
-
-[“Configuring Momentum for REST Injection”](/momentum/3/3-rest/rest-configuring#rest.injector.configuration) shows a simple listener that listens on port `8081`. You will likely want to implement a more sophisticated listener in order to limit access. The following describes what happens when HTTP requests are made of an HTTP_Listener. The HTTP_Listener performs the following checks before allowing the request handler to execute:
-
-* IP-based access control restrictions are applied based on the remote address via `always_allow`, `always_deny options` in HTTP_Listener, Listen and Peer stanzas
-
-* Authentication controls are gated by the `enable_authentication` option in HTTP_Listener, Listen and Peer stanzas
-
-* `TLS_Certificate, TLS_Ciphers, TLS_Client_CA, TLS_Key, TLS_Verify_Mode` and `Use_SSL` options all affect the use of SSL for the session
-
-* `TLS_Verified_Peer_Is_Authorized` boolean option is specific to the HTTP_Listener and its scopes. It marks requests that use a verified SSL Client certificate as being authorized (similar to `TLS_Verified_Peer_Can_Relay` in the ESMTP_Listener). The default value for this option is `false`.
-
-* AuthDigestMD5Parameters stanza is used to control Digest authentication
-
-* AuthPlainParameters stanza is used to control Basic authentication
-
-### Warning
-
-The `relay_hosts` option has no effect on restricting access to an HTTP_Listener.
-
-The example configuration below makes use of `AuthDigestMD5Parameters` using the default `ecauth` scheme. For a description of this scheme see "[Authorization Using the ecauth Scheme](/momentum/3/3-reference/conf-aaa#conf.control_authz.ecauth)".
-
-
-
-
-```
-# To configure the HTTP_Listener to use Momentum
-# authentication, the stanza would look like this:
-HTTP_Listener {
- AuthDigestMD5Parameters = [
- uri = "ecauth://"
- ]
- enable_authentication = true
- Listen ":8081" {}
-}
-```
-
-Apart from the `TLS_Verified_Peer_Is_Authorized` option mentioned above, the following options are used exclusively by the HTTP_Listener and it's nested scopes:
-
-* The `Max_Request_Size` option limits the size of an HTTP request. This option is similar in function to the `Max_Message_Size` parameter in the ESMTP listener. If this option is not set, there is no limit.
-
-* The `Log_Requests_to_Paniclog` turns logging on and off. The default value for this option is `false`.
-
- When set to `true`, an entry such as the following is written to the `paniclog.ec` file:
-
- `1307461172:192.168.0.197:51216 "POST /v1.0/inject/ HTTP/1.1" 200 224 5.000`
-
- The fields are as follows;
-
- 1. A Unix timestamp
-
- 2. The IP address where the injection originated
-
- 3. The request method
-
- 4. The request string
-
- 5. The protocol
-
- 6. The status code
-
- 7. The number of bytes written
-
- 8. The processing time in milliseconds
-
-All the options valid in the HTTP_Listener and its nested scopes are as follows:
-
-
-
-
-| Option/Description | Default | Scopes |
-| --- | --- | --- |
-| **[accept_queue_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.accept_queue_backlog)** – The accept queue backlog | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[always_allow](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding)** – If Always_Allow is true, authentication is considered to have succeeded, unless Always_Deny is set | false | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[always_deny](/momentum/3/3-reference/conf-aaa#conf.control_authen.overriding)** – If set to true, authentication is considered to have failed | false | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[authdigestmd5parameters](/momentum/3/3-reference/conf-aaa#conf.inbound-authdigest-md5)** – Configure DIGEST-MD5 authentication | | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[authplainparameters](/momentum/3/3-reference/conf-aaa#conf.inbound-auth.plain.text)** – Configure plain text login authentication | | esmtp_listener, http_listener, listen, pathway, pathway_group, xmpp_listener |
-| **[concurrency](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Define number of available threads | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, threadpool, xmpp_listener |
-| **[disable_chunked](/momentum/mobile/mobile-reference/mobility-mm-7-listener)** – An option used with aggregators who do not support chunked transfer-coding (Mobile Momentum) | false | http_listener, listen, pathway, pathway_group, peer |
-| **[disable_nagle_algorithm](/momentum/3/3-reference/3-reference-conf-ref-disable-nagle-algorithm)** – Disable nagle algorithm on sockets | false | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, global, http_listener, listen, xmpp_listener |
-| **[enable](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Enable or disable a listener scope | true | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[enable_authentication](/momentum/3/3-reference/conf-aaa#conf.inbound-mail)** – Whether or not to enable authentication | | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| **[events_per_iter](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.events_per_iter)** – Employ when using a Concurrency greater than 1 | 0 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[file_mode](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.control_listener)** – File access rights in octal notation | 0660 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| **[idle_time](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.idle_time)** – The number of seconds of inactivity before a client is disconnected | 0 | esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[listen](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.attributes)** *(scope)* – Specify the socket that a listener listens on | | control_listener, ecstream_listener, esmtp_listener, http_listener, msgcserver_listener, xmpp_listener |
-| **[listen_backlog](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.listen_backlog)** – The listen backlog | 500 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[log_requests_to_paniclog](/momentum/3/3-rest/rest-http-listener)** – Whether to log REST injection requests | false | http_listener, listen, pathway, pathway_group, peer |
-| **[max_request_size](/momentum/3/3-rest/rest-http-listener)** – Limit the size of an HTTP request | | http_listener, listen, pathway, pathway_group, peer |
-| **[peer](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.config.acls)** *(scope)* – Create an ACL within a specific listener | | control_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[pool_name](/momentum/3/3-reference/ecelerity-conf#esmtp_listener_example3)** – Associate a threadpool with a listener | | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tcp_recv_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_recv_buffer_size)** – The size of the TCP receive buffer size | 4096 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tcp_send_buffer_size](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.tcp_send_buffer_size)** – The size of the TCP send buffer | 4096 | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **[tls_certificate](/momentum/3/3-reference/conf-ref-tls-certificate)** – Certificate to use for inbound and outbound mail | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_ciphers](/momentum/3/3-reference/conf-ref-tls-ciphers)** – Allowable ciphers for a TLS session | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_client_ca](/momentum/3/3-reference/conf-ref-tls-client-ca)** – Certificate authority for inbound mail | | ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_key](/momentum/3/3-reference/conf-ref-tls-key)** – the TLS key to use for outbound mail or inbound mail | | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[tls_verified_peer_is_authorized](/momentum/3/3-rest/rest-http-listener)** – Mark requests that use a verified SSL Client certificate as being authorized | false | http_listener, listen, pathway, peer |
-| **[tls_verify_mode](/momentum/3/3-reference/conf-ref-tls-verify-mode)** – How to handle certificates for inbound mail | none | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| **[use_ssl](/momentum/3/3-reference/ecelerity-conf#ecelerity.conf3.listener.options.use_ssl)** – Whether to use SSL verification | false | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
\ No newline at end of file
diff --git a/content/momentum/3/3-rest/rest-overview.md b/content/momentum/3/3-rest/rest-overview.md
deleted file mode 100644
index e5f89edf7..000000000
--- a/content/momentum/3/3-rest/rest-overview.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Overview"
-description: "As of version 3 1 4 the HTTP REST injection API is available for injecting messages into Momentum It has the following characteristics It supports simple key value pair substitution A content producer can connect to an HTTP listener and submit a REST request to send one or more messages..."
----
-
-As of version 3.1.4 the HTTP REST injection API is available for injecting messages into Momentum. It has the following characteristics:
-
-* It supports simple key-value pair substitution
-
-* A content producer can connect to an HTTP listener and submit a REST request to send one or more messages based on a template. The REST request contains the required MAIL FROM/RCPT TO for each individual message to be sent, optional validation context data for each message to be sent, as well as optional key-value pairs for expansion in the template.
-
-* Operations are transactional, in the sense that if a command fails, none of the component operations take place. For instance, if a message is sent to three people as a single command, either all three messages are successfully generated or none are
-
-* Multi-Channel Message Type messages are supported
\ No newline at end of file
diff --git a/content/momentum/3/3-rest/rest-sample-templates.md b/content/momentum/3/3-rest/rest-sample-templates.md
deleted file mode 100644
index 9f0cc2918..000000000
--- a/content/momentum/3/3-rest/rest-sample-templates.md
+++ /dev/null
@@ -1,108 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Template Files"
-description: "The following conditions apply to template files used with the injection API The template must be a valid 7 bit RFC 821 compatible message blob The template engine does not automatically handle MIME encoding when performing substitution Neither header encoding nor body transfer encoding will be performed The value data..."
----
-
-The following conditions apply to template files used with the injection API:
-
-* The template must be a valid 7-bit RFC 821 compatible message blob.
-
-* The template engine does not automatically handle MIME encoding when performing substitution. Neither header encoding nor body transfer encoding will be performed. The value data is substituted via straight text substitution; the value provided to the engine must already be encoded appropriately if encoding is required.
-
-* The template engine normalizes the line-endings to canonical CRLF.
-
-* Substitutions are denoted by one of the two following sequences:
-
- ```
- <%= :key %>
- [%= :key %]
- ```
-
- Keys in substitutions are case in-sensitive.
-
-### Note
-
-The REST API does not do 'dot-stuffing'. The JSON object should already be dot-stuffed and there should be no leading dot in any line.
-
-Sample template files that can be used with the REST injector are as follows.
-
-The following is an example of a simple template where all values are hard coded.
-
-
-
-
-```
-{
- "template": "From: tester@mgr.example.org\nTo: someone@example.com\nSubject:
- Simple content\n\nThis is your injected message",
- "recipients": [
- {
- "to": "someone@example.com",
- "from": "tester@mgr.example.com"
- }
- ]
-}
-```
-
-The following example uses macro substitution and shows an example template that could be used for a subscription follow-up.
-
-
-
-
-```
-{
- "template": "From: <%=:from%>\nTo: <%=:to%>\nSubject: <%=:subject%>\n\nYou
- signed up on <%=:signup%>",
- "recipients": [
- {
- "to": "john@example.com",
- "from": "tester@mgr.example.org",
- "keys": {
- "subject": "personalized subject",
- "signup": "1st October"
- }
- }
- ]
-}
-```
-
-The following example lists multiple recipients and also makes use of validation context variables.
-
-
-
-
-```
-{
- "template": "From: <%=:from%>\nTo: <%=:to%>\nSubject:
- <%=:subject%>\n\nDelivery Date: <%=:signup%>",
- "recipients": [
- {
- "to": "john@example.com",
- "from": "another.user@example.com",
- "vctx": {
- "key": "value",
- "otherkey": "othervalue"
- },
- "keys": {
- "subject": "personalized subject",
- "signup": "1st October"
- }
- },
- {
- "to": "perm@fail.com",
- "from": "a.different.user@example.com",
- "vctx": {
- "key": "value",
- "otherkey": "thisvalue"
- },
- "keys": {
- "subject": "personalized different subject",
- "signup": "2nd October"
- }
- }
- ]
-}
-```
-
-Validation context variables defined in this way are accessible to policy scripts.
\ No newline at end of file
diff --git a/content/momentum/3/3-rest/rest-using-api.md b/content/momentum/3/3-rest/rest-using-api.md
deleted file mode 100644
index 24a3204f2..000000000
--- a/content/momentum/3/3-rest/rest-using-api.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Using the API"
-description: "The injection API resides at the endpoint v 1 0 inject and accepts a JSON payload describing the injection parameters A JSON payload will be returned to indicate the outcome of the injection The API does not support XML input or output template keys to and from default to the..."
----
-
-The injection API resides at the endpoint `/v1.0/inject` and accepts a JSON payload describing the injection parameters. A JSON payload will be returned to indicate the outcome of the injection. The API does not support XML input or output template keys. "`to`" and "`from`" default to the value of the "to" and "from" fields (respectively) in the JSON payload, unless overridden via explicit values in the "keys" field. The previous section contains examples of this.
-
-### Note
-
-Prior to Momentum 3.4, the REST injection API would crash Momentum if the HTTP client included an "Expect: 100-continue" header. This occurred after Momentum had sent the "100 continue" response to the HTTP request.
-
-.Net's default HTTP request behavior is to include the "Expect: 100-continue" header, which will trigger this issue. As a workaround, be sure not to use an "Expect: 100-continue" header in the HTTP request.
-
-You can check connectivity to the HTTP_Listener by sending an empty request in the following way:
-
-`shell> curl -X GET http://localhost:8081/v1.0/inject/`
-
-If you connect, no message is output. Failure to connect results in a message such as the following:
-
-`curl: (7) couldn't connect to host`
-
-You can send a test message by editing one of the JSON files shown in [*Template Files*](/momentum/3/3-rest/rest-sample-templates) . Change the `to` address to an accessible mailbox and copy the sample to the current directory on the machine hosting the REST server. Save the file as `sample.json`. You inject your message using curl in the following way:
-
-`shell> curl -X POST http://localhost:8081/v1.0/inject/ -d @sample.json`
-
-A successful injection should return a JSON object such as the following:
-
-```
-{
- "results": [
- {
- "status": "success",
- "mid": "00\/00-02045-5093C9D4",
- "reason": "250 00\/00-02045-5093C9D4"
- }
- ],
- "status": "success"
-}
-```
-
-### Note
-
-The returned JSON object has been formatted for readability. When accessing the REST injector using curl, specifying `-H 'Content-Type: application/json'` is optional as this is the default content type.
\ No newline at end of file
diff --git a/content/momentum/3/index.md b/content/momentum/3/index.md
deleted file mode 100644
index 23c1dd2bd..000000000
--- a/content/momentum/3/index.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Momentum 3.x"
-description: ""
----
-
-## Reference for Version 3.x
-
-### Message Systems, Inc.
-
-Copyright © 2001-2014 Message Systems, Inc.
-
-Confidential & Proprietary.
-
-**Abstract**
-
-This book documents Message Systems Momentum.
-
----
diff --git a/content/momentum/4/4-bounce-logger-classification-codes.md b/content/momentum/4/4-bounce-logger-classification-codes.md
deleted file mode 100644
index 6097ae460..000000000
--- a/content/momentum/4/4-bounce-logger-classification-codes.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Bounce Classification Codes"
-description: "The following is a list of bounce classification codes and their meanings Table 35 16 Bounce Classification Codes Classification Name Description Category 1 Undetermined The response text could not be identified Undetermined 10 Invalid Recipient The recipient is invalid Hard 20 Soft Bounce The message soft bounced Soft 21 DNS..."
----
-
-The following is a list of bounce classification codes and their meanings.
-
-
-
-
-| Classification | Name | Description | Category |
-| --- | --- | --- | --- |
-| 1 | Undetermined | The response text could not be identified. | Undetermined |
-| 10 | Invalid Recipient | The recipient is invalid. | Hard |
-| 20 | Soft Bounce | The message soft bounced. | Soft |
-| 21 | DNS Failure | The message bounced due to a DNS failure. | Soft |
-| 22 | Mailbox Full | The message bounced due to the remote mailbox being over quota. | Soft |
-| 23 | Too Large | The message bounced because it was too large for the recipient. | Soft |
-| 24 | Timeout | The message timed out. | Soft |
-| 25 | Admin Failure | The message was failed by Momentum's configured policies. | Admin |
-| 30 | Generic Bounce: No RCPT | No recipient could be determined for the message. | Hard |
-| 40 | Generic Bounce | The message failed for unspecified reasons. | Soft |
-| 50 | Mail Block | The message was blocked by the receiver. | Block |
-| 51 | Spam Block | The message was blocked by the receiver as coming from a known spam source. | Block |
-| 52 | Spam Content | The message was blocked by the receiver as spam. | Block |
-| 53 | Prohibited Attachment | The message was blocked by the receiver because it contained an attachment. | Block |
-| 54 | Relaying Denied | The message was blocked by the receiver because relaying is not allowed. | Block |
-| 60 | Auto-Reply | The message is an auto-reply/vacation mail. | Soft |
-| 70 | Transient Failure | Message transmission has been temporarily delayed. | Soft |
-| 80 | Subscribe | The message is a subscribe request. | Admin |
-| 90 | Unsubscribe | The message is an unsubscribe request. | Hard |
-| 100 | Challenge-Response | The message is a challenge-response probe. | Soft |
\ No newline at end of file
diff --git a/content/momentum/4/4-cluster-cidr-server.md b/content/momentum/4/4-cluster-cidr-server.md
deleted file mode 100644
index ea48447cf..000000000
--- a/content/momentum/4/4-cluster-cidr-server.md
+++ /dev/null
@@ -1,182 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "CIDR Server"
-description: "The cidr server is part of a cluster console installation It queries the data created by an as logger module and displays the result in the cluster console The cidr server is run as a daemon so it starts automatically whenever the host server is rebooted To start this service..."
----
-
-
-The **cidr_server** is part of a cluster console installation. It queries the data created by an as_logger module and displays the result in the cluster console. The `cidr_server` is run as a daemon, so it starts automatically whenever the host server is rebooted. To start this service after installation, issue the command
-
-`/etc/init.d/cidr_server`
-
-At any time you may start, stop, or restart the `cidr_server` using
-
-/opt/msys/ecelerity/bin/cidr_server_ctl *`option`*
-### Note
-
-The cidr_server listens on port `9000`.
-
-## `cidr_cli` Utility
-
-The command-line utility **cidr_cli** offers the same functions as **cidr_server**. To invoke this interface enter
-
-`/opt/msys/ecelerity/bin/cidr_cli`
-
-This changes the cursor to `cidr>`, opening the `cidr` shell.
-
-From this command-line interface, you can have immediate and customized access to data created by the [as_logger](/momentum/4/modules/as-logger). The syntax used to query these data files is described in the following sections.
-
-### `cidr_cli` Grammar
-
-The expressions that can be used within the `cidr` shell are listed below.
-
-
-
-
-| BNF | Expression |
-| --- | --- |
-| list ::= | "show available" |
-| show ::= | "show count for" cidr "in" seriesname query |
-| cidr ::= | ip/mask |
-| seriesname ::= | seriesunion | serieslist |
-| serieslist ::= | series (, series )* |
-| seriesunion ::= | "union(" serieslist ")" |
-| series ::= | word |
-| query ::= | (queryparams)* |
-| queryparams ::= | datespec | cidrsize | order | aggregate | limit | threshold |
-| datespec ::= | fromto | on | since |
-| fromto ::= | "from" date "to" date |
-| since ::= | "since" date |
-| on ::= | "on" date |
-| date ::= | iso8601-date-format |
-| cidrsize ::= | "cidrsize" num "to" num | "cidrsize" num |
-| order ::= | "order by cidr" | "order by count" |
-| aggregate ::= | "aggregate daily" | "aggregate" |
-| limit ::= | "limit" num |
-| threshold ::= | "threshold" num |
-
-### Note
-
-This component fully supports IPv6 addresses.
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the Gateway, Routes, and Listen options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts`, and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-### Using `cidr_cli`
-
-What you do from the cidr shell is determined by the audit series that you have defined. The most useful command to use when first entering the `cidr` shell is
-
-`show available`
-
-This command displays the various data files that you can query. The following is a sample output:
-
-```
-spam : 20080423T123000 => 20080610T201500
-virus : 20080425T080000 => 20080610T201500
-invalid_recipient : 20080423T121500 => 20080610T201500
-```
-
-In this example, the site's administrators have defined audit series named `spam`, `virus`, and `invalid_recipients`. Following each name is the time period for which data is available. Since the source IP address is recorded for each event, you can obtain event counts by IP address or CIDR block. In each case a counter is incremented using **msys.audit_series.add** during the each_rcpt phase.
-
-### Warning
-
-No error message is displayed if your query syntax is incorrect. If your query has no output it may indicate an empty result set *or* incorrect syntax.
-
-You can query data files in a variety of ways. The following are examples of how to create queries using the cidr_cli interface.
-
-** Example 1:**
-
-To show individual IP addresses followed by the associated count, issue
-
-`show count for 0.0.0.0/0 in spam since 20080423`
-
-The output is shown in the following:
-
-```
-10.79.18.1/32 : 35217
-10.79.18.2/32 : 25350
-10.79.18.3/32 : 21291
-10.79.18.4/32 : 21183
-10.79.18.5/32 : 20933
-...
-10.79.18.63/32 : 21179
-10.79.18.64/32 : 12183
-10.79.18.130/32 : 5
-127.0.0.1/32 : 2
-```
-** Example 2:**
-
-To find the top ten /32s since 2008-04-23 on the spam and virus audit series, issue
-
-`show count for 0.0.0.0/0 in spam, virus since 20080423 order by count limit 10`
-
-The output is shown in the following:
-
-```
-10.79.18.1/32 : 35217,1264
-10.79.18.2/32 : 25350,0
-10.79.18.61/32 : 21381,3421
-10.79.18.30/32 : 21374,0
-10.79.18.57/32 : 21335,8760
-10.79.18.6/32 : 21322,0
-10.79.18.3/32 : 21291,0
-10.79.18.50/32 : 21271,16437
-10.79.18.14/32 : 21236,0
-10.79.18.24/32 : 21222,8790
-```
-
-The numbers following the ‘`:`’ are the counts for the `spam` and `virus` data files, respectively. To determine the top ten IP series for a specific day, replace `since` with `on` followed by the day of interest.
-
-** Example 2:**
-
-To find the top /24s on 2008-04-23 on the sum of spam and virus audit series, issue
-
-**`show count for 0.0.0.0/0 in union(spam, virus) on 20080424 cidrsize 24 order by count limit 1`**
-
-The output is shown in the following:
-
-`10.79.18.0/24 : 18492`
-
-Since this query selects from a union, only one numeric result follows the IP address.
-
-** Example 3:**
-
-To determine the breakdown of the total count by IP address using the IP address series output in the previous query, issue
-
-`show count for 10.79.18.0/24 in union(spam, virus) on 20080424`
-
-The output is shown in the following:
-
-```
-10.79.18.1/32 : 14071
-10.79.18.2/32 : 4421
-```
-
-The absolute figures shown above are perhaps less interesting than knowing the percentage of suspect mail, something that could readily be done by creating an audit_series to track the total number of mails.
-
-Time periods can be specified in units other than days. For example, to look at data between noon and 1 PM on a specific day, you would use the expression `from 20080605T120000 to 20080605T130000`.
-
-** Example 4:**
-
-To inspect the cache, issue
-
-`**cache details**`
-
-If there is data in the cache, you should see output similar to the following:
-
-```
-$VAR1 = [
-'/var/log/eccluster/aslogger/spam.20080424T200000',
-'/var/log/eccluster/aslogger/spam.20080424T201500',
-...
-'/var/log/eccluster/aslogger/spam.20080424T233000',
-'/var/log/eccluster/aslogger/spam.20080424T234500'
-];
-```
-
-The `spam` series files appear in the directory defined by the `base_dir` parameter in the `cidr_maintain.conf` file, in this case the `/var/log/eccluster/aslogger` directory. For more information about the `cidr_maintain.conf` file, see [“`cidr_maintain.conf` File”](/momentum/4/modules/as-logger#module.as_logger.cidr_maintain.conf).
-
-### Note
-
-There is no command to exit the `cidr` shell; use **Ctrl**+**D** .
\ No newline at end of file
diff --git a/content/momentum/4/4-cluster-config-duravip.md b/content/momentum/4/4-cluster-config-duravip.md
deleted file mode 100644
index 115db489e..000000000
--- a/content/momentum/4/4-cluster-config-duravip.md
+++ /dev/null
@@ -1,138 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "DuraVIP™: IP Fail over"
-description: "One of the most important features of Momentum cluster configuration is Dura VIP™ bindings Dura VIP™ maintains the availability of Multi VIP bindings and listener services on the associated IP addresses even when node s are down either administratively or due to failure When nodes share the same configuration Dura..."
----
-
-
-One of the most important features of Momentum cluster configuration is DuraVIP™ bindings. DuraVIP™ maintains the availability of MultiVIP© bindings and listener services on the associated IP addresses even when node(s) are down, either administratively or due to failure. When nodes share the same configuration, DuraVIP™ bindings provide transparent failover in the event that a node fails.
-
-With DuraVIP™, all injection IP addresses and outbound IP addresses are assigned automatically to the nodes in the cluster, allowing the reception and delivery of messages to be divided among the nodes. In the event of node failure, these injection IPs and outbound IP addresses are assumed by the remaining nodes.
-
-DuraVIP™ completely manages the IP addresses that you associate with bindings and listeners. It does this by adding or removing IP addresses to the NIC(s) installed in the machine. It is an error to configure the main IP address of the box as a DuraVIP™ enabled IP address, as DuraVIP™ may decide to unplumb addresses and re-provision it on a different node.
-
-### Note
-
-The maximum number of IP aliases that Momentum supports is `10240`. Also, it is better to enumerate the interfaces sequentially rather than assigning them arbitrarily.
-
-DuraVIP™ requires additional information about your network topology so that it knows to which NIC it should attach a given IP address. The default `ecelerity-cluster.conf` file has a cluster stanza that contains a Topology stanza:
-
-```
-cluster {
- ... other options here ...
- # DuraVIP network topology hints
- Topology "10.1.1.0/24" {
- cidrmask = "32"
- interface = "eth1"
- }
-}
-```
-
-This informs the node that any DuraVIP™ enabled IP address in the 10.1.1.0/24 network block should be attached to the interface named "eth1" with a mask of 32\. The cidrmask should almost always be set to 32, otherwise the DuraVIP™ controlled IP alias will not function correctly. (You may omit the cidrmask line completely; it defaults to 32).
-
-If you have a more complex environment where the node has DuraVIP™ managed IP addresses on multiple network blocks you will need to specify a separate Topology stanza for each network block that you have DuraVIP™s for. For additional details, see [“DuraVIP™ Network Topology”](/momentum/4/modules/4-modules-cluster#modules.cluster.duravip).
-
-Once configured with the Topology hints, you may then annotate your binding and/or listeners stanzas to indicate which IPs are DuraVIP™ enabled:
-
-```
-ESMTP_Listener {
- Listen "10.1.1.1:25" {
- Enable_Duravip = true
- }
- Listen "10.1.1.2:25" {
- Enable_Duravip = true
- }
-
-}
-Binding "duravip-1" {
- Enable_Duravip = true
- Bind_Address = "10.1.1.1"
-}
-Binding "duravip-2" {
- Enable_Duravip = true
- Bind_Address = "10.1.1.2"
-}
-```
-
-In the above configuration, when the node starts it will not by default start any SMTP listeners (the only listener is marked as DuraVIP™ enabled). Instead it will first unplumb all DuraVIP™ enabled IP addresses that may already exist on the machine (to ensure that it has a clean slate and that none are lingering from a prior invocation), join the cluster and, once it has settled and is live and operational, the nodes will elect one of the nodes to be the owner of each IP address.
-
-Once an owner has been elected for an IP address, that owner will plumb the IP address according to the Topology hints that have been configured and start SMTP service for that IP address.
-
-If the owner of a given IP address goes down, either due to administrative action or due to failure, the other nodes will notice its departure from the cluster and then hold an election for that IP address, assigning it to another node. The IP will then be plumbed on the new owning node with minimal interruption to service.
-
-When the downed node re-joins the cluster, another election will be held for ownership of the IP addresses, which will likely cause re-assignment of IP addresses back to the downed node.
-
-When bindings move between nodes, the system will also need to move the mail queues for those bindings to the new owning node. This is handled transparently. Mail will also be moved between nodes if it is injected to a node and that node is not the owner of the binding assigned to the message.
-
-### Note
-
-When injecting messages take care that you do not unduly increase traffic between nodes. For more information see [“`duravip_follow` and the #mmove Binding”](/momentum/4/cluster-config-mmove).
-
-If you are using a large number of DuraVIP™s you may need to enable [use_iflist_cache](/momentum/4/config/ref-use-iflist-cache).
-
-Performing a DuraVIP™ move causes a re-evaluate of the binding assignment for all messages in the queue; in some circumstances this can be a very resource-intensive operation. To avoid possibly exhausting resources, you can check with support to see if setting the cluster configuration option, `unconditional_rebind` to `false` might be required.
-
-### Warning
-
-DuraVIP™ does not work across different subnets, meaning you cannot have a DuraVIP™ migrate between servers on different LAN segments, because there is no way to alter the underlying networking. The system will allow you to configure DuraVIP™s across segments, but such configurations will not work properly.
-
-Most deployments will want to have a particular node be the preferred owner of an IP address, such that, in normal operation of the system, that node will be guaranteed to be the node that has the IP plumbed. To express this configuration, you will mark the listener or binding with your preference:
-
-```
-ESMTP_Listener {
- Listen "10.1.1.1:25" {
- Enable_Duravip = true
- Duravip_Preference = "nodename"
- }
-}
-Binding "foo" {
- Enable_Duravip = true
- Bind_Address = "10.1.1.1"
- Duravip_Preference = "nodename"
-}
-```
-
-The above configuration will cause the IP ownership election to favor the node named "nodename" if it is online at the time of the election. Otherwise, the IP will be distributed to the next best node. It is not possible to configure a second-best preference.
-
-### Note
-
-In a cluster configuration, suspension of a binding can result in excessive "#mmoves" between nodes. To avoid this possibility, always assign a `duravip_preference` for any bindings used with the Adaptive Delivery module. For more information about the Adaptive Delivery module, see [“adaptive – Adaptive Delivery”](/momentum/4/modules/4-adaptive).
-
-Some deployments do not always inject on the same IP as the IP that they intend to use for binding assignment and will want to preserve association between the listener IP and the binding IP. The primary motivation for this is to avoid having the cluster perform an internal message move, as excessive internal message moves can have a negative impact on the performance of the cluster.
-
-```
-ESMTP_Listener {
- Listen "10.1.1.1:25" {
- Duravip_Follow = "bindingname"
- }
-}
-Binding "bindingname" {
- Enable_Duravip = true
- Bind_Address = "10.2.1.1"
-}
-```
-
-In the above configuration, there are DuraVIP™s on two different networks; the 10.2.1.1 address is explicitly managed by the DuraVIP™ system and if/when it is moved to another node, the 10.1.1.1 IP address will follow it to the same node.
-
-You may only use `Duravip_Follow` on listeners to make listeners follow bindings; Bindings cannot follow listeners. The DuraVIP™ entity to follow may be called by its name or its IP address. Note that a listener cannot be both `Enable_Duravip` and `Duravip_Follow`.
-
-### Warning
-
-If you modify bindings in the configuration file, a possible race condition means that a **config reload** taking effect on multiple machines at the same time can cause nodes to disagree about who owns which binding. For this reason it is strongly suggested that you execute the console command **broadcast cluster duravip announce view** immediately after **config reload** . Doing this synchronizes ownership of the bindings and eliminate a possible race condition among the nodes.
-
-## IP Addresses and `duravip_follow`
-
-You cannot have the same IP address for a listener and a binding if the listener is to "duravip_follow" that binding. For example, do **not** use a configuration such as the following:
-
-```
-listen "10.110.83.140:25" {
- duravip_follow = "example"
- ...
-}
-binding "example" {
- bind_address = "10.110.83.140"
- ...
-}
-```
-
-If you want a listener to follow a binding, give the listener and the binding different IP addresses. Additionally, you should **not** use `duravip_preference` when using `duravip_follow`. If a listener has `enable_duravip` set to true, do not set a `duravip_preference` for this listener.
\ No newline at end of file
diff --git a/content/momentum/4/4-cluster-config-failover.md b/content/momentum/4/4-cluster-config-failover.md
deleted file mode 100644
index 8f8e3e9c3..000000000
--- a/content/momentum/4/4-cluster-config-failover.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "05/21/2024"
-title: "Configuring Momentum for High Availability and Failover"
-description: "Momentum's architecture supports fault tolerant configurations This means that you can operate in an environment that is readily configured to support failing over automatically"
----
-
-Momentum's architecture supports fault-tolerant configurations. This means that you can operate in an environment that is readily configured to support failing over automatically.
-
-Components that support high availability and fault tolerance include the following:
-
-* [DuraVIP™ bindings](/momentum/4/4-cluster-config-duravip)
-
-* [Centralized logging and Aggregration](/momentum/4/log-aggregation)
-
-* Per-node data
-
- Per-node logs can be made redundant by storing the node-specific data on a SAN. Locking semantics must be checked for the log: spool locks are currently enforced and safe.
-
- On the SAN, the paths to directories should be unique per node and each node should be able to mount the SAN directory at its unique location.
-
-* [cidr_server](/momentum/4/4-cluster-cidr-server) and [as_logger](/momentum/4/modules/as-logger)
-
- The **cidr_server** queries the data created by an as_logger module and displays the result in the cluster console. The **cidr_server** and as_logger can be configured to log data to a SAN. Locking semantics must be checked.
diff --git a/content/momentum/4/4-cluster-config-operations.md b/content/momentum/4/4-cluster-config-operations.md
deleted file mode 100644
index 81a2c7764..000000000
--- a/content/momentum/4/4-cluster-config-operations.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Using the Cluster Manager (eccmgr)"
-description: "eccmgr is the Momentum Cluster Manager henceforth referred to as the cluster manager On start up the script etc init d eccmgr start runs eccmgr as a service on the node designated as Manager For details about the available options see eccmgr Use eccmgr ctl to start stop or restart..."
----
-
-
-**eccmgr** is the Momentum Cluster Manager, henceforth referred to as the cluster manager. On start up, the script **/etc/init.d/eccmgr start** runs **eccmgr** as a service on the node designated as Manager. For details about the available options, see [eccmgr](/momentum/4/executable/eccmgr).
-
-Use **eccmgr_ctl** to start, stop, or restart this service. For details about this command, see [eccmgr_ctl](/momentum/4/executable/eccmgr-ctl).
-
-## Connecting to the Console on the Cluster Manager
-
-When **eccmgr** is running, you can log in to the console as you would any other node - by issuing the command:
-
-`/opt/msys/ecelerity/bin/ec_console`
-
-A successful connection will result in output similar to the following:
-
-```
-##############################################
-# eccmgr version: 3.0.10.30753 r(30754)
-# Copyright (c) 1999-2009 Message Systems, Inc.
-# All Rights Reserved.
-##############################################
-12:33:15 /tmp/2025>
-```
-
-For information about the console, see [`ec_console`](/momentum/4/4-operations#operations.console).
-
-On Unix systems, **eccmgr** listens at `/tmp/2025` by default. If you should need to change this default, you must edit the `Control_Listener` stanza in [`eccluster.conf`](/momentum/4/config/ref-eccluster-conf) and perhaps also your [`/opt/msys/ecelerity/etc/environment`](/momentum/4/environment-file) file.
-
-When you are logged into the console of the cluster manager, you can use any of the commands listed in [“Console Commands for the Cluster Manager”](/momentum/4/cluster-config-operations-eccmgr-console)
-
-### Note
-
-The cluster *module* belongs to the configuration of a node. For this reason, the console commands specific to the cluster *module* can only be issued from that node and not from within the **eccmgr** service. For a list of these commands, see [“Cluster Module-specific Console Commands”](/momentum/4/modules/4-modules-cluster#modules.cluster.console).
\ No newline at end of file
diff --git a/content/momentum/4/4-cluster-config-replication.md b/content/momentum/4/4-cluster-config-replication.md
deleted file mode 100644
index 66d28ab9b..000000000
--- a/content/momentum/4/4-cluster-config-replication.md
+++ /dev/null
@@ -1,230 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Data Replication"
-description: "The clustered Replication feature provided by the Momentum clustering suite is an extensive set of data sharing and aggregation facilities for representing information across node boundaries Replication is managed using the Replication scope within the cluster module For details about this scope see Section 71 19 2 Replication Scope There..."
----
-
-
-The clustered Replication feature provided by the Momentum clustering suite is an extensive set of data sharing and aggregation facilities for representing information across node boundaries.
-
-Replication is managed using the Replication scope within the cluster module. For details about this scope, see [“Replication Scope”](/momentum/4/modules/4-modules-cluster#modules.cluster.replication).
-
-## Replication Configurations
-
-There are special replication facilities that are used for enforcing cluster wide reception and delivery behaviors. These facilities exist to count inbound connections by IP address as well as outbound connections by both IP address and domain. To enable these facilities, you use the following configuration:
-
-```
-cluster {
- # ... other cluster config ...
- Replicate "inbound_cidr" {}
- Replicate "outbound_cidr" {}
- Replicate "outbound_domains" {}
- Replicate "outbound_binding_domains" {}
- Replicate "shared_named_throttles" {}
-}
-```
-
-Given the above configuration, Momentum will track cluster-wide inbound SMTP connections by IP address in the `inbound_cidr` replicated data structure, the outbound SMTP connections by IP address in the `outbound_cidr` replicated data structure, and the outbound SMTP connections by destination domain in the `outbound_domains` replicated data structure. `outbound_binding_domains` tracks outbound connections in the cluster scope.
-
-From the console you can view the configuration using the **cluster shared list** command:
-
-```
-22:36:50 ecelerity(2025)> cluster shared list
-Currently managed objects:
- inbound_cidr [lazy, cidrtree w/ snapshots]
- outbound_cidr [lazy, cidrtree w/ snapshots]
- outbound_domains [lazy, gauge table w/ snapshots]
-```
-
-For a complete list of the cluster commands available from the console, see [“Cluster Module-specific Console Commands”](/momentum/4/modules/4-modules-cluster#modules.cluster.console).
-
-### Tracking inbound connections via inbound_cidr
-
-On a running system, investigating the contents of the `inbound_cidr` storage will show us the inbound connections to our cluster:
-
-```
-22:45:34 ecelerity(2025)> cluster shared show inbound_cidr
-lazy, snapped cidrtree 'inbound_cidr', view 'global'
- 31 10.0.0.0/8
- 31 10.0.0.0/24
- 4 10.0.0.0/25
- 4 10.0.0.103/32
- 27 10.0.0.160/27
- 27 10.0.0.176/29
- 27 10.0.0.180/31
- 14 10.0.0.180/32
- 13 10.0.0.181/32
-```
-
-The above output shows the view of inbound SMTP connections per IP address aggregated across the entire cluster. In order to view the inbound connection counts to a particular node, we can ask for the view of that information from the perspective of any node by appending `from nodename` where `nodename` is the name of the node:
-
-```
-22:45:40 ecelerity(2025)> cluster shared show inbound_cidr from relay-0-1
-lazy, snapped cidrtree 'inbound_cidr', view '#ec1-12137#relay-0-1'
- 5 10.0.0.0/8
- 5 10.0.0.0/24
- 5 10.0.0.160/27
- 5 10.0.0.176/29
- 5 10.0.0.180/31
- 4 10.0.0.180/32
- 1 10.0.0.181/32
-
-22:45:59 ecelerity(2025)> cluster shared show inbound_cidr from relay-0-2
-lazy, snapped cidrtree 'inbound_cidr', view '#ec1-48616#relay-0-2'
- 7 10.0.0.0/8
- 7 10.0.0.0/24
- 3 10.0.0.103/32
- 4 10.0.0.160/27
- 4 10.0.0.180/31
- 2 10.0.0.180/32
- 2 10.0.0.181/32
-```
-
-### Tracking outbound connections via outbound_cidr
-
-To look at the outbound SMTP connections by IP address, we can use the same command as above, replacing `inbound_cidr` with `outbound_cidr`, yielding an identical data layout and meaning (excepting the data represents outbound connections).
-
-### Tracking outbound connections via outbound_domain
-
-The outbound connections tallied by destination domain can be viewed by specifying the `outbound_domain` shared structure:
-
-```
-23:05:30 ecelerity(2025)> cluster shared show outbound_domain
-lazy, snapped gauge table 'outbound_domain', view 'global'
- aol.com: 10
- bellsouth.net: 23
- hotmail.com: 246
- omniti.com: 5
- yahoo.com: 65
-```
-
-Just as in any shared structure view, you can limit the display to the perspective of any participating node by appending `from nodename` to the command. To see the view from relay-0-1 instead of the cluster-wide aggregate, we can issue the following command:
-
-```
-23:05:34 ecelerity(2025)> cluster shared show outbound_domain from relay-0-1
-lazy, snapped gauge table 'outbound_domain', view '#ec1-12137#relay-0-1'
- aol.com: 1
- bellsouth.net: 4
- hotmail.com: 26
- yahoo.com: 30
-```
-
-### Replicated inbound audit metrics
-
-We can use this feature with [“inbound_audit – Inbound traffic analytics”](/momentum/4/modules/inbound-audit) in order to maintain cluster-wide time series views of inbound connections, receptions, and rejections from any IP address or CIDR block.
-
-```
-cluster {
- # ... other cluster configuration ...
- Replicate "metrics" {
- parameters="connect;reception;rejection"
- }
-}
-```
-
-With this configuration, it's also necessary to define one or more audit series for the inbound audit module.
-
-```
-inbound_audit {
- # keep audit data for the last half hour,
- # placed into six windows of 5 min (300s) each
- monitors = ("300,6")
-}
-```
-
-### Note
-
-The inbound_audit module is a singleton and does not have an instance name. This affects the way the module is defined and also the way that console commands are invoked.
-
-The adaptive module is cluster-aware. To enable this capability, a `replicate "metrics"` stanza must be declared and the `parameters` must be set to `audit_series`.
-
-With such a configuration we can view connections, receptions, and rejections over the entire cluster for the last half hour from any IP address or CIDR block. From the console, this can be done using a command of this form:
-
-`09:16:03 ecelerity> inbound_audit:inbound_audit1 show ip 127.0.0.0/8`
-### Replicated named audit series
-
-Named audit series are a more general mechanism than the inbound audit metrics. We can use them to maintain time series for any events we wish—in comparison, the inbound audit metrics can track only connections, receptions, and rejections. Since the source IP address is recorded for each event, we can obtain event counts by IP address or CIDR block. These named audit series can be replicated across a cluster by including `audit_series` in the metrics replication stanza.
-
-```
-cluster {
- # ... other cluster configuration ...
- Replicate "metrics" {
- parameters="audit_series"
- }
-}
-```
-
-With this configuration, you can use Lua to add data to a named series and specify that it be replicated. You can also obtain counts from these series. See [msys.audit_series.add](/momentum/4/lua/ref-msys-audit-series-add) and [msys.audit_series.define](/momentum/4/lua/ref-msys-audit-series-define).
-
-### Replicated Caches
-
-In addition to the other built-in replication objects, we can dynamically replicate arbitrary key-value pairs across all nodes of the cluster using replicated caches.
-
-
-
-
-```
-Datasource "mycache" {
- uri = ("odbc:DSN=sqlserver;UID=user;PWD=pass")
- serialized = true
-}
-
-cluster {
- # ... other cluster configuration ...
- Replicate "mycache" {
- type = "cache"
- }
-}
-```
-
-Note that if you have the replicate type defined as `cache`, you must supply the `replication_name` of the cache and that name must match the cache name defined in the ds_core module. In [“Replicated caches”](/momentum/4/4-cluster-config-replication#cluster.replicatedcache.code), for example, the name `mycache` referenced in the cluster stanza is defined in the Datasource scope of the ds_core module. For more information about using the ds_core module, see [“ds_core - Datasource Query Core”](/momentum/4/modules/ds-core).
-
-This stanza can be repeated any number of times, specifying a unique `replication_name` for each cache. Key-value pairs can be inserted into, or retrieved from, the replicated cache at run time using Lua. See [msys.gauge_cache.define](/momentum/4/lua/ref-msys-gauge-cache-define) and [msys.gauge_cache.get](/momentum/4/lua/ref-msys-gauge-cache-get).
-
-By default, nodes that join the cluster will receive new or updated key-value pairs as they are inserted into the cache. Any pre-existing key-value pairs present on other nodes will not be populated into the cache on a new node until the key-value pair is updated. To change this behavior, snapshots can be enabled on a per-cache basis. This causes all pre-existing key-value pairs on the other nodes to be populated on a new node as soon as it joins the cluster.
-
-```
-cluster {
- # ... other cluster configuration ...
- Replicate "mycache" {
- type = "cache"
- parameters="snapshot"
- }
-}
-```
-
-### Shared named throttles
-
-Cluster-wide enforcement of name-keyed throttles is supported in the MTA. The following stanza must be placed in the cluster module configuration to enable the shared throttles:
-
-```
-cluster {
- # ... other cluster configuration ...
- Replicate "shared_named_throttles" {}
-}
-```
-
-### Shared Outbound Throttles
-
-Cluster-wide outbound connection and message throttles are supported in the MTA, using the [cluster_outbound_throttle_connections](/momentum/4/config/ref-cluster-outbound-throttle-connections) and [cluster_outbound_throttle_messages](/momentum/4/config/ref-cluster-outbound-throttle-messages) configuration parameters. The cluster stanza must include a `replicate` directive to enable outbound message throttles (OBTM) or outbound connection throttles (OBTC).
-
-```
-cluster {
- # ... other cluster configuration ...
- Replicate "OBTM" {} # outbound message throttles
- Replicate "OBTC" {} # outbound connection throttles
-}
-```
-
-### Shared Gauge Caches
-
-A gauge cache is a collection of named counters (gauges), which are manipulated by increment or decrement operations. For the Lua functions, see [msys.gauge_cache.inc](/momentum/4/lua/ref-msys-gauge-cache-inc) and [msys.gauge_cache.dec](/momentum/4/lua/ref-msys-gauge-cache-dec). When gauge cache replication is enabled, increments or decrements are broadcast to all nodes on the cluster.
-
-```
-cluster {
- # ... other cluster configuration ...
- Replicate "metrics" {
- parameters="gauge_cache"
- }
-}
-```
\ No newline at end of file
diff --git a/content/momentum/4/4-cluster.md b/content/momentum/4/4-cluster.md
deleted file mode 100644
index aec0f61cd..000000000
--- a/content/momentum/4/4-cluster.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-lastUpdated: "05/21/2024"
-title: "Cluster-specific Configuration"
-description: "Clustering is based on the concept of having a cluster of machines that communicate using a group communication messaging bus A cluster is comprised of at least one Manager node and one or more MTA nodes"
----
-
-
-Clustering is based on the concept of having a cluster of machines that communicate using a group communication messaging bus. A cluster is comprised of at least one Manager node and one or more MTA nodes. The Manager in the cluster will be your central point of management for the cluster. Ideally, a cluster will have a dedicated gigabit network for transmission of replicated data and internal message moves.
-
-The clustering capabilities of Momentum enable the following features:
-
-* Log aggregation pulling log files from MTA nodes to centralized location(s) on the network
-
-* Replication of a variety of real-time metrics to allow cluster-wide coordination for inbound and outbound traffic shaping
-
-* DuraVIP™ (Momentum's IP Failover mechanism)
-
-Momentum assumes that the cluster network is a trusted network, meaning that it leaves host based authentication to be implemented by the network administrator at an appropriate firewall on the network.
-
-### Note
-
-Momentum's installer does not support setting up subclusters during installation. Consult professional services if subclusters is a requirement.
-
-## Cluster-specific Configuration Files
-
-A Momentum cluster installation is configured using the [`ecelerity.conf`](/momentum/4/config/ref-ecelerity-conf) file similar to a Momentum single node configuration. However, additional configuration files are needed:
-
-* [`eccluster.conf`](/momentum/4/config/ref-eccluster-conf) - Momentum Cluster Manager configuration file
-
-* [`ecelerity_cluster.conf`](/momentum/4/config/ref-ecelerity-cluster-conf) - Cluster-specific configuration file included from within `ecelerity.conf`
-
-* [`msgc_server.conf`](/momentum/4/config/ref-msgc-server-conf) - Cluster messaging bus configuration file included from within the `eccluster.conf` file on the cluster manager and from the `ecelerity-cluster.conf` file on nodes
-
-The default cluster-enabled configuration is located in the `/opt/msys/ecelerity/etc/conf/default` subdirectory. Simple deployments will not typically need to edit the cluster portions of this configuration. If you intend to use DuraVIP™ or to more tightly control the scope of replicate data, you will need to edit the configuration in the cluster stanza of the `ecelerity-cluster.conf` file.
-
-There are numerous configuration options that are cluster-specific. Some of these options such as `cluster_max_outbound_connections` are visible in various scopes, but most options specific to cluster configuration are defined in the [cluster](/momentum/4/modules/4-modules-cluster) module.
-
-The non-module specific configuration options are listed in [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/4/modules/) .
-
-For general information about Momentum's configuration files, see [“Configuration Files”](/momentum/4/conf-overview#conf.files).
-
-For additional details about editing your configuration files, see [“Changing Configuration Files”](/momentum/4/conf-overview#conf.manual.changes).
-
-### Using Node-local `include` Files
-
-If you have any configurations specific to a particular node, fallback values for configuration options in that node-local configuration file *cannot* be included via the `/opt/msys/ecelerity/etc/conf/ecelerity.conf` file. For an included file, the parent file's path is added to the search path, so if a file is included from `/opt/msys/ecelerity/etc/conf/default/ecelerity.conf`, the search path becomes:
-
-/opt/msys/ecelerity/etc/conf/default:/opt/msys/ecelerity/etc:/opt/msys/ecelerity/etc/conf/global:»
- /opt/msys/ecelerity/etc/conf/*`nodename`*:/opt/msys/ecelerity/etc/conf/default
-
-If there are minor differences between nodes, you can include a local node configuration file as discussed in the following the example:
-
-For one node, you want `OPTION = "FOO"`.
-
-For another node, you want `OPTION = "BAR"`.
-
-Do not define `OPTION` in the `ecelerity.conf` file.
-
-Set `OPTION` in a `node-local.conf` file in all the /opt/msys/ecelerity/etc/conf/*`nodename`* directories.
-
-Add an "include node-local.conf" statement to `/opt/msys/ecelerity/etc/default/ecelerity.conf`.
-
-If there are major differences between node configurations, it is probably simpler to create a separate configuration file for each node as described in [“Repository Working Copy for Cluster”](/momentum/4/4-cluster#cluster.config_files.mgmt.cluster).
diff --git a/content/momentum/4/4-conf-starting.md b/content/momentum/4/4-conf-starting.md
deleted file mode 100644
index 2d4677639..000000000
--- a/content/momentum/4/4-conf-starting.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Starting Momentum (ecelerity)"
-description: "ecelerity is the main server component of the Momentum Application Server On start up the script etc init d ecelerity start starts Momentum For details about the available options see ecelerity To run this script you must have root privileges Use ec ctl to start stop or restart this process..."
----
-
-
-
-
-**ecelerity** is the main server component of the Momentum Application Server. On start up, the script **/etc/init.d/ecelerity start** starts Momentum. For details about the available options, see [ecelerity](/momentum/4/executable/ecelerity).
-
-### Note
-
-To run this script, you must have root privileges.
-
-Use **ec_ctl** to start, stop, or restart this process. For details about this command, see [ec_ctl](/momentum/4/executable/ec-ctl).
-
-## Startup Scripts
-
-It can be useful to execute specific scripts on startup or shutdown. For example, if you have configured the spool directory as a separate filesystem, you might want to make sure that filesystem is mounted before starting Momentum. If Momentum is started up using [ec_ctl](/momentum/4/executable/ec-ctl), startup scripts in the `rc.includes` directory will be executed.
-
-The `rc.includes` directory under the `/opt/msys/ecelerity/bin` directory allows third party module providers and local administrators to add startup and shutdown procedures to the **ec_ctl** command. For example, use this directory for scripts that initiate database recovery, set environment variables, or check for necessary mount points.
-
-Start scripts must be named start.*`purpose`* and stop scripts stop.*`purpose`*. **ec_ctl** will use `sh .` to include each script named in this format.
-
-The following example illustrates how to check for the spool filesystem. Save it as `/opt/msys/ecelerity/bin/rc.includes/start.checkmount`.
-
-```
-SPOOL_FS=/var/spool/ecelerity
-
-/sbin/mount | /usr/bin/grep -q $SPOOL_FS
-
-if [ $? != 0 ]; then
- echo "Spool filesystem not mounted, aborting."
- exit 1
-fi
-```
\ No newline at end of file
diff --git a/content/momentum/4/4-console-commands.md b/content/momentum/4/4-console-commands.md
deleted file mode 100644
index 6e276bc8c..000000000
--- a/content/momentum/4/4-console-commands.md
+++ /dev/null
@@ -1,173 +0,0 @@
----
-lastUpdated: "04/15/2026"
-title: "Console Commands Summary"
-description: "This table lists all console commands alphabetically giving a brief description Click the command name to see detailed information A module name appears in the Module column for commands that are module specific For module specific commands to work you must have the module loaded Table 67 1 All console..."
----
-
-This table lists all console commands alphabetically giving a brief description. Click the command name to see detailed information. A module name appears in the `Module` column for commands that are module-specific. For module-specific commands to work, you must have the module loaded.
-
-
-
-
-| Command/Description | Version | Module | Class |
-| --- | --- | --- | --- |
-| [\pager](/momentum/4/console-commands/pager) – Page output of long console commands in the console | 4.0 | | misc |
-| [active](/momentum/4/console-commands/active) – Show domains with active queue size bigger than threshold | 4.0 | | queue size |
-| [adaptive list](/momentum/4/modules/4-adaptive#modules.adaptive.console) – Display the value of shaping parameters | 4.0 | adaptive | module |
-| [adaptive override](/momentum/4/modules/4-adaptive#modules.adaptive.console) – Override a suspension | 4.0 | adaptive | module |
-| [adaptive reset](/momentum/4/modules/4-adaptive#modules.adaptive.console) – Clear the values of the shaping parameters | 4.0 | adaptive | module |
-| [adaptive rules](/momentum/4/modules/4-adaptive#modules.adaptive.console) – Display the adaptive rules that are in effect for the specified domain/binding pair | 4.0 | adaptive | module |
-| [adaptive suspensions](/momentum/4/modules/4-adaptive#modules.adaptive.console) – Summarize the suspensions that are currently in effect | 4.0 | adaptive | module |
-| [adaptive warmup](/momentum/4/modules/4-adaptive#modules.adaptive.console) – Display the age of bindings from the perspective of the IP Warmup component | 4.0 | adaptive | module |
-| [authz id](/momentum/4/console-commands/authz-id) – Display the id of the current user | 4.0 | | misc |
-| [authz roles list](/momentum/4/console-commands/authz-roles-list) – Display the currently defined roles | 4.0 | | misc |
-| [beik reload](/momentum/4/modules/beik#modules.beik.console) – Reload the beik module | 4.0 | beik | module |
-| [binding active](/momentum/4/console-commands/binding-active) – Show domains with active queue size bigger than threshold on a specified binding | 4.0 | | queue size |
-| [binding delayed](/momentum/4/console-commands/binding-delayed) – Show domains with delayed queue size bigger than threshold on a specified binding | 4.0 | | queue size |
-| [binding fail domain quiet](/momentum/4/console-commands/binding-fail-domain-quiet) – Fail messages for a domain on a binding without generating bounces | 4.0 | | queue admin |
-| [binding fail domain](/momentum/4/console-commands/binding-fail-domain) – Fail messages for a domain on a binding with a bounce message | 4.0 | | queue admin |
-| [binding flush domain](/momentum/4/console-commands/binding-flush-domain) – Perform delivery attempt on delayed queue of a domain on a binding | 4.0 | | queue admin |
-| [binding summary](/momentum/4/console-commands/binding-summary) – Show binding statistics | 4.0 | | stats |
-| [bounce_classifier_override reload](/momentum/4/modules/bounce-classifier-override#modules.bounce_classifier_override.console) – Reload the bounce classification overrides | 4.0 | bounce_classifier_override | module |
-| [bounce_classifier_override test](/momentum/4/modules/bounce-classifier-override#modules.bounce_classifier_override.console) – Test the classification of an SMTP reply | 4.0 | bounce_classifier_override | module |
-| [bounce_logger:instance_name reopen logs](/momentum/4/modules/bounce-logger#modules.bounce_logger.console) – Reopen the log files | 4.0 | bounce_logger | module |
-| [cache list](/momentum/4/console-commands/cache-list) – List all caches along with their associated attributes | 4.0 | | stats |
-| [cache stat](/momentum/4/console-commands/cache-stat) – Show detailed cache statistics for the specified cache | 4.0 | | stats |
-| [cache stats](/momentum/4/console-commands/cache-stats) – Show cache statistics | 4.0 | | stats |
-| [cidrdb list](/momentum/4/modules/cidrdb#modules.cidrdb.console) – List configured CIDR databases | 4.0 | cidrdb | module |
-| [cidrdb reload](/momentum/4/modules/cidrdb#modules.cidrdb.console) – Reload a cidrdb list | 4.0 | cidrdb | module |
-| [cloudmark version](/momentum/4/modules/cloudmark#modules.cloudmark.console) – Output the Cloudmark version | 4.0 | cloudmark | module |
-| [cluster abort](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Abort the specified job | 4.0 | cluster | module |
-| [cluster arp show](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Resolve the MAC addresses of the cluster | 4.0 | cluster | module |
-| [cluster duravip announce view](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Announce a view update using the current local view | 4.0 | cluster | module |
-| [cluster duravip debug](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Turn DuraVIP™ debugging on or off | 4.0 | cluster | module |
-| [cluster duravip move](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Move a binding from one node to another | 4.0 | cluster | module |
-| [cluster duravip show](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Show the current state of DuraVIP™ bindings | 4.0 | cluster | module |
-| [cluster duravip show tables](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Display the DuraVIP™ state tables in XML format | 4.0 | cluster | module |
-| [cluster help](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Display the cluster console commands | 4.0 | cluster | module |
-| [cluster info](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Display the current operating status and parameters | 4.0 | cluster | module |
-| [cluster membership](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Display the current cluster nodes | 4.0 | cluster | module |
-| [cluster nodeaddr](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Show the cluster protocol service address | 4.0 | cluster | module |
-| [cluster nodename](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Show the name of the local node | 4.0 | cluster | module |
-| [cluster reset](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Reset the node cluster membership | 4.0 | cluster | module |
-| [cluster shared list](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – This command displays the currently managed objects | 4.0 | cluster | module |
-| [cluster shared show](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Display shared objects | 4.0 | cluster | module |
-| [cluster show logs](/momentum/4/modules/4-modules-cluster#modules.cluster.console) – Show the size, name and location of the cluster logs | 4.0 | cluster | module |
-| [commtouch_ctasd:instance_name pending](/momentum/4/modules/commtouch#modules.commtouch.console) – Output the number of pending jobs | 4.0 | commtouch_ctasd | module |
-| [config begin from scratch](/momentum/4/console-commands/config) – Begin a transaction from scratch | 4.0 | | config |
-| [config begin](/momentum/4/console-commands/config) – Begin a transaction | 4.0 | | config |
-| [config commit](/momentum/4/console-commands/config) – Commit a transaction | 4.0 | | config |
-| [config eval](/momentum/4/console-commands/config) – Determine configuration value | 4.0 | | config |
-| [config get](/momentum/4/console-commands/config) – Get configuration setting | 4.0 | | config |
-| [config locate](/momentum/4/console-commands/config) – Locate a specific scope | 4.0 | | config |
-| [config reload](/momentum/4/console-commands/config) – Reload configuration options from file | 4.0 | | config |
-| [config replay](/momentum/4/console-commands/config) – Show changes in a transaction | 4.0 | | config |
-| [config rollback](/momentum/4/console-commands/config) – Rollback a transaction | 4.0 | | config |
-| [config set](/momentum/4/console-commands/config) – Set configuration option | 4.0 | | config |
-| [config show](/momentum/4/console-commands/config) – Show a specific scope | 4.0 | | config |
-| [config showrecurse](/momentum/4/console-commands/config) – Show a specific scope and its child scopes | 4.0 | | config |
-| [config unset](/momentum/4/console-commands/config) – Unset configuration option | 4.0 | | config |
-| [config writeback](/momentum/4/console-commands/config) – Write configuration changes to ecelerity.conf | 4.0 | | config |
-| [count](/momentum/4/console-commands/count) – Count open connections | 4.0 | | connections |
-| [counter add](/momentum/4/console-commands/counter) – Add the specified amount to a counter | 4.0 | | policy |
-| [counter help](/momentum/4/console-commands/counter) – Display help for the counter command | 4.0 | | policy |
-| [counter increment](/momentum/4/console-commands/counter) – Increment a counter | 4.0 | | policy |
-| [counter list](/momentum/4/console-commands/counter) – List all counters counter | 4.0 | | policy |
-| [counter reset](/momentum/4/console-commands/counter) – Reset a counter to zero | 4.0 | | policy |
-| [counter unlink](/momentum/4/console-commands/counter) – Unlink a counter | 4.0 | | policy |
-| [curfew check](/momentum/4/modules/curfew#modules.curfew.console) – Report whether a binding/domain pair is under curfew right now | 5.3 | curfew | module |
-| [curfew journal](/momentum/4/modules/curfew#modules.curfew.console) – Force an immediate journal sweep of curfew rule transitions | 5.3 | curfew | module |
-| [curfew reload](/momentum/4/modules/curfew#modules.curfew.console) – Re-read the curfew schedule file | 5.3 | curfew | module |
-| [curfew show](/momentum/4/modules/curfew#modules.curfew.console) – Dump every loaded curfew rule | 5.3 | curfew | module |
-| [curfew status](/momentum/4/modules/curfew#modules.curfew.console) – Show a one-line curfew module summary | 5.3 | curfew | module |
-| [delay_dsn:instance_name show pending events](/momentum/4/modules/delay-dsn#modules.delay_dsn.console) – List all pending events | 4.0 | delay_dsn | module |
-| [delayed](/momentum/4/console-commands/delayed) – Show domains with delayed queue size bigger than threshold | 4.0 | | queue admin |
-| [dig](/momentum/4/console-commands/dig) – Submit a domain for dns MX query | 4.0 | | dns |
-| [dk_sign:instance_name flush keycache](/momentum/4/modules/domainkeys#modules.domainkeys.console) – Flush all entries from the keycache | 4.0 | domainkeys | module |
-| [dk_sign:instance_name stats](/momentum/4/modules/domainkeys#modules.domainkeys.console) – Display statistics relating to domain key signing | 4.0 | domainkeys | module |
-| [dns_cache lookup](/momentum/4/console-commands/dns-cache) – Look up a query in the DNS cache | 4.0 | | dns |
-| [dns_cache refcnts](/momentum/4/console-commands/dns-cache) – Show the references in the DNS cache | 4.0 | | dns |
-| [dns_cache stats](/momentum/4/console-commands/dns-cache) – Show summary stats for the DNS cache | 4.0 | | dns |
-| [dns_cache submit](/momentum/4/console-commands/dns-cache) – Submit a DNS query | 4.0 | | dns |
-| [dnsbuf interval](/momentum/4/modules/dnsbuf#modules.dnsbuf.console) – Change how often setsockopt() operations are performed | 4.2 | dnsbuf | module |
-| [dnsbuf rcvbuf_size](/momentum/4/modules/dnsbuf#modules.dnsbuf.console) – Change the rcvbuf_size value on the fly | 4.2 | dnsbuf | module |
-| [dnsbuf sndbuf_size](/momentum/4/modules/dnsbuf#modules.dnsbuf.console) – Change the sndbuf_size value on the fly | 4.2 | dnsbuf | module |
-| [dnsbuf verify](/momentum/4/modules/dnsbuf#modules.dnsbuf.console) – Query active sockets for current buffer sizes and report the results | 4.2 | dnsbuf | module |
-| [domain all](/momentum/4/console-commands/domain-all) – Show statistics for all domains | 4.0 | | stats |
-| [domain](/momentum/4/console-commands/domain) – Show domain statistics | 4.0 | | stats |
-| [ds_core flush cache_name](/momentum/4/modules/ds-core#modules.ds_core.console) – Flush a specific cache | 4.0 | ds_core | module |
-| [ds_core stats](/momentum/4/modules/ds-core#modules.ds_core.console) – Print stats for each cache | 4.0 | ds_core | module |
-| [ds_ldap flush connection cache](/momentum/4/modules/ds-core#modules.ds_ldap.console) – Remove all entries from the connection cache | 4.0 | ds_ldap | module |
-| [ds_ldap show connection cache stats](/momentum/4/modules/ds-core#modules.ds_ldap.console) – Output statistics relating to the connection cache | 4.0 | ds_ldap | module |
-| [ec_logger:instance_name help](/momentum/4/modules/ec-logger#modules.ec_logger.console) – Display the available commands | 4.0 | ec_logger | module |
-| [ec_logger:instance_name reopen logs](/momentum/4/modules/ec-logger#modules.ec_logger.console) – Close and reopen the logs | 4.0 | ec_logger | module |
-| [fail all](/momentum/4/console-commands/fail-all) – Fail matching queued messages globally with a bounce message (filter required) | 5.3 | | queue admin |
-| [fail all quiet](/momentum/4/console-commands/fail-all-quiet) – Fail matching queued messages globally without generating bounces (filter required) | 5.3 | | queue admin |
-| [fail domain quiet](/momentum/4/console-commands/fail-domain-quiet) – Fail messages for a domain without generating bounces | 4.0 | | misc |
-| [fail domain](/momentum/4/console-commands/fail-domain) – Fail messages for a domain with a bounce message | 4.0 | | misc |
-| [fingerprint cache summary](/momentum/4/console-commands/fingerprint-cache-summary) – Display the current cache size | 4.0 | fingerprint | policy |
-| [fingerprint rejection summary](/momentum/4/console-commands/fingerprint-rejection-summary) – Display details related to the current inbound connection | 4.0 | fingerprint | policy |
-| [flush domain](/momentum/4/console-commands/flush-domain) – Perform delivery attempt on delayed queue of a domain | 4.0 | | queue admin |
-| [help](/momentum/4/console-commands/help) – Show help information for console commands | 4.0 | | misc |
-| [inbound_audit add](/momentum/4/modules/inbound-audit#modules.inbound_audit.console) – Add a value to a CIDR in a named series | 4.0 | inbound_audit | module |
-| [inbound_audit count_cidr](/momentum/4/modules/inbound-audit#modules.inbound_audit.console) – Count a CIDR in a named series | 4.0 | inbound_audit | module |
-| [inbound_audit delete_ip](/momentum/4/modules/inbound-audit#modules.inbound_audit.console) – Delete an IP from a defined named series | 4.0 | inbound_audit | module |
-| [inbound_audit help](/momentum/4/modules/inbound-audit#modules.inbound_audit.console) – Display the available commands | 4.0 | inbound_audit | module |
-| [inbound_audit load](/momentum/4/modules/inbound-audit#modules.inbound_audit.console) – Load a series from a file | 4.0 | inbound_audit | module |
-| [inbound_audit show all](/momentum/4/modules/inbound-audit#modules.inbound_audit.console) – Display verbose statistics for all domains as a CSV list | 4.0 | inbound_audit | module |
-| [inbound_audit show ip](/momentum/4/modules/inbound-audit#modules.inbound_audit.console) --> – Dump all collected time-series data for the specified IP/netblock | 4.0 | inbound_audit | module |
-| [inbound_audit subtract](/momentum/4/modules/inbound-audit#modules.inbound_audit.console) – Subtract a value from a CIDR in a named series | 4.0 | inbound_audit | module |
-| [mailq](/momentum/4/console-commands/4-mailq) – Show the status of the mail queues | 4.0 | | stats |
-| [memory](/momentum/4/console-commands/4-memory) – Report detailed memory usage | 4.0 | | stats |
-| [message details](/momentum/4/console-commands/message-details) – Show detailed message information | 4.0 | | message |
-| [message fail quiet](/momentum/4/console-commands/message-fail-quiet) – Fail a message and do not create a non-delivery receipt (NDR) | 4.0 | | message |
-| [message fail](/momentum/4/console-commands/message-fail) – Fail a message | 4.0 | | message |
-| [message retry](/momentum/4/console-commands/message-retry) – Perform an immediate delivery attempt on a message | 4.0 | | message |
-| [module hooks](/momentum/4/console-commands/4-module) – Manage loaded module hooks | 4.0 | | module |
-| [module list](/momentum/4/console-commands/4-module) – Show loaded modules | 4.0 | | module |
-| [mta_sts list all](/momentum/4/console-commands/mta-sts) – list active domains which have MTA-STS policy | 4.8 | | mta-sts |
-| [mta_sts show domain](/momentum/4/console-commands/mta-sts) – show MTA-STS policy details for a domain | 4.8 | | mta-sts |
-| [mta_sts refresh policy](/momentum/4/console-commands/mta-sts) – refresh MTA-STS policy for a domain | 4.8 | | mta-sts |
-| [outbound_audit:instance_name clear all](/momentum/4/modules/outbound-audit#modules.outbound_audit.console) – Zero-out all statistics | 4.0 | outbound_audit | module |
-| [outbound_audit:instance_name clear domain](/momentum/4/modules/outbound-audit#modules.outbound_audit.console) – Zero-out a domain's statistics | 4.0 | outbound_audit | module |
-| [outbound_audit:instance_name domain_list](/momentum/4/modules/outbound-audit#modules.outbound_audit.console) – Runtime addition/deletion of a domain in the monitoring list | 4.0 | outbound_audit | module |
-| [outbound_audit:instance_name show all](/momentum/4/modules/outbound-audit#modules.outbound_audit.console) – Dump all collected time-series data for all collected domains | 4.0 | outbound_audit | module |
-| [outbound_audit:instance_name show domain](/momentum/4/modules/outbound-audit#modules.outbound_audit.console) – Dump all collected time-series data for the specified domain | 4.0 | outbound_audit | module |
-| [outbound_audit:instance_name show domains](/momentum/4/modules/outbound-audit#modules.outbound_audit.console) – List the names of all domains which have collected data | 4.0 | outbound_audit | module |
-| [outbound_audit:instance_name show global](/momentum/4/modules/outbound-audit#modules.outbound_audit.console) – Show the global (aggregated) time-series data | 4.0 | outbound_audit | module |
-| [paniclog](/momentum/4/console-commands/paniclog) – Show last several entries written to paniclog | 4.0 | | logs |
-| [pid](/momentum/4/console-commands/pid) – Show process id of Momentum | 4.0 | | misc |
-| [rebind](/momentum/4/console-commands/rebind) – Rebind the messages in a binding or domain | 4.0 | | queue admin |
-| [refresh domain](/momentum/4/console-commands/refresh-domain) – Refresh the DNS information for a domain | 4.0 | | dns |
-| [reopen logs](/momentum/4/console-commands/reopen-logs) – Close and open log files | 4.0 | | logs |
-| [reroute queue](/momentum/4/console-commands/reroute-queue) – Move messages from queues of one domain to queues of the other | 4.0 | | queue admin |
-| [sched at](/momentum/4/modules/sched#modules.sched.console) – Create a recurrent command that repeats at the specified interval | 4.0 | sched | module |
-| [sched delete](/momentum/4/modules/sched#modules.sched.console) – Delete a scheduled job | 4.0 | sched | module |
-| [sched every](/momentum/4/modules/sched#modules.sched.console) – Create a recurrent command that repeats at the specified interval | 4.0 | sched | module |
-| [sched in](/momentum/4/modules/sched#modules.sched.console) – Run a command at the specified number of seconds from the current time | 4.0 | sched | module |
-| [sched list](/momentum/4/modules/sched#modules.sched.console) – List any scheduled tasks | 4.0 | sched | module |
-| [show inbound](/momentum/4/console-commands/show-inbound) – Show all inbound connections | 4.0 | | connections |
-| [show outbound](/momentum/4/console-commands/show-outbound) – Show all outbound connections | 4.0 | | connections |
-| [showqueue](/momentum/4/console-commands/showqueue) – Show queue information | 4.0 | | queue admin |
-| [shutdown](/momentum/4/console-commands/shutdown) – Shutdown Momentum | 4.0 | | misc |
-| [signing_stats reset](/momentum/4/console-commands/signing-stats-reset) – Reset signing stats | 4.0 | domainkeys or opendkim | stats |
-| [signing_stats](/momentum/4/console-commands/signing-stats) – Show DK/DKIM signing stats | 4.0 | domainkeys or opendkim | stats |
-| [sp_async](/momentum/4/console-commands/sp-async) – Access the asynchronous I/O subsystem | 4.0 | | misc |
-| [spool import_poll](/momentum/4/console-commands/spool-import-poll) – Check the status of a spool that is being imported | 4.0 | | misc |
-| [spool import](/momentum/4/console-commands/spool-import) – Import an alternative spool | 4.0 | | resource |
-| [spool_in](/momentum/4/console-commands/spool-in) – Read a message from the spool to the mail queue | 4.0 | | message |
-| [summary reset](/momentum/4/console-commands/summary-reset) – Reset summary statistics | 4.0 | | stats |
-| [summary](/momentum/4/console-commands/summary) – Show global metrics | 4.0 | | stats |
-| [sysinfo](/momentum/4/console-commands/sysinfo) – Show system information | 4.0 | | misc |
-| [threads cpu queue](/momentum/4/console-commands/threads) – Display summary statistics for the CPU thread pools | 4.0 | | stats |
-| [threads io queue](/momentum/4/console-commands/threads) – Display summary statistics for the IO thread pools | 4.0 | | stats |
-| [threads stats](/momentum/4/console-commands/threads) – Display summary statistics for thread pools | 4.0 | | stats |
-| [tls flush cache](/momentum/4/console-commands/tls) – Flush the TLS cache | 4.0 | | tls |
-| [tls rekey](/momentum/4/console-commands/tls) – Remove the temporary RSA key | 4.0 through 5.2 | | tls |
-| [tls show cache](/momentum/4/console-commands/tls) – Show the TLS cache | 4.0 | | tls |
-| [trace smtp add](/momentum/4/console-commands/trace-smtp) – Add an SMTP trace | 4.0 | | misc |
-| [trace smtp list](/momentum/4/console-commands/trace-smtp) – List smtp traces | 4.0 | | misc |
-| [trace smtp remove](/momentum/4/console-commands/trace-smtp) – Remove an SMTP trace | 4.0 | | misc |
-| [unlink stats](/momentum/4/console-commands/unlink-stats) – Show statistics of removing messages from the disk | 4.0 | | stats |
-| [version](/momentum/4/console-commands/version) – Show version information of Momentum | 4.0 | | misc |
-| [write config](/momentum/4/console-commands/write-config) – Display current running configuration | 4.0 | | config |
diff --git a/content/momentum/4/4-container-building.md b/content/momentum/4/4-container-building.md
deleted file mode 100644
index df6179e12..000000000
--- a/content/momentum/4/4-container-building.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-lastUpdated: "01/31/2026"
-title: "Building an Image"
-description: "Instructions for building a Docker container image for Momentum."
----
-
-## Building the Momentum container
-
-Use a *Dockerfile* to build a Momentum container image.
-
-> **NOTE:** Momentum requires a valid license and working configuration to run. You can either include them into your container image or attach them later to the container at runtime (like in the example below, where they will be found in the mounted `/opt/msys/ecelerity/etc/` tree).
-
-**Example:**
-```dockerfile
-FROM rockylinux:9
-
-# Install dependencies and utilities
-RUN dnf update -y && \
- dnf install -y bzip2 epel-release iproute iputils net-tools openssl perl procps-ng sudo unbound && \
- dnf clean all && rm -rf /var/cache/dnf
-
-# Copy and unpack the bundle into the container
-ARG version=M.m.p.bbbbb
-ADD momentum-mta-bundle-${version}.rhel9.x86_64.tar.gz /var/tmp/
-
-# Install as per the Momentum Installation Guide
-RUN cd /var/tmp/momentum-mta-${version} && \
- ./setrepodir && \
- dnf install -y --config momentum.repo --enablerepo=momentum msys-role-mta && \
- dnf clean all && rm -rf /var/cache/dnf && \
- rm -rf /var/tmp/momentum-mta-bundle-${version}.rhel9.x86_64.tar.gz momentum-mta-${version}
-
-# Setup initial configuration as per the same Momentum Installation Guide
-RUN sudo -u ecuser mkdir -p /opt/msys/ecelerity/etc/conf/default && \
- cd /opt/msys/ecelerity/etc/sample-configs/default && \
- sudo -u ecuser cp ecelerity.conf ecelerity-cluster.conf common.conf /opt/msys/ecelerity/etc/conf/default
-
-# Environment variables for the gimli (heartbeat) monitor
-ENV GIMLI_QUIET=1 \
- GIMLI_DETACH=0 \
- GIMLI_PID_FILE=/var/run/ecelerity.monitor.pid \
- GIMLI_TRACE_DIR=/var/log/ecelerity/traces
-
-# Paths that could be (bind-)mounted
-VOLUME ["/opt/msys/ecelerity/etc/conf/default", "/var/log/ecelerity", "/var/spool/ecelerity"]
-
-# Ports that could be exposed
-EXPOSE 25 2025
-
-# Start the MTA service in the foreground inside the container
-CMD ["/opt/msys/gimli/bin/monitor", "/opt/msys/ecelerity/sbin/run.ecelerity"]
-````
-
-To build the Docker image from the above Dockerfile:
-1. Copy the Momentum MTA bundle to the same directory as the Dockerfile.
-2. Run the following command in that directory:
-```bash
-docker build --tag momentum-mta:$VERSION --build-arg version=$VERSION .
-```
-where `$VERSION` is the version of the Momentum MTA bundle you are using (e.g., `5.0.0.12345`).
-
-## Persistence of data
-
-By default, all files in a container do **NOT** persist when the container exits. On the other hand, Momentum stores state data (e.g. spooled messages) in the filesystem, and a restart of the service would take it back from the saved state. Momentum also generates some files for post-processing, such as logs and traces.
-
-To ensure that these files persist across container restarts, you should use [bind mounts](https://docs.docker.com/engine/storage/bind-mounts/) to persist the following (but not limited to) directories in the container:
-- `/var/spool/ecelerity`: directory that keeps the spool files for emails not yet delivered.
-- `/var/log/ecelerity`: directory that stores the logs and traces generated by Momentum.
-
-Optionally, you can also mount the configuration directory:
-- `/opt/msys/ecelerity/etc/conf/default`: directory that contains the configuration files for Momentum, such as `ecelerity.conf`.
-
-## Exposing listeners
-
-Momentum listens on several ports for different purposes. When running in a container, you can expose these ports to the host system using Docker's port mapping feature. For a more comprehensive explanation of that, see Docker's [documentation](https://docs.docker.com/engine/network/).
-
-### Bridge mode
-
-By default, Docker runs containers in "bridge" mode, which means that the container has its own network namespace and can communicate with the host through a virtual bridge. The host addresses aren't visible inside the container, and you *must* use port mapping to expose the necessary ports for traffic sent to the host to reach Momentum.
-
-To expose the ports, you use the `-p` option when running the container.
-
-### Host mode
-
-Alternatively, you can run the container in "host" mode, which makes the host interfaces transparent to the container, i.e., allows the container to share the host's network stack. In this case, you do not need to map ports, as the container will listen on the same ports as the host.
diff --git a/content/momentum/4/4-container-compose.md b/content/momentum/4/4-container-compose.md
deleted file mode 100644
index 694b50d3b..000000000
--- a/content/momentum/4/4-container-compose.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-lastUpdated: "07/01/2025"
-title: "Using Docker Compose"
-description: "Instructions for using Docker Compose to run the Momentum container."
----
-
-
-While the `docker run` command is useful for launching single containers manually, **Docker Compose** offers a more structured, maintainable, and scalable way to define and manage containers. This is especially valuable for services like Momentum which may involve multiple volumes, environment variables, port mappings, and resource configurations.
-
-## Benefits of using Docker Compose
-
-- **Centralized configuration (YAML file)**: all settings — environment variables, volumes, port bindings, restart policies, resource limits — are defined in a single `docker-compose.yml` file. This makes configurations clear, reproducible, and version-controlled.
-- **Easier management**: if the container requires several mounts, ports, or links to other services (e.g., metrics, monitoring agents), Docker Compose handles that in one command, without long and error-prone `docker run` lines.
-- **Improved readability and maintainability**: instead of complicated CLI commands, configuration is written in a clean, readable YAML format, simplifying troubleshooting.
-- **Environment-specific overrides**: Docker Compose supports separate override files (e.g., `docker-compose.override.yml` or `.env`) for environment-specific settings (development, staging, production).
-- **Container lifecycle management**: with Docker Compose, you can start, stop, restart, or destroy entire service stacks with simple commands (up, down, restart, etc.).
-- **Restart policies and fault tolerance**: easily define behavior on crash or reboot (`restart: unless-stopped`, `always`, etc.) directly in the `docker-compose.yml` file.
-
-## Running the Momentum container
-
-To create a Momentum container using Docker Compose, put a `docker-compose.yml` file in your project directory.
-
-**Example:**
-```yaml
-services:
- mta:
- cap_add:
- - NET_BIND_SERVICE
- - SYS_PTRACE
- command: "/opt/msys/gimli/bin/monitor /opt/msys/ecelerity/sbin/run.ecelerity"
- container_name: mta
- cpus: 4
- environment:
- - GIMLI_QUIET=1
- - GIMLI_DETACH=0
- - GIMLI_PID_FILE=/var/run/ecelerity.monitor.pid
- - GIMLI_TRACE_DIR=/var/log/ecelerity/traces
- hostname: mta.test
- image: momentum-mta:${VERSION}
- mem_limit: 8g
- network_mode: host
- #ports: # Uncomment if mode changes to "bridge"
- # - "25:25"
- # - "2025:2025"
- restart: unless-stopped
- volumes:
- - type: bind
- read_only: true
- source: /path/to/your/config
- target: /opt/msys/ecelerity/etc/conf/default
- - type: bind
- source: /path/to/your/logs
- target: /var/log/ecelerity
- - type: bind
- source: /path/to/your/spool
- target: /var/spool/ecelerity
-```
-
-To run the container using Docker Compose with the `docker-compose.yml` contents of the example above, execute the following command in the same directory as the YAML file:
-
-```
-VERSION=5.0.0.xxxxx docker compose up -d
-```
-
-### Setting resource limits
-
-Notice it is possible to set resource limits (CPU and memory) directly in the `docker-compose.yml` file, which is not possible with the `docker run` command. The limits set in the example above are:
-- `cpus: 4`: limits the container to use 4 CPU cores.
-- `mem_limit: 8g`: limits the container to use a maximum of 8 GB of memory.
-
-and they can be checked with the following command:
-```
-docker inspect mta | grep -Eiw 'NanoCpus|Memory'
-```
-which should return something like:
-```
- "NanoCpus": 4000000000,
- "Memory": 8589934592,
-```
diff --git a/content/momentum/4/4-container-running.md b/content/momentum/4/4-container-running.md
deleted file mode 100644
index a5b070787..000000000
--- a/content/momentum/4/4-container-running.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-lastUpdated: "07/01/2025"
-title: "Running and Accessing the Container"
-description: "Instructions for running the Docker container built with Momentum."
----
-
-
-## Running the Momentum container
-
-For a manual run for test of the Momentum container from the image built as per [here](/momentum/4/4-container-building), you can use the following command:
-
-```bash
-docker run -d --name mta --hostname mta.test \
- -v /path/to/your/config:/opt/msys/ecelerity/etc/conf/default:ro \
- -v /path/to/your/logs:/var/log/ecelerity \
- -v /path/to/your/spool:/var/spool/ecelerity \
- -p 25:25 -p 2025:2025 \
- --cap-add=NET_BIND_SERVICE --cap-add=SYS_PTRACE \
- momentum-mta:$VERSION
-```
-
-where `$VERSION` is the version of Momentum used to build and tag the image (e.g., `5.0.0.12345`).
-
-> **NOTE:** To run Momentum in your production environment, you will likely want to customize mounting of volumes and mapping of ports to suit your deployment needs.
-
-In the command above, notice the following:
-- The `:ro` suffix on the volume mount for `/opt/msys/ecelerity/etc/conf/default` indicates that the configuration is mounted in read-only mode.
-- Since the "bridge" network mode (the default) is being used, the `-p` options map the container's ports to the host's ports.
-- The `--cap-add=NET_BIND_SERVICE` capability allows the container to bind to low-numbered ports (like 25).
-- The `--cap-add=SYS_PTRACE` capability allows the container to use the `ptrace` system call, which is required by **gimli** for monitoring.
-
-You can check the container is running with the following command:
-```
-docker ps
-```
-and see the `mta` container listed with its status as "Up":
-```
-CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-319be9d4affd momentum-mta:5.0.0.12345 "/opt/msys/gimli/bin…" 4 seconds ago Up 3 seconds 0.0.0.0:25->25/tcp, [::]:25->25/tcp, 0.0.0.0:2025->2025/tcp, [::]:2025->2025/tcp mta
-```
-You can also see in the logs of the container:
-```bash
-docker logs mta
-```
-that Momentum license was validated:
-```
-[Wed 11 Jun 2025 18:27:48] <0x7f5926da1200> Validating software license.
-(...)
-[Wed 11 Jun 2025 18:27:48] <0x7f5926da1200> Valid license.
-```
-
-## Accessing the container
-
-Use the `docker exec` command to access the `mta` container via a terminal session. For example, to inspect the running processes inside the container, you can run:
-```
-docker exec mta ps -efH
-```
-obtaining output similar to:
-```
-UID PID PPID C STIME TTY TIME CMD
-root 239 0 0 18:39 ? 00:00:00 ps -efH
-root 1 0 0 18:27 ? 00:00:00 /opt/msys/ecelerity/sbin/run.ecelerity: monitoring child 7
-ecuser 7 1 0 18:27 ? 00:00:02 /opt/msys/ecelerity/sbin/ecelerity
-```
-
-You can also run a shell inside the container:
-```
-docker exec -it mta /bin/bash
-```
-This will give you a shell prompt inside the container, allowing you to run commands from there, including the `ec_console`:
-```
-me@host:~$ docker exec -it mta /bin/bash
-[root@mta /]# hostname
-mta.test
-[root@mta /]# echo "sysinfo" | sudo -u ecuser /opt/msys/ecelerity/bin/ec_console
-Ecelerity Version: 5.0.0.74264 r(msys-ecelerity:tags/5.0.0-ga^0) (64-bit)
-build date: Feb 20 2025 (RELEASE)
-product name: Ecelerity Momentum
-Rocky Linux release 9.5 (Blue Onyx)
-Linux mta.test 5.14.0-503.22.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jan 15 08:02:15 EST 2025 x86_64
-
-[root@mta /]# exit
-exit
-me@host:~$
-```
diff --git a/content/momentum/4/4-container.md b/content/momentum/4/4-container.md
deleted file mode 100644
index b6fc52857..000000000
--- a/content/momentum/4/4-container.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "07/01/2025"
-title: "Running Momentum in a Container"
-description: "Rationale for running Momentum in a containerized environment, and instructions for doing so."
----
-
-
-Running Momentum in a container is a strategic move toward simplifying deployment, increasing portability, and standardizing runtime environments through development, staging and production. It allows the MTA to operate as a self-contained, version-controlled unit that can be easily replicated and scaled.
-
-Guidance is provided here to run Momentum inside a Linux-based container.
-
-**NOTES:**
-
-- This feature is *experimental*. We are actively seeking feedback to make Momentum more container-friendly.
-- Docker engine and Docker Compose must be installed on the host system where Momentum container will be built and/or run.
-- This document assumes familiarity with Docker and containerization concepts. For more information on it, see Docker's [documentation](https://docs.docker.com/).
-
-## Rationale
-
-Running Momentum in a container provides several benefits:
-- **Portability across environments**: Containers abstract away OS-level differences.
-- **Simplified deployment**: Packaging Momentum and its dependencies makes deployments predictable and repeatable.
-- **Isolation and stability**: Momentum runs in a sandboxed environment, isolated from the host and other services, minimizing the risk of conflicts with host-level libraries or services.
-- **Scalability**: Containers can be easily scaled up or down based on load, allowing for efficient resource utilization.
-- **Easier upgrades**: Versioning container images makes it straightforward to deploy a new version of Momentum in parallel with minimum downtime.
-- **Better resource management**: Containers can be configured with explicit CPU and memory limits, preventing from consuming unexpected system resources.
-- **Fault tolerance and persistence**: By combining containers with persistent volumes, configuration, policies, spooled messages, and logs can be retained across container restarts, ensuring that critical data is not lost.
-- **DevOps and automation friendly**: Containers integrate well with CI/CD pipelines, Docker Compose, and orchestration tools (like Kubernetes and Swarm), enabling fast testing, staging, and deployment cycles.
-
-## Planning for Containerization
-
-Before deploying Momentum in a container, consider the following:
-- **Container image**: When building your own image, select a RHEL-compatible base OS and set the proper environment variables.
-- **Configuration management**: Plan how to manage configuration and other module files, such as `ecelerity.conf`, Lua scripts, etc. You can use bind mounts or Docker volumes to provide such files to the container.
-- **Data persistence**: Likewise, determine how to persist data across container restarts. Use Docker volumes or bind mounts to store spooled messages and logs outside the container. It might be required to handle volume ownership and permissions to ensure Momentum can read/write to these volumes.
-- **Networking**: Decide how to expose ports and configure networking. You can use Docker's port mapping to expose the necessary ports for the different Momentum listeners.
diff --git a/content/momentum/4/4-copyright-3-rdparty-disclaimer.md b/content/momentum/4/4-copyright-3-rdparty-disclaimer.md
deleted file mode 100644
index c3d289e2b..000000000
--- a/content/momentum/4/4-copyright-3-rdparty-disclaimer.md
+++ /dev/null
@@ -1,101 +0,0 @@
----
-lastUpdated: "07/14/2021"
-title: "Disclaimers for Redistributed Third-Party Software"
-description: "Redistribution and use in source and binary forms with or without modification are permitted provided that the following conditions are met Redistributions of source code must retain the above copyright notice this list of conditions and the following disclaimer Redistributions in binary form must reproduce the above copyright notice this..."
----
-
-### Nginx Disclaimer
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-### M.I.T. Disclaimer (ares)
-
-PERMISSION TO USE, COPY, MODIFY, AND DISTRIBUTE THIS SOFTWARE AND ITS DOCUMENTATION FOR ANY PURPOSE AND WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE COPYRIGHT NOTICE APPEAR IN ALL COPIES AND THAT BOTH THAT COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN SUPPORTING DOCUMENTATION, AND THAT THE NAME OF M.I.T. NOT BE USED IN ADVERTISING OR PUBLICITY PERTAINING TO DISTRIBUTION OF THE SOFTWARE WITHOUT SPECIFIC, WRITTEN PRIOR PERMISSION. M.I.T. MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
-
-### CMU Disclaimer (asn1)
-
-Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of CMU not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.
-
-CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-### Kannel SMPP
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
-* The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Kannel Group (http://www.kannel.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.
-
-* The names "Kannel" and "Kannel Group" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact org@kannel.org.
-
-* Products derived from this software may not be called "Kannel", nor may "Kannel" appear in their name, without prior written permission of the Kannel Group.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-### libcurl
-
-Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder.
-
-### Lua
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-### MiGBase64
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the MiG InfoCom AB nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-### mod_snmp
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
-* All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by Harrie Hazewinkel."
-
-* The name of the Copyright holder must not be used to endorse or promote products derived from this software without prior written permission.
-
-* Products derived from this software may not be called "MOD-SNMP" nor may "MOD-SNMP" appear in their names without prior written permission of the Harrie Hazewinkel.
-
-* Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the Harrie Hazewinkel"
-
-THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-### BSD disclaimer (ndbm, libedit)
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-### OpenSSL Disclaimer (crypto)
-
-THIS SOFTWARE IS PROVIDED BY ERIC YOUNG "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-### p0f
-
-p0f (2.0.8) is provided under the terms of the [GNU Lesser General Public Licence](http://www.gnu.org/licenses/lgpl.html).
-
-You may download the source code for p0f [here](http://lcamtuf.coredump.cx/p0f.tgz).
-
-### MIT Disclaimer
-
-"Permission is hereby granted, free of charge, to any person obtaining a copy of this file (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
diff --git a/content/momentum/4/4-copyrights.md b/content/momentum/4/4-copyrights.md
deleted file mode 100644
index 59934c639..000000000
--- a/content/momentum/4/4-copyrights.md
+++ /dev/null
@@ -1,130 +0,0 @@
----
-lastUpdated: "04/03/2020"
-title: "Copyright Notices"
-description: "The following copyrights apply to each source file in Momentum including this product manual Copyright 1999 2014 Message Systems Inc All Rights Reserved All or some of the following copyrights apply to third party libraries distributed with or link against Momentum Copyright 1999 2014 Message Systems Inc All Rights Reserved..."
----
-
-## Copyright Notices
-
-
-The following copyrights apply to each source file in Momentum including this product manual:
-
-Copyright © 1999-2020 Message Systems, Inc. All Rights Reserved.
-
-All or some of the following copyrights apply to third-party libraries distributed with or link against Momentum:
-
-Copyright © 1999-2020 Message Systems, Inc. All Rights Reserved.
-
-Copyright © 2006-2013 Hewlett-Packard, and its licensors. All rights reserved.
-
-Copyright © 1998 Juniper Networks
-
-Copyright © 2000-2002 Apache Software Foundation
-
-Copyright © 1991, 2000, 2001 Lucent Technologies
-
-Copyright © 2005-2006 eZ Systems AS
-
-Copyright © 2007, 2009 John Resig
-
-Copyright © 2007-2008 Geof Stearns, Michael Williams and Bobby van der Sluis
-
-Copyright © 2005-2006 Zend Technologies, Inc.
-
-Copyright © 2009 The Dojo Foundation
-
-Copyright © 1990, 1992, 1993 The Regents of the University of California. All Rights Reserved.
-
-Copyright © 1995-1998 Eric Young (eay@cryptsoft.com) All Rights Reserved.
-
-Copyright © 1998 by the Massachusetts Institute of Technology. All Rights Reserved.
-
-Copyright © 1997-2001 University of Cambridge.
-
-Copyright © 1997-2000 Harrie Hazewinkel. All rights reserved.
-
-Copyright © 1988, 1989, 1991, 1992 by Carnegie Mellon University. All Rights Reserved.
-
-Copyright © Microsoft Corporation. All Rights Reserved.
-
-Copyright © 2004 Sun Microsystems, Inc. All rights reserved.
-
-Copyright © 1996 - 2006, Daniel Stenberg, . All rights reserved.
-
-Copyright © 2004, Mikael Grev, MiG InfoCom AB. (base64@miginfocom.com) All rights reserved.
-
-Copyright © 1994-2008 Lua.org, PUC-Rio.
-
-Copyright © 2001-2008 Kannel Group. Copyright © 1998-2001 WapIT Ltd. All rights reserved.
-
-Copyright © 2000 - 2006 by Michal Zalewski
-
-Copyright © 2002-2014 Igor Sysoev Copyright © 2011-2014 Nginx, Inc
-
-The files amqp-rabbitmq-0.8.json and amqp-rabbitmq-0.9.1.json are "Copyright © 2008-2013 GoPivotal", Inc. and are covered by the MIT license.
-
-jQuery is "Copyright © 2010 John Resig" and is covered by the MIT license. It was downloaded from http://jquery.com/
-
-EJS is "Copyright © 2007 Edward Benson" and is covered by the MIT license. It was downloaded from http://embeddedjs.com/
-
-Sammy is "Copyright © 2008 Aaron Quint, Quirkey NYC, LLC" and is covered by the MIT license. It was downloaded from http://code.quirkey.com/sammy/
-
-ExplorerCanvas is "Copyright 2006 Google Inc" and is covered by the Apache License version 2.0\. It was downloaded from http://code.google.com/p/explorercanvas/
-
-Flot is "Copyright © 2007-2013 IOLA and Ole Laursen" and is covered by the MIT license. It was downloaded from http://www.flotcharts.org/ Webmachine is Copyright © Basho Technologies and is covered by the Apache License 2.0\. It was downloaded from http://webmachine.basho.com/
-
-Eldap is "Copyright © 2010, Torbjorn Tornkvist" and is covered by the MIT license. It was downloaded from https://github.com/etnt/eldap
-
-Mochiweb is "Copyright © 2007 Mochi Media, Inc." and is covered by the MIT license. It was downloaded from http://github.com/mochi/mochiweb/
-
-glMatrix is "Copyright © 2011, Brandon Jones" and is covered by the BSD 2-Clause license. It was downloaded from http://code.google.com/p/glmatrix/
-
-## Acknowledgements
-
-This software and documentation are based in part on software and documentation under license from Hewlett-Packard Company. For more information see [http://www.vertica.com/](http://www.vertica.com/).
-
-This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)
-
-This product includes software developed by the University of California, Berkeley and its contributors.
-
-This product uses software developed by Spread Concepts LLC for use in the Spread toolkit. For more information about Spread, see [http://www.spread.org](http://www.spread.org)
-
-Regular expression support is provided by the PCRE library package, which is open source software, written by Philip Hazel, and copyright by the University of Cambridge, England.
-
-[ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/](ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/)
-
-This product includes software developed by Harrie Hazewinkel. Also thanked are:
-
-The Simple group of the University of Twente, http://www.simpleweb.org/
-
-This product includes a component of the Microsoft Debugging Tools for Windows™, which is provided royalty free in binary form, and is copyright by the Microsoft Corporation. This statement of copyright does not imply that the Microsoft Corporation endorses our product.
-
-This product includes software developed by Sun Microsystems, Inc.
-
-This product includes software developed by Daniel Stenberg.
-
-This product includes software developed by the Kannel Group (http://www.kannel.org/).
-
-This product includes software developed by Juniper Networks.
-
-This product includes software developed by the Apache Software Foundation.
-
-This product includes software developed by Lucent Technologies.
-
-This product includes software developed by eZ Systems AS.
-
-This product includes software developed by John Resig.
-
-This product includes software developed by Geof Stearns, Michael Williams and Bobby van der Sluis.
-
-This product includes software developed by Zend Technologies, Inc.
-
-This product includes software developed by the Dojo Foundation.
-
-This product includes software developed by Michal Zalewski
-
-This product includes software developed by Michael A. Davis , Kirby Kuehl and Kevin Currie
-
-This product includes software developed by Nginx, Inc.
-
-This product includes software developed by RabbitMQ.
diff --git a/content/momentum/4/4-ecelerity-conf-fallback.md b/content/momentum/4/4-ecelerity-conf-fallback.md
deleted file mode 100644
index a6f18b19c..000000000
--- a/content/momentum/4/4-ecelerity-conf-fallback.md
+++ /dev/null
@@ -1,137 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Configuration Scopes and Fallback"
-description: "Momentum has a flexible configuration system that allows many options to be set to different values for different hosts domains bindings and binding groups binding group stanza to configure binding group specific options binding stanza to configure binding specific options domain stanza to configure Multi VIP domain specific options host..."
----
-
-Momentum has a flexible configuration system that allows many options to be set to different values for different hosts, domains, bindings, and binding groups:
-
-* [binding_group](/momentum/4/config/ref-binding-group) - stanza to configure binding_group-specific options
-
-* [binding](/momentum/4/config/ref-binding) - stanza to configure binding-specific options
-
-* [domain](/momentum/4/config/ref-domain) - stanza to configure MultiVIP© domain-specific options
-
-* [host](/momentum/4/config/ref-host) - stanza to configure host-specific options
-
-`domain` stanzas can be nested inside a `binding` stanza, creating a per-binding, per-domain configuration. This is referred to as a `binding::domain` scope. Also, since hosts may appear within bindings, there is also a `binding::host` scope. Other permutations also apply; for example, when a domain is within a binding that is in turn a member of a binding group, the scope is `binding-group::binding::domain`.
-
-From within the console, you can determine the value of an option within a specific scope using **config eval** .
-
-For example, to determine the value of `Enable_Authentication` within the scope of a TCP/IP Listen stanza within a Control_Listener, issue the command:
-
-**`config eval Control_Listener Listen 127.0.0.1:2025 Enable_Authentication`**
-
-If `Enable_Authentication` is set to `true` within the Control_Listener scope and not overridden in the TCP/IP Listen stanza, its value will be the fallback value of `true`.
-
-Since options may be defined in more than one scope, it can sometimes be difficult to determine what value applies. Momentum resolves the configuration options by looking for the most specific setting it can find; if it doesn't find a precise match, it falls back to the parent level(s) and repeats this process until it reaches the globally configured value.
-
-How this works is best demonstrated by example:
-
-
-
-
-```
-max_outbound_connections = 40
-
-domain "example.com" {
- max_outbound_connections = 20
-}
-
-domain "someotherexample.com" {
- max_resident_active_queue_size = 500
-}
-```
-
-This configures Momentum to open no more than 40 connections to a given domain, except for the domain `example.com`, which is limited to 20 connections. The domain `someotherexample.com` does not explicitly specify a value for `max_outbound_connections`, so it falls-back to the globally configured value of 40.
-
-A similar fallback occurs when using bindings:
-
-
-
-
-```
-message_expiration = 86400
-
-binding "example" {
- message_expiration = 3600
-}
-
-domain "example.com" {
- message_expiration = 120
-}
-
-binding "example2" {
- message_expiration = 7200
-
- domain example.com {
- message_expiration = 86400
- }
-
- domain "anotherexample.com" {
- max_resident_active_queue_size = 500
- }
-}
-
-binding "example3" {
-
- domain "example.com" {
- max_resident_active_queue_size = 500
- }
-
- domain "anotherexample.com" {
- message_expiration = 86400
- }
-}
-```
-
-In this configuration, the message expiration time is 86400 seconds, unless the mail is attached to one of the bindings, `example`, `example2` or `example3`. Mail on binding `example` is subject to an expiration time of 3600 seconds. On binding `example2`, the expiration time is 7200 seconds except for mail destined for the domain `example.com`, which is set to 86400 seconds. Because the most specific setting for the domain `example.com` is the domain stanza within the binding stanza, this is the setting that takes effect. Outside the binding `example2`, in a global domain stanza, `message_expiration` is set to `120` for domain `example.com`, but this setting will not take effect because it is overridden by the more specific setting.
-
-Note that because the domain `anotherexample.com` within binding `example2` does not specify a value for `message_expiration`, the effective value is taken from its parent binding, which is 7200\. The same value will be used for any other domain routed via that binding unless it is explicitly overridden.
-
-Binding `example3` is configured similarly to binding `example2`, except that it does not specify a value for `message_expiration`. This means that mail for domain `anotherexample.com` will be subject to a message expiration of 86400, because it is explicitly configured. All other domains will fall back to the value of their parent binding, which, in this case is "unset", so the value will fall back again and look for a global domain setting. For the domain `example.com`, there is a global domain configuration that sets message expiration to 120 seconds, so this value will be used. For all other domains within this binding, there is no global domain stanza so the fallback ends up at the globally configured value of 86400.
-
-Bindings can be nested within binding groups as shown in the following example:
-
-
-
-
-```
-max_outbound_connections = 30
-
-binding_group "group1" {
- max_outbound_connections = 5
-
- binding "example" {
- bind_address = 10.10.10.10
- max_outbound_connections = 15
-
- domain "example.com" {
- #some other options
- }
- }
-}
-```
-
-In this specific case, the value of `max_outbound_connections` for domain `example.com` will be `15` because `max_outbound_connections` is not defined within the domain `example.com`. This option then assumes the value of the binding that contains the domain. You can confirm the value by opening the console and using **config eval** . For example:
-
-```
-ecelerity(/tmp/2025)> config eval binding_group group1 binding example \
- domain example.com max_outbound_connections Max_Outbound_Connections = 15
-```
-
-If you remove `max_outbound_connections` from the binding `example`, the value of this option for the domain `example.com` becomes `5`, namely its value within the binding group that contains domain `example.com`.
-
-In summary, the value that a configuration option assumes, in order of decreasing precedence, is as follows:
-
-* Value given in a domain stanza within a binding that is part of a binding group
-
-* Value given in a domain stanza within a binding
-
-* Value given in a domain stanza within a binding_group
-
-* Value specified within the binding stanza
-
-* Value specified within a global domain stanza
-
-* Global setting
\ No newline at end of file
diff --git a/content/momentum/4/4-exe.md b/content/momentum/4/4-exe.md
deleted file mode 100644
index c391f4887..000000000
--- a/content/momentum/4/4-exe.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Executable Command Summary"
-description: "This table lists all executable commands alphabetically giving a brief description Click the command name to see detailed information Table 68 1 Executable commands Command Description Class ad summary Summarize the adaptive module actions adaptive create ssl cert Create a self signed SSL certificate security credmgr Manipulate credentials used with..."
----
-
-This table lists all executable commands alphabetically giving a brief description. Click the command name to see detailed information.
-
-
-
-
-| Command/Description | Class |
-| --- | --- |
-| [ad_summary](/momentum/4/executable/ad-summary) – Summarize the adaptive module actions | adaptive |
-| [create_ssl_cert](/momentum/4/executable/create-ssl-cert) – Create a self-signed SSL certificate | security |
-| [credmgr](/momentum/4/executable/credmgr) – Manipulate credentials used with the securecreds module | security |
-| [ec_adtool](/momentum/4/executable/ec-adtool) – Adjust adaptive parameters in a cluster configuration | adaptive |
-| [ec_console](/momentum/4/executable/ec-console) – Connect to Momentum to perform introspection and administration | console |
-| [ec_ctl](/momentum/4/executable/ec-ctl) – Start, stop, or restart the Momentum Application Server | service |
-| [ec_dkim_ctl](/momentum/4/executable/ec-dkim-ctl) – Manipulate the DK/DKIM database | module |
-| [ec_dump_config](/momentum/4/executable/ec-dump-config) – Output the ecelerity.conf file as XML | config |
-| [ec_lic](/momentum/4/executable/ec-lic) – Fetch a new license file from Message Systems | misc |
-| [ec_log_trace](/momentum/4/executable/ec-log-trace) – Parse Momentum log files | logs |
-| [ec_md5passwd](/momentum/4/executable/ec-md-5-passwd) – Change the password for a system user's password | security |
-| [ec_mta_sts_purge](/momentum/4/executable/ec-mta-sts-purge) - remove expired MTA-STS policy files | misc |
-| [ec_rotate](/momentum/4/executable/ec-rotate) – Rotate Momentum logfiles | misc |
-| [ec_sendmail](/momentum/4/executable/ec-sendmail) – A sendmail compatibility interface | misc |
-| [ec_show](/momentum/4/executable/ec-show) – Show spool or message information | messages |
-| [ec_spool_check](/momentum/4/executable/ec-spool-check) – Verify spool directory integrity (read-only scan) | messages |
-| [eccfg](/momentum/4/executable/eccfg) – Subversion repository management | config |
-| [eccmgr](/momentum/4/executable/eccmgr) – Momentum Cluster Manager | service |
-| [eccmgr_ctl](/momentum/4/executable/eccmgr-ctl) – Start, stop, or restart the Momentum Cluster Manager | service |
-| [ecconfigd](/momentum/4/executable/ecconfigd) – Momentum Configuration Server | service |
-| [ecconfigd_ctl](/momentum/4/executable/ecconfigd-ctl) – Start, stop or restart the Momentum Configuration Server | service |
-| [ecelerity](/momentum/4/executable/ecelerity) – Momentum Application Server | service |
-| [jlog_change_endian](/momentum/4/executable/jlog-change-endian) – Change the endianness of a jlog | logs |
-| [jlog_sanity_check](/momentum/4/executable/jlog-sanity-check) – Validate that a jlog is free of errors | logs |
-| [jlogctl](/momentum/4/executable/jlogctl) – Analyze and maintain jlogs | logs |
-| [lu_pull](/momentum/4/executable/lu-pull) – Update the Live Updates database | adaptive |
-| [validate_config](/momentum/4/executable/validate-config) – Check the validity of the configuration files | config |
\ No newline at end of file
diff --git a/content/momentum/4/4-glossary.md b/content/momentum/4/4-glossary.md
deleted file mode 100644
index 17745a254..000000000
--- a/content/momentum/4/4-glossary.md
+++ /dev/null
@@ -1,335 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Glossary"
-description: "Advanced Message Queuing Protocol AMQP AMQP is an open standard for message oriented middleware used by Momentum 4 For more information see ampq org Aggregator In a Momentum 4 cluster configuration an aggregator or cluster aggregation node is a node used for cluster log aggregation If you require log aggregation..."
----
-
-
-
-- Advanced Message Queuing Protocol (AMQP)
-
--
-
-AMQP is an open standard for message-oriented middleware used by Momentum 4\. For more information see [ampq.org](http://www.amqp.org/).
-
-
-
-- Aggregator
-
--
-
-In a Momentum 4 cluster configuration, an aggregator or cluster aggregation node is a node used for cluster log aggregation. If you require log aggregation, you must install Momentum 4 on the aggregator first. An aggregator is referred to as a Platform node but it does not perform any messaging functions.
-
-
-
-- Campaign
-
--
-
-All messages based on a single piece of copy. A campaign contains recipients and template information. You may have a campaign group that contains related messages.
-
-
-
-- Click Tracking
-
--
-
-Tracking of clicks on the links within a message. In order to track clicks set the `click_tracking` field of the transmission object to `true`.
-
-
-
-- Content
-
--
-
-A component of the template that can include: html, text, SMS MMS rich media, push payload, or other recipient-viewable data.
-
-
-
-- Conversion
-
--
-
-When the recipient of a message performs the desired action; receiver goes beyond open and click.
-
-
-
-- Email Experience Council (EEC)
-
--
-
-The EEC is a global organization that strives to enhance the image of email marketing and communications, while actively advocating its importance to business. For more information see [Email Experience Council](http://www.emailexperience.org/).
-
-
-
-- Injection Metadata
-
--
-
-Key value pairs associated with an injection which are included in the event stream and are available for filtering or reporting. These key value pairs are also given to the substitution engine as a convenience to the customer (with recipient metadata taking precedence over injection metadata when there are conflicts).
-
-
-
-- Injection Substitution Data
-
--
-
-Injection-specific JSON data which is supplied to the substitution engine. Recipient substitution data takes precedence over injection substitution data. Unlike metadata, substitution data is not included in any event streams and is not available for filtering or reporting.
-
-
-
-- IP Warmup
-
--
-
-The concept behind "IP Warmup" is that new IPs need to build a reputation with ISPs. For example, if you send 100,000 emails from a newly acquired IP address that has no history, most large ISPs will block email from this address. IP Warmup slowly increases the send rate on new IPs so that ISPs have time to gauge customer feedback. If there are minimal spam/abuse reports then the ISP will allow an increased send rate.
-
-Sometimes an IP with a good reputation will accidentally send bad content and damage its own reputation. In such cases, it may be necessary to re-establish a good reputation by temporarily suspending sending, reducing the send rate, or by "re-warming" the IP address. With Momentum, this is achieved using the adaptive module, which automatically sets any new bindings to "zero days old" and then slowly increases the send rate unless it starts seeing negative feedback. If this happens, the adaptive module throttles or temporarily suspends the IP address according to internal rules. For more information about the adaptive module, see [“adaptive – Adaptive Delivery”](/momentum/4/modules/4-adaptive).
-
-
-
-- JavaScript Object Notation (JSON)
-
--
-
-JSON is a lightweight data interchange format. It is the input and output format used by the REST API.
-
-
-
-- Multipurpose Internet Mail Extensions (MIME)
-
--
-
-The standard that specifies the format of email messages so that they can be exchanged between different MTAs.
-
-
-
-- Open Tracking
-
--
-
-Track the opening of messages.
-
-
-
-- Passive operating system (OS) fingerprinting (p0f)
-
--
-
-During network communication, passively collect information about the remote device with the intent of inferring the OS. Doing this makes improved TCP/IP communication possible. You must install the Policy Tools suite to enable p0f.
-
-
-
-- Quorum
-
--
-
-In cluster configurations a quorum is the minimum number of active machines that will allow Momentum to continue functioning. Should any nodes go down, you need a quorum within both your Platform servers and within your Analytics servers in order for Momentum to continue functioning. For Momentum, 51% or more active nodes makes up a quorum.
-
-Whenever quorum is lost and regained, the node(s) that lost quorum must inquire whether they have lost the jobs that they were previously working on. This is necessary to minimize the number of duplicate messages that are sent.
-
-What constitutes a quorum has implications for redundancy. For example, you cannot support redundancy with only two Analytics and two Platform nodes. Should any one node go down, you will not have the 51% required for a quorum. Redundancy is only supported with clusters of three or more Analytics *and* Platform nodes.
-
-
-
-- Raw Clicks
-
--
-
-Sum of links clicked per recipient, over multiple recipients. For example, Recipient 1 clicks 1 link. Recipient 2 clicks 2 different links. Recipient 3 clicks 5 different links (out of the 20 links in the message). That's a total of 8 Raw Clicks. Raw clicks are also known as "uncooked clicks".
-
-
-
-- Recipient Metadata
-
--
-
-Key value pairs associated with a recipient which are included in the event stream and are available for filtering/reporting. These key value pairs are also given to the substitution engine as a convenience to the customer.
-
-
-
-- Recipient Substitution Data
-
--
-
-Recipient-specific JSON data which is supplied to the substitution engine. Unlike metadata, substitution data is not included in any event streams and is not available for filtering or reporting.
-
-
-
-- Recipients
-
--
-
-Persons receiving a message. Typically information regarding recipients is extracted from a data store. Recipients are passed to the transmission API as JSON objects.
-
-
-
-- Representational State Transfer (REST)
-
--
-
-Web services available over HTTP. Using REST you can interact with Momentum 4 programmatically.
-
-
-
-- Request for Comments (RFC) 2821
-
--
-
-A self-contained specification of the basic protocol for the Internet electronic mail transport.
-
-
-
-- Request for Comments (RFC) 2822
-
--
-
-Specifies a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages.
-
-
-
-- Send (Injection type)
-
--
-
-Message components (header, text, HTML, SMS, etc) submitted via API and Momentum will perform substitutions and assemble the multi-part MIME format.
-
-
-
-- Send Raw (Injection type)
-
--
-
-Injecting a fully formed (multi-part MIME) message via an API (still subject to substitutions and tagging).
-
-
-
-- Send Template (Injection type)
-
--
-
-Generate messages by using an API that injects structured data to be used with a stored template.
-
-
-
-- SMTP Injection
-
--
-
-Injecting a message via SMTP (rather than a template).
-
-
-
-- Substitution Engine
-
--
-
-A system component that personalizes each individual message. It takes as input a piece of UTF-8 data which contains substitution syntax such as "Hello {{ name }}", and JSON representing the key/value pairs to be substituted. The engine outputs expanded UTF-8 data.
-
-
-
-- Tag
-
--
-
-A client-defined label that can be applied to a message. Tags can be inherited from a campaign.
-
-
-
-- Template
-
--
-
-A collection of message components (headers, text, html, SMS and attachments). Each component (with the exception of attachments) is run through the substitution engine prior to construction of the MIME.
-
-
-
-- Total Clicks
-
--
-
-Every click in a message, including duplicates. You're counting clicks.
-
-
-
-- Total Clicks per Link
-
--
-
-Every click on a particular link.
-
-
-
-- Total Conversions
-
--
-
-All conversions.
-
-
-
-- Total Opens
-
--
-
-All opens that were recorded by open tracking.
-
-
-
-- Transactional Message
-
--
-
-A transactional message is a message that has only one recipient. The [gen_transactional_threads](/momentum/4/modules/msg-gen#modules.gen_transactional_threads) option ensures that these kinds of messages are handled efficiently by minimizing database access wherever possible.
-
-
-
-- Transmission
-
--
-
-A collection of messages belonging to the same organization and the same campaign; also know as a mailing.
-
-
-
-- Unique Clicks
-
--
-
-The number of recipients that clicked on any link in the message. You're counting recipients. From the example in [Raw Clicks](/momentum/4/4-glossary#gloss.raw.clicks), that's 3 Unique clicks.
-
-
-
-- Unique Confirmed Opened
-
--
-
-Number of recipients who opened messages. This is recorded using the open tracking pixel *or*, if images are blocked, it is recorded when the user clicks any link including the unsubscribe link. This metric applies to both HTML and plain text emails. (Unique Opens plus Unique Clicks that do not have a corresponding Unique Open.)
-
-
-
-- Unique Conversions
-
--
-
-Number of recipients that convert.
-
-
-
-- Unique Opens
-
--
-
-Number of recipients who opened messages. This is recorded by the open tracking pixel.
-
-
-
-- Variable Envelope Return Path (VERP)
-
--
-
-This technique specifies a different return path for every message making it possible to associate bounced message with a specific sender so that invalid addresses can be removed from mailing lists. For more information see ["RFC 3464"](http://tools.ietf.org/html/rfc3464).
-
-
-
-
\ No newline at end of file
diff --git a/content/momentum/4/4-implementing-policy-scriptlets.md b/content/momentum/4/4-implementing-policy-scriptlets.md
deleted file mode 100644
index 1ae394734..000000000
--- a/content/momentum/4/4-implementing-policy-scriptlets.md
+++ /dev/null
@@ -1,309 +0,0 @@
----
-lastUpdated: "05/21/2024"
-title: "Policy Scriptlets"
-description: "Lua scripts provide you with the capability to express the logic behind your policy Momentum implementation has extremely low overhead and tightly integrates with the event based architecture"
----
-
-Lua scripts provide you with the capability to express the logic behind your policy. Aside from being very convenient (policy scripts can be reloaded on the fly, allowing real-time adjustment of policy without interrupting service), the Momentum implementation has extremely low overhead and tightly integrates with the event-based architecture, being able to suspend processing until asynchronous operations (such as DNS resolution, or database queries) complete. Note that variables used in a policy script are scoped locally and only persist in the particular policy script in which it is defined. Use the [validation context](/momentum/4/4-policy#policy.validation) to persist data over different policy phases and policy scripts.
-
-This section of the manual explains how to implement basic Lua policy scripts. For more information about this language, see [http://www.lua.org](http://www.lua.org).
-
-### Warning
-
-Many Lua functions act as wrappers for C code, which means that the calling code needs to take steps to ensure safety. When calling a C API, make sure that all the arguments are valid as an unexpected `nil` may crash the system or have other undesirable results. Additionally, the data structures returned from C APIs are often shared between C and Lua. The most important consequence of this is that arrays coming from C APIs must only be accessed with existing indices, as opposed to Lua which simply returns `nil` on out-of-bounds access. Failure to do this on a Lua table connected to a C array will cause the system to fail.
-
-### Helper Functions
-
-The `/opt/msys/ecelerity/libexec/scriptlets/msys/` and `/opt/msys/ecelerity/libexec/embed/lua/msys/` directories contain modules with useful helper functions.
-
-For a list of all Lua Functions, see [*Lua Functions Summary*](/momentum/4/4-lua-summary-table) .
-
-### Callouts
-
-All user-defined scripts must implement one or more of the following function calls:
-
-* init()
-
- The registration point for long-lived states, such as timed events or control functions. You should avoid using the init routine unless necessary, as it ties up an additional interpreter on the main scheduler thread. In the current architecture, things set up via the init routine have strong thread affinity with the scheduler thread and are not suitable for scheduling jobs to thread pools.
-
- The init routine must return `true` if it successfully initializes. Any other return value results in a failure to apply the configuration.
-
-* deinit()
-
- The resource destruction point for things that were set up in the init phase. This function must return `true` when successful, otherwise resources may not be cleaned up.
-
-* validate_connect(accept_construct, vctx)
-
- This function maps to the `validate_connect` C hook of the validation subsystem. Return values are one of `msys.core.VALIDATE_CONT`, `msys.core.VALIDATE_AGAIN`, or `msys.core.VALIDATE_DONE`.
-
-* validate_ehlo(str, accept_construct, vctx)
-
- This function maps to the `validate_ehlo` C hook from the validation subsystem. Return values are one of `msys.core.VALIDATE_CONT`, `msys.core.VALIDATE_AGAIN`, or `msys.core.VALIDATE_DONE`.
-
-* validate_mailfrom(str, accept_construct, vctx)
-
- This function maps to the `validate_mailfrom` C hook from the validation subsystem. Return values are one of `msys.core.VALIDATE_CONT`, `msys.core.VALIDATE_AGAIN`, or `msys.core.VALIDATE_DONE`.
-
-* validate_rcptto(ec_message, str, accept_construct, vctx)
-
- This function maps to the `validate_rcptto` C hook from the validation subsystem. Return values are one of `msys.core.VALIDATE_CONT`, `msys.core.VALIDATE_AGAIN`, or `msys.core.VALIDATE_DONE`.
-
-* validate_data(ec_message, accept_construct, vctx)
-
- This function maps to the `validate_data` C hook from the validation subsystem. Return values are one of `msys.core.VALIDATE_CONT`, `msys.core.VALIDATE_AGAIN`, or `msys.core.VALIDATE_DONE`.
-
-* validate_data_spool(ec_message, accept_construct, vctx)
-
- This function maps to the `validate_data_spool` C hook from the validation subsystem. Return values are one of `msys.core.VALIDATE_CONT`, `msys.core.VALIDATE_AGAIN`, or `msys.core.VALIDATE_DONE`.
-
-* validate_data_spool_each_rcpt(ec_message, accept_construct, vctx)
-
- This function maps to the `validate_data_spool_each_rcpt` C hook from the validation subsystem. Return values are one of `msys.core.VALIDATE_CONT`, `msys.core.VALIDATE_AGAIN`, or `msys.core.VALIDATE_DONE`.
-
-* validate_set_binding(ec_message)
-
- Maps to the `validate_set_binding` C hook from the validation subsystem. Return values are one of `msys.core.VALIDATE_CONT`, or `msys.core.VALIDATE_DONE`.
-
-* validate_rcptto_list(list_node, vctx)
-
- Maps to the `validate_rcptto_list` C hook from the validation subsystem. Return values are one of `msys.core.VALIDATE_CONT`, `msys.core.VALIDATE_AGAIN`, or `msys.core.VALIDATE_DONE`.
-
-* validate_rcptto_list_final(node, vctx)
-
- Maps to the `validate_rcptto_list_final` C hook from the validation subsystem. Return values are one of `msys.core.VALIDATE_CONT`, `msys.core.VALIDATE_AGAIN`, or `msys.core.VALIDATE_DONE`.
-
-* validate_dealloc()
-
- This callout maps to the `validate_local_dealloc` C hook from the validation subsystem. This callout is only invoked if it is defined and if an earlier phase of processing invoked Lua code from this module. Its purpose is to allow your code a chance to act when the validate_context is torn down. If you used "self" in an earlier validation phase, it will be available in this function. You do not (and should not) need to define this callback unless you are doing something esoteric and accessing resources outside of the usual garbage collection mechanism. In most cases, your per-session state will be collected automatically.
-
-If you attempt to add a function call that does not match one of the above function signatures, you'll see an error message similar to the following:
-
-1251465322:scriptlet: no usable methods found for module
- *`mod_name`* in registerModule call
-
-If you are calling Lua helper functions, copy the `msg` parameter into a table as shown in the following:
-
-```
-function mod:validate_set_binding(msg)
- local ctx = {
- ec_message = msg
- };
- ...
-end
-```
-
-At the moment, only the `msg` parameter is used by existing helpers. Be sure to map it to a field named `ec_message` as this is the name of the underlying type.
-
-### Default Policy Scripts
-
-Default Lua policy scripts are included with Momentum for receiving. These scriptlets are found in the `/opt/msys/ecelerity/libexec/scriptlets/msys/default_policy.lua` file. These files are discussed in detail in the [Default Policy User Guide](/momentum/3/3-policy).
-
-In order to use the default policy scriptlets, you must add the `/opt/msys/ecelerity/etc/sample-configs/default_policy.conf` file to your configuration. For instructions on adding a configuration file, see [“Adding Configuration Files”](/momentum/4/conf-overview#conf.adding.configuration.files).
-
-You will likely need to alter the `default_policy.conf` file to suit your circumstances—by only enabling specific scanners, for example.
-
-In the `default_policy.conf` file, you should also enable the datasource(s) suitable for your language encoding. A datasource is necessary for the keyword filter, which is described at the bottom of the `/opt/msys/ecelerity/etc/conf/default/dp_config.lua` file. The keyword file, `dp_config.lua`, and `custom_policy.lua` must be copied from `/opt/msys/ecelerity/etc/sample-configs/` to `/opt/msys/ecelerity/etc/conf/default/`.
-
-### Creating Policy Scripts
-
-Following best practices when creating policy scripts is important, especially in a cluster environment when scripts are used on more than one node.
-
-To create a policy script, perform the following:
-
-1. Create a directory for your script.
-
- Scripts should be created in a directory that is under revision control. Create a directory for your scripts in the working copy of the repository on a node where you intend to run the script:
-
- * If your scripts apply to all nodes in the cluster, create this directory under the `/opt/msys/ecelerity/etc/conf/default` directory or store them in the `global` directory. Typically, policy scripts are saved under Momentum's default working copy directory `/opt/msys/ecelerity/etc/conf/default/scripts`.
-
- * If your scripts apply to only one node, create a node-specific directory.
-
-2. Write your script.
-
- All scripts must
-
- * Include the `msys.core` package.
-
- * Implement one or more of the function calls described in [“Callouts”](/momentum/4/4-implementing-policy-scriptlets#implementing.policy.scriptlets.callouts).
-
- * Return one of the following values:
-
- * `msys.core.VALIDATE_CONT` – continue with validation routines.
-
- * `msys.core.VALIDATE_DONE` – do not execute any more validation hooks from the same phase.
-
- * `msys.core.VALIDATE_AGAIN` – this validation routine is doing something that blocks, so call again later.
-
- The following is a simple script that runs in the EHLO phase and writes an entry to the `paniclog.ec` file. To create this example, same the script as a file named `ehlo_phase.lua` in the appropriate directory.
-
-
-
-
- ```
- require("msys.core");
-
- local mod = {};
-
- function mod:validate_ehlo(str, accept, vctx)
- print("ehlo string is:", msys.expandMacro("%{vctx_conn:ehlo_string}"));
- return msys.core.VALIDATE_CONT;
- end
-
- msys.registerModule("ehlo_phase", mod);
- ```
-
- Note that the script requires the `msys.core` package, the function name `validate_ehlo` matches the callout described in [“Callouts”](/momentum/4/4-implementing-policy-scriptlets#implementing.policy.scriptlets.callouts), and the script returns a legitimate value `msys.core.VALIDATE_CONT`.
-
- Failure to return a legitimate value from a scriptlet means that the script will not execute properly. For example, if you remove the line, `return msys.core.VALIDATE_CONT;` from the script, you should see errors similar to the following in the `paniclog`:
-
- ```
- 1252601378:scriptlet-00147: validate_ehlo error: (null)
- 1252601378:scriptlet-00239: ehlo_phase error: (null)
- ```
-
- These messages indicate a scriptlet error and give both the name of the script and the callout that failed.
-
-3. Update your configuration to properly reference your script.
-
- After writing a script and saving it to the repository, you must include it in the [`scriptlet`](/momentum/4/modules/scriptlet) module using a `script` stanza in your `ecelerity.conf` file.
-
- For the example script, create a script scope named `ehlo_phase` inside the `scriptlet "scriptlet"` scope. Set the script name to `ehlo_phase`. Set the `source` option of this scope to "*`myscripts`*.ehlo_phase" replacing *`myscripts`* with the name of the directory that you created. The scriptlet stanza should be similar to:
-
-
-
-
- ```
- alerting {}
-
- scriptlet "scriptlet" {
- # this loads default scripts to support enhanced control channel features
- script "boot" {
- source = "msys.boot"
- }
- # this loads the user-defined script
- script "ehlo_phase" {
- source = "myscripts.ehlo_phase"
- }
- }
- ```
-
- Lua looks for scripts in the repository working directories. If your script has been saved to a top level directory, you need only specify the script name when defining the `source` option. Otherwise, specify the relative path to the script separating directories using the ‘`/`’ character. In the example above, the `ehlo_phase.lua` file is in the `/opt/mys/ecelerity/etc/conf/default/myscripts` directory. Names of scripts can be anything you like, as long as the name is a valid file system name and does not cause an error when the configuration file is parsed.
-
- ### Note
-
- You can use either a ‘`.`’ or a ‘`/`’ as a directory separator.
-
- Be sure to specify the correct name of your script file as the `source` value within the scriptlet::script scope and be sure to drop the file extension.
-
- For example, specifying the file name `myscripts.ehlo_phase.lua` instead of `myscripts.ehlo_phase` results in the following error:
-
- ```
- ...
- Unable to open '/opt/mys/ecelerity/etc/conf/default/myscripts/ehlo_phase/lua.lua',
- errno=2 No such file or directory
- ```
-
- The name of the `script` scope within the scriptlet module can also be anything of your choosing though it is good practice to use a name that describes the phase that the script runs in. Failure to register a module or misregistration does not result in an error when the console command **`config reload`** is issued. At runtime, your script simply will not execute.
-
- For additional details about editing your configuration files, see [“Changing Configuration Files”](/momentum/4/conf-overview#conf.manual.changes).
-
-4. Check the validity of your script.
-
- Since a malformed configuration file will not reload, using **config reload** is one way of validating your scriptlet syntax. After your configuration has been changed, issue the command:
-
- **`/opt/msys/ecelerity/bin/ec_console /tmp/2025 config reload`**
-
- If there are errors in your script, the reload may fail and display a message such as the following:
-
- ```
- Module 'scriptlet' instance 'scriptlet' initialization failed while
- preparing to commit. Consult your vendor.
- ```
-
- This message usually indicates a syntax error in a script file. Note that reloading the configuration will not signal an error in *registering* the code module. Improperly registered scriptlets do not execute, so no error messages will be displayed when the configuration is reloaded or at runtime.
-
- If the configuration fails to reload, Momentum continues to function using the running configuration and ignoring your changes.
-
- In a cluster, if you commit before you test on the local node, you risk pushing out a broken configuration across your cluster/subcluster. Therefore, it is best practice to try the **config reload** locally until you are happy that the configuration operates as expected, before making a commit. This may need to be staged; for instance, you will likely need to push out DuraVIP™ or binding configuration changes before policy script changes can be made.
-
- ### Note
-
- You can also use the `/opt/msys/3rdParty/bin/rcluac` to check Lua syntax.
-
- However, please note that Message Systems does not provide support for the use of any third party tools included or referenced by name within our products or product documentation; support is the sole responsibility of the third party provider.
-
-5. Debug your script.
-
- Successfully reloading the configuration file does not guarantee that your script will run. Your script may be syntactically correct but have semantic errors. As always, you should test the functionality of scripts before implementing them in a production environment.
-
- The following are some methods that can be used to debug your script:
-
- * Look in your `paniclog`.
-
- Reloading the configuration will not indicate other kinds of errors, such as a misidentified `binding` field. In this case, you would find the following error in `/var/log/ecelerity/paniclog.ec`:
-
- `1251382104:datasource: failed to prepare`
-
- This indicates a datasource error in creating the prepared statement.
-
- You can also view the last few entries in the `paniclog.ec` file by using the [paniclog](/momentum/4/console-commands/paniclog) console command.
-
- * Use the `print` function.
-
- If your Lua syntax is correct but you are not seeing the desired result, you can log output to your `paniclog` using the `print` function. Output is formatted showing a Unix timestamp, the module name and the print argument, as shown in the following example:
-
- `1251200446:scriptlet: Confirming entry in panic log.`
-
- You can also use the `print` statement to output error messages returned by functions. For example, the `print("set_binding: error querying binding:", err);` line creates a `paniclog` entry such as the following when there is an SQL error:
-
- ```
- 1251382104:scriptlet: set_binding: error querying binding:
- prepare: 1: no such column: bindings
- failed to prepare: SELECT bindings FROM customer_binding WHERE
- customer_id = ? LIMIT 1
- ```
-
- This log entry clearly indicates that the query references a nonexistent column and can be much more helpful than the terse log entry.
-
- * Dump a variable.
-
- To output structured information about a variable, you can use the `msys.dumper.Dumper` function. To use this function, include the code `require("msys.dumper");`. When you wish to output the value of a variable, add the statement print(msys.dumper.Dumper(*`var_name`*));.
-
- The following is an example of a `paniclog` entry:
-
- ```
- 1251390180:scriptlet: return { recipient="no-reply@mydomain.com",
- note="No email received at this address", code="550"}
- ```
-
-### Examples
-
-This section includes examples of using policy scripts.
-
-** 62.2.5.1. Setting the Priority of a Message**
-
-In some circumstances, you may wish to deliver certain messages ASAP. You can do this by setting the `priority` of a message in the following way:
-
-```
-require("msys.core");
-require("msys.extended.message");
-
-local mod = {};
-
-function mod:validate_set_binding(msg)
- print("mod:validate_set_binding: Setting msg priority to 1");
- msg.priority = 1;
- return msys.core.VALIDATE_CONT;
-
-end
-
-msys.registerModule("binder", mod);
-```
-
-Message priority is a bit field in the ec_message struct, so the only valid values are 0 and 1\. The message priority is set to `0` when a message is created. Set the message priority to `1` to create a high priority message. Normally, messages are pulled from the queue in the order they were added. When a message priority is set to `1`, that message will be pulled first from whatever queue it is on.
-
-Use `msg.priority` to read the priority of a message.
-
-### Note
-
-It is important not to overuse the priority setting. High priority messages should be reserved for messages that need to go out immediately, before other messages. Keeping high priority messages to a low percentage of the total message volume is important so the high priority messages do not cause delays for normal priority messages. A common use case for high priority messages is sending out password resets in the midst of a major mail campaign.
diff --git a/content/momentum/4/4-libedit-extended.md b/content/momentum/4/4-libedit-extended.md
deleted file mode 100644
index cb0ffe51e..000000000
--- a/content/momentum/4/4-libedit-extended.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Extended Commands"
-description: "The following extended commands may appear in your editrc or may be entered directly into the console by entering extended command mode Esc X by default and then typing in the extended command and pressing Enter Table D 2 Extended Commands Extended Command Description bind Without options list all bound..."
----
-
-The following extended commands may appear in your `.editrc` or may be entered directly into the console by entering extended command mode ( **Esc** **X** by default), and then typing in the extended command and pressing **Enter**.
-
-
-
-
-| Extended Command | Description |
-| --- | --- |
-| bind | `bind [-a] [-e] [-k] [-l] [-r] [-s] [-v] [key [command]]`
-
-Without options, list all bound keys, and the editor command to which each is bound. If key is supplied, show the bindings for key. If key command is supplied, bind command to key. Options include:
-
-* `-a` - List or change key bindings in the vi(1) mode alternate (command mode) key map.
-
-* `-e` - Bind all keys to the standard GNU Emacs-like bindings
-
-* `-k` - *`key`* is interpreted as a symbolic arrow key name, which may be one of `up', `down', `left' or `right'.
-
-* `-l` - List all editor commands and a short description of each.
-
-* `-r` - Remove a key's binding.
-
-* `-s` - *`command`* is taken as a literal string and treated as terminal input when *`key`* is typed. Bound keys in *`command`* are themselves reinterpreted, and this continues for ten levels of interpretation. *`command`* may be one of the commands documented in [“Editor Commands”](/momentum/4/4-libedit#libedit.emacs.editor).
-
-* `-v` - Bind all keys to the standard vi(1) -like bindings.
-
-* `key [command]` - *`key`* and *`command`* can contain control characters of the form `^character` (e.g., `^A`), and the following backslashed escape sequences:
-
- * `\a` - Bell
-
- * `\b` - Backspace
-
- * `\e` - Escape
-
- * `\f` - Formfeed
-
- * `\n` - Newline
-
- * `\r` - Carriage return
-
- * `\t` - Horizontal tab
-
- * `\v` - Vertical tab
-
- * `\nnn` - The ASCII character corresponding to the octal number nnn.
-
- NOTE: `\' nullifies the special meaning of the following character, if it has any, notably `\' and `^'.
-
- |
-| echotc | `echotc [-sv] arg ...`
-
-Exercise terminal capabilities given in `arg ...`. If arg is ‘baud’, ‘cols’, ‘lines’, ‘rows’, ‘meta or’ ‘tabs’, the value of that capability is printed, with “yes” or “no” indicating that the terminal does or does not have that capability.
-
-`-s` returns an emptry string for non-existent capabilities, rather than causing an error. `-v` causes messages to be verbose.
-
- |
-| edit | `edit [on | off]`
-
-Enable or disable the editline functionality in a program.
-
- |
-| history | `history`
-
-List the history.
-
- |
-| telltc | `telltc`
-
-List the values of all the terminal capabilities (see termcap(5)).
-
- |
-| settc | `settc cap val`
-
-Set the terminal capability cap to val, as defined in termcap(5). No sanity checking is done.
-
- |
-| setty | `setty [-a] [-d] [-q] [-x] [+mode] [-mode] [mode]`
-
-Control which tty modes that editrc won’t allow the user to change. `-d`, `-q`, or `-x` tells setty to act on the ‘edit’, ‘quote’, or ‘execute’ set of tty modes respectively; defaulting to `-x`.
-
-Without other arguments, setty lists the modes in the chosen set that are fixed on (‘+mode’) or off (‘-mode’). `-a` lists all tty modes in the chosen set regardless of the setting. With +mode, -mode or mode, fixes mode on or off or removes control of mode in the chosen set.
-
- |
\ No newline at end of file
diff --git a/content/momentum/4/4-libedit.md b/content/momentum/4/4-libedit.md
deleted file mode 100644
index 1a12fe5ff..000000000
--- a/content/momentum/4/4-libedit.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Key Binding Reference for ec_console"
-description: "ec console uses the libedit library to provide command line editing facilities By default libedit starts in Emacs mode which provides built in commands that you can combine into macros to automate your work You can change the default setting by configuring your editrc file Table D 1 Editor Commands..."
----
-
-## Key Binding Reference for ec_console
-
-
-## Editor Commands
-
-**ec_console** uses the `libedit` library to provide command line editing facilities. By default, libedit starts in Emacs mode, which provides built-in commands that you can combine into macros to automate your work. You can change the default setting by configuring your `.editrc` file.
-
-
-
-
-| Default Emacs Key Binding | Editor Command | Description |
-| --- | --- | --- |
-| Ctrl+@ | em-set-mark | Set the mark at cursor. |
-| Ctrl+A | ed-move-to-beg | Move cursor to the beginning of line. |
-| Ctrl+B | ed-prev-char | Move to the left one character. |
-| Ctrl+C | ed-tty-sigint | Tty interrupt character. |
-| Ctrl+D | em-delete-or-list | Delete character under cursor or list completions if at end of line. |
-| Ctrl+E | ed-move-to-end | Move cursor to the end of line. |
-| Ctrl+F | ed-next-char | Move to the right one character. |
-| Ctrl+H | ed-delete-prev-char | Delete the character to the left of the cursor. |
-| Ctrl+J, Ctrl+M | ed-newline | Execute command. |
-| Ctrl+K, Ctrl+U | ed-kill-line | Cut to the end of line. |
-| Ctrl+L | ed-clear-screen | Clear screen leaving current line at the top. |
-| Ctrl+N | ed-next-history | Move to the next history line. |
-| Ctrl+O | ed-tty-flush-output | Tty flush output characters. |
-| Ctrl+P | ed-prev-history | Move to the previous history line. |
-| Ctrl+Q | ed-tty-start-output | Tty allow output characters. |
-| Ctrl+R | ed-redisplay | Redisplay everything. |
-| Ctrl+S | ed-tty-stop-output | Tty disallow output characters. |
-| Ctrl+T | ed-transpose-chars | Exchange the character to the left of the cursor with the one under it. |
-| Ctrl+V | ed-quoted-insert | Add the next character typed verbatim. |
-| Ctrl+W | em-kill-region | Cut area between mark and cursor and save in cut buffer. |
-| Ctrl+Y | em-yank | Paste cut buffer at cursor position. |
-| Ctrl+Z | ed-tty-sigtstp | Tty suspend character. |
-| Ctrl+[ | em-meta-next | Add 8th bit to next character typed. |
-| Ctrl+\ | ed-tty-sigquit | Tty quit character. |
-| Ctrl+] | ed-tty-dsusp | Tty delayed suspend character. |
-| Esc Backspace | ed-delete-prev-word | Delete from beginning of current word to cursor. |
-| Esc Ctrl+_ | em-copy-prev-word | Copy current word to cursor. |
-| Esc B | ed-prev-word | Move to the beginning of the current word. |
-| Esc C | em-capital-case | Capitalize the characters from cursor to end of current word. |
-| Esc D | em-delete-next-word | Cut from cursor to end of current word. |
-| Esc F | em-next-word | Move next to end of current word. |
-| Esc L | em-lower-case | Lowercase the characters from cursor to end of current word. |
-| Esc N | ed-search-next-history | Search next in history for a line matching the current. |
-| Esc P | ed-search-prev-history | Search previous in history for a line matching the current. |
-| Esc U | em-upper-case | Uppercase the characters from cursor to end of current word. |
-| Esc W | em-copy-region | Copy area between mark and cursor to cut buffer. |
-| | ed-argument-digit | Digit that starts argument. |
-| | ed-delete-next-char | Delete character under cursor. |
-| | ed-digit | Adds to argument or enters a digit. |
-| | ed-end-of-file | Indicate end of file. |
-| | ed-insert | Add character to the line. |
-| | ed-next-line | Move down one line. |
-| | ed-prev-line | Move up one line. |
-| | ed-sequence-lead-in | First character in a bound sequence. |
-| | ed-start-over | Erase current line and start from scratch. |
-| | ed-unassigned | Indicates unbound character. |
-| | em-exchange-mark | Exchange the cursor and mark. |
-| | em-gosmacs-traspose | Exchange the two characters before the cursor. |
-| | em-inc-search-next | Emacs incremental next search. |
-| | em-inc-search-prev | Emacs incremental reverse search. |
-| | em-kill-line | Cut the entire line and save in cut buffer. |
-| | em-toggle-overwrite | Switch from insert to overwrite mode or vice versa. |
-| | em-universal-argument | Universal argument (argument times 4). |
-| | vi-add | Vi enter insert mode after the cursor. |
-| | vi-add-at-eol | Vi enter insert mode at end of line. |
-| | vi-change-case | Vi change case of character under the cursor and advance one character. |
-| | vi-change-meta | Vi change prefix command. |
-| | vi-change-to-eol | Vi change to end of line. |
-| | vi-command-mode | Vi enter command mode (use alternative key bindings). | |
-| | vi-delete-meta | Vi delete prefix command. |
-| | vi-delete-prev-char | Vi move to previous character (backspace). |
-| | vi-end-word | Vi move to the end of the current space delimited word. |
-| | vi-insert | Vi enter insert mode. |
-| | vi-insert-at-bol | Vi enter insert mode at the beginning of line. |
-| | vi-kill-line-prev | Vi cut from beginning of line to cursor. |
-| | vi-list-or-eof | Vi list choices for completion or indicate end of file if empty line. |
-| | vi-next-char | Vi move to the character specified next. |
-| | vi-next-space-word | Vi move to the next space delimited word. |
-| | vi-next-word | Vi move to the next word. |
-| | vi-paste-next | Vi paste previous deletion to the right of the cursor. |
-| | vi-paste-prev | Vi paste previous deletion to the left of the cursor. |
-| | vi-prev-char | Vi move to the character specified previous. |
-| | vi-prev-space-word | Vi move to the previous space delimited word. |
-| | vi-prev-word | Vi move to the previous word. |
-| | vi-repeat-next-char | Vi repeat current character search in the same search direction. |
-| | vi-repeat-prev-char | Vi repeat current character search in the opposite search direction. |
-| | vi-repeat-search-next | Vi repeat current search in the same search direction. |
-| | vi-repeat-search-prev | Vi repeat current search in the opposite search direction. |
-| | vi-replace-char | Vi replace character under the cursor with the next character typed. |
-| | vi-replace-mode | Vi enter replace mode. |
-| | vi-search-next | Vi search history next. |
-| | vi-search-prev | Vi search history previous. |
-| | vi-substitute-char | Vi replace character under the cursor and enter insert mode. |
-| | vi-substitute-line | Vi substitute entire line. |
-| | vi-to-end-word | Vi move to the end of the current word. |
-| | vi-to-next-char | Vi move up to the character specified next. |
-| | vi-to-prev-char | Vi move up to the character specified previous. |
-| | vi-undo | Vi undo last change. |
-| | vi-zero | Vi move to the beginning of line. |
\ No newline at end of file
diff --git a/content/momentum/4/4-log-formats-connection-stages.md b/content/momentum/4/4-log-formats-connection-stages.md
deleted file mode 100644
index 462f6834c..000000000
--- a/content/momentum/4/4-log-formats-connection-stages.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Connection Stages"
-description: "The following is a list of the codes for the stages and their meanings Table 35 17 Connection stages Phase Description 0 while not connected 1 while idle 2 during MAIL FROM 3 after MAIL FROM 4 during RCPT TO 5 after RCPT TO 6 during DATA 7 after DATA..."
----
-
-The following is a list of the codes for the stages and their meanings.
-
-
-
-
-| Phase | Description |
-| --- | --- |
-| 0 | while not connected |
-| 1 | while idle |
-| 2 | during MAIL FROM |
-| 3 | after MAIL FROM |
-| 4 | during RCPT TO |
-| 5 | after RCPT TO |
-| 6 | during DATA |
-| 7 | after DATA |
-| 8 | while sending BODY |
-| 9 | reading confirmation |
-| 10 | during EHLO |
-| 11 | after EHLO |
-| 12 | reading BANNER |
-| 13 | during RSET |
-| 14 | after RSET |
-| 15 | during STARTTLS |
-| 16 | after STARTTLS |
-| 17 | handshaking TLS |
-| 18 | renegotiating TLS |
-| 19 | during XCLIENT |
-| 20 | after XCLIENT |
-| 21 | out of band bounce |
-| 22 | in unknown state |
-
-Code `21` is the only message disposition notification (MDN). With the exception of `22`, which is unknown, all other stages occur during the SMTP transaction. In other words, they are in-band bounces.
\ No newline at end of file
diff --git a/content/momentum/4/4-log-formats.md b/content/momentum/4/4-log-formats.md
deleted file mode 100644
index ef3999732..000000000
--- a/content/momentum/4/4-log-formats.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Log Formats"
-description: "The acctlog contains both authentication entries and authorization entries for the ESMTP Listener and Control Listener It is configured in the ec logger module If enabled for the listener authentication events for Unix domain sockets are logged one per line The log entry is an delimited string such as the..."
----
-
-
-## `acctlog`
-
-The `acctlog` contains both authentication entries and authorization entries for the ESMTP_Listener and Control_Listener. It is configured in the [ec_logger](/momentum/4/modules/ec-logger) module.
-
-### Authentication Records
-
-If enabled for the listener, authentication events for Unix domain sockets are logged one per line. The log entry is an `@` delimited string, such as the following:
-
-`1160503808@N@/tmp/2025@@ec-user@1`
-
-If enabled for the listener, authentication events for TCP/IP listeners are logged one per line. The log entry is an `@` delimited string, such as the following:
-
-`1160172232@N@*:2025@10.80.116.126:37164@ec_user@1`
-
-Note that `@`, `\`, `\n` and other control characters appearing in a field are escaped by adding an `\` before them.
-
-The following is a description of the fields:
-
-
-
-
-| Offset | Example Field | Description |
-| --- | --- | --- |
-| 0 | 1160172232 | Date of authentication in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970) |
-| 1 | N | `N` indicating an authentication entry or `T` indicating an authentication timeout |
-| 2 | *:2025 | Listener endpoint on which the event occurred |
-| 3 | 10.80.116.126:37164 | IP and port of the peer (For Unix domain connections, this field will be empty.) |
-| 4 | ec_user | User name used for the authentication |
-| 5 | 1 | 1 indicates the authentication is successful; 0 otherwise. |
-
-### Authorization Records
-
-A line is written to `acctlog` for every authorization event. The log entry is an `@` delimited string, such as the following:
-
-```
-1160503811@Z@/tmp/2025@@ec-user@1@summary@users
-1160504707@Z@/tmp/2025@@ec-user@0@shutdown
-1160172223@Z@*:2025@10.80.116.126:37162@ec-user@1@summary@users
-1160172219@Z@*:2025@10.80.116.126:37162@ec-user@0@shutdown
-```
-
-Note that `@`, `\`, `\n` and other control characters appearing in a field are escaped by adding an `\` before them.
-
-The following is a description of the fields:
-
-
-
-
-| Offset | Example Field | Description |
-| --- | --- | --- |
-| 0 | 1160172219 | Date of authorization in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970) |
-| 1 | Z | `Z` indicating an authorization entry |
-| 2 | /tmp/2025 *or* *:2025 | Listener endpoint on which the event occurred |
-| 3 | 10.80.116.126:37162 | IP and port of the peer (For Unix domain connections this field will be blank.) |
-| 4 | ec_user | User name used for the authentication |
-| 5 | 1 | 1 indicates the user is authorized to run the command; 0 indicates the authorization failed; -1 indicates some error occurred during authorization. |
-| 6 | summary | Command that was requested to run |
-| 7 | users | Role that matched during successful authorization |
-
-### Note
-
-The `?` type indicator denotes an unknown `acctlog` type.
\ No newline at end of file
diff --git a/content/momentum/4/4-lua-summary-table.md b/content/momentum/4/4-lua-summary-table.md
deleted file mode 100644
index b0803e9ae..000000000
--- a/content/momentum/4/4-lua-summary-table.md
+++ /dev/null
@@ -1,208 +0,0 @@
----
-lastUpdated: "08/11/2026"
-title: "Lua Functions Summary"
-description: "This section contains tables of Lua functions Click the function name for details Table 64 1 Lua functions all Function Description Params Package Version Phases ac esmtp capability add Add a capability to the EHLO response name msys extended ac 4 0 connect ehlo ac esmtp capability remove Removes a..."
----
-
-This section contains tables of Lua functions. Click the function name for details.
-
-
-
-
-| Function/Description | Params | Package | Version | Phases |
-| --- | --- | --- | --- | --- |
-| [ac:esmtp_capability_add](/momentum/4/lua/ref-ac-esmtp-capability-add) – Add a capability to the EHLO response | name | msys.extended.ac | 4.0 | connect, ehlo |
-| [ac:esmtp_capability_remove](/momentum/4/lua/ref-ac-esmtp-capability-remove) – Removes a capability string from the EHLO response | name | msys.extended.ac | 4.0 | connect, ehlo |
-| [ac:inbound_session_count](/momentum/4/lua/ref-ac-inbound-session-count) – If called with no arguments, returns the current inbound session count to this listener for the connecting IP | [cidr], [service_type] | msys.extended.ac | 4.0 | any |
-| [client:do_request](/momentum/4/lua/ref-client-do-request) – Perform an HTTP request | type, url, [data] | msys.http.client | 4.0 | any |
-| [client:get_body](/momentum/4/lua/ref-client-get-body) – Get the body of a web page | | msys.http.client | 4.0 | any |
-| [client:get_headers](/momentum/4/lua/ref-client-get-headers) – Get a client's headers | | msys.http.client | 4.0 | any |
-| [client:get_status](/momentum/4/lua/ref-client-get-status) – Return the status of an HTTP request | | msys.http.client | 4.0 | any |
-| [client:parse_headers](/momentum/4/lua/ref-client-parse-headers) – Parse the headers of an HTTP response | headers | msys.http.client | 4.0 | any |
-| [client:set_header](/momentum/4/lua/ref-client-set-header) – Set a client's header | [header] | msys.http.client | 4.0 | any |
-| [client:set_timeout](/momentum/4/lua/ref-client-set-timeout) – Set the timeout for an HTTP client | [number] | msys.http.client | 4.0 | any |
-| [json.decode](/momentum/4/lua/ref-json-decode) – Create a JSON object from a JSON string | str | json | 4.0 | any |
-| [json.encode](/momentum/4/lua/ref-json-encode) – Convert a Lua variable or expression so that it can be added to a JSON object | obj | json | 4.0 | any |
-| [json.new](/momentum/4/lua/ref-json-new) – Create an empty JSON object | | json | 4.0 | any |
-| [json.strerror](/momentum/4/lua/ref-json-strerror) – Return the description of a JSON error code | code | json | 4.0 | any |
-| [msg.batch_id](/momentum/4/lua/ref-msg-batch-id) – Returns the human-readable ec_message.batch_id | | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg.conn_id](/momentum/4/lua/ref-msg-conn-id) – Returns the human-readable ec_message.conn_id | | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg.id](/momentum/4/lua/ref-msg-id) – Returns the human-readable ec_message.id | | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:binding](/momentum/4/lua/ref-msg-binding) – Sets the binding to the named binding, if one is provided | [value] | msys.extended.message | 4.0 | set_binding |
-| [msg:binding_group](/momentum/4/lua/ref-msg-binding-group) – Sets the binding_group to the named binding, if one is provided | [value] | msys.extended.message | 4.0 | set_binding |
-| [msg:body](/momentum/4/lua/ref-msg-body) – Set or get the message body (minus headers) | [...] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:body_match](/momentum/4/lua/ref-msg-body-match) – Streaming interface to a PCRE search of a message body (minus headers) | pattern | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:body_replace](/momentum/4/lua/ref-msg-body-replace) – Streaming interface to a PCRE replacement of a message body (minus headers) | pattern, replacement | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:build](/momentum/4/lua/ref-msg-build) – Create a message | headers, parts, attachments | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:code](/momentum/4/lua/ref-msg-code) – Get or set the message code | [number], [string] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:context_delete](/momentum/4/lua/ref-msg-context-delete) – Delete a context variable | type, key | msys.core | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:context_exists](/momentum/4/lua/ref-msg-context-exists) – Check if a context variable exists | type, key | msys.core | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:context_exists_and_get](/momentum/4/lua/ref-msg-context-exists-and-get) – Check if a context variable exists and get it | type, key | msys.core | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:context_get](/momentum/4/lua/ref-msg-context-get) – Get a context variable | type, key | msys.core | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:context_set](/momentum/4/lua/ref-msg-context-set) – Set a context variable | type, key, value | msys.core | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:discard](/momentum/4/lua/ref-msg-discard) – Silently discard a message | [reason] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:forward](/momentum/4/lua/ref-msg-forward) – Forward current message to recipients other than the original recipients. A new message is created and the original message is attached to it | sender, rcptto, text, [subject], [charset] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, rcptto, set_binding |
-| [msg:get_delivery_method](/momentum/4/lua/ref-msg-get-delivery-method) – Return the delivery method for a message | | msys.core | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:get_envelope2](/momentum/4/lua/ref-msg-get-envelope-2) – Get envelope values | flags, localpart_str, domain_str | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:get_message_size](/momentum/4/lua/ref-msg-get-message-size) – Get the size of a message | | msys.core | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:header](/momentum/4/lua/ref-header) – Manipulate message headers | hdr, [value], [mode] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:inject](/momentum/4/lua/ref-msg-inject) – Use this function to send mail | mailfrom, rcptto | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msg:listener_addr](/momentum/4/lua/ref-msg-listener-addr) – Gets the recv_via IP and/or PORT | [flag] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:mailfrom](/momentum/4/lua/ref-msg-mailfrom) – Sets the 'MAIL FROM' email address if one is provided. Returns the current/new value | [value] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, rcptto, set_binding |
-| [msg:makeBoundary](/momentum/4/lua/ref-msg-make-boundary) – Generates a unique boundary string | ... | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:makeContainer](/momentum/4/lua/ref-msg-make-container) – Creates a new, unlinked, container message part | mimetype, [boundary], [add_terminator] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:makePart](/momentum/4/lua/ref-msg-make-part) – Creates a new, unlinked, singleton (or leaf) message part | mimetype, [body], [encoding] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:mime](/momentum/4/lua/ref-msg-mime) – Returns the top of the MIME tree for the message, a message part | [readonly] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:raw](/momentum/4/lua/ref-msg-raw) – Sets the message content if value is provided and returns the raw message and message length | [value] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:raw_match](/momentum/4/lua/ref-msg-raw-match) – Streaming interface to PCRE search message content | pattern | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:raw_replace](/momentum/4/lua/ref-msg-raw-replace) – Streaming interface to a PCRE replacement of message content | pattern, replacement | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:rcptto](/momentum/4/lua/ref-msg-rcptto) – Sets the 'RCPT TO' email address if one is provided. Returns the current/new value | [value] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt, rcptto, set_binding |
-| [msg:reception_peer](/momentum/4/lua/ref-msg-reception-peer) – Returns the IP and/or PORT of the remote injection source | [flag] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:routing_domain](/momentum/4/lua/ref-msg-routing-domain) – Returns the routing domain for the message | [...] | msys.extended.message_routing | 4.0 | data_spool_each_rcpt, rcptto |
-| [msg:text](/momentum/4/lua/ref-msg-text) – Returns the transfer decoded text for the body | ... | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:text](/momentum/4/lua/ref-msg-text-1) – The entire message body is replaced by the supplied text | value, [type], [charset] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:text_match](/momentum/4/lua/ref-msg-text-match) – Streaming PCRE search across the transfer-decoded, UTF-8 text version of the message body | pattern | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msg:text_replace](/momentum/4/lua/ref-msg-text-replace) – Streaming interface to PCRE replacement of textual content from the message body | pattern, replacement | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:addFirstChild](/momentum/4/lua/ref-msgpart-add-first-child) – Adds a child as the first child on this part | child | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:addLastChild](/momentum/4/lua/ref-msgpart-add-last-child) – Adds a child as the last child on this part | child | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:address_header](/momentum/4/lua/ref-msgpart-address-header) – Parse each instance of the named header for RFC2822 addresses | headername, [component] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:body_match](/momentum/4/lua/ref-msgpart-body-match) – Streaming interface to PCRE search a message body part (minus headers) | pattern | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:body_replace](/momentum/4/lua/ref-msgpart-body-replace) – Streaming interface to a PCRE replacement of a message body part (minus headers) | pattern, replacement | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:content_type](/momentum/4/lua/ref-msgpart-content-type) – Returns a table of content type related information | | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:header](/momentum/4/lua/ref-msgpart-header) – Returns an array of headers values for the given name | name | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:header](/momentum/4/lua/ref-msgpart-header) – Unset the header name of the current message part | name, nil | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:header](/momentum/4/lua/ref-msgpart-header) – If mode is replace (or unspecified): first deletes all other headers of that name before appending the new value to the message headers | name, value, [mode] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:insertAfter](/momentum/4/lua/ref-msgpart-insert-after) – Insert this part into the MIME tree after the given parameter | after | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:insertBefore](/momentum/4/lua/ref-msgpart-insert-before) – Insert this part into the MIME tree before the given parameter | before | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:raw_match](/momentum/4/lua/ref-msgpart-raw-match) – Streaming interface to PCRE search of the current message part | pattern | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:raw_replace](/momentum/4/lua/ref-msgpart-raw-replace) – Streaming interface to PCRE replacement of message part content | pattern, replacement | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:text](/momentum/4/lua/ref-msgpart-text) – Returns the transfer decoded text for the message part, in UTF-8 | ... | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:text](/momentum/4/lua/ref-msgpart-text) – The entire message body part is replaced by the supplied text | value, [type], [charset] | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:text_match](/momentum/4/lua/ref-msgpart-text-match) – Streaming PCRE search across the transfer-decoded UTF-8 text version of the message body part | pattern | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:text_replace](/momentum/4/lua/ref-msgpart-text-replace) – Streaming interface to a PCRE replacement of textual content from the message body parts. Only parts that have a 'text' mime type will be included in the search | pattern, replacement | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msgpart:unlink](/momentum/4/lua/ref-msgpart-unlink) – Removes the part (and its children) from the MIME tree | | msys.extended.message | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.adaptive.registerRules](/momentum/3/3-ad/ad-custom-rules) – Register adaptive rules | rules, [type] | msys.adaptive | 4.0 | adaptive |
-| [msys.apn.apn_status_classifier](/momentum/4/lua/ref-msys-apn-apn-status-classifier) – Determine whether the status code indicates a permanent or temporary failure | status | msys.apn | 4.0 | apn_response_eval, msg_dispose |
-| [msys.asyncOk](/momentum/4/lua/ref-msys-async-ok) – Returns true if the current execution environment is suitable for suspend/resume operation | | msys | 4.0 | any |
-| [msys.audit.connections](/momentum/4/lua/ref-msys-audit-connections) – Returns the number of connections that have occurred for a CIDR block within a configured time window | monitor, [options] | msys.audit | 4.0 | any |
-| [msys.audit.inbound_session_count](/momentum/4/lua/ref-msys-audit-inbound-session-count) – Counts connections currently established from the specified cidr to the specified service | cidr, servicename | msys.audit | 4.0 | any |
-| [msys.audit.receptions](/momentum/4/lua/ref-msys-audit-receptions) – Returns the number of receptions that have occurred for a CIDR block within a configured time window | monitor, [options] | msys.audit | 4.0 | any |
-| [msys.audit.rejections](/momentum/4/lua/ref-msys-audit-rejections) – Returns the number of rejections that have occurred for a CIDR block within a configured time window | monitor, [options] | msys.audit | 4.0 | any |
-| [msys.audit_series.add](/momentum/4/lua/ref-msys-audit-series-add) – Adjusts the counter for the current time window of a named series | name, [options] | msys.audit_series | 4.0 | any |
-| [msys.audit_series.count](/momentum/4/lua/ref-msys-audit-series-count) – Returns the total associated with the named series | name, [options] | msys.audit_series | 4.0 | any |
-| [msys.audit_series.define](/momentum/4/lua/ref-msys-audit-series-define) – Define an audit series | name, type, interval, num_windows, [options] | msys.audit_series | 4.0 | init |
-| [msys.audit_series.remove_item](/momentum/4/lua/ref-msys-audit-series-remove-item) – Removes a counter from a named series | name, [key] | msys.audit_series | 4.0 | any |
-| [msys.av.engines](/momentum/4/lua/ref-msys-av-engines) – Returns a list of configured engine names in a table | | msys.av | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.av.scan](/momentum/4/lua/ref-msys-av-scan) – This function performs a virus scan | [av_engine_name], [msg], [validate_context] | msys.av | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.av.scan_part](/momentum/4/lua/ref-msys-av-scan-part) – This function takes an optional msg (msys.core:_ec_message), an optional engine name and performs a virus scan on a specific part | msg_part, [av_engine_name], [validate_context] | msys.av | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.base64.decode](/momentum/4/lua/ref-msys-base-64-decode) – Decode a base64 encoded string | encoded_text, [charset] | msys.base64 | 4.0 | any |
-| [msys.base64.encode](/momentum/4/lua/ref-msys-base-64-encode) – Base64-encode a string | original, [fold], [charset] | msys.base64 | 4.0 | any |
-| [msys.bounce.classify](/momentum/4/lua/ref-msys-bounce-classify) – Create a bounce classification for a message | msg | msys.bounce | 4.0 | data, data_spool, data_spool_each_rcpt, set_binding |
-| [msys.bounce.classify_smtp_response](/momentum/4/lua/ref-msys-bounce-classify-smtp-response) – Create a bounce classification from SMTP response text and domain name | response_text, domain | msys.bounce | 4.0 | any |
-| [msys.brightmail.scan](/momentum/4/lua/ref-msys-brightmail-scan) – Use Brightmail to scan messages | msg, accept, vctx | msys.brightmail | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.cast](/momentum/4/lua/ref-msys-cast) – Cast an object to the specified class | object, classnamestring | msys | 4.0 | any |
-| [msys.cidr.define](/momentum/4/lua/ref-msys-cidr-define) – Define a named CIDR object | name, options | msys.cidr | 4.0 | init |
-| [msys.cidr.query](/momentum/4/lua/ref-msys-cidr-query) – Look up address against the named CIDR | name, [address] | msys.cidr | 4.0 | any |
-| [msys.cidr.reload](/momentum/4/lua/ref-msys-cidr-reload) – Refreshes CIDRs of type 'datasource' and 'rbldnsd' | name | msys.cidr | 4.0 | any |
-| [msys.cloudmark.analyze](/momentum/4/lua/ref-msys-cloudmark-analyze) – Analyze a message using Cloudmark | hdr, [msg], [vctx] | msys.cloudmark | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.cloudmark.score](/momentum/4/lua/ref-msys-cloudmark-score) – Scan messages using Cloudmark | [msg], [accept], [vctx] | msys.cloudmark | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.commtouch.diagnose](/momentum/4/lua/ref-msys-commtouch-diagnose) – Scan message using Commtouch | [msg], [accept], [vctx] | msys.commtouch | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.config](/momentum/4/lua/ref-msys-config) – Set or get configuration values | action, parameters | msys | 4.0 | any |
-| [msys.core.dns_get_domain](/momentum/4/lua/ref-msys-core-dns-get-domain) – Get a domain record | domain | msys.core | 4.0 | any |
-| [msys.core.get_now_ts](/momentum/4/lua/ref-msys-core-get-now-ts) – Get the current time | | msys.core | 4.0 | any |
-| [msys.core.io_wrapper_open](/momentum/4/lua/ref-msys-core-io-wrapper-open) – Open a handle to a resource | filename, [options], [mode] | msys.core | 4.0 | any |
-| [msys.core.mail_queue_delay_domain](/momentum/4/lua/ref-msys-core-mail-queue-delay-domain) – Add a domain record to the delayed queue | dr, note | msys.core | 4.0 | any |
-| [msys.core.string_new](/momentum/4/lua/ref-msys-core-string-new) – Create an ec_string data type | | msys.core | 4.0 | any |
-| [msys.counter.add](/momentum/4/lua/ref-msys-counter-add) – Add to the current value of the specified counter | object_or_path, delta | msys.counter | 4.0 | any |
-| [msys.counter.inc](/momentum/4/lua/ref-msys-counter-inc) – Increment a counter | object_or_path | msys.counter | 4.0 | any |
-| [msys.counter.open](/momentum/4/lua/ref-msys-counter-open) – Create a counter object | counter_path, [semantics] | msys.counter | 4.0 | any |
-| [msys.counter.read](/momentum/4/lua/ref-msys-counter-read) – Read the specified counter | object_or_path | msys.counter | 4.0 | any |
-| [msys.counter.reset](/momentum/4/lua/ref-msys-counter-reset) – Reset a counter | object_or_path | msys.counter | 4.0 | any |
-| [msys.counter.unlink](/momentum/4/lua/ref-msys-counter-unlink) – Unlink a counter | counter_path | msys.counter | 4.0 | any |
-| [msys.db.execute](/momentum/4/lua/ref-msys-db-execute) – Executes a query that is not expected to return data (such as an insert or an update query) | cachename, query, [queryparams], [options] | msys.db | 4.0 | any |
-| [msys.db.fetch_row](/momentum/4/lua/ref-msys-db-fetch-row) – If successful, return the first row of the query result as a table | cachename, query, [queryparams], [options] | msys.db | 4.0 | any |
-| [msys.db.query](/momentum/4/lua/ref-msys-db-query) – Query a datasource | cachename, query, [queryparams], [options] | msys.db | 4.0 | any |
-| [msys.delivery.ob_get_current_message](/momentum/4/lua/ref-msys-delivery-ob-get-current-message) – Get the current message from the session context | sess | msys.delivery | 4.0 | http_response_eval |
-| [msys.dnsLookup](/momentum/4/lua/ref-msys-dnslookup) – Perform a DNS lookup | name, [recordtype], [options] | msys | 4.0 | any |
-| [msys.dumper.Dumper](/momentum/4/lua/ref-msys-dumper-dumper) – Dump information about an object | res | msys.dumper | 4.0 | any |
-| [msys.expandMacro](/momentum/4/lua/ref-msys-expand-macro) – Expand macros (such as sieve, spf and custom_logger macros) | string | msys | 4.0 | any |
-| [msys.expurgate.scan](/momentum/4/lua/ref-msys-expurgate-scan) – Scan using the Eleven antivirus engine | msg, accept, vctx | msys.expurgate | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.gauge_cache.dec](/momentum/4/lua/ref-msys-gauge-cache-dec) – Decrements the value associated with keystring in the named cache | cachename, keystring | msys.gauge_cache | 4.0 | any |
-| [msys.gauge_cache.define](/momentum/4/lua/ref-msys-gauge-cache-define) – Create a cache that can be used to maintain a set of counters | name, maxelems, ttl, [replicated] | msys.gauge_cache | 4.0 | any |
-| [msys.gauge_cache.get](/momentum/4/lua/ref-msys-gauge-cache-get) – Looks up the value associated with keystring in the named cache | cachename, keystring | msys.gauge_cache | 4.0 | any |
-| [msys.gauge_cache.inc](/momentum/4/lua/ref-msys-gauge-cache-inc) – Increments the value associated with keystring in the named cache | cachename, keystring | msys.gauge_cache | 4.0 | any |
-| [msys.gauge_cache.remove_item](/momentum/4/lua/ref-msys-gauge-cache-remove-item) – Removes the value associated with keystring from the named cache | cachename, keystring | msys.gauge_cache | 4.0 | any |
-| [msys.gcm.gcm_classify_error](/momentum/4/lua/ref-msys-gcm-gcm-classify-error) – Determine the delivery status of the "DLV_Response_Status" variable | status | msys.gcm | 4.0 | gcm_response_eval, http_response_eval, msg_dispose |
-| [msys.gcm.gcm_get_result_error_code](/momentum/4/lua/ref-msys-gcm-gcm-get-result-error-code) – Get the error code from the response results error | error | msys.gcm | 4.0 | gcm_response_eval, http_response_eval, msg_dispose |
-| [msys.getClassMetaTable](/momentum/4/lua/ref-msys-get-class-meta-table) – Returns the metatable for the named class | classnamestring | msys | 4.0 | any |
-| [msys.http.client.new](/momentum/4/lua/ref-msys-http-client-new) – Create an HTTP client | | msys.http.client | 4.0 | any |
-| [msys.httpclnt.http_status_classifier](/momentum/4/lua/ref-msys-httpclnt-http-status-classifier) – Determine the delivery status of the "DLV_Response_Status" variable | status | msys.httpclnt | 4.0 | http_response_eval |
-| [msys.httpsrv.register](/momentum/4/lua/ref-msys-httpsrv-register) – Register a Lua function as an HTTP endpoint | | | 4.0 | |
-| [msys.idn.to_idn](/momentum/4/lua/ref-msys-idn) – Attempts to convert the domain to the IDN format | name | msys.idn | 4.2 | any |
-| [msys.idn.to_utf8](/momentum/4/lua/ref-msys-idn-utf-8) – Converts an IDN formatted string to unicode | name | msys.idn | 4.2 | any |
-| [msys.lock](/momentum/4/lua/ref-msys-lock) – The current running OS level thread obtains a lock on the named mutex | mutexname | msys | 4.0 | any |
-| [msys.mstore.load](/momentum/mobile/mobile-reference/mobility-message-retry) – Retrieve a message from Riak data storage | bucket_id, msgid | msys.mstore | 4.0 | SMPP |
-| [msys.os.statvfs_read](/momentum/4/lua/ref-msys-os-statvfs-read) – Request a snapshot of the stream | path | msys.os | 4.0 | any |
-| [msys.os.statvfs_subscribe](/momentum/4/lua/ref-msys-os-statvfs-subscribe) – Provide a "stream" for statvfs updates | path, interval | msys.os | 4.0 | any |
-| [msys.parseRFC2822Addresses](/momentum/4/lua/ref-msys-parse-rfc-2822-addresses) – Parse the address string per the address parsing rules defined in RFC2822 | addressstring, component | msys | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.pcre.match](/momentum/4/lua/ref-msys-pcre-match) – Perform a PCRE regex match operation | str, pattern | msys.pcre | 4.0 | any |
-| [msys.pcre.replace](/momentum/4/lua/ref-msys-pcre-replace) – Perform a PCRE replace operation | subject, pattern, replacement | msys.pcre | 4.0 | any |
-| [msys.pcre.split](/momentum/4/lua/ref-msys-pcre-split) – Perform a PCRE split operation | subject, pattern | msys.pcre | 4.0 | any |
-| [msys.qp.decode](/momentum/4/lua/ref-msys-qp-decode) – Decode a quoted-printable message | encoded_txt, [charset] | msys.qp | 4.0 | any |
-| [msys.qp.encode](/momentum/4/lua/ref-msys-qp-encode) – Quoted-printable encode a string | original, [charset], [dotstuffing] | msys.qp | 4.0 | any |
-| [msys.readfile](/momentum/4/lua/ref-msys-readfile) – Read the entire contents of the specified file or URI | filename_or_uri | msys | 4.0 | any |
-| [msys.registerAuth](/momentum/4/lua/ref-msys-register-auth) – Register an authentication/authorization scheme that can be used for SMTP or control channel authentication | schemename, authtable | msys | 4.0 | init |
-| [msys.registerControl](/momentum/4/lua/ref-msys-register-control) – Register a command with the control channel subsystem | prefix, closure | msys | 4.0 | init |
-| [msys.registerModule](/momentum/4/lua/ref-msys-register-module) – Registers a Lua module with the system | name, functable | msys | 4.0 | any |
-| [msys.rfc3464.compute_delivery_status](/momentum/4/lua/ref-msys-rfc-3464-compute-delivery-status) – Generate RFC3464 compliant delivery status headers | msg, action | msys.rfc3464 | 4.0 | any |
-| [msys.rfc3464.compute_delivery_status_string](/momentum/4/lua/ref-msys-rfc-3464-compute-delivery-status-string) – Generate RFC3464 compliant delivery status headers | response_text | msys.rfc3464 | 4.0 | any |
-| [msys.rfc3464.create_mdn](/momentum/4/lua/ref-msys-rfc-3464-create-mdn) – Generate an MDN from a message | msg, action | msys.rfc3464 | 4.0 | any |
-| [msys.rfc3464.extract_delivery_status](/momentum/4/lua/ref-msys-rfc-3464-extract-delivery-status) – Return a table of parsed email headers | msg | msys.rfc3464 | 4.0 | any |
-| [msys.rfc3464.send_mdn](/momentum/4/lua/ref-msys-rfc-3464-send-mdn) – Generate and enqueue an MDN | msg, action | msys.rfc3464 | 4.0 | any |
-| [msys.runInPool](/momentum/4/lua/ref-msys-runinpool) – Run a function in a separate threadpool | pool, closure, [...] | msys | 4.0 | any |
-| [msys.sleep](/momentum/4/lua/ref-msys-sleep) – When called in the scheduler thread, suspend the current session for the specified duration | duration_in_seconds | msys | 4.0 | any |
-| [msys.snmpTrap](/momentum/4/lua/ref-msys-snmp-trap) – Issue an SNMP trap | traptable | msys | 4.0 | any |
-| [msys.symantec_beik.scan](/momentum/4/lua/ref-msys-symantec-beik-scan) – Scan using BEIK | msg, vctx | msys.symantec_beik | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.threadpool.count](/momentum/4/lua/ref-msys-threadpool-count) – Returns the current number of thread pools | | msys.threadpool | 4.0 | any |
-| [msys.threadpool.find](/momentum/4/lua/ref-msys-threadpool-find) – Finds a thread pool name from a job class ID or a job class ID from a thread pool name | [threadpoolname], [jobclassID] | msys.threadpool | 4.0 | any |
-| [msys.threadpool.stat](/momentum/4/lua/ref-msys-threadpool-stat) – Return stats regarding a threadpool | [threadpoolname], [jobclassID] | msys.threadpool | 4.0 | any |
-| [msys.timer.after](/momentum/4/lua/ref-msys-timer-after) – Execute closure after a given length of time | delta, closure, [name] | msys.timer | 4.0 | any |
-| [msys.timer.at](/momentum/4/lua/ref-msys-timer-at) – Execute closure at a given time | number, closure, [name] | msys.timer | 4.0 | any |
-| [msys.timer.every](/momentum/4/lua/ref-msys-timer-every) – Execute closure every interval | interval, closure, [name] | msys.timer | 4.0 | any |
-| [msys.tls_params.set](/momentum/4/lua/ref-msys-tls-params-set) - Set a tls parameter string on a per connection basis | tls_params, param, val | msys.tls_params | 4.4 | any |
-| [msys.type](/momentum/4/lua/ref-msys-type) – Return the type name of the supplied parameter | parameter | msys | 4.0 | any |
-| [msys.unlock](/momentum/4/lua/ref-msys-unlock) – Releases a lock obtained via msys.lock | mutexname | msys | 4.0 | any |
-| [msys.validate.dk.get_responsible_domain](/momentum/4/lua/ref-msys-validate-dk-get-responsible-domain) – This function requires module "dk_validate". "msg" is a mail message. "ctx" is the validation context. It returns the responsible domain for the current message | msg, ctx | msys.validate.dk | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.dk.sign](/momentum/4/lua/ref-msys-validate-dk-sign) – Sign a message using a Domain Key | msg, ctx, options | msys.validate.dk | 4.0 | core_data_validation |
-| [msys.validate.openarc.sign](/momentum/4/lua/ref-msys-validate-openarc-sign) – Sign a message using OpenARC | msg, options, [ar] | msys.validate.openarc | 5.0 | core_post_final_validation |
-| [msys.validate.openarc.verify](/momentum/4/lua/ref-msys-validate-openarc-verify) – Verify ARC sets | msg | msys.validate.openarc | 5.0 | data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_num_sigs](/momentum/4/lua/ref-msys-validate-opendkim-get-num-sigs) – Return the number of DKIM signatures | dkim | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig](/momentum/4/lua/ref-msys-validate-opendkim-get-sig) – Get a signature from a DKIM object | dkim, [num] | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig_ar_verdict](/momentum/4/lua/ref-msys-validate-opendkim-get-sig-ar-verdict) – Derive the Authentication-Results verdict for a DKIM signature | dkim_sig | msys.validate.opendkim | 5.4 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig_canons](/momentum/4/lua/ref-msys-validate-opendkim-get-sig-canons) – Fetch the canonicalizers used for a DKIM signature | dkim_sig | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig_domain](/momentum/4/lua/ref-msys-validate-opendkim-get-sig-domain) – Fetch the signing domain from a DKIM_SIGINFO object | dkim_sig | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig_errorstr](/momentum/4/lua/ref-msys-validate-opendkim-get-sig-errorstr) – Fetch the error associated with a DKIM signature | dkim_sig | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig_flags](/momentum/4/lua/ref-msys-validate-opendkim-get-sig-flags) – Fetch the flags associated with a DKIM signature | dkim_sig | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig_hdrsigned](/momentum/4/lua/ref-msys-validate-opendkim-get-sig-hdrsigned) – Determine whether a given header was signed | dkim_sig, header_name | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig_identity](/momentum/4/lua/ref-msys-validate-opendkim-get-sig-identity) – Fetch the identity associated with a DKIM signature | dkim, dkim_sig | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig_keysize](/momentum/4/lua/ref-msys-validate-opendkim-get-sig-keysize) – Fetch the size of the key used to generate a DKIM signature | dkim_sig | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig_selector](/momentum/4/lua/ref-msys-validate-opendkim-get-sig-selector) – Fetch the selector associated with a DKIM signature | dkim_sig | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_sig_signalg](/momentum/4/lua/ref-msys-validate-opendkim-get-sig-signalg) – Return the signing algorithm as a string | dkim_sig | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.get_stat_ar_verdict](/momentum/4/lua/ref-msys-validate-opendkim-get-stat-ar-verdict) – Map a DKIM verification status with no per-signature verdict to an Authentication-Results result | stat | msys.validate.opendkim | 5.4 | data, data_spool, data_spool_each_rcpt |
-| [msys.validate.opendkim.sign](/momentum/4/lua/ref-msys-validate-opendkim-sign) – Sign a message using OpenDKIM | msg, vctx, [options] | msys.validate.opendkim | 4.0 | core_final_validation |
-| [msys.validate.opendkim.verify](/momentum/4/lua/ref-msys-validate-opendkim-verify) – Verify an DKIM signature | msg | msys.validate.opendkim | 4.0 | data, data_spool, data_spool_each_rcpt |
-| [sess:request_add_header](/momentum/4/lua/ref-sess-request-add-header) – Set the header of an HTTP session | header, value, replace | msys.httpclnt | 4.0 | http_request_eval |
-| [sess:request_delete_header](/momentum/4/lua/ref-sess-request-delete-header) – Delete a header from an HTTP session | header | msys.httpclnt | 4.0 | http_request_eval |
-| [sess:request_finalize](/momentum/4/lua/ref-sess-request-finalize) – Finalize changes to an HTTP request | update | msys.httpclnt | 4.0 | http_request_eval |
-| [sess:request_set_body](/momentum/4/lua/ref-sess-request-set-body) – Set the body of an HTTP session | request | msys.httpclnt | 4.0 | http_request_eval |
-| [session:request_url_get](/momentum/4/lua/ref-session-request-url-get) – Get the request URL | | | 4.0 | |
-| [session:response_status_set_std](/momentum/4/lua/ref-session-response-status-set-std) – Set the HTTP status for the session response | | | 4.0 | |
-| [thread.mutex](/momentum/4/lua/ref-thread-mutex) – Create a new mutex | [type] | thread | 4.0 | any |
-| [vctx:add_recipient](/momentum/4/lua/ref-vctx-add-recipient) – Adds address (which may be a table representing multiple addresses) to the recipient list for the inbound session | address | msys.extended.vctx | 4.0 | data, data_spool, data_spool_each_rcpt, rcptto |
-| [vctx:disconnect](/momentum/4/lua/ref-vctx-disconnect) – Disconnect the current session | [code], [message] | msys.core | 4.0 | any |
-| [vctx:get](/momentum/4/lua/ref-vctx-get) – Get the value of a context variable | type, key | msys.core | 4.0 | any |
-| [vctx:recipient_list](/momentum/4/lua/ref-vctx-recipient-list) – Return or set the current recipient list | [addresses] | msys.extended.vctx | 4.0 | |
-| [vctx:remove_recipient](/momentum/4/lua/ref-vctx-remove-recipient) – Removes an address (which may be a table representing multiple addresses) from the recipient list | address | msys.extended.vctx | 4.0 | data, data_spool, data_spool_each_rcpt, mailfrom, rcptto |
-| [vctx:set](/momentum/4/lua/ref-vctx-set) – Set the value of a context variable | type, key, value | msys.core | 4.0 | any |
-| [vctx:set_code](/momentum/4/lua/ref-vctx-set-code) – Sets the inbound disposition and response message | codenum, message | msys.core | 4.0 | any |
-| [vctx:tarpit](/momentum/4/lua/ref-vctx-tarpit) – Issues a time cost on the inbound session, if supported by the listener (currently only SMTP supports this) | interval | msys.extended.vctx | 4.0 | connect |
diff --git a/content/momentum/4/4-module-config.md b/content/momentum/4/4-module-config.md
deleted file mode 100644
index aa0cca8d8..000000000
--- a/content/momentum/4/4-module-config.md
+++ /dev/null
@@ -1,171 +0,0 @@
----
-lastUpdated: "10/05/2021"
-title: "Modules"
-description: "Momentum's module API is at the core of how it is extended When a module is loaded it is named based on the module name specified in the configuration Some modules can have multiple instances loaded with different configurations e g to log different sets of information into different log..."
----
-
-Momentum's module API is at the core of how it is extended. When a module is loaded, it is named based on the *`module_name`* specified in the configuration. Some modules can have multiple instances loaded with different configurations (e.g. to log different sets of information into different log files), while other modules are singletons and can only be loaded once.
-
-All modules load automatically if you use any of the options they declare or use other resources provided by them. However, the module must be explicitly loaded to set its configuration options. Note that you do not need to explicitly declare modules that do not have options (apart from the `enabled` and `debug_level` options common to all modules). To determine if the module is loaded implicitly, refer to the specific module in [*Modules Reference*](/momentum/4/modules/) .
-
-### Module Configuration
-
-Modules can be configured by altering the configuration files or by setting options with the **config** command from the console.
-
-Generally, modules are defined in the configuration files as follows:
-
-modulename "*`instancename`*" {
- option1 = value1
- option2 = value2
- ...
-}
-
-Most modules have a module name, a scope name, and one or more instance names. However, singleton modules do not have instance names and can only be loaded once. To determine whether a module is a singleton, refer to [*Modules Summary*](/momentum/4/modules/summary-all-modules) or use the **module list** command from the console. The following is an example partial output:
-
-```
-...
-Module: ds_core
- Scope_Name: ds_core
- Enabled: enabled
- API: Singleton
- Name: ds_core.c
- Description: generic datasource module
-Module: ec_logger:ec_logger
- Scope_Name: ec_logger
- Instance_Name: ec_logger
- Enabled: enabled
- API: Logger
- Name: ec_logger.c
- Description: Momentum minimalistic logging module
-...
-```
-
-Whether a module is a singleton effects how module-specific console commands are invoked. For details, see [“Using Module-Specific Console Commands”](/momentum/4/4-module-specific-console-commands-using).
-
-You can also set configuration options from the console at runtime. Note that you also need to know whether a module is a singleton to set options using this method. For details, see [“Setting and Getting Module Options from the Console”](/momentum/4/modules/options-console).
-
-Some modules (typically antivirus modules) must be loaded in "passive" mode. To load a module passively, set the `enabled` option to `false`. For example, use the following syntax in the `ecelerity.conf` file:
-
-```
-symbolname "name" {
- enabled = false
- debug_level = DEBUG
- ...
-}
-```
-
-Note that the `enabled` and `debug_level` options are common to all modules.
-
-### Module Debugging
-
-During troubleshooting, it can be useful to have debugging information sent to the `paniclog`. Module debug levels can be set in the configuration files or from the console. Note that if the module that you wish to debug is not explicitly loaded, you must add it to your configuration file. The default debugging level is `ERROR`, which will cause `ERROR` and `CRITICAL` messages to be logged to the `paniclog`.
-
-To set module debug levels in your configuration, set the `debug_level` option within the module stanza:
-
-modulename "*`Instance_Name`*" {
- ...
- debug_level = DEBUG
-}
-
-The following is an example of setting the debug level of the bounce_logger module in the `ecelerity.conf` file:
-
-```
-bounce_logger "bounce_logger1"
-{
- debug_level = "NOTICE"
- bouncelog = "/var/log/ecelerity/bouncelog.ec"
- bouncelog_mode = 0644
- heartbeat = 60
-}
-```
-
-To set module debug levels in the console, use the **config** command:
-
-config set *`Scope_Name`* *`Instance_Name`* Debug_Level *`value`*
-
-The following is an example of setting the debug level of the bounce_logger module in the console:
-
-`config set bounce_logger bounce_logger1 Debug_Level DEBUG`
-
-The debug level is set in the same way as any other module option. For a list of all the debug levels, see [Table 72.1, “Debug levels”](/momentum/4/config/ref-debug-flags#conf.ref.debug.levels).
-
-Be sure to turn off debugging when you are finished, otherwise log files can become excessively large.
-
-### Creating and Installing a Compiled Lua Module
-
-You can build a native-C module that implements Lua functionality. A sample module with extensive notes is provided in the `/opt/msys/ecelerity/docs/lua_sample.c` file. This sample adds functionality to enable suspend and resume actions and the ability to receive core Momentum data structures as parameters.
-
-The examples in this file are trivial but demonstrate best-practice coding paradigms for integrating with Lua. To build these examples perform the following:
-
-1. During installation, install the Ecelerity developer tools on the build machine. (To add this package after installation, download msys-ecelerity-devel-*`version.os.arch`*.rpm from the Message Systems website.)
-
-2. Follow the instructions in `/opt/msys/ecelerity/docs/lua_sample.c` and compile the source code using `/opt/msys/ecelerity/bin/ecxs`.
-
- shell> /opt/msys/ecelerity/bin/ecxs -c *`/path/to/`*lua_sample.c
-3. Install the module so that it can be found at runtime:
-
- ```
- shell> cp lua_sample.so /opt/msys/ecelerity/libexec/lua
- shell> chmod +x /opt/msys/ecelerity/libexec/lua/lua_sample.so
- ```
-
-To run the example, create the following Lua script using the instructions given at [“Creating Policy Scripts”](/momentum/4/4-implementing-policy-scriptlets#policy.best.practices):
-
-```
-require("lua_sample");
-local mod = {};
-
-function mod:validate_data(msg, ac, vctx)
- print("size", lua_sample.size_by_two(msg))
- lua_sample.sleep(5);
- print("after sleep")
- print("answer", lua_sample.mul_by_seven(6));
-end
-
-msys.registerModule("sample", mod);
-```
-
-Save this file as `samplescript.lua`.
-
-Configure the following scriptlet stanza in your `ecelerity.conf` file:
-
-```
-scriptlet "scriptlet" {
- script "sample" {
- source = "samplescript"
- }
-}
-```
-
-For detailed information about how Lua is implemented in Momentum, see [“scriptlet - Lua Policy Scripts”](/momentum/4/modules/scriptlet) and [“Policy Scriptlets”](/momentum/4/4-implementing-policy-scriptlets).
-
-### Testing Lua Modules
-
-As of Momentum 4.4, a new test script has been added under `/opt/msys/ecelerity/docs/lua_sample.t`. This test serves as an example of how to use the `ec_runtests.pl` test harness to test Lua modules, as well as how to build an extension to Momentum's built-in Lua functionality.
-
-In order to run tests, you must have the `msys-ecelerity-devel` package installed first.
-Since the test needs to compile a module, the `msys_ecelerity_devel` package will install gcc on your system. It also requires the use of the `openssl-devel` package.
-The versions we used during development were `gcc-4.8.5-44` and `openssl-devel-1.0.2k-21`.
-
-To run the test, execute the following commands (`sudo` can be omitted if running as a privileged user):
-
-```
-cd /opt/msys/ecelerity/docs
-sudo ../bin/ec_runtests.pl -kvnc1 lua_sample.t
-```
-
-You should then see an output similar to the following on success:
-
-```
-1..4
-Working in installed Momentum environment
-ok 1 - Server Startup
-ok 2 - Mail goes in ok
-ok 3 - Confirmed the lua module ran and printed logs inside the panic log.
-ok 4 - Server Shutdown
-ok 5909 ms ( 0.00 usr 0.00 sys + 0.57 cusr 0.18 csys = 0.75 CPU)
-[14:17:31]
-All tests successful.
-Files=1, Tests=4, 5.91827 wallclock secs ( 0.01 usr 0.00 sys + 0.57 cusr 0.18 csys = 0.76 CPU)
-Result: PASS
-```
diff --git a/content/momentum/4/4-module-specific-console-commands-using.md b/content/momentum/4/4-module-specific-console-commands-using.md
deleted file mode 100644
index 623fcf4f2..000000000
--- a/content/momentum/4/4-module-specific-console-commands-using.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Using Module-Specific Console Commands"
-description: "How module specific console commands are issued depends upon whether a module is a singleton To determine whether a module is a singleton refer to Chapter 65 Modules Summary or use the module list command from the console This command displays a full list of all loaded modules The following..."
----
-
-How module-specific console commands are issued depends upon whether a module is a singleton. To determine whether a module is a singleton, refer to [*Modules Summary*](/momentum/4/modules/summary-all-modules) or use the **module list** command from the console. This command displays a full list of all loaded modules. The following is an example partial output:
-
-```
-...
-Module: ds_core
- Scope_Name: ds_core
- Enabled: enabled
- API: Singleton
- Name: ds_core.c
- Description: generic datasource module
-Module: ec_logger:ec_logger
- Scope_Name: ec_logger
- Instance_Name: ec_logger1
- Enabled: enabled
- API: Logger
- Name: ec_logger.c
- Description: Momentum minimalistic logging module
-...
-```
-
-This output shows both a singleton (ds_core) and a non-singleton (ec_logger) module. The instance name of a non-singleton module is the name that you choose when the module is created.
-
-Non-singleton module commands are issued using `Scope_Name:Instance_Name` followed by the command. For example, when you have an ec_logger module named `ec_logger1`, issue the `help` command in the following way:
-
-`ec_logger:ec_logger1 help`
-
-Singleton module commands are executed by using the module scope name followed by the command. For example, to flush a cache named *`sqlite`*, issue the `ds_core flush` command in the following way:
-
-`ds_core flush sqlite`
-
-For a list of module-specific console commands, see [*Console Commands Summary*](/momentum/4/4-console-commands) .
\ No newline at end of file
diff --git a/content/momentum/4/4-operations-console-commands.md b/content/momentum/4/4-operations-console-commands.md
deleted file mode 100644
index 25c723554..000000000
--- a/content/momentum/4/4-operations-console-commands.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Console Commands"
-description: "Most console commands are available for use regardless of the modules loaded However there are also module specific console commands For a list of available console commands type help in the console or refer to Chapter 67 Console Commands Summary..."
----
-
-Most console commands are available for use regardless of the modules loaded. However, there are also module-specific console commands. For a list of available console commands, type **`help`** in the console or refer to [*Console Commands Summary*](/momentum/4/4-console-commands) .
\ No newline at end of file
diff --git a/content/momentum/4/4-operations.md b/content/momentum/4/4-operations.md
deleted file mode 100644
index 4d26979d1..000000000
--- a/content/momentum/4/4-operations.md
+++ /dev/null
@@ -1,97 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Using the System Console (ec_console)"
-description: "Momentum's online administration management and analysis is through the Momentum System Console program ec console henceforth referred to as the console For details about the available options see ec console The console can connect to a Momentum instance via a Unix domain socket or a TCP IP socket with an..."
----
-
-
-## Connecting to the Console
-
-Momentum's online administration, management, and analysis is through the Momentum System Console program **ec_console**, henceforth referred to as the console. For details about the available options, see [ec_console](/momentum/4/executable/ec-console).
-
-The console can connect to a Momentum instance via a Unix domain socket or a TCP/IP socket (with an optional user@ prefix) depending upon how the Control_Listener is configured. For details on configuring the Control_Listener behavior, see [*Configuring Momentum's System Console*](/momentum/4/control-listener) .
-
-### Note
-
-To connect to the console, you must have root privileges.
-
-### Connecting via a Unix Domain Socket
-
-The console assumes that Unix domain sockets are located in `/tmp`. The standard endpoint for a control listener is `/tmp/2025`. When using the standard endpoint to connect to the console, issue the **ec_console** command with no options:
-
-`shell> /opt/msys/ecelerity/bin/ec_console`
-
-If you choose to bind your Control_Listener to a non-standard value, issue the **ec_console** with an optional argument to specify an endpoint, as shown:
-
-`shell> /opt/msys/ecelerity/bin/ec_console /tmp/2030`
-
-This will attempt to connect to the local Momentum instance listening at `/tmp/2030`.
-
-### Connecting via TCP/IP
-
-To connect via TCP/IP, issue the **ec_console** with an optional argument to specify the IP address and port. The following example attempts to connect the Momentum instance located at the IPv4 address 10.2.4.1 on port 2025:
-
-`shell> /opt/msys/ecelerity/bin/ec_console 10.2.4.1:2025`
-
-Likewise, you can attempt to connect to the Momentum instance located at the IPv6 address fd82:7796:815b:af9d:2e0:81ff:fe63:5ce8 on port 2424 in the following way:
-
-`shell> /opt/msys/ecelerity/bin/ec_console ec_console [fd82:7796:815b:af9d:2e0:81ff:fe63:5ce8]:2424`
-### Note
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-### Connecting Using SSH Tunnel
-
-The **ec_console** command has ssh tunnel support. Assuming that you have a properly configured Control_Listener, you can connect in the following ways:
-
-```
-shell> ec_console ssh://user@hostname/ecuser@hostname:2025
-shell> ec_console ssh://user:passwd@hostname/ecuser:passwd@*:2025
-```
-
-You need operating system (OS) credentials for the ssh connection to the machine hosting the MTA and console credentials because the control listener requires authentication. The listener stanza is shown below:
-
-```
-Control_Listener {
- Enable_Authentication = "true"
-
- Listen "*:2025" {
- }
- ...
-}
-```
-
-SSH support requires the remote server to support SSH protocol version 2, and that the server be configured to allow port-forwarding. It is not possible to tunnel Unix domain socket connections over SSH.
-
-For details on configuring authentication, see [“Control_Listener Authentication”](/momentum/4/control-auth).
-
-### Successful Connection
-
-A successful launch of the console will result in output similar to the following:
-
-```
-# /opt/msys/ecelerity/bin/ec_console
-##############################################
-# ecelerity version: 3.0.10.30987
-# Copyright (c) 1999-2009 Message Systems, Inc.
-# All Rights Reserved.
-##############################################
-```
-
-By default, an interactive console session is established, and the console client provides line editing features and tab completion (it will load your `~/.inputrc` on startup). In this mode, the version of the remote server is displayed at connect time.
-
-The console client enters batching mode if it detects that it is not connected to a terminal or if additional command line parameters beyond the listener endpoint are specified. For example, you can list all your active modules and then exit in the following way:
-
-`shell> ec_console /tmp/2025 module list`
-
-For a TCP/IP connection to localhost requiring authentication of the user, `admin`, use the following command:
-
-`shell> ec_console admin@localhost:2025 module list`
-
-You will be asked for admin's password before the **module list** command executes. Batch mode suppresses the version information that is normally displayed at connect time and disables advanced line editing features.
-
-### Exiting the Console
-
-To exit the console, enter the **quit** command.
\ No newline at end of file
diff --git a/content/momentum/4/4-policy-context-mess.md b/content/momentum/4/4-policy-context-mess.md
deleted file mode 100644
index 51f298e5d..000000000
--- a/content/momentum/4/4-policy-context-mess.md
+++ /dev/null
@@ -1,126 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Message Context Variables"
-description: "Message context variables yield information about the current message These variables are predefined either in a global context or within a module The following tables list the global and module specific variables It is also possible to define context variables using configuration options These variables are discussed in Section 63..."
----
-
-Message context variables yield information about the current message. These variables are predefined, either in a global context or within a module. The following tables list the global and module-specific variables.
-
-It is also possible to define context variables using configuration options. These variables are discussed in [“Message Context Variables Defined Within a Module”](/momentum/4/4-policy-context-mess#policy.context-mess.module.defined).
-
-### Predefined Global Message Context Variables
-
-This table lists all message context variables that are predefined globally by Momentum.
-
-
-
-
-| Message Context Variable | Description |
-| --- | --- |
-| #8bitmime – For internal use |
-
-This variable is set during message parsing if the message contains 8-bit content. It is used at send time to determine whether to negotiate 8-bit MIME support with the recipient or to transform the message as per the Send_8BitMime and Transform_8BitMime configuration options. For more information about these options, see [send_8bitmime](/momentum/4/config/ref-send-8-bitmime) and [transform_8bitmime_content](/momentum/4/config/ref-transform-8-bitmime-content).
-
- |
-| #batch_ids – For internal use |
-
-The sibling message-ids in a batch. This is not determined until after reception is complete.
-
- |
-| mailfrom_domain – Domain part of mailfrom address |
-
-Available as of the `validate_mailfrom` callout.
-
- |
-| mailfrom_localpart – Local part of mailfrom address |
-
-Available as of the `validate_mailfrom` callout.
-
- |
-| mailfrom_string – Entire mailfrom line |
-
-Available as of the `validate_mailfrom` callout.
-
- |
-| rcptto_domain – Domain part of the rcptto address | |
-| rcptto_localpart – Local part of the rcptto address | |
-| rcptto_string – Entire rcptto line | |
-| rfc2822_date_missing – Set to "true" if the date is missing | |
-
-### Predefined Module-Specific Message Context Variables
-
-Modules that support predefined module-specific message context variables are listed below:
-
-* [brightmail](/momentum/4/modules/brightmail#modules.brightmail.context.variables)
-
-* [cloudmark](/momentum/4/modules/cloudmark#modules.cloudmark.context.variables)
-
-* [commtouch_ctasd](/momentum/4/modules/commtouch#modules.commtouch.context.variables)
-
-* [domainkeys](/momentum/4/modules/domainkeys#modules.domainkeys.context.variables)
-
-* [seedlist](/momentum/4/modules/seedlist#modules.seedlist.runtime.usage)
-
-* [smtp_cbv](/momentum/4/modules/smtp-cbv#modules.smtp_cbv.context.variables)
-
-### Message Context Variables Defined Within a Module
-
-In some modules, it is possible to define context variables using configuration options. The following table lists the modules that support this feature.
-
-
-
-
-| Module | Configuration Option | Default Value |
-| --- | --- | --- |
-|
-
-[antivirus](/momentum/4/modules/4-antivirus)
-
- |
-
-`context_variable`
-
- |
-
-*`engine name`* _status
-
- |
-|
-
-[antivirus](/momentum/4/modules/4-antivirus)
-
- |
-
-`skip_context_variable`
-
- |
-
-skip_virus_check
-
- |
-|
-
-[spf](/momentum/4/modules/spf)
-
- |
-
-`context_variable`
-
- |
-
-spf_status
-
- |
-|
-
-[spf](/momentum/4/modules/spf)
-
- |
-
-`context_pra_variable`
-
- |
-
-senderid_pra_status
-
- |
\ No newline at end of file
diff --git a/content/momentum/4/4-policy-context-variables.md b/content/momentum/4/4-policy-context-variables.md
deleted file mode 100644
index 08e4ea714..000000000
--- a/content/momentum/4/4-policy-context-variables.md
+++ /dev/null
@@ -1,106 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Validation Context Variables"
-description: "As mentioned in Section 62 1 Validation and the Validation Context context variables play a significant role when policy is enforced using scripts In addition to user defined variables there are predefined validation context variables accessible in both the connection context and the message context Not all context variables will..."
----
-
-
-As mentioned in [“Validation and the Validation Context”](/momentum/4/4-policy#policy.validation), context variables play a significant role when policy is enforced using scripts. In addition to user-defined variables, there are predefined validation context variables accessible in both the connection context and the message context. Not all context variables will be set in all cases; some, for example, depend on TLS settings and others on which modules are loaded into Momentum. Some context variables are defined in a global scope and some in a module scope.
-
-## Connection Context Variables
-
-Connection context variables are set upon the creation of a successful connection and contain information regarding the remote client. Connection context variables are predefined, either in a global context or within a module. The following tables list the global and module-specific variables.
-
-### Global Predefined Connection Context Variables
-
-This table lists all connection context variables that are predefined globally by Momentum.
-
-
-
-
-| Connection Context Variable | Description |
-| --- | --- |
-| [auth_name](/momentum/4/inbound-smtp) – Type of authentication |
-
-Description of the form of authentication that was attempted (e.g. PLAIN, LOGIN, CRAM-MD5, DIGEST-MD5).
-
-This variable is available as of the [validate_auth](/momentum/3/3-api/hooks-core-validate-auth) hook. For scripting, use the `core_validate_auth_hook` callout.
-
- |
-| [auth_status](/momentum/4/inbound-smtp) – Authentication status |
-
-When an SMTP client performs an SMTP AUTH action, `auth_status` cwill be set to one of "pass", "fail", or "error".
-
-This variable is available as of the [validate_auth](/momentum/3/3-api/hooks-core-validate-auth) hook. For scripting, use the `core_validate_auth_hook` callout.
-
- |
-| [auth_user](/momentum/4/inbound-smtp) – Authenticated username |
-
-When an SMTP client performs an SMTP AUTH action, `auth_user` will be set to the username used during authorization.
-
-This variable is available as of the [validate_auth](/momentum/3/3-api/hooks-core-validate-auth) hook. For scripting, use the `core_validate_auth_hook` callout.
-
- |
-| [can_relay](/momentum/4/inbound-smtp) – Whether relaying is allowed |
-
-When an SMTP client is allowed to relay through Momentum because of an entry in [`relay_hosts`](/momentum/4/config/ref-relay-hosts) or a relaying declaration in an ESMTP_Listener IP access control list, `can_relay` is set to "true".
-
-Accessible as of the [config_get_domain_relay](/momentum/3/3-api/hooks-core-config-get-domain-relay) hook.
-
- |
-| connection_message_count – Number of messages on the connection | |
-| connection_rcpt_count – Number of recipients on the connection |
-
-This variable counts the *total* number of RCPT TOs on this open connection, while `message_rcpt_count` counts the number of RCPT TOs since the last MAIL FROM.
-
- |
-| ehlo_domain – Domain from the EHLO phase |
-
-Accessible as of the EHLO phase.
-
- |
-| ehlo_string – Complete EHLO string |
-
-Accessible as of the EHLO phase.
-
- |
-| message_rcpt_count – Number of recipients for the current message |
-
-Since a given message "object" can only have one recipient, multiple recipients are a property of the current session and are tracked at the connection level not the message level. This variable counts the number of RCPT TOs since the last MAIL FROM, while `connection_rcpt_count` counts the *total* number of RCPT TOs on this open connection.
-
-Accessible as of the [validate_data_spool_each_rcpt](/momentum/3/3-api/hooks-core-validate-data-spool-each-rcpt) hook.
-
- |
-| tls – Whether TLS is in use | |
-| tls_cipher – Identifies the cipher in use for a TLS enabled session |
-
-Accessible from the [outbound_tls_ciphers](/momentum/3/3-api/hooks-core-outbound-tls-ciphers) hook.
-
- |
-| tls_cipher_algbits – Number of bits the algorithm is based on |
-
-For example, `128`.
-
- |
-| tls_cipher_usebits – Number of bits used |
-
-For example, `40`.
-
- |
-| tls_client_cert_subject – Holds the subject of the peer certificate for a TLS enabled session | |
-| tls_client_cert_subject_cn – Common name of the subject of the peer certificate | |
-| tls_client_cert_issuer – Holds the issuer of the peer certificate for a TLS enabled session | |
-| tls_client_cert_issuer_cn – Common name of the issuer of the peer certificate | |
-| tls_client_verified |
-
-Set to the string `yes` if the peer certificate was verified against the configured Certificate Authorities.
-
- |
-
-### Predefined Module-Specific Connection Context Variables
-
-Modules that support predefined module-specific connection context variables are listed below:
-
-* [conntrol – Fine-Grained Connection Control](/momentum/4/modules/conntrol#modules.conntrol.context.variables)
-
-* [mail_loop – Mail Loop Detection](/momentum/4/modules/mail-loop#modules.mail_loop.context.variables)
\ No newline at end of file
diff --git a/content/momentum/4/4-policy.md b/content/momentum/4/4-policy.md
deleted file mode 100644
index 23d503bd5..000000000
--- a/content/momentum/4/4-policy.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Implementing Policy with Momentum"
-description: "In order to effectively implement your site policy it is important to understand how mail transits through Momentum and when the policy is applied Figure 62 1 Momentum Policy Phases provides visual representations of mail injected via HTTP and SMTP Additional policy information is provided after the diagram For more..."
----
-
-
-
-
-In order to effectively implement your site policy, it is important to understand how mail transits through Momentum and when the policy is applied. [“Momentum Policy Phases”](/momentum/4/4-policy#policy.flow-diagram) provides visual representations of mail injected via HTTP and SMTP. Additional policy information is provided after the diagram. For more information about the other mail transmission stages, see [*Life of A Message*](/momentum/4/loam) .
-
-
-
-
-
-
-All messages go through validation checks, which can be active (such as terminating the connection) or passive (such as collecting information).
-
-Messages pass through policy phases (or hook points), which enable you to define actions that will be executed at various points during validation. These actions can be related to decisions around message acceptance, modifying the message, or applying logic based on a property of the message. Policy can be defined to act on the connection or message associated with the phase of an SMTP session. All policy is applied to each message entering Momentum, and all policy decisions are made before Momentum accepts the message for downstream delivery.
-
-The policy phases differ for each type of injection. For example, messages injected via HTTP pass through:
-
-1. msg_gen_data_spool (message modification is generally done in this phase)
-
-2. set_binding
-
-3. final_validation
-
-While messages injected via SMTP pass through:
-
-1. connect
-
-2. ehlo
-
-3. mailfrom
-
-4. rcptto
-
-5. data
-
-6. dataspool
-
-7. data_spool_each_rcpt (message modification is generally done in this phase)
-
-8. set_binding
-
-9. final_validation
-
-Momentum then assigns the message to a binding (i.e., an outgoing IP address used to send a message) and writes it to disk (in the `/var/spool/ecelerity` directory).
-
-If the message does not pass the validation checks, it is rejected due to policy.
-
-## Validation and the Validation Context
-
-The validation process in Momentum is extensible, designed to consist of any number of disparate modules provided either by Message Systems, a third-party vendor, or developed directly by a customer. Momentum provides a validation context which allows validation modules to store and share validation information over the various policy phases. The final decision about what to do with a message (discard, reject, quarantine, modify, forward etc.) can be made using policy scripts acting on the same connection or message but executing in different phases.
-
-The validation context contains two dictionaries of information, referred to as the `connection context` and `message context` respectively. The former holds information associated with the remote client connected to Momentum, whereas the latter holds information about the current message. The message context is emptied for each message transmitted on a given connection, whereas the connection context retains its information for the lifetime of that connection.
-
-A number of context variables are pre-defined by Momentum, depending on how the connection was made, and what modules are loaded. A complete list of pre-defined context variables can be found in [*Validation Context Variables*](/momentum/4/4-policy-context-variables) . In addition, the [context](/momentum/4/config/ref-context) option provides a mechanism to set arbitrary connection context key value pairs.
-
-### Setting Context Based on Connecting IP
-
-It is often useful to bypass anti-spam checks when you know that the sender is a machine on your network. It could be either a local user or an internal mail exchange machine that is merely forwarding the mail on via Momentum. In the former case, it is not good for your own users not to be able to mail out of your network, and in the latter case, it does not help you if you are tarpitting your own mail infrastructure if spam has managed to leak in.
-
-The example ESMTP_Listener configuration shown in [“Connection Context Variables in ESMTP_Listener”](/momentum/4/4-policy#policy.context-based-on-ip3.ex) will set `my_key` and `my_other_key` in the `connection context` for machines connecting from the netblock 0.0.0.0/0 (this matches all connections). It will set the `trusted_mx` connection context for machines connecting from the 10.0.0.0/32 network, which is assumed to be a trusted internal network. You can set any arbitrary context information using this mechanism.
-
-
-
-
-```
-ESMTP_Listener {
- Listen "*:25" {
- Peer "0.0.0.0/0" {
- context = [
- my_key = "my_value"
- my_other_key = "my_other_value"
- ]
-
- }
- Peer "10.0.0.0/32" {
- context = [
- trusted_mx = "yes"
- ]
- }
- }
-}
-```
-
-### Bypassing Validation Modules
-
-To bypass validation modules, add a context variable to your listener by creating a context variable with the name __bypass_*`module_name`* and setting its value to `true`. For example, to bypass the spf_v1 module create a variable called `__bypass_spf_v1` and set its value to `true`.
-
-To determine whether a module is a validation module, see [*Modules Summary*](/momentum/4/modules/summary-all-modules) .
\ No newline at end of file
diff --git a/content/momentum/4/4-preface.md b/content/momentum/4/4-preface.md
deleted file mode 100644
index 50e7313f6..000000000
--- a/content/momentum/4/4-preface.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "05/21/2024"
-title: "Preface"
-description: "Certain typographical conventions are used in this document Take a moment to familiarize yourself with the following examples"
----
-
-## Typographical Conventions Used in This Document
-
-Certain typographical conventions are used in this document. Take a moment to familiarize yourself with the following examples.
-
-* **Text in this style** indicates executable programs such as **ecelerity**.
-
-* `Text in this style` is used when referring to file names. For example, "The `ecelerity.conf` file is used to configure Momentum."
-
-* `Text in this style` is used when referring to command options. For example, "`list` is an option for the **module** command."
-
-* *Text in this style* is used for emphasis.
-
-* **Text in this style** is used for added emphasis.
-
-* *`Text in this style`* indicates variable input—text that changes depending upon circumstances. For example, "For *`passwd`* enter the password you created during installation."
-
-* **`Text in this style`** indicates user input. For example, "Install the application by issuing the command **`./installer`**."
-
-* `Text in this style` is used for literal values and variable names. For example, "A license file named `license`."
-
-* Text such as the following, ‘`C`’, is used to indicate a literal reference to a specific character. For example, "The letter ‘`C`’ in CIDR stands for 'Classless'".
-
-In some circumstances, what appears on one line on the screen or in a program listing cannot be represented on one line in some forms of the documentation. In circumstances such as this, the ‘`»`’ character is used. For example:
-
-```
-1398088802 10.77.0.158:18906 *:2081 "POST /transmissions?org_id=1&num_rcpt_errors=0 »
- HTTP/1.0" 500 332 1045.000
-```
-
-The preceding line would appear unbroken in a log file but, if left as is, it would be truncated in a PDF version of the documentation.
-
-Where possible, Unix command-line commands are broken using the ‘`\`’ character, making it possible to copy and paste commands. For example:
-
-sudo -u ecuser \
- /opt/msys/ecelerity/bin/ec_show -m *`msg-id`*
diff --git a/content/momentum/4/4-smtp-response-codes.md b/content/momentum/4/4-smtp-response-codes.md
deleted file mode 100644
index e1d4e189b..000000000
--- a/content/momentum/4/4-smtp-response-codes.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "SMTP Response Codes"
-description: "The SMTP response codes and their meanings are shown in the following table Table C 1 SMTP response codes Code Meaning 211 System status or system help reply 214 Help message 220 example com service ready 221 example com service closing transmission channel 250 Requested mail action okay completed 251..."
----
-
-## SMTP Response Codes
-
-The SMTP response codes and their meanings are shown in the following table.
-
-
-
-
-| Code | Meaning |
-| --- | --- |
-| 211 | System status, or system help reply |
-| 214 | Help message |
-| 220 | *`example.com`* service ready |
-| 221 | *`example.com`* service closing transmission channel |
-| 250 | Requested mail action okay, completed |
-| 251 | User not local; will forward to *`forward-path`* |
-| 354 | Start mail input; end with . |
-| 421 | *`example.com`* service not available, closing transmission channel |
-| 450 | Requested mail action not taken: mailbox unavailable |
-| 451 | Requested action aborted: error in processing |
-| 452 | Requested action not taken: insufficient system storage |
-| 500 | Syntax error, command unrecognized |
-| 501 | Syntax error in parameters or arguments |
-| 502 | Command not implemented |
-| 503 | Bad sequence of commands |
-| 504 | Command parameter not implemented |
-| 550 | Requested action not taken: mailbox unavailable |
-| 551 | User not local; please try |
-| 552 | Requested mail action aborted: exceeded storage allocation |
-| 553 | Requested action not taken: mailbox name not allowed |
-| 554 | Transaction failed |
\ No newline at end of file
diff --git a/content/momentum/4/4-snmp-mib-omniti.md b/content/momentum/4/4-snmp-mib-omniti.md
deleted file mode 100644
index 7df423a92..000000000
--- a/content/momentum/4/4-snmp-mib-omniti.md
+++ /dev/null
@@ -1,275 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "The OMNITI-SNMP-MIB.txt file"
-description: "..."
----
-
-```
-OMNITI-SNMP-MIB DEFINITIONS ::= BEGIN
-
- IMPORTS
- OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
- Integer32, Opaque, enterprises, Counter32
- FROM SNMPv2-SMI
- mtaStoredMessages FROM MTA-MIB
-
- TEXTUAL-CONVENTION, DisplayString, TruthValue
- FROM SNMPv2-TC;
-
- omniti MODULE-IDENTITY
- LAST-UPDATED "200601090000Z"
- ORGANIZATION "Omniti Computer Consulting"
- CONTACT-INFO
- "email: ec-support@omniti.com
- "
- DESCRIPTION "Omniti Enterprise Mib
- "
- ::= { enterprises 19552 }
-
- ecelerity OBJECT IDENTIFIER ::= { omniti 1 }
- productInfo OBJECT IDENTIFIER ::= { ecelerity 1 }
- perDomainMetrics OBJECT IDENTIFIER ::= { ecelerity 2 }
- perGroupMetrics OBJECT IDENTIFIER ::= { ecelerity 3 }
- ecelerityTraps OBJECT IDENTIFIER ::= { ecelerity 4 }
- unlinkStats OBJECT IDENTIFIER ::= { ecelerity 5 }
- threadsStats OBJECT IDENTIFIER ::= { ecelerity 6 }
- message OBJECT IDENTIFIER ::= { unlinkStats 3 }
- header OBJECT IDENTIFIER ::= { unlinkStats 4 }
- body OBJECT IDENTIFIER ::= { unlinkStats 5 }
- largeMessage OBJECT IDENTIFIER ::= { unlinkStats 6 }
- overlay OBJECT IDENTIFIER ::= { unlinkStats 7 }
-
- productName OBJECT-TYPE
- SYNTAX DisplayString
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "Product Name"
- ::= { productInfo 1 }
-
- productVersion OBJECT-TYPE
- SYNTAX DisplayString
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "Product Version"
- ::= { productInfo 2 }
-
- productBuildDate OBJECT-TYPE
- SYNTAX DisplayString
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "Product BuildDate"
- ::= { productInfo 3 }
-
- activeQueueSize OBJECT-TYPE
- SYNTAX SEQUENCE OF Counter32
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "The table holding group current active queue size."
- ::= {perGroupMetrics 1}
-
- delayQueueSize OBJECT-TYPE
- SYNTAX SEQUENCE OF Counter32
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "The table holding group current delay queue size."
- ::= {perGroupMetrics 2}
-
- failedMessageCt OBJECT-TYPE
- SYNTAX SEQUENCE OF Counter32
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "The table holding group current failed message count."
- ::= {perGroupMetrics 3}
-
- groupName OBJECT-TYPE
- SYNTAX SEQUENCE OF DisplayString
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "The table holding group names."
- ::= {perGroupMetrics 4}
-
- ecelerityStart NOTIFICATION-TYPE
- STATUS current
- DESCRIPTION
- "Ecelerity Startup"
- ::= { ecelerityTraps 1 }
-
- ecelerityShutdown NOTIFICATION-TYPE
- STATUS current
- DESCRIPTION
- "Ecelerity Shutdown"
- ::= { ecelerityTraps 2 }
-
- mailQueueWarning NOTIFICATION-TYPE
- STATUS current
- OBJECTS {mtaStoredMessages.1}
- DESCRIPTION
- "Total Messages Queued Has Reached or Exceed Specified Threshold"
- ::= { ecelerityTraps 3 }
-
- activeQueueWarning NOTIFICATION-TYPE
- STATUS current
- OBJECTS {activeQueueSize.1}
- DESCRIPTION
- "Total Active Messages Has Reached or Exceed Specified Threshold"
- ::= { ecelerityTraps 4 }
-
- delayedQueueWarning NOTIFICATION-TYPE
- STATUS current
- OBJECTS {delayQueueSize.1}
- DESCRIPTION
- "Total Delayed Messages Has Reached or Exceed Specified Threshold"
- ::= { ecelerityTraps 5 }
-
- failedMessageCtWarning NOTIFICATION-TYPE
- STATUS current
- OBJECTS {failedMessageCt.1}
- DESCRIPTION
- "Total Failed Messages Has Reached or Exceed Specified Threshold"
- ::= { ecelerityTraps 6 }
-
- unlinkBacklog OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "The unlink backlog."
- ::= {unlinkStats 1}
-
- unlinkBatchBacklog OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "The unlink batch backlog."
- ::= {unlinkStats 2}
-
- unlinkMessageSubmissions OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink message submissions"
- ::= {message 1}
-
- unlinkMessageAttempts OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink message attempts"
- ::= {message 2}
-
- unlinkMessageFailures OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink message failures"
- ::= {message 3}
-
- unlinkHeaderSubmissions OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink header submissions"
- ::= {header 1}
-
- unlinkHeaderAttempts OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink header attempts"
- ::= {header 2}
-
- unlinkHeaderFailures OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink header failures"
- ::= {header 3}
-
- unlinkBodySubmissions OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink body submissions"
- ::= {body 1}
-
- unlinkBodyAttempts OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink body attempts"
- ::= {body 2}
-
- unlinkBodyFailures OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink body failures"
- ::= {body 3}
-
- unlinkLargeMessageSubmissions OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink largemessage submissions"
- ::= {largeMessage 1}
-
- unlinkLargeMessageAttempts OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink largemessage attempts"
- ::= {largeMessage 2}
-
- unlinkLargeMessageFailures OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink largemessage failures"
- ::= {largeMessage 3}
-
- unlinkOverlaySubmissions OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink overlay submissions"
- ::= {overlay 1}
-
- unlinkOverlayAttempts OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink overlay attempts"
- ::= {overlay 2}
-
- unlinkOverlayFailures OBJECT-TYPE
- SYNTAX INTEGER
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION
- "unlink overlay failures"
- ::= {overlay 3}
-
- END
-```
\ No newline at end of file
diff --git a/content/momentum/4/4-snmp-mib-pergroup.md b/content/momentum/4/4-snmp-mib-pergroup.md
deleted file mode 100644
index 05f4dd983..000000000
--- a/content/momentum/4/4-snmp-mib-pergroup.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Per-group (binding) Metrics, 1.3.6.1.4.1.19552.1.3"
-description: "These act as a supplement to the MTA MIB defined group statistics so that the stat watcher can record active delayed queues G 1 is the MTA Group Index ID see RFC 2789 MTA MIB and Section B 1 1 Determining the ID for an MTA Group Index ID The..."
----
-
-These act as a supplement to the MTA-MIB defined group statistics, so that the stat watcher can record active/delayed queues. `G+1` is the MTAGroupIndexID (see RFC 2789 MTA MIB and [“Determining the ID for an MTAGroupIndexID”](/momentum/4/4-snmp-mib#snmp-mib-MTAGroupIndexID)). The metrics are as follows:
-
-* 1.3.6.1.4.1.19552.1.3.1.G+1: counter, active queue size
-
-* 1.3.6.1.4.1.19552.1.3.2.G+1: counter, delayed queue size
-
-* 1.3.6.1.4.1.19552.1.3.3.G+1: counter, failed message count
-
-* 1.3.6.1.4.1.19552.1.3.4.G+1: string, binding name (matches MTA MIB)
\ No newline at end of file
diff --git a/content/momentum/4/4-snmp-mib.md b/content/momentum/4/4-snmp-mib.md
deleted file mode 100644
index 51dbedb07..000000000
--- a/content/momentum/4/4-snmp-mib.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "MIB Files"
-description: "A Management Information Base MIB file contains information used to manage entities in a network This information is accessed by a protocol such as Simple Network Management Protocol SNMP Every managed device and SNMP equipment vendor in the network maintains values in the MIB Object Identifiers OI Ds uniquely identify..."
----
-
-## Files
-
-
-A Management Information Base (MIB) file contains information used to manage entities in a network. This information is accessed by a protocol such as Simple Network Management Protocol (SNMP).
-
-Every managed device and SNMP equipment vendor in the network maintains values in the MIB. Object Identifiers (OIDs) uniquely identify each entity in the MIB hierarchy, which is typically depicted in a tree structure. Each branch of the tree has a number and a name, and the complete path from the top of the tree to the entity forms the name of that entity.
-
-For example, the Enterprise MIB for OmniTI assigned by the Internet Assigned Numbers Authority is `1.3.6.1.4.1.19552`. This is further subdivided by products. For example, Momentum (Ecelerity) has the MIB `1.3.6.1.4.1.19552.1`.
-
-Within Momentum (ecelerity), `1.3.6.1.4.1.19552.1.1` is defined as product information with further subdivisions as shown below:
-
-* `1.3.6.1.4.1.19552.1.1.1` – string, Product Name (Ecelerity)
-
-* `1.3.6.1.4.1.19552.1.1.2` – string, version (_EC_VER)
-
-* `1.3.6.1.4.1.19552.1.1.3` – string, build date (__DATE__)
-
-### Warning
-
-The per-domain metrics exposed via Momentum's OCC-MIB do not support the SNMP GETNEXT operation, which means that you can't walk domain statistics with programs such as snmpwalk. Therefore, to get per-domain statistics via SNMP, you must know in advance what domain to query. This is fine for monitoring known domains, but you can't use SNMP to get a snapshot of the mail queues.
-
-For your convenience, the `OMNITI-SNMP-MIB.txt` file found in the `/opt/msys/ecelerity/docs/` directory is reproduced in this appendix.
-
-## 1.3.6.1.4.1.19552.1.2 – Per-domain Metrics
-
-The per-domain MIB is defined as: `1.3.6.1.4.1.19552.1.2.L.A.B.C.S.G` where `A.B.C` indicates the domain name, and `L` represents the length of that domain. For example, `aol.com` would be represented as:
-
-```
-7.97.111.108.46.99.111.109
-7 a o l . c o m
-```
-
-In this case `7` indicates the length of 'aol.com'. The length and the binding identifier replace `L.A.B.C` in the MIB. `G` corresponds to the MTAGroupIndexID (see RFC 2789, MTA MIB). `S` represents the metric type. We define the following metrics:
-
-* 0: domain name
-
-* 1: receptions
-
-* 2: failures
-
-* 3: deliveries
-
-* 4: transient failures
-
-* 5: outbound connections
-
-* 6: active queue size
-
-* 7: delayed queue size
-
-For more information about Mail Monitoring MIBs, see [RFC2789](http://tools.ietf.org/html/rfc2789).
-
-The `aol.com` domain name would have the following entry on the default binding: 1.3.6.1.4.1.19552.1.2.7.97.111.108.46.99.111.109.0.1: string 'aol.com'.
-
-### Determining the ID for an MTAGroupIndexID
-
-The MTAGroupIndexID can be determined by using snmpwalk and subtracting 1 from last number of the desired binding. You can also use snmpwalk to get the MTAGroupIndexID in order to determine per-domain stats.
-
-For example:
-
-```
-shell> /opt/msys/3rdParty/bin/snmpwalk -v1 -c public
-10.79.20.132:8162 1.3.6.1.4.1.19552.1.3
-SNMPv2-Example::enterprises.19552.1.3.1.1 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.1.2 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.1.3 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.1.4 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.2.1 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.2.2 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.2.3 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.2.4 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.3.1 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.3.2 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.3.3 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.3.4 = Counter32: 0
-SNMPv2-Example::enterprises.19552.1.3.4.1 = STRING: "none/all"
-SNMPv2-Example::enterprises.19552.1.3.4.2 = STRING: "none/default"
-SNMPv2-Example::enterprises.19552.1.3.4.3 = STRING: "none/cdp"
-SNMPv2-Example::enterprises.19552.1.3.4.4 = STRING: "none/example"
-```
-
-In the output above, `cdp` and `example` are binding names. The MTAGroupIndexID of `cdp` is `2` because `2` is one less than the last number in `SNMPv2-SMI::enterprises.19552.1.3.4.3`.
\ No newline at end of file
diff --git a/content/momentum/4/4-tls-macros.md b/content/momentum/4/4-tls-macros.md
deleted file mode 100644
index cfabef93a..000000000
--- a/content/momentum/4/4-tls-macros.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_macros – TLS-related Logging"
-description: "The tls macros module provides several macros supporting custom logging of TLS related data Configuration Change Support for GNUTLS is available as of version 4 1 for SMTP reception and SMTP deliveries only The tls macros module must be loaded in a configuration file as follows Table 71 2 TLS..."
----
-
-The tls_macros module provides several macros supporting custom logging of TLS-related data.
-
-**Configuration Change. ** Support for GNUTLS is available as of version 4.1 for SMTP reception and SMTP deliveries only.
-
-### Configuration
-
-The tls_macros module must be loaded in a configuration file, as follows:
-
-`tls_macros {}`
-### TLS Logging Macros
-
-
-
-| Macro | Description | Examples |
-| --- | --- | --- |
-| outbound_tls:outbound_tls | Indicates whether TLS was used or not | * SMTP ("SMTP" = no TLS)
* TLS
* unknown |
-| outbound_tls:outbound_tls_type | When TLS is being used, this matches the value of the TLS configuration variable. | * no ("no" = no TLS)
* ifavailable
* required |
-| outbound_tls:local_ip | IP address to which the message was sent | 1.2.3.4 |
-| outbound_tls:outbound_tls_cipher | Cipher suite for TLS session | For OpenSSL: ECDHE_RSA_AES_128_GCM_SHA256
For GNUTLS: AES256-GCM-SHA384 |
-| outbound_tls:outbound_tls_cipher_algbits | For OpenSSL: outbound_tls_cipher_algbits returns the bits processed by chosen algorithm.
For GNUTLS: outbound_tls_cipher_algbits returns the key size. | |
-| outbound_tls:outbound_tls_cipher_usebits | For OpenSSL: outbound_tls_cipher_usebits returns the secret bits used by chosen cipher.
For GNUTLS: outbound_tls_cipher_usebits returns the key size. | |
-| outbound_tls:outbound_tls_protocol | TLS/SSL protocol version string | For OpenSSL: TLSv1.2
For GNUTLS: TLS1.2 |
-| outbound_tls:outbound_tls_verified | Whether the certificate passed verification (including subject verification) | * verified
* unverified |
-| outbound_tls:outbound_tls_issuer | Issuer from TLS certificate | ca.test.messagesystems.com |
-| outbound_tls:outbound_tls_subject | Subject from TLS certificate | server.ectest.examplecompany.com |
-
-The following is an example custom_logger module configuration using the TLS logging macros.
-
-
-
-
-```
-custom_logger custom_logger1 {
- log_receptions = "on"
- log_deliveries = "on"
- log_transient_failures = "on"
- log_permanent_failures = "on"
-
- # Use of namespace is critical for the macros to work!
- namespace = "custom_logger,sieve,outbound_tls"
-
- mainlog = "/tmp/ecelerity.5764/perl-tests_tls_tls_macros.t/customlog.cl"
-
- reception_format = "%t{%m:%d:%H:%M:%S}@%i@%BI@%CI@R@%r@%R@%m@%M@%H@%B@%p@%g@%b »
- @%r@%R%local_ip@%outbound_tls@%outbound_tls_type@%outbound_tls_cipher »
- @%outbound_tls_cipher_algbits@%outbound_tls_cipher_usebits@%outbound_tls_protocol »
- @%outbound_tls_verified@%outbound_tls_issuer@%outbound_tls_subject"
-
- delivery_format = "%t{%m:%d:%H:%M:%S}@%i@%BI@%CI@D@%d@%B@%g@%b@%N@%T@%H% »
- @%r@%R%local_ip@%outbound_tls@%outbound_tls_type@%outbound_tls_cipher »
- @%outbound_tls_cipher_algbits@%outbound_tls_cipher_usebits@%outbound_tls_protocol »
- @%outbound_tls_verified@%outbound_tls_issuer@%outbound_tls_subject"
-
- transient_failure_format = "%t{%m:%d:%H:%M:%S}@%i@%BI@%CI@T@%d@0@%g@%b@%S@%N@%T@%H@%n »
- @%r@%R%local_ip@%outbound_tls@%outbound_tls_type@%outbound_tls_cipher »
- @%outbound_tls_cipher_algbits@%outbound_tls_cipher_usebits@%outbound_tls_protocol »
- @%outbound_tls_verified@%outbound_tls_issuer@%outbound_tls_subject"
-
- permanent_failure_format = "%t{%m:%d:%H:%M:%S}@%i@%BI@%CI@P@%d@0@%g@%b@%S@%N@%T@%H@%n »
- @r@%R%local_ip@%outbound_tls@%outbound_tls_type@%outbound_tls_cipher »
- @%outbound_tls_cipher_algbits@%outbound_tls_cipher_usebits@%outbound_tls_protocol »
- @%outbound_tls_verified@%outbound_tls_issuer@%outbound_tls_subject"
-}
-```
-
-For more information on the custom_logger, see [“custom_logger – User-defined Logging”](/momentum/4/modules/custom-logger).
\ No newline at end of file
diff --git a/content/momentum/4/adaptive-log-format.md b/content/momentum/4/adaptive-log-format.md
deleted file mode 100644
index 719a207a5..000000000
--- a/content/momentum/4/adaptive-log-format.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "adaptive Log"
-description: "The adaptive log is configured in the adaptive module The adaptive log entry is an delimited string such as the following The following is a description of the fields Table 35 3 Adaptive Record Fields Offset Example Field Description 0 12345679 Date in Unix timestamp format seconds since 00 00..."
----
-
-The `adaptive` log is configured in the [adaptive](/momentum/4/modules/4-adaptive) module. The adaptive log entry is an `@` delimited string, such as the following:
-
-12345679@1@G@default@hotmail.com@NOTICE@ retry_interval *`from`* -> *`to`*
-
-The following is a description of the fields:
-
-
-
-
-| Offset | Example Field | Description |
-| --- | --- | --- |
-| 0 | 12345679 | Date in Unix timestamp format (seconds since 00:00:00 Jan 1, 1970) |
-| 1 | 1 | Version of the log file format (decimal number currently set to `1` ) |
-| 2 | G | Record type identifier (single ASCII character currently set to ‘`G`’ for "generic") |
-| 3 | default | Binding name, only included in ‘`G`’ record types (may be empty) |
-| 4 | hotmail.com | Domain name, only included in ‘`G`’ record types (may be empty) |
-| 5 | NOTICE | Log level name, only included in ‘`G`’ record types (see [debug_flags](/momentum/4/config/ref-debug-flags) for a list of valid names.) |
-| 6 | retry_interval *`from`* -> *`to`* | Free-form string, only included in ‘`G`’ record types (this string may include additional ‘`@`’ signs; typically, it will show how an option has changed.) |
\ No newline at end of file
diff --git a/content/momentum/4/add-remove-analytics-nodes.md b/content/momentum/4/add-remove-analytics-nodes.md
deleted file mode 100644
index abdc26b8e..000000000
--- a/content/momentum/4/add-remove-analytics-nodes.md
+++ /dev/null
@@ -1,272 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Adding and Removing Analytics Nodes"
-description: "This chapter describes how to add and remove Analytics nodes to and from an existing Momentum 4 2 cluster Adding an Analytics node Vertica Application to an existing cluster is not handled automatically with the current installer script but can be accomplished quickly using a role based meta package and..."
----
-
-
-This chapter describes how to add and remove Analytics nodes to and from an existing Momentum 4.2 cluster.
-
-## Adding an Analytics Node
-
-Adding an Analytics node (Vertica+Application) to an existing cluster is not handled automatically with the current installer script, but can be accomplished quickly using a role-based meta package and some manual configuration steps.
-
-### Note
-
-These instructions apply to Momentum 4.2.1.*`x`*, where `x` > or = `11`
-
-### Prepare the New Node
-
-### Note
-
-You can only add additional nodes to an existing analytics cluster; i.e., you cannot add a node if there is only one node to start with.
-
-1. Unpack the same tarball that was used for the original installation.
-
-2. Activate the local yum repository.
-
- **NOTE:** Here, and throughout the node addition and removal documentation, specific releases and revisions shown are just examples, and your appropriate Momentum software bundle will be different.
-
- ```
- cd momentum-4.2.1.51128
- ./setrepodir
- ```
-
-3. Install the `msys-role-analytics` metapackage.
-
- ```
- yum install -y --config=$PWD/momentum.repo --enablerepo=momentum msys-role-analytics msys-app-adaptive-delivery-db \
- msys-app-adaptive-delivery-api msys-app-webhooks-api msys-app-webhooks-db
-
- # Remove an ETL that is N/A for Analytics nodes in two-tier configurations:
- yum remove -y --config momentum.repo --enablerepo momentum msys-app-adaptive-delivery-etl
- ```
-
-### Add the Node to the Vertica Cluster and Database
-
-### Note
-
-The first two steps may take a while to complete, depending on how long the database has been up and how much data is present and should be run inside a screen or tmux session.
-
-1. From the first Analytics node, add the new node to the cluster. You will need the root password for the new node, or alternatively, you must have configured a password-less ssh login or be running ssh-agent.
-
- ```
- # cd /var/tmp/momentum-4.2.1.51128
- # export NEWNODE=new.host.fully.qualified.name
- # /opt/vertica/sbin/install_vertica --add-hosts $NEWNODE -z silent_install
- ```
-
- You can find the `silent_install` file in the working directory of the initial installation, or you can create a new one with the following contents:
-
- ```
- accept_eula = True
- data_dir = /var/db/vertica
- direct_only = True
- failure_threshold = FAIL
- license_file = /opt/vertica/config/licensing/Message_Systems_vertica.license.key
- rpm_file_name = /var/tmp/momentum-4.2.1.51128/packages/msys-vertica-7.1.1-2.rhel6.x86_64.rpm
- spread_subnet = default
- vertica_dba_group = verticadba
- vertica_dba_user = vertica_dba
- vertica_dba_user_dir = /var/db/vertica
- vertica_dba_user_password_disabled = True
- ```
-
-2. Change to the vertica_dba user and add the new host to the msys database.
-
- ```
- # su - vertica_dba
- $ export NEWNODE=new.host.fully.qualified.name
- $ adminTools --tool db_add_node --database msys --add=$NEWNODE
- $ adminTools --tool rebalance_data -k 1 -d msys
- ```
-
-3. Add the storage locations for the new node.
-
- ```
- #!/bin/bash
-
- # Setup storage location grants across all hosts
- for ARG in "api/webhooks/WEBHOOK_BATCHES" "etl/etl/ETL"
- do
- IFS='/' ARGS=($ARG)
- USER="vertica_${ARGS[0]}"
- LOCATION="/opt/vertica/log/${ARGS[1]}"
- LABEL=${ARGS[2]}
- IFS=$'\n ' NODES=`/opt/vertica/bin/vsql -c "select node_name from v_catalog.nodes where node_name not in \
- (select node_name from v_monitor.disk_storage where storage_path='$LOCATION') group by node_name;" -t`
- for NODE in $NODES
- do
- echo "Adding storage location $LOCATION for $NODE"
- /opt/vertica/bin/vsql -c "CREATE LOCATION '$LOCATION' NODE '$NODE' USAGE 'USER' LABEL '$LABEL';"
- /opt/vertica/bin/vsql -c "GRANT ALL ON LOCATION '$LOCATION' ON $NODE TO $USER;"
- done
- done
- ```
-
-### Update and Distribute Configuration Files
-
-1. Update the following `nginx/conf.d` files on the first Analytics node, adding a line for the new node to each.
-
- * `/opt/msys/3rdParty/nginx/conf.d/api_adaptive_delivery_upstream.conf`
-
- * `/opt/msys/3rdParty/nginx/conf.d/api_webhooks_upstream.conf`
-
- * `/opt/msys/3rdParty/nginx/conf.d/api_users_upstream.conf`
-
- * `/opt/msys/3rdParty/nginx/conf.d/api_metrics_upstream.conf`
-
- * `/opt/msys/3rdParty/nginx/conf.d/webui_upstream.conf`
-
- Duplicate the following line and change it to the new hostname as appropriate, and set the port to match the existing-node entries in each file.
-
- *`server new.host.fully.qualified.name:208x;`*
-2. Ensure the node name variables are set for the new node and one for each existing node after the first one.
-
- ```
- export NEWNODE=new.host.fully.qualified.name;
- export NODE2=host2.fully.qualified.name;
- export NODE3=host3.fully.qualified.name;
- ...
- export NODEn=hostN.fully.qualified.name;
- ```
-
-3. Update the `production.json` files with the new node.
-
- ```
- export PATH=/opt/msys/3rdParty/bin/:$PATH
- for f in \
- /opt/msys/app/webhooks-api/config/production.json \
- /opt/msys/app/adaptive-delivery-api/config/production.json \
- /opt/msys/app/adaptive-delivery-api/cron/config/production.json \
- /opt/msys/app/metrics-api/config/production.json \
- /opt/msys/app/metrics-api/cron/config/production.json \
- ; do
- tmpf=$(mktemp --tmpdir=$(dirname $f) -t)
- jq ".vertica.hosts = .vertica.hosts + [\"$NEWNODE\"]" -a -M $f > $tmpf
- if [ $? = 0 ]; then
- mv -f $tmpf $f
- echo "$f updated";
- fi
- done
- ```
-
-4. Ensure auth API Host and auth API Port are set to `false` in the webui json file.
-
- ```
- export PATH=/opt/msys/3rdParty/bin/:$PATH
- for f in \
- /opt/msys/app/webui/scripts/config/production.json \
- ; do
- tmpf=$(mktemp --tmpdir=$(dirname $f) -t)
- jq '.auth.apiPort=false | .auth.apiHost=false' $f > $tmpf
- if [ $? = 0 ]; then
- mv -f $tmpf $f
- fi
- done
- ```
-
-5. Copy the modified configuration files to the original Analytics nodes.
-
- ```
- for f in \
- /opt/msys/3rdParty/nginx/conf.d/api_adaptive_delivery_upstream.conf \
- /opt/msys/3rdParty/nginx/conf.d/api_webhooks_upstream.conf \
- /opt/msys/3rdParty/nginx/conf.d/api_users_upstream.conf \
- /opt/msys/3rdParty/nginx/conf.d/api_metrics_upstream.conf \
- /opt/msys/3rdParty/nginx/conf.d/webui_upstream.conf \
- /opt/msys/app/webhooks-api/config/production.json \
- /opt/msys/app/adaptive-delivery-api/config/production.json \
- /opt/msys/app/adaptive-delivery-api/cron/config/production.json \
- /opt/msys/app/metrics-api/config/production.json \
- /opt/msys/app/metrics-api/cron/config/production.json \
- ; do
- scp $f $NODE2:$f
- scp $f $NODE3:$f
- # add additional scp lines as needed for additional existing nodes
- done
- ```
-
-6. Restart the services on the original Analytics nodes.
-
- ```
- service msys-app-metrics-api restart
- service msys-app-users-api restart
- service msys-app-webhooks-api restart
- service msys-app-adaptive-delivery-api restart
- service msys-nginx reload
- ```
-
-7. Copy all configuration files to the new Analytics node.
-
- ```
- for f in $(find /opt/msys/app/ -name production.json) ; do
- scp $f $NEWNODE:$f
- done
- scp /opt/msys/3rdParty/nginx/conf.d/* $NEWNODE:/opt/msys/3rdParty/nginx/conf.d/
- ```
-
-8. Start all services on the new Analytics node.
-
- ```
- service msys-app-metrics-api start
- service msys-app-users-api start
- service msys-app-webhooks-api start
- service msys-app-adaptive-delivery-api start
- service msys-nginx start
- ```
-
-### Update all Platform/MTA Nodes (not Manager/Log Aggregator)
-
-1. Update the `/opt/msys/3rdParty/nginx/conf.d/api_webhooks_upstream.conf` file on all MTA nodes by duplicating the following line and changing it to the new hostname as appropriate, and set the port to match the existing-node entries in each file.
-
- *`server new.host.fully.qualified.name:208x;`*
-2. Update the `production.json` files on all MTA nodes.
-
- ```
- export PATH=/opt/msys/3rdParty/bin/:$PATH
- for f in \
- /opt/msys/app/metrics-etl/config/production.json \
- /opt/msys/app/webhooks-etl/config/production.json \
- /opt/msys/app/adaptive-delivery-etl/config/production.json \
- ; do
- tmpf=$(mktemp --tmpdir=$(dirname $f) -t)
- jq ".vertica.hosts = .vertica.hosts + [\"$NEWNODE\"]" -a -M $f > $tmpf
- if [ $? = 0 ]; then
- mv -f $tmpf $f
- echo "$f updated";
- fi
- done
- ```
-
-3. Ensure the node name variables are set.
-
- ```
- export MTA2=host2.fully.qualified.name;
- export MTA3=host3.fully.qualified.name;
- ...
- export MTAn=hostN.fully.qualified.name;
- ```
-
-4. Copy the modified configuration files to the original Platform nodes.
-
- ```
- for f in \
- /opt/msys/3rdParty/nginx/conf.d/api_webhooks_upstream.conf \
- /opt/msys/app/metrics-etl/config/production.json \
- /opt/msys/app/webhooks-etl/config/production.json \
- /opt/msys/app/adaptive-delivery-etl/config/production.json \
- ; do
- scp $f $MTA2:$f
- scp $f $MTA3:$f
- # add additional scp lines as needed for additional existing nodes
- done
- ```
-
-5. Restart all affected services.
-
- ```
- service msys-app-metrics-etl restart
- service msys-app-webhooks-etl restart
- service msys-nginx reload
- ```
\ No newline at end of file
diff --git a/content/momentum/4/add-remove-platform-nodes.md b/content/momentum/4/add-remove-platform-nodes.md
deleted file mode 100644
index 6991bc31c..000000000
--- a/content/momentum/4/add-remove-platform-nodes.md
+++ /dev/null
@@ -1,287 +0,0 @@
----
-lastUpdated: "05/21/2024"
-title: "Adding and Removing Platform Nodes"
-description: "This chapter describes how to add and remove a Platform node MTA Cassandra to and from an existing Momentum 4 cluster"
----
-
-
-This chapter describes how to add and remove a Platform node (MTA + Cassandra) to and from an existing Momentum 4.2 cluster.
-
-## Adding a Platform Node
-
-This section describes how to add a Platform node, which involves installing the new node then making some manual configuration changes on the new node and on the existing nodes.
-
-### Note
-
-These instructions apply to Momentum 4.2.1.*`x`*, where `x` > or = `11`
-
-### Prepare the First Platform Node
-
-1. Add the new node to the ecelerity configuration files on the existing first platform node (or log aggregator node, if present).
-
- 1. Add the node to message generation by updating the following stanzas in `msg_gen.conf`.
-
- * cassandra_client - duplicate an existing line and change the host name to match the new host.
-
- * msg_gen - copy/paste one of the existing "node" stanzas and update the node name and set a new, unique `mta_id`.
-
- ```
- # Edit /opt/msys/ecelerity/etc/conf/default/msg_gen.conf
- # Example. Assumes 3 nodes in current cluster. Adding node4.
-
- cassandra_client {
- uri = (
- # all of the servers running cassandra in the following format
- # "name=cassandra_db;host=Fully.Qualified.Domain.Name;port=9160"
- "name=cassandra_db;host=node1.int.messagesystems.com;port=9160"
- "name=cassandra_db;host=node2.int.messagesystems.com;port=9160"
- "name=cassandra_db;host=node3.int.messagesystems.com;port=9160"
- # Add the new line here:
- "name=cassandra_db;host=node4.int.messagesystems.com;port=9160"
- )
- }
- msg_gen {
- engagement_tracking_host = "__EXTERNAL_DNS_HOSTNAME__:81"
- # set the following to false if only using a single MTA
- # cluster_cfg = true
- # Repeat the following structure for as many hosts in C* cluster
- # The mta_id must be a unique integer < 255
- node node1.int.messagesystems.com { mta_id = 1 votes = 1 }
- node node2.int.messagesystems.com { mta_id = 2 votes = 1 }
- node node3.int.messagesystems.com { mta_id = 3 votes = 1 }
- # Add the new line here:
- node node4.int.messagesystems.com { mta_id = 4 votes = 1 }
- }
- ```
-
- 2. Add the node to the ecelerity cluster by updating the following stanza in `msgc_server.conf`.
-
- * peers - add an additional line for the new host (use both hostname and correct IP address).
-
- ```
- # Edit /opt/msys/ecelerity/etc/conf/global/msgc_server.conf
- # Example. Assumes 3 nodes in current cluster. Adding node4.
-
- msgc_server {
- peers = [
- node1.int.messagesystems.com = "10.77.0.93"
- node2.int.messagesystems.com = "10.77.0.94"
- node3.int.messagesystems.com = "10.77.0.95"
- # Add the new line here:
- node4.int.messagesystems.com = "10.77.0.96"
- ]
- }
- ```
-
-2. Restart affected services.
-
- `service ecelerity restart`
-3. Update the nginx configuration files.
-
- 1. Update the `click_proxy_upstream.conf` nginx configuration file by adding a "server" line for the new Platform host.
-
- ### Tip
-
- If Engagement Tracking hosts are separate from the Platform nodes and you do not expect your Platform node to handle clicks/opens, then you do not have to update this file.
-
- ```
- # Edit /opt/msys/3rdParty/nginx/conf.d/click_proxy_upstream.conf
-
- # In click_proxy_upstream.conf, modify the upstream click_proxy stanza:
- upstream click_proxy {
- server node1.int.messagesystems.com:2081;
- server node2.int.messagesystems.com:2081;
- server node3.int.messagesystems.com:2081;
- # Add the new server line here:
- server node4.int.messagesystems.com:2081;
- least_conn;
- }
- ```
-
- 2. Reload the nginx configuration.
-
- `service msys-nginx reload`
-
-### Update the Remaining Existing Platform Nodes
-
-1. Update the `click_proxy_upstream.conf` file on all remaining existing Platform nodes. You can copy the file from the first node to the remaining ones.
-
-2. Restart affected services on each Platform node.
-
- ```
- service ecelerity restart
- service msys-nginx reload
- ```
-
-### Configure the new Platform Node
-
-1. Copy the Momentum 4.2 bundle to the new node, unpack it, and activate the included yum repository.
-
- **NOTE:** Here, and throughout the node addition and removal documentation, specific releases and revisions shown are just examples, and your appropriate Momentum software bundle will be different.
-
- ```
- cd /var/tmp
- tar -zxf momentum-bundle-4.2.1.50062.rhel6.x86_64.tar.gz
- cd momentum-4.2.1.50062/
- ./setrepodir
- ```
-
-2. Install the meta package `msys-role-platform`.
-
- `yum install -y --config momentum.repo --enablerepo momentum msys-role-platform`
-3. Copy the existing configuration files from the first Platform node to the new node, substituting or setting the new node's hostname for environmental variable $NEWNODE.
-
- ```
- # execute this on the first Platform node
- for file in \
- /opt/msys/3rdParty/cassandra/conf/cassandra.yaml \
- /opt/msys/3rdParty/nginx/conf.d/api_webhooks_upstream.conf \
- /opt/msys/3rdParty/nginx/conf.d/click_proxy_upstream.conf \
- /opt/msys/app/metrics-etl/config/production.json \
- /opt/msys/app/adaptive-delivery-etl/config/production.json \
- /opt/msys/app/webhooks-etl/config/production.json \
- /opt/msys/etc/ ;
- do
- scp -r $file $NEWNODE:$file
- done
- ```
-
-4. Update the `cassandra.yaml` file on the new Platform node to replace `listen_address` with the correct local IP address for the new node.
-
- ```
- # example
- vim /opt/msys/3rdParty/cassandra/conf/cassandra.yaml
- # Edit this line:
- listen_address: 10.77.0.245
- ```
-
-5. Start Cassandra on the new node.
-
- `# service msys-cassandra start`
- ### Note
-
- Depending on the amount of existing data in your Cassandra database, this may falsely report as failed (because the init script only waits a fixed amount of time for the service to start). Perform the next step below to determine the real status. If you do not get the indicated result, submit the start service command again, and if the desired result still does not result, check logs at `/var/log/msys-cassandra/` for error messages.
-
-6. After Cassandra starts, check that the database has been replicated (UN means Up Normal) using `service msys-cassandra status` or `/opt/msys/3rdParty/cassandra/bin/nodetool status`. You should expect to see the new node participating in the Cassandra cluster.
-
- ```
- service msys-cassandra status
-
- Note: Ownership information does not include topology; for complete information, specify a keyspace
- Datacenter: datacenter1
- =======================
- Status=Up/Down
- |/ State=Normal/Leaving/Joining/Moving
- -- Address Load Tokens Owns Host ID Rack
- UN 10.77.0.245 215.57 KB 256 25.8% 1b00204c-5dc4-44b8-a024-c1ba47b07233 rack1
- UN 10.77.1.8 178.35 KB 256 23.7% 28e2d1b9-80f6-40f8-b399-4533b2cfb103 rack1
- UN 10.77.1.12 196.56 KB 256 23.2% 4addf36b-10f9-48fb-98c9-e5acf2c19970 rack1
- UN 10.77.0.227 203.12 KB 256 27.3% 5525b410-3f3e-49ec-a176-0efa2383f3f4 rack1
- ```
-
-7. Configure RabbitMQ on the new platform node.
-
- ```
- # kill off qpidd service, which (if running) can interfere with RabbitMQ
- service qpidd stop
- /sbin/chkconfig qpidd off
- export THIRDPARTY=/opt/msys/3rdParty
- export RABBITMQCTL="$THIRDPARTY/sbin/rabbitmqctl"
- export RABBITMQADMIN="$THIRDPARTY/sbin/rabbitmqadmin"
- service msys-rabbitmq start
- $RABBITMQADMIN declare exchange name=momentum_metrics type=topic
- $RABBITMQADMIN declare queue name=msg_events
- $RABBITMQADMIN declare binding source=momentum_metrics \
- destination=msg_events \
- routing_key=msys.*
- $RABBITMQCTL add_user rabbitmq "p1-Vk0lXy"
- $RABBITMQCTL set_user_tags rabbitmq administrator
- $RABBITMQCTL set_permissions -p '/' rabbitmq '.*' '.*' '.*'
- $RABBITMQCTL delete_user guest
- ```
-
-8. Start all remaining services on the new node.
-
- ```
- /etc/init.d/msys-riak start
- /etc/init.d/msys-app-metrics-etl start
- /etc/init.d/msys-app-adaptive-delivery-etl start
- /etc/init.d/ecelerity start
- /etc/init.d/msys-nginx start
- /etc/init.d/msys-app-webhooks-etl start
- ```
-
-### Update the Analytics Nodes
-
-Perform the following steps on each Analytics node in your cluster.
-
-1. Update the `momo_upstream.conf` nginx configuration file by adding the new Platform hostname to the upstream stanza.
-
- ```
- # Edit /opt/msys/3rdParty/nginx/conf.d/momo_upstream.conf
-
- # In momo_upstream.conf, modify the upstream momo-rest stanza with the new Platform hostname
- upstream momo-rest {
- server node1.int.messagesystems.com:2081;
- server node2.int.messagesystems.com:2081;
- server node3.int.messagesystems.com:2081;
- # Add the new Platform server host here:
- server node4.int.messagesystems.com:2081;
- least_conn;
- }
- ```
-
-2. Update two `production.json` files.
-
- ```
- # Update the following file by ADDING the new Platform host to the "cassandra:hosts" array
- # /opt/msys/app/users-api/config/production.json
-
- # Example:
- # Add this line below the former last-node line: "node4.int.messagesystems.com"
- # You must also add a trailing comma at the end of the former last-node line.
- {
- "cassandra": {
- "hosts": [
- "node1.int.messagesystems.com",
- "node2.int.messagesystems.com",
- "node3.int.messagesystems.com"
- ]
- }
- }
-
- # Update the following file by ADDING the new Platform host to the "cql:contactPoints" array
- # /opt/msys/app/webhooks-api/config/production.json
-
- # Example:
- # Add this line below the former last-node line: "node4.int.messagesystems.com"
- # You must also add a trailing comma at the end of the former last-node line.
- {
- "cql": {
- "contactPoints": [
- "node1.int.messagesystems.com",
- "node2.int.messagesystems.com",
- "node3.int.messagesystems.com"
- ]
- }
- }
- ```
-
-3. Restart all applicable services.
-
- ```
- service msys-app-users-api restart
- service msys-app-webhooks-api restart
- service msys-nginx reload
- ```
-
-### Final Steps
-
-1. Confirm that the new node has been properly added to the Momentum cluster.
-
- `echo "cluster membership" | /opt/msys/ecelerity/bin/ec_console`
-2. Ensure that the `momo_upstream.conf` and `msg_gen.conf` files were properly configured on your new node by confirming that the node is generating messages from REST transmissions.
-
-3. On all original Platform nodes, the Cassandra database will have duplicate keys that have now been distributed to the added node. Run the following command on each Platform/Cassandra node:
-
- `/opt/msys/3rdParty/cassandra/bin/nodetool cleanup`
diff --git a/content/momentum/4/addl-config-notes.md b/content/momentum/4/addl-config-notes.md
deleted file mode 100644
index 4bd138697..000000000
--- a/content/momentum/4/addl-config-notes.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Additional Configuration Notes"
-description: "Momentum writes a copy of every message to the spool disk to assure no loss of messages Sending at high volumes requires sufficient disk IOP capacity particularly for the spool disk Message Systems recommends the use of ext 4 file systems You can also use SA Ns or network attached..."
----
-
-### File System
-
-Momentum writes a copy of every message to the spool disk to assure no loss of messages. Sending at high volumes requires sufficient disk IOP capacity, particularly for the spool disk. Message Systems recommends the use of ext4 file systems. You can also use SANs or network attached file systems; however, these storage options introduce additional network IO and latency that can degrade performance. Make sure you account for this additional network traffic or consider a separate network for the storage components.
-
-### Memory Speed
-
-Momentum is a memory and CPU intensive application. For optimal performance, the system memory must operate at 1866 MHz or faster.
-
-### Network Interface
-
-Ensure that you are running on a kernel that is 2.6.18-194 or newer. This will help you avoid bugs that were found in previous Linux kernels related to Broadcom NICs. Also, if you build custom kernels, review RedHat bug numbers 587799 and 581148 for more information.
-
-### noatime
-
-Momentum does not require the creation, modification or access times on either the data or metadata files to be correct (or maintained). So mounting a volume with the noatime mount option will greatly reduce the number of unnecessary disk accesses. The spool array should be formatted using either the ext2 or ext4 file system. ext2 and ext4 have comparable performance, with ext4 being considered more reliable (because of journaling). ext3 can slow down performance, so is not recommended. Set the following options in your fstab:
-
-ext2:
-
-`LABEL=/var/spool/ecelerity /var/spool/ecelerity ext2 rw,noatime 0 2`
-
-ext4:
-
-`LABEL=/var/spool/ecelerity /var/spool/ecelerity ext4 rw,noatime,barrier=0 0 2`
-### RAID
-
-RAID arrays should be configured only in RAID1 or RAID10 configurations. The Momentum software maintains a very high write load that is not suitable for a RAID5 array; therefore, RAID5 is not supported.
-
-### Virtualization
-
-Momentum performance testing is executed on physical (non-virtualized) servers. If you run Momentum in Amazon Web Services (AWS) or OpenStack environments, or in other common virtualized environments such as VMware, you should plan for a potential loss of 20% - 30% in performance.
\ No newline at end of file
diff --git a/content/momentum/4/apis-ec-config-rsrc-get.md b/content/momentum/4/apis-ec-config-rsrc-get.md
deleted file mode 100644
index c693cd356..000000000
--- a/content/momentum/4/apis-ec-config-rsrc-get.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_config_rsrc_get"
-description: "ec config rsrc get Return a resource list blobject from the configuration system ec blobject ec config rsrc get id registering ec atomic t id int registering This function returns a resource list blobject from the configuration system When you are finished with the returned object you must call ec..."
----
-
-
-## Name
-
-ec_config_rsrc_get — Return a resource list blobject from the configuration system
-
-## Synopsis
-
-`#include "configuration.h"`
-
-| `ec_blobject * **ec_config_rsrc_get** (` | id, | |
-| | registering`)`; | |
-
-`ec_atomic_t id`;
-`int registering`;
-## Description
-
-This function returns a resource list blobject from the configuration system.
-
-### Warning
-
-When you are finished with the returned object, you must call [ec_blobject_delref](/momentum/3/3-api/apis-ec-blobject-delref) to dispose of it.
-
-When the `registering` parameter is `EC_CFG_RSRC_REGISTERING`, the configuration system will return the resource list from the currently-being-assembled configuration transaction. If the resource list does not exist in the currently-being-assembled transaction, then it will be created.
-
-When the `registering` parameter is `EC_CFG_RSRC_CONSUMING`, the configuration system will return the resource list from the currently active configuration transaction. If the resource list does not exist in the active transaction, NULL will be returned.
-
-The configuration system semantics are such that there will be a new instance of the resource list for each new configuration generation. That means that modules that register resources against this list will need to ensure that they register them explicitly from their ext_init module function each time it is invoked with `EC_MODULE_INIT_INIT`.
-
-** Parameters**
-
-
-
-- id
-
--
-
-Resource list identifier returned by `ec_config_rsrc_create`
-
-
-
-- registering
-
--
-
-Constant that indicates either a read or a write operation.
-
-It can be one of the following values:
-
-```
-/** Indicates that the caller is consuming the existing, committed resource */
-#define EC_CFG_RSRC_CONSUMING 0
-/** Indicates that the caller is modifying the pending resource */
-#define EC_CFG_RSRC_REGISTERING 1
-```
-
-
-
-
-** Return Values**
-
-This function returns a [ec_blobject](/momentum/3/3-api/structs-ec-blobject) or `NULL`.
-
-** Threading**
-
-This hook can be called in any thread.
-
-
-## See Also
-
-[config_rsrc_setup](/momentum/4/hooks/config-rsrc-setup)
\ No newline at end of file
diff --git a/content/momentum/4/apis-ec-httpsrv-register-auth.md b/content/momentum/4/apis-ec-httpsrv-register-auth.md
deleted file mode 100644
index 73b43c7a0..000000000
--- a/content/momentum/4/apis-ec-httpsrv-register-auth.md
+++ /dev/null
@@ -1,89 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_httpsrv_register_auth"
-description: "ec httpsrv register auth Register an HTTP handler for authenticating a URI int ec httpsrv register auth instance method path closure handler const char instance const char method const char path ec blobject closure ec httpsrv auth handler func handler This function registers an HTTP handler for authenticating a URI..."
----
-
-
-## Name
-
-ec_httpsrv_register_auth — Register an HTTP handler for authenticating a URI
-
-## Synopsis
-
-`#include "/modules/listeners/httpsrv.h"`
-
-| `int **ec_httpsrv_register_auth** (` | instance, | |
-| | method, | |
-| | path, | |
-| | closure, | |
-| | handler`)`; | |
-
-`const char * instance`;
-`const char * method`;
-`const char * path`;
-`ec_blobject * closure`;
-`ec_httpsrv_auth_handler_func handler`;
-## Description
-
-This function registers an HTTP handler for authenticating a URI.
-
-** Parameters**
-
-
-
-- instance
-
--
-
-This is reserved for future use in virtual host support and must currently be NULL.
-
-
-
-- method
-
--
-
-HTTP method to be handled
-
-For example: `GET`
-
-
-
-- path
-
--
-
-Base URI path
-
-The trailing ‘`/`’ character is optional.
-
-
-
-- closure
-
--
-
-Closure that is passed through to the handler via [ec_httpsrv_service_ctx_get](/momentum/3/3-api/apis-ec-httpsrv-service-ctx-get)
-
-
-
-- handler
-
--
-
-Function that is invoked on matching requests
-
-
-
-
-
-Authentication handlers are matched using the same algorithm as request handlers. See the description of [ec_httpsrv_register](/momentum/3/3-api/apis-ec-httpsrv-register) for details.
-
-** Return Values**
-
-This function returns `0` on success. On failure, it returns an error number that indicates the nature of the failure.
-
-** Threading**
-
-This hook can be called in any thread.
\ No newline at end of file
diff --git a/content/momentum/4/apis-ec-httpsrv-request-local-address.md b/content/momentum/4/apis-ec-httpsrv-request-local-address.md
deleted file mode 100644
index fb7fe7d43..000000000
--- a/content/momentum/4/apis-ec-httpsrv-request-local-address.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_httpsrv_request_local_address"
-description: "ec httpsrv request local address Returns the local IP address from the current session ec sockaddr ec httpsrv request local address sess ec httpsrv session sess Configuration Change This option is available as of version 4 0 This function returns the local IP address from the current session sess session..."
----
-
-
-## Name
-
-ec_httpsrv_request_local_address — Returns the local IP address from the current session
-
-## Synopsis
-
-`#include "/modules/listeners/httpsrv.h"`
-
-| `ec_sockaddr * **ec_httpsrv_request_local_address** (` | sess`)`; | |
-
-`ec_httpsrv_session * sess`;
-## Description
-
-**Configuration Change. ** This option is available as of version 4.0.
-
-This function returns the local IP address from the current session.
-
-** Parameters**
-
-
-
-- sess
-
--
-
-session to interrogate
-
-
-
-
-
-** Return Values**
-
-address in ec_sockaddr * format
-
-The local IP address will be valid for the lifetime of the session.
\ No newline at end of file
diff --git a/content/momentum/4/apis-ec-httpsrv-request-peer-address.md b/content/momentum/4/apis-ec-httpsrv-request-peer-address.md
deleted file mode 100644
index 6b441dd5a..000000000
--- a/content/momentum/4/apis-ec-httpsrv-request-peer-address.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ec_httpsrv_request_peer_address"
-description: "ec httpsrv request peer address Returns the remote peer address from the current session ec sockaddr ec httpsrv request peer address sess ec httpsrv session sess Configuration Change This option is available as of version 4 0 This function returns the remote peer IP address from the current session sess..."
----
-
-
-## Name
-
-ec_httpsrv_request_peer_address — Returns the remote peer address from the current session
-
-## Synopsis
-
-`#include "/modules/listeners/httpsrv.h"`
-
-| `ec_sockaddr * **ec_httpsrv_request_peer_address** (` | sess`)`; | |
-
-`ec_httpsrv_session * sess`;
-## Description
-
-**Configuration Change. ** This option is available as of version 4.0.
-
-This function returns the remote peer IP address from the current session.
-
-** Parameters**
-
-
-
-- sess
-
--
-
-session to interrogate
-
-
-
-
-
-** Return Values**
-
-address in ec_sockaddr * format
-
-The remote peer IP address will be valid for the lifetime of the session.
\ No newline at end of file
diff --git a/content/momentum/4/auth.md b/content/momentum/4/auth.md
deleted file mode 100644
index 02b0c0705..000000000
--- a/content/momentum/4/auth.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Enforcing REST API/UI User Authentication"
-description: "Configuration Change As of version 4 1 user authentication is enforced on the web based UI and all REST API by default Enforcing authentication is recommend for security reasons However your system administrator can disable user authentication if your application does not require it Note that if you wish to..."
----
-
-**Configuration Change. ** As of version 4.1, user authentication is enforced on the web-based UI and all REST API by default.
-
-Enforcing authentication is recommend for security reasons. However, your system administrator can disable user authentication if your application does not require it. Note that if you wish to disable user authentication, you must disable it for both the UI and REST API. You cannot disable authentication for one and not the other.
-
-The procedure to disable user authentication requires a restart of Nginx on all Analytics nodes in your cluster. It is recommended that you make any changes at a time that impacts your users the least.
-
-To disable user authentication, do the following:
-
-1. Shut down Nginx on each Analytics node using the following command:
-
- `/etc/init.d/msys-nginx stop`
- ### Note
-
- Users will be unable to access the REST API or UI once this command is executed.
-
-2. Disable authentication at the REST API layer by modifying the web proxy configuration of Nginx.
-
- This modification must take place on each Analytics node.
-
- In the file `/opt/msys/3rdParty/nginx/conf.d/web_proxy.conf`, comment out the line `access_by_lua_file "/opt/msys/app/users-api/nginx/access.lua";`. Commenting in Nginx is done through the use of the *#* symbol.
-
- Your `web_proxy.conf` file should look like the following:
-
- ```
- more_set_input_headers 'X-MSYS-CUSTOMER: 1';
- #access_by_lua_file "/opt/msys/app/users-api/nginx/access.lua";
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header Host $http_host;
- proxy_redirect off;
- proxy_max_temp_file_size 0;
- proxy_intercept_errors on;
- ```
-
-3. Disable authentication in the web-based UI by modifying the UI configuration.
-
- This modification must take place on each Analytics node.
-
- In the file `/opt/msys/app/webui/scripts/config/production.json`, edit the "auth" stanza so that the value of the "enabled" key is false. Note that the value of the "enabled" key is a Boolean value and should not be quoted as a string value.
-
- The "auth" stanza of your `production.json` file should look similar to the following:
-
- ```
- "auth": {
- "apiPrefix": "/api/v1",
- "apiHost": "example-host.com",
- "apiPort": 80,
- "cookieDuration": 1209600,
- "enabled": false
- },
- ```
-
-4. Restart Nginx on each Analytics nodes using the following command:
-
- `/etc/init.d/msys-nginx start`
-
- Once Nginx has been turned back on, your users should be able to access all of the REST API and web-based UI without having to supply credentials or API keys.
\ No newline at end of file
diff --git a/content/momentum/4/before-you-begin.md b/content/momentum/4/before-you-begin.md
deleted file mode 100644
index 5f54f3f73..000000000
--- a/content/momentum/4/before-you-begin.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "05/19/2026"
-title: "Before You Begin"
-description: "This chapter describes issues that need to be considered or addressed prior to preparing for the installation on Analytics and or Platform MTA nodes For each of your servers that run the MTA you will need a license file in this directory opt msys ecelerity etc You will need to..."
----
-
-
-This chapter describes issues that need to be considered or addressed prior to preparing for the installation on Analytics and/or Platform/MTA nodes.
-
-## Momentum License
-
-For each of your servers that run the MTA you will need a `license` file in this directory: `/opt/msys/ecelerity/etc/`
-
-You will need to provide Message Systems with a MAC address for each MTA node in your deployment. Be sure that your nodes have access to the Internet over port 80 so that you can download the license.
-
-### Note
-
-Starting with Momentum 5.3.0, licenses issued by Message Systems are signed with ECDSA P-256 / SHA-256 ([FIPS 186-4](https://csrc.nist.gov/pubs/fips/186-4/final)). A re-issued license in this format is required only on deployments that **enforce** FIPS 140-3 at the crypto-library level — for example, when running against SafeLogic CryptoComply (a FIPS 140-3 validated drop-in for OpenSSL), or against OpenSSL 3.x configured with `default_properties = fips=yes`. In those configurations the DSA-2048 / SHA-1 verify path is rejected as non-compliant and the MTA reports the license as invalid.
-
-Existing DSA-2048 / SHA-1 licenses continue to validate on all other deployments, including OpenSSL 3.x with the FIPS provider merely loaded (without `default_properties = fips=yes`).
-
-### Note
-
-The [Momentum REST Injector](/momentum/3/3-rest) introduced in Momentum 3.14 continues to work in Momentum 4 and does not require a license. You can still use this injector to inject messages with simple template substitutions, but it has a very limited feature set compared to the Momentum 4 REST APIs.
diff --git a/content/momentum/4/byb-analytics-reqs.md b/content/momentum/4/byb-analytics-reqs.md
deleted file mode 100644
index 3b3c7f419..000000000
--- a/content/momentum/4/byb-analytics-reqs.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Verifying Analytics Node Requirements"
-description: "Analytics nodes have very specific requirements for the HP Vertica Analytic Database Ensure that the node is suitable for Vertica prior to installation First verify that each Vertica Analytics node contains at least 8 GB of RAM overall and at least 2 GB of RAM per CPU Next run the..."
----
-
-Analytics nodes have very specific requirements for the HP Vertica Analytic Database. Ensure that the node is suitable for Vertica prior to installation.
-
-First, verify that each Vertica/Analytics node contains at least 8GB of RAM overall and at least 2GB of RAM per CPU.
-
-Next run the `validate_vertica_node` script to ensure that the node's hardware is properly configured for Vertica. You can get this script from the Message Systems Support Download page. Click on Momentum 4.0.0, then click on 'Script to validate if the Analytics software can be installed on a server'. Please note: you will need to run `chmod +x validate_vertica_node` to make the script executable.
-
-This validation script checks that these requirements have been met. After you download the script to the target server, ensure that it is executable and execute it. An unsuitable node will display errors such as the following:
-
-```
-Checking node.lan suitability for installing Vertica
- FAIL (S0150): https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0150
- These disks do not have 'deadline' or 'noop' IO scheduling: '/dev/sda1,/dev/sda2'
- FAIL (S0020): https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0020
- Readahead size of /dev/sda2 is too low for typical systems: 256 < 2048
- FAIL (S0020): https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0020
- Readahead size of /dev/sda1 is too low for typical systems: 256 < 2048
- FAIL (S0180): https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0180
- Insufficient swap size. Need 2.00 GB, have 0 GB
- FAIL (S0081): https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0081
- SELinux appears to be enabled and not in permissive mode.
- FAIL (S0310): https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0310
- Transparent hugepages is set to 'always'. Must be 'never' or 'madvise'.
- FAIL (S0030): https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0030
- ntpd process is not running: ['ntpd', 'ntp']
-```
-
-When `FAIL` is returned, check the referenced URL for a detailed description of the error. The failures shown above relate to:
-
-* See [O Scheduling](https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0150)
-
-* See [Disk Readahead](https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0020)
-
-* See [Swap Space Requirements](https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0180)
-
-* See [SELinux](https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0081) and [“Disable SELinux”](/momentum/4/byb-disable-selinux)
-
-* See [Transparent Hugepages](https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0310)
-
-* See [The NTP Server](https://my.vertica.com/docs/7.0.x/HTML/index.htm#cshid=S0030) and [Section 6.6, “Enable Network Time Protocol (NTP)”](byb.ntp "6.6. Enable Network Time Protocol (NTP)")
\ No newline at end of file
diff --git a/content/momentum/4/byb-basic-packages.md b/content/momentum/4/byb-basic-packages.md
deleted file mode 100644
index 8a94431f9..000000000
--- a/content/momentum/4/byb-basic-packages.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Basic Required Packages"
-description: "Momentum 4 requires some basic dependencies to install Vertica Run yum groupinstall base when setting up a new environment..."
----
-
-Momentum 4 requires some basic dependencies to install Vertica. Run **yum groupinstall base** when setting up a new environment.
\ No newline at end of file
diff --git a/content/momentum/4/byb-config-ssh-and-sshd.md b/content/momentum/4/byb-config-ssh-and-sshd.md
deleted file mode 100644
index 388d565b9..000000000
--- a/content/momentum/4/byb-config-ssh-and-sshd.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Configuring SSH and SSHD"
-description: "Ensure that the SSHD Permit Root Login setting in the etc ssh sshd config file is either set to yes or without password The default setting is yes..."
----
-
-Ensure that the SSHD `PermitRootLogin` setting in the `/etc/ssh/sshd_config` file is either set to `yes` or `without-password`. The default setting is `yes`.
\ No newline at end of file
diff --git a/content/momentum/4/byb-config-vertica-services.md b/content/momentum/4/byb-config-vertica-services.md
deleted file mode 100644
index aa63b7a08..000000000
--- a/content/momentum/4/byb-config-vertica-services.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Configuring Locale"
-description: "Ensure that your locale is a UTF 8 setting by invoking the locale command There are two environment variables that identify non default locale settings LANG and LC ALL We recommend that you set LANG to en US UTF 8 If either variable is set for an ISO value e..."
----
-
-Ensure that your locale is a UTF-8 setting by invoking the locale command. There are two environment variables that identify non-default locale settings: `LANG` and `LC_ALL`. We recommend that you set `LANG` to `en_US.UTF-8`.
-
-If either variable is set for an ISO value; e.g., `LANG=en_US.ISO88591`, you must overwrite the setting with a UTF-8 equivalent for the vertica_dba user.
-
-### Note
-
-If the system configuration can be changed; then change the setting in the `/etc/sysconfig/i18n` file. Otherwise, add the override specific to the vertica_dba user in the `/var/db/vertica/.i18n` file. For example, your locale setting should look similar to this: `LANG=fr_FR`.
-
-If set, `LC_ALL` supersedes `LANG`. If neither is set, Vertica will use `en_US`.
-
-For examples of how to set `LANG`, see [Implement Locales for International Data Sets](https://my.vertica.com/docs/7.1.x/HTML/Content/Authoring/AdministratorsGuide/ConfiguringTheDB/ImplementLocalesForInternationalDataSets.htm).
\ No newline at end of file
diff --git a/content/momentum/4/byb-disable-postfix.md b/content/momentum/4/byb-disable-postfix.md
deleted file mode 100644
index 010755884..000000000
--- a/content/momentum/4/byb-disable-postfix.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Disable Postfix and QPIDD"
-description: "Disable the Postfix software which would interfere with Ecelerity's SMTP functionality Disable qpidd which can interfere with Rabbit MQ Ignore any errors that appear here..."
----
-
-Disable the Postfix software, which would interfere with Ecelerity's SMTP functionality. Disable qpidd, which can interfere with RabbitMQ. Ignore any errors that appear here.
-
-```
-service postfix stop
-/sbin/chkconfig postfix off
-service qpidd stop
-/sbin/chkconfig qpidd off
-```
\ No newline at end of file
diff --git a/content/momentum/4/byb-disable-selinux.md b/content/momentum/4/byb-disable-selinux.md
deleted file mode 100644
index 9ef95c9af..000000000
--- a/content/momentum/4/byb-disable-selinux.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Disable SELinux"
-description: "Red Hat uses the Security Enhanced Linux SE Linux security policies Running Momentum 4 with SE Linux enabled is not supported To disable SE Linux edit etc selinux config and set SELINUX disabled then run setenforce 0..."
----
-
-Red Hat uses the Security-Enhanced Linux (SELinux) security policies. Running Momentum 4 with SELinux enabled is not supported. To disable SELinux, edit `/etc/selinux/config` and set `SELINUX=disabled` then run **`setenforce 0`** .
\ No newline at end of file
diff --git a/content/momentum/4/byb-jre.md b/content/momentum/4/byb-jre.md
deleted file mode 100644
index 725a094f9..000000000
--- a/content/momentum/4/byb-jre.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Java Runtime Environment (JRE)"
-description: "You must have an official Oracle Java 7 release installed as Java 8 is not supported for use with Cassandra and Momentum Run the following command to ensure that the version of Java installed on each Platform node is compatible with Cassandra Your results should look something like this Open..."
----
-
-
-
-You must have an official Oracle Java 7 release installed, as **Java 8 is not supported for use with Cassandra and Momentum** . Run the following command to ensure that the version of Java installed on each Platform node is compatible with Cassandra.
-
-`java -version`
-
-Your results should look something like this:
-
-```
-java version "1.7.0_75"
-Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
-Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)
-```
-
-### Warning
-
-OpenJDK is not supported, and neither are variants such as IBM Java.
-
-If you use OpenJDK, you will receive the following installation error:
-
-```
-Unable to install packages due to:
-No package matched to upgrade: msys-cassandra
-Error: msys-cassandra conflicts with
-1:java-1.7.0-openjdk-1.7.0.51-2.4.4.1.el6_5.x86_64
-```
-
-If the OpenJDK package is already installed, run **`rpm -qa | grep openjdk`** to determine the OpenJDK package names. Then execute **yum remove *`package_name`*** for each package.
-
-If you need to install Java 7, follow the steps below.
-
-1. Download and install [Sun Java JRE 7](http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jre-7u80-oth-JPR) for 64 bit Linux.
-
- ### Note
-
- Oracle JRE 1.7 is approaching its end-of-life status. If the above link does not work, or if you cannot find an appropriate version to download, then run the following command to download Java 1.7.0_51\. This version, although a bit old, is still usable.
-
- `wget http://javadl.sun.com/webapps/download/AutoDL?BundleId=83375 -O jdk-7u51-linux-x64.rpm`
-2. Run **sudo rpm -Uvh *`jre-7u51-linux-x64`*.rpm** to install the RPM.
-
-3. Ensure that Cassandra can locate the installed version of Java. Be sure to adjust the pathnames based upon the version of Java you are using and where you have installed it.
-
- alternatives --install *`/usr/bin/java java /usr/java/jre1.7.0_51/bin/java 2`*
- alternatives --config java
- ### Note
-
- Simply setting the PATH environment variable will not work.
-
- You should see an interface similar to the one below.
-
- ```
- There are 3 programs which provide 'java'.
-
- Selection Command
- -----------------------------------------------
- * 1 /opt/jdk1.7.0_60/bin/java
- + 2 /opt/jdk1.7.0_72/bin/java
- 3 /usr/java/jrel.7.0_51/bin/java
-
- Enter to keep the current selection[+], or type selection number:
- ```
-
-4. Select the version of Java you just installed (in our example, this is option #3).
-
- ### Note
-
- If your results display a single option, then select that option.
-
-For more information, contact Message Systems Professional Services.
\ No newline at end of file
diff --git a/content/momentum/4/byb-load-balancing.md b/content/momentum/4/byb-load-balancing.md
deleted file mode 100644
index 98a6b85d8..000000000
--- a/content/momentum/4/byb-load-balancing.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Load Balancing"
-description: "The nginx proxy server embedded in Momentum 4 provides load balancing out of the box however it does not provide zero downtime for API injection if the analytics node you use to inject goes dark Therefore in a multi node environment we recommend adding a load balancer in front of..."
----
-
-The nginx proxy server embedded in Momentum 4 provides load balancing out of the box; however, it does not provide zero downtime for API injection if the analytics node you use to inject goes dark. Therefore, in a multi-node environment, we recommend adding a load balancer in front of the analytics node to provide load balancing and failover (as REST injection is done on analytics nodes). Also, a load balancer that is able to do TCP load balancing (not just http) can also be used for SMTP load balancing.
\ No newline at end of file
diff --git a/content/momentum/4/byb-ntp.md b/content/momentum/4/byb-ntp.md
deleted file mode 100644
index 5c37ba430..000000000
--- a/content/momentum/4/byb-ntp.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Enable Network Time Protocol (NTP)"
-description: "The NTP service must be running on all nodes You can verify that it is installed and configured by running the command chkconfig list ntpd..."
----
-
-The NTP service must be running on all nodes. You can verify that it is installed and configured by running the command **`chkconfig --list ntpd`** .
\ No newline at end of file
diff --git a/content/momentum/4/byb-redefine-ephemeral-ports.md b/content/momentum/4/byb-redefine-ephemeral-ports.md
deleted file mode 100644
index 77cce0b1a..000000000
--- a/content/momentum/4/byb-redefine-ephemeral-ports.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Redefining Ephemeral Ports"
-description: "The lower limits of the port range as currently defined on Centos are too low as Vertica listens on 5433 and Riak listens on 8099 Redefine the Ephemeral Ports lower limit to a safer value for example Confirm the new port range If you are installing Momentum in AWS do..."
----
-
-The lower limits of the port range as currently defined on Centos are too low as Vertica listens on 5433 and Riak listens on 8099. Redefine the Ephemeral Ports lower limit to a safer value, for example:
-
-`echo "49152 65535" > /proc/sys/net/ipv4/ip_local_port_range`
-
-Confirm the new port range:
-
-`cat /proc/sys/net/ipv4/ip_local_port_range`
-### Warning
-
-If you are installing Momentum in AWS, do not use ephemeral disks in your production environment as this can potentially cause a loss of messages.
\ No newline at end of file
diff --git a/content/momentum/4/byb-redundancy.md b/content/momentum/4/byb-redundancy.md
deleted file mode 100644
index 6057edca1..000000000
--- a/content/momentum/4/byb-redundancy.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Redundancy"
-description: "Should any nodes fail you need a Quorum within both your Platform and Analytics servers in order for Momentum to continue functioning properly For Momentum you have a quorum when more than 50 of nodes are active What constitutes a quorum has implications for redundancy For example you cannot support..."
----
-
-Should any nodes fail, you need a [Quorum](/momentum/4/4-glossary#gloss.quorum) within both your Platform and Analytics servers in order for Momentum to continue functioning properly. For Momentum, you have a quorum when more than 50% of nodes are active. What constitutes a quorum has implications for redundancy. For example, you cannot support redundancy with only two Platform and two Analytics nodes. Should any one node go down, you will not have the 51% required for a quorum. So, for high availability, the most efficient cluster sizes will be odd numbers of three or more Platform nodes *and* three or more Analytics nodes.
\ No newline at end of file
diff --git a/content/momentum/4/byb-riak-provisioning.md b/content/momentum/4/byb-riak-provisioning.md
deleted file mode 100644
index d617fffe7..000000000
--- a/content/momentum/4/byb-riak-provisioning.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Riak Provisioning"
-description: "Riak can be deployed as a single node or in a cluster of nodes More nodes allow for improved redundancy and load distribution It is recommended that there be a minimum of three nodes in a clustered configuration For most deployments no special additional configuration is required but if you..."
----
-
-Riak can be deployed as a single node or in a cluster of nodes. More nodes allow for improved redundancy and load distribution. It is recommended that there be a minimum of three nodes in a clustered configuration.
-
-For most deployments, no special additional configuration is required, but if you have a larger number of Riak nodes (8-16) you may want to consider setting the `ring_creation_size` parameter to a larger value. For details on this parameter, consult the [Riak](http://docs.basho.com/riak/latest/) documentation. It is important to note that this parameter cannot be changed once nodes are live; it must be set to the desired size and remain at that value on each and every node that participates in the Riak cluster.
\ No newline at end of file
diff --git a/content/momentum/4/byb-root-and-vertica-dba.md b/content/momentum/4/byb-root-and-vertica-dba.md
deleted file mode 100644
index e57f1ec59..000000000
--- a/content/momentum/4/byb-root-and-vertica-dba.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Creating root and vertica_dba Accounts"
-description: "root and vertica dba accounts must have their own RSA or Digital Signature Algorithm DSA keysets This requirement is necessary only if the local security policy has configured SSH Strict Host Key Checking to yes The vertica dba public key s must be in the var db vertica ssh authorized..."
----
-
-`root` and `vertica_dba` accounts must have their own RSA or Digital Signature Algorithm (DSA) keysets.
-
-### Note
-
-This requirement is necessary only if the local security policy has configured SSH `StrictHostKeyChecking` to `yes`.
-
-* The `vertica_dba` public key(s) must be in the `/var/db/vertica/.ssh/authorized_keys` file on **all** Analytics nodes. Create them if they don't exist.
-
-* The `root` public key(s) must be in the `/root/.ssh/authorized_keys` and `/var/db/vertica/.ssh/authorized_keys` files on **all** Analytics nodes. Create them if they don't exist.
-
-* All `root` accounts on the Analytics nodes may have different keysets, depending on local security policy. In this case, public keys from the root account on all Analytics nodes need to be added to both `authorized_keys` files noted above.
\ No newline at end of file
diff --git a/content/momentum/4/byb-set-hostnames.md b/content/momentum/4/byb-set-hostnames.md
deleted file mode 100644
index bf1296d09..000000000
--- a/content/momentum/4/byb-set-hostnames.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Setting Hostnames"
-description: "You must set up system hostnames in a manner that is consistent with Momentum however this can be difficult to do in an Amazon Web Services AWS environment Momentum's installation requires that each node is able to resolve its own hostname e g the value of HOSTNAME as well as..."
----
-
-
-
-You must set up system hostnames in a manner that is consistent with Momentum; however, this can be difficult to do in an Amazon Web Services (AWS) environment.
-
-Momentum's installation requires that each node is able to resolve its own hostname (e.g., the value of $HOSTNAME), as well as the hostnames of all nodes in the cluster. We recommend you use fully qualified domain names (FQDNs) for these hostnames.
-
-### Warning
-
-Failure to use consistent and well-resolved hostnames will result in various installation problems and errors.
-
-Run the following commands if your current hostnames are not FQDNs and do not resolve cleanly.
-
-### Note
-
-The following solution is run using basic tools, but you may want to use advanced solutions such as Puppet and cloud-config.
-
-1. Change the output of `hostname`.
-
- hostname `hostname -f`
-2. Manually edit the `/etc/sysconfig/network` file so its HOSTNAME field matches the output of `hostname -f`.
-
- ```
- NETWORKING=yes
- HOSTNAME='mymta1.localnet.example.com'
- ```
-
-3. Reboot the system. You may also choose to do this:
-
- `source /etc/sysconfig/network`
-4. Confirm your new hostname resolves successfully.
-
- `dig +short $HOSTNAME`
-5. Either edit the `/etc/hosts` file on **all systems in the cluster** to match this convention or configure your Domain Name Server accordingly.
\ No newline at end of file
diff --git a/content/momentum/4/byb-sysctl-conf.md b/content/momentum/4/byb-sysctl-conf.md
deleted file mode 100644
index 793b0b42b..000000000
--- a/content/momentum/4/byb-sysctl-conf.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "11/04/2024"
-title: "Adjusting /etc/sysctl.conf"
-description: "Momentum 4 uses a large number of connections and is able to establish them quickly This can overwhelm the operating system if special parameters are not used These issues can be addressed by configuring the following lines in etc sysctl conf These options are described below net ipv 4 tcp..."
----
-
-Momentum 4 uses a large number of connections and is able to establish them quickly. This can overwhelm the operating system if special parameters are not used. These issues can be addressed by configuring the following lines in `/etc/sysctl.conf`:
-
-```
-fs.file-max = 9721865
-
-net.core.netdev_max_backlog = 262144
-net.core.optmem_max = 16777216
-net.core.rmem_default = 67108864
-net.core.rmem_max = 67108864
-net.core.somaxconn = 8192
-net.core.wmem_default = 67108864
-net.core.wmem_max = 67108864
-
-net.ipv4.tcp_base_mss = 1024
-net.ipv4.tcp_fastopen = 1
-net.ipv4.tcp_fin_timeout = 15
-net.ipv4.tcp_max_syn_backlog = 65535
-net.ipv4.tcp_max_tw_buckets = 2000000
-net.ipv4.tcp_mem = 2885568 3847424 67108864
-net.ipv4.tcp_mtu_probing = 1
-net.ipv4.tcp_rmem = 4096 87380 67108864
-net.ipv4.tcp_slow_start_after_idle = 0
-net.ipv4.tcp_tw_reuse = 1
-net.ipv4.tcp_tw_recycle = 1
-net.ipv4.tcp_wmem = 4096 65536 67108864
-net.ipv4.udp_mem = 2885568 3847424 67108864
-
-vm.max_map_count = 1048575
-```
diff --git a/content/momentum/4/byb-vertica-partition.md b/content/momentum/4/byb-vertica-partition.md
deleted file mode 100644
index 3ce705d97..000000000
--- a/content/momentum/4/byb-vertica-partition.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Separate Vertica Partition"
-description: "In many cases Message Systems recommends creating a separate partition var db vertica for Vertica's data and workspace sometimes on dedicated drives Before installing Vertica we will create a new user vertica dba and new group verticadba Doing this pre step will avoid the following ownership warnings during installation..."
----
-
-In many cases, Message Systems recommends creating a separate partition `/var/db/vertica` for Vertica's data and workspace (sometimes on dedicated drives). Before installing Vertica, we will create a new user (`vertica_dba`) and new group (`verticadba`):
-
-```
-groupadd verticadba
-useradd -md /var/db/vertica -gverticadba vertica_dba
-```
-
-Doing this pre-step will avoid the following ownership warnings during installation:
-
-```
-Provided DB Admin account details: user = vertica_dba, group = verticadba, home = /var/db/vertica
-Creating group... Adding group
-Validating group... Okay
-useradd: warning: the home directory already exists.
-Not copying any file from skel directory into it.
-Creating user... Adding user
-Validating user...
-ESC[31mFailESC[0m : User's home directory is owned by some other user
-```
\ No newline at end of file
diff --git a/content/momentum/4/cluster-config-arp-all-hosts.md b/content/momentum/4/cluster-config-arp-all-hosts.md
deleted file mode 100644
index ee7223479..000000000
--- a/content/momentum/4/cluster-config-arp-all-hosts.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Address Resolution Protocol (ARP) traffic"
-description: "Some networks may experience difficulties with Address Resolution Protocol ARP traffic when using the Dura VIP™ clustering feature If you are experiencing ARP related issues you can set arp all hosts false in the cluster stanza to limit the scope of the ARP traffic generated by Dura VIP™ moves For..."
----
-
-Some networks may experience difficulties with Address Resolution Protocol (ARP) traffic when using the DuraVIP™ clustering feature. If you are experiencing ARP-related issues, you can set `arp_all_hosts` = `false` in the cluster stanza to limit the scope of the ARP traffic generated by DuraVIP™ moves. For additional details, see [arp_all_hosts](/momentum/4/modules/4-modules-cluster#option.arp_all_hosts) .
\ No newline at end of file
diff --git a/content/momentum/4/cluster-config-logging-centalized-logging.md b/content/momentum/4/cluster-config-logging-centalized-logging.md
deleted file mode 100644
index a5af8361f..000000000
--- a/content/momentum/4/cluster-config-logging-centalized-logging.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Centralized Logging Example"
-description: "This section provides an example of log aggregation when a custom logger and an fbl module are defined The following is an example configuration for the custom logger module Note The format options in the custom logger module above should be unbroken in your configuration file The following is an..."
----
-
-This section provides an example of log aggregation when a custom_logger and an fbl module are defined.
-
-The following is an example configuration for the [custom_logger](/momentum/4/modules/custom-logger) module:
-
-```
-custom_logger "custom_logger1" {
- permanent_failure_logfile = "cluster:///var/log/ecelerity/custombounce.cluster=>master"
- permanent_failure_format = "%t@%i@%BI@%CI@B@%r@%R@%m@%M@%g@%b@%c@%C@%B@%H@%h{X-campaignid} »
- @%h{date}@%h{subject}@%n"
- transient_failure_logfile = "cluster:///var/log/ecelerity/custombounce.cluster=>master"
- transient_failure_format = "%t@%i@%BI@%CI@T@%r@%R@%m@%M@%g@%b@%c@%C@%B@%H@%h{X-campaignid} »
- @%h{date}@%h{subject}@%n"
-}
-```
-
-*Note*: The format options in the custom_logger module above should be unbroken in your configuration file.
-
-The following is an example configuration for the [fbl](/momentum/4/modules/fbl) module:
-
-```
-fbl {
- Auto_Log = true # default is "false"
- Log_Path = "cluster:///var/log/ecelerity/fbllog.cluster=>master"
- Addresses = ( “^.*@fbl.domain.com” ) # default is unset
- Header_Name = “X-MSFBL” # this is the default
- User_String = “%{vctx_mess:my_context_variable}” # default is unset
- Message_Disposition = “blackhole” # default is blackhole, also allowed to set to "pass"
- Condition = “can_relay” # default is unset, should be name of a vctx entry
-}
-```
-
-Given the above configuration for the custom_logger module and the fbl module, you would configure the cluster logs in the following way:
-
-```
-cluster {
- cluster_group = ec_cluster
- control_group = ec_console
- logs = [
- rejectlog = "/var/log/ecelerity/rejectlog.cluster"
- paniclog = "/var/log/ecelerity/paniclog.cluster"
- mainlog = "/var/log/ecelerity/mainlog.cluster"
- acctlog = "/var/log/ecelerity/acctlog.cluster"
- bouncelog = "/var/log/ecelerity/bouncelog.cluster"
- fbllog = "/var/log/ecelerity/fbllog.cluster"
- custombounce = "/var/log/ecelerity/custombounce.cluster"
- ]
- ...
-}
-```
-
-If the `logfile` option in the `Logs` scope is configured as shown in [“`eccluster.conf` File”](/momentum/4/config/ref-eccluster-conf), you will have access to the fbl logs of `node1` belonging to subcluster `mysubcluster` in the /var/log/eccluster/*`year/mon/day`*/fbllog/mycluster/node1 directory on the log aggregator.
\ No newline at end of file
diff --git a/content/momentum/4/cluster-config-logging-complex.md b/content/momentum/4/cluster-config-logging-complex.md
deleted file mode 100644
index c00359fb5..000000000
--- a/content/momentum/4/cluster-config-logging-complex.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Complex Centralized Logging Deployments"
-description: "More complex deployments may arrange for the logs for a given subcluster to be aggregated on a custer manager local to that subcluster Consider an environment with east and west subclusters where the intention is for logs from the east subcluster to be journalled on a cluster manager node physically..."
----
-
-More complex deployments may arrange for the logs for a given subcluster to be aggregated on a custer manager local to that subcluster. Consider an environment with "east" and "west" subclusters, where the intention is for logs from the "east" subcluster to be journalled on a cluster manager node physically located in the east, and similarly, logs from "west" logged to a cluster manager in the west. The east subcluster has nodes "east1" and "east2", and the west subcluster has nodes "west1" and "west2".
-
-There are two ways to configure this deployment. The first is using the `eccluster.conf` file:
-
-```
-Logs {
- logfile = "/var/log/eccluster/%Y/%m/%d/%{l}/%{s}/%{n}"
- file_mode = "0640"
- dir_mode = "0755"
-
- Manager "eastmgr" {
- # Note that The default for Subscriber here is ("eastmgr", "master")
- Node "west1" {
- Subscriber = () # don't pull anything from west1
- }
- Node "west2" {
- Subscriber = () # don't pull anything from west2
- }
- }
- Manager "westmgr" {
- # Note that The default for Subscriber here is ("westmgr", "master")
- Node "east1" {
- Subscriber = () # don't pull anything from east1
- }
- Node "east2" {
- Subscriber = () # don't pull anything from east2
- }
- }
-}
-```
-
-For this to work, you would save this to `/opt/msys/ecelerity/etc/conf/global/eccluster.conf` and remove `/opt/msys/ecelerity/etc/conf/default/eccluster.conf` so that there is just one configuration file for all the cluster managers across the cluster.
-
-This configuration instructs the cluster managers to ignore the nodes from the opposing subcluster and has the convenience of centralizing the log pulling logic. The trade off is that complexity of the cluster manager configuration will grow as the number of nodes and subclusters increases.
-
-An alternate configuration to achieve the same end result is to leave `eccluster.conf` as the default and instead alter the `ecelerity-cluster.conf` file for the "west" subcluster so that the aggregated cluster node logging section is the following:
-
-```
-ec_logger "ec_logger_cluster" {
- mainlog = "cluster:///var/log/ecelerity/mainlog.cluster=>westmgr"
- paniclog = "cluster:///var/log/ecelerity/paniclog.cluster=>westmgr"
- rejectlog = "cluster:///var/log/ecelerity/rejectlog.cluster=>westmgr"
- acctlog = "cluster:///var/log/ecelerity/acctlog.cluster=>westmgr"
-}
-
-bounce_logger "bounce_logger_cluster" {
- bouncelog = "cluster:///var/log/ecelerity/bouncelog.cluster=>westmgr"
-}
-```
-
-Modify the same section for the "east" subcluster, as follows:
-
-```
-ec_logger "ec_logger_cluster" {
- mainlog = "cluster:///var/log/ecelerity/mainlog.cluster=>eastmgr"
- paniclog = "cluster:///var/log/ecelerity/paniclog.cluster=>eastmgr"
- rejectlog = "cluster:///var/log/ecelerity/rejectlog.cluster=>eastmgr"
- acctlog = "cluster:///var/log/ecelerity/acctlog.cluster=>eastmgr"
-}
-
-bounce_logger "bounce_logger_cluster" {
- bouncelog = "cluster:///var/log/ecelerity/bouncelog.cluster=>eastmgr"
-}
-```
-
-This configuration changes the subscriber name on the jlogs to match the name of the cluster manager node that you want to pull the log file. By default, the cluster manager will try to pull jlogs using its nodename as the subscriber, and then try to pull logs with the subscriber name of "master". Since there are no longer any jlogs targeting the "master" subscriber, the net result of this configuration change is that the "eastmgr" cluster manager will pull all the logs from nodes in the "east" subcluster (because they target "eastmgr" as a subscriber) and similarly, the "westmgr" cluster manager will pull all the logs from the nodes in the "west" subcluster.
-
-In a more complex deployment scenario, you may want to have multiple cluster managers pull the same set of logs from a given node. Declare multiple subscribers by changing the "=>mgrname" portion of the filename, as follows:
-
-```
-ec_logger "ec_logger_cluster" {
- mainlog = "cluster:///var/log/ecelerity/mainlog.cluster?subscribers=mgr1,mgr2,mgr3"
- ...
-}
-```
-
-Repeat this change for each log file that you want to export in this way.
-
-Note that each subscriber that you declare will maintain a checkpoint for the log data in the jlog. If a subscriber never consumes data from the jlog, the jlog will continue to grow and occupy an increasing amount of disk space. For this reason, ensure that you only provision subscribers that will be actively consuming data from the jlog.
\ No newline at end of file
diff --git a/content/momentum/4/cluster-config-logging-decommissioning.md b/content/momentum/4/cluster-config-logging-decommissioning.md
deleted file mode 100644
index 9afc5d148..000000000
--- a/content/momentum/4/cluster-config-logging-decommissioning.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Decommissioning a Log Aggregator"
-description: "To decommission a log aggregator complete the following operational procedure Modify the ecelerity cluster conf file s for the affected subclusters and remove the log aggregator from the subscriber list s in the log file names Apply that configuration to the cluster Allow time for the log aggregator to drain..."
----
-
-To decommission a log aggregator, complete the following operational procedure:
-
-1. Modify the `ecelerity-cluster.conf` file(s) for the affected subclusters and remove the log aggregator from the subscriber list(s) in the log file names.
-
-2. Apply that configuration to the cluster.
-
-3. Allow time for the log aggregator to drain any remaining log data from the node(s). You may opt to skip this part if you have no plan to retain this data.
-
-4. Remove the log aggregator from your cluster.
-
-5. On each of the nodes that was journalling data for that log aggregator, use the [jlogctl](/momentum/4/executable/jlogctl) tool to erase the now redundant subscriber checkpoint information from each of the jlog files.
\ No newline at end of file
diff --git a/content/momentum/4/cluster-config-logging-redundancy.md b/content/momentum/4/cluster-config-logging-redundancy.md
deleted file mode 100644
index 1119f93c9..000000000
--- a/content/momentum/4/cluster-config-logging-redundancy.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Redundant Logs"
-description: "If redundant logs are required do one of the following Store data on a Storage Area network SAN Use multiple log aggregators with separate subscriber names for consuming the jlogs..."
----
-
-If redundant logs are required, do one of the following:
-
-* Store data on a Storage Area network (SAN)
-
-* Use multiple log aggregators with separate subscriber names for consuming the jlogs
\ No newline at end of file
diff --git a/content/momentum/4/cluster-config-mmove.md b/content/momentum/4/cluster-config-mmove.md
deleted file mode 100644
index 06c44b436..000000000
--- a/content/momentum/4/cluster-config-mmove.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "duravip_follow and the #mmove Binding"
-description: "The mmove binding is the cluster message movement binding in the default binding group This is a virtual binding for moving messages between nodes The current design of Momentum assumes that mmove traffic will be the exception rather than the rule If you are seeing a lot of traffic on..."
----
-
-The #mmove binding is the cluster message movement binding in the default binding group. This is a virtual binding for moving messages between nodes.
-
-The current design of Momentum assumes that #mmove traffic will be the exception, rather than the rule. If you are seeing a lot of traffic on the #mmove binding, this is an indication of an underlying problem with the way the traffic is being injected. It will always be less efficient to inject to one node, #mmove to another node, and then deliver from that node. It is always more efficient to inject directly to the delivery node.
-
-Sometimes a client doesn't know until the message is injected which binding to assign it to, but often this is known beforehand. When you do know which binding a message will be assigned to, it is best practice to associate a specific Listener IP with a specific binding (or binding group) by using `Duravip_Follow` in the Listener stanza. Injecting to a given Listener means that the outbound binding is always local. The alternative is to always inject to binding groups and have each binding group contain a preferred binding on each node, so that delivery is always local.
-
-If you wish to determine the amount of traffic on the #mmove binding, use the [mailq](/momentum/4/console-commands/4-mailq) command from the system console.
-
-### ECmmove2
-
-ECmmove2 is the service that handles DuraVIP™ message moves. A node will connect to the ECCluster_listener and indicate that it is going to initiate an mmove; the connection is then passed over to the SMTP state machines on both sides and completes using regular SMTP.
\ No newline at end of file
diff --git a/content/momentum/4/cluster-config-operations-eccmgr-console.md b/content/momentum/4/cluster-config-operations-eccmgr-console.md
deleted file mode 100644
index 08c8ff5f3..000000000
--- a/content/momentum/4/cluster-config-operations-eccmgr-console.md
+++ /dev/null
@@ -1,159 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Console Commands for the Cluster Manager"
-description: "The following console commands can be issued from within the eccmgr service These commands are mainly concerned with broadcasting or unicasting commands to other cluster nodes broadcast command Broadcast a console command to the cluster For a list of available console commands see Chapter 67 Console Commands Summary broadcast cluster..."
----
-
-The following console commands can be issued from within the **eccmgr** service. These commands are mainly concerned with broadcasting or unicasting commands to other cluster nodes.
-
-
-
-- broadcast *`command`*
-
--
-
-Broadcast a console command to the cluster. For a list of available console commands, see [*Console Commands Summary*](/momentum/4/4-console-commands) .
-
-
-
-- broadcast cluster duravip move *`from_host`* *`to_host`*
-
--
-
-The only safe way to do a duravip move is using a **broadcast cluster duravip move** command. This guarantees that both the node that currently owns the address and the new owner will be in sync. For example:
-
-/tmp/2025> broadcast cluster duravip move *`10.0.5.139`* to *`hostname`*
-
-Furthermore, if there is a mismatch between the machine's hostname and the spread node name (i.e. if the hostname is fully qualified) the move will not succeed.
-
-### Warning
-
-If you modify DuraVIP™ bindings, a possible race condition means that a **config reload** taking effect on multiple machines at the same time can cause nodes to disagree about who owns which binding. For this reason, it is strongly suggested that you broadcast this command to the cluster by issuing the command **broadcast cluster duravip announce view** immediately after **config reload** . Doing this synchronizes ownership of the bindings and eliminates a possible race condition among the nodes.
-
-
-
-- subcluster broadcast *`subcluster command`*
-
--
-
-This command works in the same way as the **broadcast *`command`*** but sends the command only to the subcluster identified by *`subcluster`*.
-
-For example to broadcast a command to all nodes on the `west` subcluster, you would issue the command **subcluster broadcast west *`command`*** .
-
-
-
-- subcluster retrieve *`subcluster command`*
-
--
-
-This command works in the same way as the **retrieve *`command`*** but retrieves the responses only from the subcluster identified by *`subcluster`*.
-
-For example to retrieve the responses to a command broadcast to all nodes on the `west` subcluster, you would issue the command **subcluster retrieve west *`command`*** .
-
-
-
-- flush control cache
-
--
-
-Clear the results buffer. After executing this command, you will not be able to retrieve previous commands.
-
-
-
-- help
-
--
-
-Show a help message, listing available commands and their brief usages.
-
-
-
-- info
-
--
-
-Show general information about the cluster group and the cluster node.
-
-This command is analogous to the similarly named cluster module console command, described in [“Cluster Module-specific Console Commands”](/momentum/4/modules/4-modules-cluster#modules.cluster.console).
-
-
-
-- retrieve *`command`*
-
--
-
-Retrieve the responses to a command broadcasted by the cluster manager.
-
-
-
-- retrieve_node *`node`* *`command`*
-
--
-
-Retrieve the responses to a unicasted/broadcasted command from the specified node of the cluster.
-
-
-
-- show cluster membership
-
--
-
-Show current cluster members and their roles (nodes, manager or other).
-
-This command is analogous to the similarly named cluster module console command described in [“Cluster Module-specific Console Commands”](/momentum/4/modules/4-modules-cluster#modules.cluster.console), i.e., the output of **show cluster membership** while in XML format, is identical to the output of the cluster module command **cluster membership** .
-
-
-
-- shutdown
-
--
-
-Shutdown the cluster manager.
-
-
-
-- unicast *`node`* *`command`*
-
--
-
-Unicast a [console command](/momentum/4/4-console-commands) to the specified node in the cluster.
-
-
-
-- version
-
--
-
-Display version and copyright information of eccmgr.
-
-
-
-- config
-
--
-
-You can use the [config](/momentum/4/console-commands/config) commands for online configuration tuning. Commonly used commands include:
-
-
-
-- config [set | get | eval] [ *`scope`* ] *`option_name`* [ *`value`* ]
-
--
-
-Set, get, or eval any of the options in the `eccluster.conf`.
-
-
-
-- config showrecurse
-
--
-
-View all options that affect the cluster manager. This command displays options found in the `eccluster.conf` file.
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/content/momentum/4/cluster-duravip-conflict.md b/content/momentum/4/cluster-duravip-conflict.md
deleted file mode 100644
index 5ce0ee556..000000000
--- a/content/momentum/4/cluster-duravip-conflict.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "DuraVIP™ Configuration Conflicts and Ambiguities"
-description: "The Dura VIP™ subsystem attempts to make the most intelligent and safe decision regardless of the situation encountered The Dura VIP™ configuration attribute duravip preference is not a boolean attribute that dictates whether the locally configured node should prefer a particular IP address The reasoning is that if configuration files..."
----
-
-The DuraVIP™ subsystem attempts to make the most intelligent and **safe** decision regardless of the situation encountered.
-
-### Preference conflicts
-
-The DuraVIP™ configuration attribute "duravip_preference" is not a boolean attribute that dictates whether the locally configured node should prefer a particular IP address. The reasoning is that if configuration files are copied between machines, two nodes could prefer the same IP address. By requiring the configuration to explicitly name the node that should prefer a specific IP address, the likelihood of that configuration is dramatically reduced. If, in the unlikely event, two different nodes are brought online both configured to be the preferred owner of an IP address then that address will be marked in conflict and normal election semantics will be employed.
-
-### Services conflicts
-
-As detailed in the configuration section, IP addresses that are configured for DuraVIP™ on one service will be automatically upgraded to DuraVIP™ on all services. However, this does not prevent one node from being configured with an ESMTP_Listener on a DuraVIP™ interface while another node is configured with the same DuraVIP™ interface yet without an ESMTP_Listener:
-
-```
-# node1 configuration
-ESMTP_Listener {
- Listen "192.168.0.51:25" {
- Enable_Duravip = "true"
- }
-}
-Binding example {
- Enable_Duravip = "true"
- Bind_Address = 192.168.0.51
-}
-
-# node2 configuration
-Binding example {
- Enable_Duravip = "true"
- Bind_Address = 192.168.0.51
-}
-```
-
-In this case, the DuraVIP™ subsystem will mark the IP address as "UNSAFE." However, that is the extent of conflict resolution that will occur. The usual semantics for electing an owner of the IP address will be employed. The tag of UNSAFE is simply to assist the cluster administrator in finding problems.
-
-### Binding name and IP mismatches
-
-In Momentum, most mechanisms for assigning a message to a MultiVIP© binding use the Binding name for such assignments. As such, it is essential that the Binding name associated with an IP address be consistent across the cluster. If it is not, it indicates a misconfiguration that could result in messages leaving from the wrong IP address (which is unacceptable for multi-client configurations). If the DuraVIP™ subsystem recognizes such a misconfiguration, it will mark the named DuraVIP™ instance as "BROKEN," and refuse to manage it.
-
-### Disjointed DuraVIP™ Participation
-
-The group membership and election processes that drive the DuraVIP™ subsystem are a dynamic extension atop advanced research in the area of highly reliable IP services. The system provides a unified and consistent virtual membership on a per-IP address basis. What this means is that you can have different nodes in the cluster managing different, possibly overlapping, DuraVIP™ sets.
-
-While this is certainly possible, it can be hard to understand the expected behavior of the system in such complicated configurations. As such, it is highly recommended that the global set of bindings and listeners managed under DuraVIP™ are identical on each system.
\ No newline at end of file
diff --git a/content/momentum/4/cluster-listeners.md b/content/momentum/4/cluster-listeners.md
deleted file mode 100644
index 87693285c..000000000
--- a/content/momentum/4/cluster-listeners.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Cluster-specific Listeners"
-description: "This section describes the listeners that are used in a cluster configuration Any direct point to point communication between cluster nodes that does not require membership wide ordering semantics will be performed over TCP IP via the port specified in the Listen stanza within the EC Cluster Listener scope Any..."
----
-
-This section describes the listeners that are used in a cluster configuration.
-
-### ECCluster_Listener Configuration
-
-Any direct, point-to-point communication between cluster nodes that does not require membership-wide ordering semantics will be performed over TCP/IP via the port specified in the `Listen` stanza within the ECCluster_Listener scope. Any node can establish a connection to the destination node at the address specified by the ECCluster_Listener and point-to-point communication will ensue.
-
-The ECCluster_Listener is configured in the `ecelerity-cluster.conf` file. The following is an example configuration:
-
-```
-ECCluster_Listener {
- Listen "*:4802" {}
-}
-```
-
-For details about the non-module specific configuration options that are valid in the ECCluster_Listener scope, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/4/modules/) .
-
-For general information regarding listeners, see [“Listeners”](/momentum/4/listeners).
-
-### Msgcserver_Listener Configuration
-
-The msgcserver_listener mediates between msgc_servers and between msgc_servers and their clients. It is an internal service for msgc communication and is configured in the `msgc_server.conf` file. The following is a typical configuration:
-
-```
-msgcserver_listener {
- Listen ":4809" { }
-}
-```
-
-As with other listeners, a `Listen` scope is defined within the msgcserver_listener. This scope defines the port on which the listener listens. By default, the msgcserver_listener listens on port 4809.
-
-For details about the non-module specific configuration options that are valid in the msgcserver_listener and its nested scopes, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/4/modules/) .
-
-For general information regarding listeners, see [“Listeners”](/momentum/4/listeners).
\ No newline at end of file
diff --git a/content/momentum/4/cluster-riak-configuration.md b/content/momentum/4/cluster-riak-configuration.md
deleted file mode 100644
index 1b72abb96..000000000
--- a/content/momentum/4/cluster-riak-configuration.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Configuring Riak in a Cluster"
-description: "In a cluster configuration by default Riak is installed on every node Each node requires a unique name to participate in the cluster During installation the installer automatically assigns names which are stored in the opt msys 3rd Party riak etc vm args configuration file and specified with the name..."
----
-
-In a cluster configuration, by default, [Riak](/momentum/4/riak) is installed on every node. Each node requires a unique name to participate in the cluster. During installation, the installer automatically assigns names, which are stored in the `/opt/msys/3rdParty/riak/etc/vm.args` configuration file and specified with the "-name" parameter switch.
-
-### Note
-
-If the IP address or interface is changed, this parameter must be updated and the ring status updated in the following way; **`riak-admin reip riak-subcluster_name@oldip riak-subcluster_name@newip`** . The local service **must not be running** for this to work; make sure the service is disabled and stopped while this operation is carried out.
-
-On a singlenode installation, the name defaults to riak-*`subcluster_name`*@127.0.0.1.
-
-### Joining a Node to a Riak Cluster
-
-To configure a node to join the Riak cluster after installation, follow these steps:
-
-1. Shut down the ecelerity process on the node by issuing the command:
-
- `shell> /etc/init.d/ecelerity stop`
-2. In `/opt/msys/3rdParty/riak/etc/app.config`, ensure that `http` is bound to both `{127.0.0.1, 8098}` and {*`local_node_ip`*, 8098}.
-
- For example: `{http, [{127.0.0.1, 8098}, {10.70.20.131, 8098} ]}`.
-
-3. Start Riak by issuing the command:
-
- `shell> /etc/init.d/msys-riak start`
-4. Use the riak-admin command to join the MTA to the Riak cluster:
-
- shell> /opt/msys/3rdParty/riak/bin/riak-admin cluster join riak-*`cluster_name@manager_IP`*
-5. Use the riak-admin command to verify that all nodes are joined together
-
- `shell> /opt/msys/3rdParty/riak/bin/riak-admin status`
-
- The `ring_members` line of the command output should be similar to the following:
-
- `ring_members : ['riak-default@10.70.20.129','riak-default@10.70.20.131', ... ]`
-6. Restart the ecelerity process:
-
- `shell> /etc/init.d/ecelerity start`
-
-### Removing a Node from a Riak Cluster
-
-### Warning
-
-Serious performance issues can occur if inactive or misbehaving Riak nodes are not removed from the cluster.
-
-To remove a node from a Riak cluster, go to the command line on the node you wish to remove and issue the following Riak command:
-
-`shell> /opt/msys/3rdParty/riak/bin/riak-admin cluster leave`
-
-In cases where the Riak node is misbehaving or unresponsive and you cannot use the `cluster leave` command, use the `cluster force-remove` command:
-
-shell> /opt/msys/3rdParty/riak/bin/riak-admin cluster force-remove riak-*`cluster_name@ip_address`*
-
-In this example, the Riak node riak-*`cluster_name@ip_address`* will be removed from the node that executes this command forcing the removal of the target node from the ring. The `cluster force-remove` command should only be used in cases where it is not possible to properly `cluster leave`, as **data on the removed node will not be handed off** .
-
-### Checking Riak Cluster Communication
-
-To check that all nodes are joined together, use the following test:
-
-1. Log in to any node, go to the command line, and insert a record into Riak:
-
- ```
- shell> curl -X PUT -H "Content-Type: text/plain" \
- http://127.0.0.1:8098/riak/adctrl/test-record -d "A test"
- ```
-
-2. Log in to another node and retrieve the record:
-
- `shell> curl http://127.0.0.1:8098/riak/adctrl/test-record`
-
- If "A test" is output to the screen, then the two Riak servers are joined.
-
-3. Repeat the previous step for every node in the cluster.
-
-4. When you've finished testing, remove the test record:
-
- `shell> curl -X DELETE http://127.0.0.1:8098/riak/adctrl/test-record`
-
-If you fail to retrieve the test record, check that the Riak nodes are joined by using the command:
-
-`shell> /opt/msys/3rdParty/riak/bin/riak-admin status`
-
-In the output, look for the `ring_members` line and verify that there is an entry 'riak-*`cluster_name@ip_address`*' for each node in the cluster. If this is not the case, then the Riak servers may be partially joined or not joined at all. Join the missing node or nodes to the cluster as described in [“Joining a Node to a Riak Cluster”](/momentum/4/cluster-riak-configuration#cluster.riak.configuration.joining)
-
-### Note
-
-In a cluster configuration, messages in the panic log such as `adaptive_db_sync: Couldn't connect to server` may indicate the failure of one or more Riak servers. If you see such messages, check the status of your Riak servers using the **riak-admin** command.
\ No newline at end of file
diff --git a/content/momentum/4/complex-template.md b/content/momentum/4/complex-template.md
deleted file mode 100644
index 84e423f24..000000000
--- a/content/momentum/4/complex-template.md
+++ /dev/null
@@ -1,203 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Using Complex Templates"
-description: "Introduction Most likely your messaging needs go way beyond the simple examples provided in the previous tutorials Yet these examples form the basis for creating effective high volume messaging campaigns By further exploring the capabilities of Momentum's powerful templating language you can create templates that implement complex structures such as..."
----
-
-**Introduction**
-
-Most likely, your messaging needs go way beyond the simple examples provided in the previous tutorials. Yet, these examples form the basis for creating effective, high-volume messaging campaigns. By further exploring the capabilities of Momentum's powerful templating language, you can create templates that implement complex structures such as conditional statements, looping, and customized links.
-
-**Creating a Complex Stored Template Using the REST API**
-
-In this section, you will learn about advanced features of the templating language. It combines many of the topics discussed in previous tutorials to create and use a complex template.
-
-### Note
-
-This tutorial assumes that you have completed the tutorials in [*Creating Stored Templates*](/momentum/4/stored-template) and [*Using Stored Templates*](/momentum/4/using-template) .
-
-A general knowledge of command line tools, JSON, HTTP protocol, and templating languages is required. As a prerequisite, you should also be familiar with the information provided in the Substitutions Reference section of the [Momentum 4 REST API](https://support.messagesystems.com/docs/web-rest/v1_index.html) documentation.
-
-You must have a valid API key to complete this tutorial. If you do not, see [*Creating an API Key*](/momentum/4/create-apikey) .
-
-Follow these steps to create a complex template:
-
-1. Specify your input data for the template.
-
- This example demonstrates using substitution data and Momentum's templating language to create a complex template for a flight notification email. It also introduces the "html" content type, which gives you a richer look and feel than a plain-text message.
-
- In addition to the simple substitution shown in previous tutorials, this example uses a conditional statement to form the message body. If there is no departing airport specified in the substitution data provided with the transmission, the message body will inform the recipient that there are no travel plans. Otherwise, the message body will provide the recipient with the departing and arriving airport and city based on the substitution data provided for that specific recipient. The conditional statement is the following:
-
- ```
- {{if not Airports[departAirport]}}
- Hi {{ firstName or 'there' }}, You do not appear to be traveling anywhere. This email must be a mistake.
- {{else}}
- {{if Airports[departAirport] and Airports[departAirport].city then}}
- Hi {{ firstName or 'there' }}, You are planning a trip from {{departAirport}} in {{Airports[departAirport].city}} »
- to {{arriveAirport}} in {{Airports[arriveAirport].city}}.
- {{end}}
- {{end}}
- ```
-
- This example also demonstrates how substitution data can be used to custom a link within the message body. The customized link is the following:
-
- ```
- The weather in {{Airports[arriveAirport].city}} is {{Airports[arriveAirport].city}}.
- ```
-
- Using your text editor, create the following JSON file named `complex_template.json`.
-
- Note that the "html" part must be all on one line. Multiple lines are shown here for readability.
-
- ```
- {
- "id":"complex_template",
- "published":false,
- "options":{
- "open_tracking":true,
- "click_tracking":true
- },
- "content":{
- "from":"{{senderAddress}}",
- "subject":"This is a {{SubjectText}} of a flight notification from {{departAirport}} to {{arriveAirport}}",
- "html":"{{if not Airports[departAirport]}}Hi {{ firstName or 'there' }},
You do not appear to be traveling »
- anywhere. This email must be a mistake.
{{else}}{{if Airports[departAirport] and Airports[departAirport].city »
- then}}Hi {{ firstName or 'there' }},
You are planning a trip from {{departAirport}} in {{Airports[departAirport]»
- .city}} to{{arriveAirport}} in {{Airports[arriveAirport].city}}.
{{end}}The weather in {{Airports[arriveAirport]»
- .city}} is {{Airports[arriveAirport].city}}.{{end}}»
-
"
- }
- }
- ```
-
-2. Store your template as a draft.
-
- At the command line, enter the following command to store your template:
-
- curl -X POST http://*`your.server.domain`*/api/v1/templates/ \
- -d @*`path/to/file/`*complex_template.json \
- -H "Content-Type: application/json" \
- -H "Authorization: *`your_api_key`*"
-
- where `complex_template.json` is the name of your JSON file, `application/json` specifies the format as JSON, and *`your_api_key`* is your valid API key.
-
- If successful, the following response will be displayed at the command line:
-
- ```
- {
- "results":{
- "id":"complex_template"
- }
- }
- ```
-
- This response shows that the request was successful.
-
-**Create Transmission**
-
-Follow these steps to send an email using your template:
-
-1. Specify your input data for the transmission.
-
- As in the tutorial on using a simple stored template, you use a template by specifying its identifier and the recipient-specific data as input data in the JSON blob that will be included in the Transmissions API call.
-
- Using your text editor, create the following JSON file named `complex_subdata.json`. Be sure to use your information for sender address, recipient address, and recipient name.
-
- {
- "options":{
- "open_tracking":true,
- "click_tracking":true
- },
- "return_path":"*`sender@your_address.com`*",
- "substitution_data":{
- "senderAddress":"*`sender@your_address.com`*",
- "SubjectText":"complex template example",
- "Airports":{
- "YYZ":{
- "code":"YYZ",
- "city":"Toronto",
- "name":"Toronto International Airport",
- "country":"canada",
- "region":"ontario",
- "weatherc":"toronto"
- },
- "SFO":{
- "code":"SFO",
- "city":"San Francisco",
- "name":"San Francisco International Airport",
- "country":"united-states",
- "region":"california",
- "weatherc":"san-francisco"
- },
- "BWI":{
- "code":"BWI",
- "city":"Baltimore",
- "name":"Baltimore-Washington International Airport",
- "country":"united-states",
- "region":"maryland",
- "weatherc":"baltimore"
- }
- }
- },
- "recipients":[
- {
- "address":{
- "email":"*`recipient@their_address.com`*"
- },
- "substitution_data":{
- "firstName":"*`recipient first name`* ",
- "departAirport":"YYZ",
- "arriveAirport":"SFO"
- }
- }
- ],
- "content":{
- "template_id":"complex_template",
- "use_draft_template":true
- }
- }
-
- The recipient-specific data JSON blob can include any number of substitutions. In this example, the transmission JSON structure includes multiple options for airports, while the recipient JSON structure includes only one recipient. You can easily expand either structure for multiple substitution values.
-
-2. Inject your message into Momentum.
-
- At the command line, enter the following command to inject your email:
-
- curl -X POST http://*`your.server.domain`*/api/v1/transmissions/ \
- -d @*`path/to/file/`*complex_subdata.json \
- -H "Content-Type: application/json" \
- -H "Authorization: *`your_api_key`*"
-
- where `complex_subdata.json` is the name of your JSON file, `application/json` specifies the format as JSON, and *`your_api_key`* is your valid API key.
-
- If successful, a response similar to the following will be displayed at the command line:
-
- {
- "results":{
- "total_rejected_recipients":0,
- "total_accepted_recipients":1,
- "id":"*`11936056773443588`*"
- }
- }
-
- This response shows that one email was accepted and none were rejected.
-
-**View Engagement Data**
-
-Follow these steps to view your engagement data:
-
-1. Open the email and click the link.
-
- Verify that your recipient received a personalized email. Open the email and click the link included in the message body.
-
-2. Open the UI and navigate to the Engagement report. In the Engagement report, confirm that your message was successfully injected into Momentum (Targeted), accepted by the ISP (Accepted), and opened (Unique Confirmed Opens) and that the link was clicked (Unique Clicks), as shown in [“Engagement Report”](/momentum/4/complex-template#figure_engagement_example).
-
-
-
-
- 
-
-Congratulations! You have used your knowledge of the REST API to create and use a complex template. For additional information, see [Momentum REST API](https://support.messagesystems.com/docs/web-rest/v1_index.html).
\ No newline at end of file
diff --git a/content/momentum/4/components.md b/content/momentum/4/components.md
deleted file mode 100644
index d69757358..000000000
--- a/content/momentum/4/components.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Components"
-description: "The principle components that make up Momentum 4 are Platform nodes and Analytics nodes Platform nodes handle the MTA including injection and message generation the configuration server engagement tracking and engagement proxy server responsibilities They also host the distributed online transaction processing OLTP database and event hose Analytics nodes host..."
----
-
-The principle components that make up Momentum 4 are Platform nodes and Analytics nodes.
-
-* Platform nodes handle the MTA including injection and message generation, the configuration server, engagement tracking, and engagement proxy server responsibilities. They also host the distributed online transaction processing (OLTP) database and event hose.
-
-* Analytics nodes host the distributed analytics database and the web-based UI. Event data is loaded into the database via the event hose and is available via the web-based UI, reporting API, and jlogs for integration with external processes or systems. The Analytics nodes are also responsible for the API proxy server, which handles both message and reporting APIs.
-
-
-
-
-
\ No newline at end of file
diff --git a/content/momentum/4/conf-options.md b/content/momentum/4/conf-options.md
deleted file mode 100644
index 85733f3b8..000000000
--- a/content/momentum/4/conf-options.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Configuration Options"
-description: "Momentum provides a rich set of configuration options Some options are simple configuration options while other configuration options are more complex such as defining data structures These configuration options can be defined in the following scopes global domain host binding binding group security pathway pathway group listener listen peer threadpool..."
----
-
-Momentum provides a rich set of configuration options. Some options are simple configuration options, while other configuration options are more complex, such as defining data structures.
-
-These configuration options can be defined in the following scopes: global, domain, host, binding, binding_group, security, pathway, pathway_group, listener, listen, peer, threadpool, debug_flags, and cluster, as well as in listener-specific scopes. The various modules that extend the functionality of Momentum are also valid scopes.
-
-### Note
-
-All configuration options are case insensitive. For example, you can define an SMTP listener as `ESMTP_Listener` or `esmtp_listener`.
-
-The default configuration files provide default values such that there should be very few changes required to start sending mail through the Momentum server. However, there are a few parameters you will almost certainly need to change:
-
-* [relay_host](/momentum/4/outbound-mail-relay-hosts)
-
-* [relay_domains](/momentum/4/esmtp-listener-relay-domains)
-
-* [Authentication](/momentum/4/inbound-smtp)
-
-Many other configuration options can be modified, as discussed throughout this manual.
-
-For a summary of all the non-module specific configuration options, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/4/modules/) .
-
-Modify the configuration options in the specific configuration file or use the **config** command for online configuration tuning. For details about this command, see [config](/momentum/4/console-commands/config).
\ No newline at end of file
diff --git a/content/momentum/4/conf-overview.md b/content/momentum/4/conf-overview.md
deleted file mode 100644
index fa25722a9..000000000
--- a/content/momentum/4/conf-overview.md
+++ /dev/null
@@ -1,196 +0,0 @@
----
-lastUpdated: "05/21/2024"
-title: "Configuration Overview"
-description: "Momentum is an exceptionally powerful all in one email infrastructure solution As such it can be configured to provide the full range of digital messaging channels and more This chapter gives an overview of Momentum's configuration and provides the background needed to configure your system to meet your specific application"
----
-
-
-Momentum is an exceptionally powerful all-in-one email infrastructure solution. As such, it can be configured to provide the full range of digital messaging channels and more. This chapter gives an overview of Momentum's configuration and provides the background needed to configure your system to meet your specific application.
-
-## Configuration Files
-
-Momentum's configuration is defined in multiple configuration files. The installer creates an initial configuration for you, based on the answers you provided to it during installation. This initial configuration is based on the sample configuration files found in the `/opt/msys/ecelerity/etc/sample-configs` directory.
-
-The `ecelerity.conf` file is the master configuration file for Momentum; while other configuration files are specific to a given function or feature. For information about each configuration file, follow the links below:
-
-* [`eccluster.conf`](/momentum/4/config/ref-eccluster-conf) - Momentum Cluster Manager configuration file
-
-* [`ecelerity.conf`](/momentum/4/config/ref-ecelerity-conf) - Master Momentum configuration file
-
-* [`ecelerity_cluster.con`](/momentum/4/config/ref-ecelerity-cluster-conf) - Cluster-specific configuration file included from within `ecelerity.conf`
-
-* [`ec_rotate.conf`](/momentum/4/log-rotating#conf.ref.ec_rotate.conf) - Configuration file for the utility script **ec_rotate**
-
-* [`msg_gen.conf`](/momentum/4/config/ref-msg-gen-conf) - Message Generation configuration file included from within `ecelerity.conf`
-
-* [`msgc_server.conf`](/momentum/4/config/ref-msgc-server-conf) - Momentum cluster messaging bus configuration file
-
-### Comments and Whitespace
-
-In common with many other Unix configuration files, Momentum's configuration files use the `#` (commonly referred to as "hash" or "pound" sign) symbol to introduce a single line comment. Whitespace is unimportant in the various configuration stanza; feel free to pad the whitespace as you see fit for maximum readability.
-
-### Note
-
-If the values assigned to any options contain whitespace or any of the characters ‘`#`’, ‘`/`’, ‘`"`’, ‘`'`’, ‘`=`’, ‘`{`’, ‘`}`’, ‘`[`’, ‘`]`’, ‘`(`’, ‘`)`’ they must be enclosed by quotation marks. Note that binding names cannot contain spaces.
-
-You may use C-style comments in your configuration files. C-style comments begin with `/*` and end with `*/`. Any text between those two markers will be ignored by Momentum. C-style comments do not nest.
-
-### Using the `include` and `readonly_include` Directives
-
-
-
-Momentum's configuration is distributed over multiple configuration files, which are referenced from within the other configuration files. For example, the `eccluster.conf` file is "included" from the `ecelerity.conf` file and configures cluster-related options in a cluster configuration.
-
-You may break apart any of your configuration files into multiple files and reference them using the `include` or `readonly_include` directives. Both are valid in any scope. The following is an example using the `include` directive:
-
-`include "/opt/msys/ecelerity/etc/other.conf"`
-
-If you break up your configuration file into different files, you must add these new files to the repository. For included files, the directory that holds the file being included **from** is checked before the default search path.
-
-You may also use the `include` directive to allow the inclusion of a directory, as shown in the following example:
-
-```
-# assuming that /opt/msys/ecelerity/etc/config.d is a directory
-# each file in that directory will be included
-include "/opt/msys/ecelerity/etc/config.d"
-```
-
-When the referenced path is a directory, all the files within that directory are included in alphabetical order. Hidden files (those whose names begin with a single period) are not included. Sub-directories are not automatically processed.
-
-The `readonly_include` directive also supports making online changes to the configuration with the [config set](/momentum/4/console-commands/config) and [config unset](/momentum/4/console-commands/config) commands.
-
-When making an online change, Momentum must decide to which configuration file to save online changes. This decision is controlled by the following factors:
-
-* `Local_Changes_File` option
-
-* `Local_Changes_Only` option
-
-* Read-only status of a particular configuration file
-
-* Whether the operation being performed is replacing an old value with a new one or setting a value that has not previously been set
-
-The `Local_Changes_File` option sets the name of a configuration file that must be writable and that is implicitly loaded after all other configuration files, regardless of its placement in the configuration file. Since it must be writable and files included twice are read-only, the `Local_Changes_File` option cannot point to the same file as any `include` directive, and it cannot point to the main configuration file. Since `Local_Changes_File` is effectively loaded at the end of the main configuration file, options set in it are able to override any setting in any other configuration file. If it were loaded at some other point, options set after that point could not be overridden by it.
-
-If the `Local_Changes_File` option is not defined and the main configuration file is writable, changes are written to the main configuration file. If `Local_Changes_File` is not defined and the main configuration file is read-only, a virtual file not associated with any real path is used to hold changes; in this case, the [config writeback](/momentum/4/console-commands/config) command will issue a warning stating that not all portions of the configuration could be saved and show the contents of the virtual file. This issue can be fixed by setting the `Local_Changes_File` to a valid path and issuing the **config writeback** command again, at which point changes in the virtual file will be saved to the newly configured location.
-
-The `Local_Changes_Only` option defaults to `false`. If it is `true`, the `Local_Changes_File` option must be defined and all changes are saved to the `Local_Changes_File`. If it is `false`, changes are distributed as described below:
-
-* When replacing a value that has previously been set, if the file it was last set in is writable then the change is made in-place; i.e., the new option value replaces the old option value at the same location in the writable file.
-
-* If replacing a value that was last set in a read-only file or setting a value that was not set previously, then the change will go to the first writable file in which the scope instance containing the change was defined.
-
-For an example of the first writable file, assume that `ecelerity.conf` is configured as follows:
-
-```
-readonly_include "foo.conf"
-include "baz.conf"
-```
-
-and `foo.conf` contains:
-
-```
-Domain yahoo.com {
- Gateway = "server.yahoo.com"
- include "bar.conf"
-}
-```
-
-Options set for the first time by commands starting with **config set Domain yahoo.com** will be saved in `bar.conf`, since `foo.conf` is read-only and `baz.conf` occurs after `bar.conf`. The change made by **config set Domain yahoo.com gateway "server2.yahoo.com"** would also end up in `bar.conf,` since the original location, `foo.conf`, is read-only, and `bar.conf` is the first writable location after it.
-
-Finally, if the scope instance containing the change was only encountered in read-only files or not at all, the change will be saved to the file defined by the `Local_Changes_File` option. Note that changes, even committed changes, are accumulated in in-memory representations of the configuration files and are not saved to disk until a **config writeback** command is issued.
-
-### Note
-
-Any configuration files included with the `readonly_include` directive are read-only. Any configuration files included multiple times (overall, not necessarily from the same file) are read-only. Any configuration files loaded from a URI with a scheme other than 'file://', 'persist://' are read-only. All other configuration files are considered writable.
-
-### Changing Configuration Files
-
-It is important to take steps to avoid conflicts with changes made elsewhere in the system and to be able to track changes. For this reason, perform the following actions when editing any configuration files or script files:
-
-1. Navigate to the appropriate directory:
-
- * For a single-node configuration, navigate to `/opt/msys/ecelerity/etc/conf/default` .
-
- * For a cluster configuration, navigate to `/opt/msys/ecelerity/etc/conf/default` on the cluster manager.
-
- * For node-specific configuration, navigate to the sub-directory on the cluster manager that is below `/opt/msys/ecelerity/etc/conf` and bears the name of the node: /opt/msys/ecelerity/etc/conf/*`nodename`*.
-
-2. Make the necessary changes to the configuration file using the text editor of your choice.
-
-3. Test the validity of your changes using the [validate_config](/momentum/4/executable/validate-config) script:
-
- `/opt/msys/ecelerity/bin/validate_config`
-4. Check that your changes are valid by reloading the configuration before committing it. Issue the following command:
-
- `/opt/msys/ecelerity/bin/ec_console /tmp/2025 config reload`
-
- If there are any errors, the new configuration will not load and the error message, `"Reconfigure failed"`, will be displayed.
-
-5. Implement your changes.
-
- * For a single-node configuration, open the console and issue the command:
-
- `config reload`
-
- You can view the effective configuration settings using the console command **`config showrecurse`** . You may want to turn the pager on first by entering the command, **`\pager`**. There is no need to restart the ecelerity process.
-
- ### Warning
-
- Some configuration changes require restarting the ecelerity process, as documented throughout this guide. Running the **`config reload`** command will not suffice.
-
- * For a cluster configuration, issue the **`config reload`** command on the cluster manager. The changes will be propagated to all of the other nodes and will be automatically loaded by the running ecelerity processes.
-
- ### Warning
-
- Some configuration changes require restarting the ecelerity process, as documented throughout this guide. Running the **`config reload`** command will not suffice.
-
- * For a node-specific configuration, use the [ec_ctl](/momentum/4/executable/ec-ctl) command to restart the ecelerity process. The **`config reload`** command will not load configuration changes.
-
-### Warning
-
-Avoid leaving uncommitted changes pending, especially in the working copy on a node.
-
-### Adding Configuration Files
-
-As discussed in [“Using the `include` and `readonly_include` Directives”](/momentum/4/conf-overview#conf.files.includes), you can split your Momentum configuration into any number of configuration files. However, if you add new configuration files you must also add them to the repository. Follow these steps:
-
-1. Navigate to the appropriate directory for the changes you intend to make. You will save your files to a different directory on a different node depending upon how narrowly or widely your configuration applies.
-
- * For a single-node configuration, navigate to `/opt/msys/ecelerity/etc/conf/default`.
-
- * For a cluster configuration, navigate to `/opt/msys/ecelerity/etc/conf/default` on the cluster manager.
-
- * For node-specific configuration, create a sub-directory on the cluster manager that is below `/opt/msys/ecelerity/etc/conf` and bears the name of the node: /opt/msys/ecelerity/etc/conf/*`nodename`*. Copy the appropriate configuration files from the `default` directory.
-
-2. Create and save the new configuration file.
-
-3. Open the appropriate configuration file and include the new file using the `include` directive.
-
-4. Test the validity of your changes using the [validate_config](/momentum/4/executable/validate-config) script:
-
- `/opt/msys/ecelerity/bin/validate_config`
-5. Check that your changes are valid by reloading the configuration before committing it. Issue the following command:
-
- `/opt/msys/ecelerity/bin/ec_console /tmp/2025 config reload`
-
- If there are any errors, the new configuration will not load and the error message, `"Reconfigure failed"`, will be displayed.
-
-6. Implement your changes.
-
- * For a single-node configuration, open the console and issue the command:
-
- `config reload`
-
- You can view the effective configuration settings using the console command **`config showrecurse`** . You may want to turn the pager on first by entering the command, **`\pager`**. There is no need to restart the ecelerity process.
-
- ### Warning
-
- Some configuration changes require restarting the ecelerity process, as documented throughout this guide. Running the **`config reload`** command will not suffice.
-
- * For a cluster configuration, issue the **`config reload`** command on the cluster manager. The changes will be propagated to all of the other nodes and will be automatically loaded by the running ecelerity processes.
-
- ### Warning
-
- Some configuration changes require restarting the ecelerity process, as documented throughout this guide. Running the **`config reload`** command will not suffice.
-
- * For a node-specific configuration, use the [ec_ctl](/momentum/4/executable/ec-ctl) command to restart the ecelerity process. The **`config reload`** command will not load configuration changes.
diff --git a/content/momentum/4/conf-performance-tips.md b/content/momentum/4/conf-performance-tips.md
deleted file mode 100644
index efedd9fa5..000000000
--- a/content/momentum/4/conf-performance-tips.md
+++ /dev/null
@@ -1,136 +0,0 @@
----
-lastUpdated: "11/04/2024"
-title: "Performance Tips"
-description: "This chapter provides you with some tips to optimize the Momentum performance ratings"
----
-
-Momentum is an exceptionally powerful all-in-one email infrastructure solution. For several reasons, however, the default configuration shipped with the installation bundle does not run at full speed for all the use cases. This chapter provides you with some tips to optimize the Momentum performance ratings.
-
-## CPU Optimization
-
-With [Supercharger](/momentum/4/licensed-features-supercharger) licensed feature, Momentum runs on top of several [event loop](/momentum/4/multi-event-loops) schedulers and uses multicore CPUs with improved efficiency. In this model, it is also possible to assign dedicated event loops to listeners (e.g. the HTTP one) with desired concurrency. On the other hand, the default configuration is based solely on the thread pools to offload specific tasks, therefore Momentum keeps running on top of the original master event loop only, and it can be occasionally bottlenecked.
-
-The Supercharger's *"75% of CPU cores"* formula works fine on systems largely SMTP-driven. For systems with larger [message generation](/momentum/4/message-gen) flows (i.e., REST injections), the number of event loops can be limited to 4 or 5, with higher concurrency values assigned to the `msg_gen` thread pools (see `gen_count` and `gen_transactional_threads` configurations [here](/momentum/4/modules/msg-gen)). For instance:
-
-```
-msg_gen {
- (...)
- gen_count = 4
- gen_transactional_threads = 4
-}
-```
-
-Also, the CPU thread pool is expected to be used for a lot of functions in the REST flows, so it is recommended to increase the concurrency from its default value (of 4):
-
-```
-ThreadPool "CPU" {
- Concurrency = 8
-}
-```
-
-Last, it is recommended to assign separated event loops for listeners to reduce latency and improve the overall performance. For instance, the following configuration assigns dedicated event loops to the ESMTP and HTTP listeners:
-
-```
-ESMTP_Listener {
- event_loop = "smtp_pool"
- (...)
-}
-(...)
-HTTP_Listener {
- event_loop = "http_pool"
- (...)
-}
-```
-
-## Better Caching
-
-Momentum has some built-in caches that can be tuned to improve performance. The following are the most important ones:
-
-### Generic Getter
-
-This cache is used for parameters that are not in a binding/domain scope. So anything that's global, or module configuration, exist in the generic getter cache. This cache gets a lot of traffic, so setting it in `ecelerity.conf` to something like few million entries is reasonable:
-
-```
-generic_getter_cache_size = 4194304
-```
-
-### Regex Match
-
-The match cache saves results of queries against regular expression domain stanzas. This cache is enabled by default, but its [size](/momentum/4/config/ref-match-cache-size) is very small by default (16384 entries). Making it larger is a great idea, especially if user is using any regular expression domain stanzas:
-
-```
-match_cache_size = 2097152
-```
-
-## Boosting `jemalloc` Performance
-
-`jemalloc` has demonstrated excellent performance and stability. Because of that, it became the default Momentum's memory allocator. However, it is possible to get even more from it by tuning the `MALLOC_CONF` environment variable.
-
-Add these lines to `/opt/msys/ecelerity/etc/environment` file (or create it):
-
-```
-MALLOC_CONF="background_thread:true"
-export MALLOC_CONF
-```
-
-then (re)start the `ecelerity` service.
-
-## Tuning Lua
-
-Lua has a garbage collector that can be tuned to improve performance. The following are some recommended settings:
-
-In the `ecelerity.conf` file:
-
-```
-ThreadPool gc {
- concurrency = 4
-}
-(...)
-scriptlet "scriptlet" {
- (...)
- gc_every = 20
- gc_step_on_recycle = true
- gc_step_on_trash_state = false
- gc_stepmul = 300
- gc_threadpool = gc
- gc_trace_thresh = 2147483647
- global_trace_interval = 13
- max_uses_per_thread = 5000
- pin_thread_for_completion_in_event_loop = false
- reap_interval = 13
- use_reusable_thread = true
-}
-```
-
-Enforce these settings in the `/opt/msys/ecelerity/etc/environment` file:
-
-```
-USE_TRACE_THREADS=true
-export USE_TRACE_THREADS
-LUA_USE_TRACE_THREADS=true
-export LUA_USE_TRACE_THREADS
-LUA_NUM_TRACE_THREADS=8
-export LUA_NUM_TRACE_THREADS
-LUA_NON_SIGNAL_COLLECTOR=true
-export LUA_NON_SIGNAL_COLLECTOR
-```
-
-## Miscellaneous Configuration
-
-These are `ecelerity.conf` settings that are known to improve performance on different tasks of Momentum. Before applying them, however, review their documentation and make sure they fit to your environment and use cases:
-
-```
-growbuf_size = 262144
-initial_hash_buckets = 64
-keep_message_dicts_in_memory = true
-max_resident_active_queue = 5000
-max_resident_messages = 50000
-```
-
-## Miscellaneous Tips
-
-- Don't forget to [adjust `sysctl` settings](/momentum/4/byb-sysctl-conf) for best TCP connections performance;
-- Avoid using `ec_console` commands `summary` and `mailq` for monitoring purposes. Prefer their [HTTP API](/momentum/4/http-api-stats) counterparts, which are less intrusive and more efficient;
-- Prefer [chunk_logger](/momentum/4/modules/chunk-logger) over logging to `paniclog`. The reasons are taken from the `chunk_logger` page:
-
-> _Logging to the_ `paniclog` _in the scheduler thread (the main thread) can limit throughput and cause watchdog kills. (...) [It] involves disk I/O, and writing to the_ `paniclog` _in the scheduler thread may block its execution for a long time, thereby holding up other tasks in the scheduler thread and decreasing throughput._
diff --git a/content/momentum/4/config-options-summary.md b/content/momentum/4/config-options-summary.md
deleted file mode 100644
index ccfb99499..000000000
--- a/content/momentum/4/config-options-summary.md
+++ /dev/null
@@ -1,401 +0,0 @@
----
-lastUpdated: "12/31/2025"
-title: "Configuration Options Summary"
-description: "This chapter lists all configuration options visible in the following scopes global domain host binding binding group security pathway pathway group listener listen peer threadpool debug flags and cluster as well as in the listener specific scope Module specific options are documented in the module documentation and options specific to..."
----
-
-This chapter lists all configuration options visible in the following scopes; global, domain, host, binding, binding_group, security, pathway, pathway_group, listener, listen, peer, threadpool, debug_flags, and cluster, as well as in the listener-specific scope. Module-specific options are documented in the module documentation and options specific to Mobile Momentum are documented in the Mobile Momentum documents. Options are sorted alphabetically by name. If an option functions as a scope, this is indicated by `(scope)`.
-
-The `Type` column indicates the MTA type of a given option. Options of type `na` do not directly apply to either a sending or receiving MTA.
-
-If an option has a default value, it is shown in the `Default` column followed by a version number, if there has been a change to the default value. If the value of an option cannot be changed at runtime, the `Default` column will show `(non-dynamic)`.
-
-The `Version` column indicated the version(s) of Momentum that support the option.
-
-
-
-
-| Option/Description | Type | Default | Version | Scopes |
-| --- | --- | --- | --- | --- |
-| [_unsafe_spool](/momentum/4/config/ref-unsafe-spool) – Allow dangerous spool semantics to be used | na | false | 4.0 and later | global |
-| **accept_queue_backlog** – Accept queue backlog | receiving | 0 | 4.0 and later | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| [adaptive_adjustment_interval](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_adjustment_interval) – Throttle the adaptive adjustment interval | sending | 60 | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_alert_email_destination](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_alert_email_destination) – Address where adaptive alerts should be sent | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_notification_events](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_notification_events) – Set the sender address of the alert email | sending | NULL | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_attempt_threshold](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_attempt_threshold) – Minimum delivery attempts over a period during which bounce stats are collected and suspensions attempted | sending | 2000 (*3.2*) | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_backstore_leveldb](/momentum/4/config/ref-adaptive-backstore-leveldb) *(scope)* – Use LevelDB as the backing store for Adaptive Delivery | sending | | 4.0 and later | global |
-| [adaptive_backstore_riak](/momentum/4/config/ref-adaptive-backstore-riak) *(scope)* – Define the characteristics of the Riak backing store | sending | | 4.0 and later | global |
-| [adaptive_body_timeout](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_default_suspension](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_default_suspension) – Amount of time to suspend a domain | sending | 4 hours | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_ehlo_timeout](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_enabled](/momentum/4/config/ref-adaptive-enabled) – Whether to enable the adaptive module for a specific scope | sending | false | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_fbl_volume_threshold](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_fbl_volume_threshold) – Minimum total delivered mail count over a period during which FBL stats are collected | sending | 20000 | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_idle_timeout](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_mailfrom_timeout](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_max_deliveries_per_connection](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_max_outbound_connections](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_max_recipients_per_batch](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_max_recipients_per_connection](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_max_resident_active_queue](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_max_retries](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_max_retry_interval](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_notification_events](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_notification_events) – Configure the events that will trigger an email notification | sending | throttle suspension blackhole | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_notification_interval](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_notification_interval) – Throttle for adaptive alert notification emails | sending | 3600 | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_outbound_throttle_messages](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_positive_adjustment_interval](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_positive_adjustment_interval) – Throttle positive adjustments to adaptive changes | sending | 3600 | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_rcptto_timeout](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_rejection_rate_suspension_percentage](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_rejection_rate_suspension_percentage) – Rate at which messages are rejected | sending | 20 | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_retry_fuzz](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_retry_fuzz) – Allow greater control over bulk message retries in cases where all messages for a domain have to be retried | sending | 4096 | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_retry_interval](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_rset_timeout](/momentum/4/modules/4-adaptive) – Set the bounds for the adaptive option | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_scope](/momentum/4/config/ref-adaptive-scope) – Define the scope applicable to adaptive delivery | sending | auto | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_sweep_rule](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_sweep_rule) *(scope)* – Set the thresholds and actions for adaptive fbl and bounce rules | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [adaptive_sweep_rule_enabled](/momentum/4/modules/4-adaptive#modules.adaptive.adaptive_sweep_rule_enabled) – Enable or disable adaptive_sweep_rule in a specified scope | sending | 1 | 4.0 and later | binding, binding_group, domain, global |
-| [address](/momentum/4/config/ref-snmp#conf.ref.snmp.address) – Set the SNMP IP address and port | na | (*non-dynamic*) | 4.0 and later | snmp |
-| [address_metrics_cleanse_interval](/momentum/4/config/ref-address-metrics-cleanse-interval) – Interval for refreshing address metrics | sending | 3600 | 4.0 and later | global |
-| [address_metrics_lifetime](/momentum/4/config/ref-address-metrics-lifetime) – TTL of address metrics | sending | 1800 | 4.0 and later | global |
-| [alias_schemes](/momentum/4/config/ref-alias-schemes) – Enable named alias expansion schemes | both | | 4.0 and later | domain, global, pathway, pathway_group |
-| [allow_ip_literal](/momentum/4/config/ref-allow-ip-literal) – Allow IP addresses in email addresses | receiving | true | 4.0 and later | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [allow_null_envelope_sender](/momentum/4/config/ref-allow-null-envelope-sender) – Allow the null envelope sender in email addresses | receiving | true | 4.0 and later | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [allow_trailing_whitespace_in_commands](/momentum/4/config/ref-allow-trailing-whitespace-in-commands) – Allow trailing white space at the end of an SMTP command | receiving | false | 4.0 and later | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [always_allow](/momentum/4/control-auth#control_auth.overriding) – When set to true, authentication is considered to have succeeded, unless always_deny is set | receiving | false | 4.0 and later | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [always_deny](/momentum/4/control-auth#control_auth.overriding) – If set to true, authentication is considered to have failed | receiving | false | 4.0 and later | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [apn_expiry](/momentum/3/3-push/apns-apn-expiry) – Define the number of seconds after which an APNs notification is no longer valid | sending | yes (*non-dynamic*) | 4.0 and later | binding, binding_group, domain, global |
-| [arp_all_hosts](/momentum/4/modules/4-modules-cluster#option.arp_all_hosts) – Whether or not to aggressively send out ARP information to ensure that the network knows about the IP address assignment (cluster-specific) | na | true | 4.0 and later | cluster |
-| [async_bounce_rendering](/momentum/4/config/ref-async-bounce-rendering) – Which thread pool to use for bounce rendering | sending | true | 4.0 and later | global |
-| [authcrammd5parameters](/momentum/4/inbound-smtp#inbound_smtp.cram-md5) – Configure CRAM-MD5 authentication | receiving | | 4.0 and later | control_listener, esmtp_listener, listen, pathway, pathway_group |
-| [authdigestmd5parameters](/momentum/4/inbound-smtp#inbound_smtp.digest-md5) – Configure DIGEST-MD5 authentication | receiving | | 4.0 and later | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [authloginparameters](/momentum/4/control-auth#control_auth.clear.text) – Configure clear text login authentication | receiving | | 4.0 and later | control_listener, esmtp_listener, listen, pathway, pathway_group |
-| [authorization](/momentum/4/config/ref-authorization) *(scope)* – Configure the console commands applicable to users | na | | 4.0 and later | global |
-| [authorizationparameters](/momentum/4/control-authz#control_authz.ecauth) – AuthorizationParameters dictionary points to authorization information | receiving | | 4.0 and later | control_listener, esmtp_listener, listen |
-| [authplainparameters](/momentum/4/inbound-smtp#inbound_smtp.plain.text) – Configure plain text login authentication | receiving | | 4.0 and later | esmtp_listener, http_listener, listen, pathway, pathway_group, xmpp_listener |
-| [backlog](/momentum/4/config/ref-threadpool) – Maximum number of jobs that can be queued up for a pool | na | 0 (*non-dynamic*) | 4.0 and later | threadpool |
-| **banner_hostname** – Specifies the banner hostname that will be displayed to the remote client upon connecting | receiving | | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [bind_address](/momentum/4/config/ref-bind-address) – Source address for outbound connections | sending | | 4.0 and later | binding, binding_group, global |
-| [binding](/momentum/4/config/ref-binding) *(scope)* – Configure binding-specific options | sending | | 4.0 and later | binding_group, global |
-| [binding_auto_replumb](/momentum/4/config/ref-binding-auto-replumb) *(scope)* – Enable or disable the auto replumber | sending and receiving | | 4.2.1.11 and later | global |
-| [binding_auto_replumb_interval](/momentum/4/config/ref-binding-auto-replumb-interval) *(scope)* – Sets the time interval to check the plumbed state of statically plumbed bindings | sending and receiving | | 4.2.1.11 and later | global |
-| [binding_group](/momentum/4/config/ref-binding-group) *(scope)* – Logically group a set of bindings | sending | | 4.0 and later | global |
-| [blackhole](/momentum/4/config/ref-blackhole) – Blackhole mail | sending | false | 4.0 and later | binding, binding_group, domain, global |
-| [body_timeout](/momentum/4/config/ref-body-timeout) – Network timeout once the DATA phase is complete | sending | 600 | 4.0 and later | binding, binding_group, domain, global |
-| [bounce_behavior](/momentum/4/config/ref-bounce-behavior) – Configure the action taken when a message is classified as a bounce | sending | pass | 4.0 and later | domain, global |
-| [bounce_domains](/momentum/4/config/ref-bounce-domains) – Configure the list of domains eligible for bounce processing | receiving | | 4.0 and later | global, pathway, pathway_group |
-| [bounce_pattern](/momentum/4/config/ref-bounce-pattern) – Configure the pattern that inbound email addresses must match to be considered bounces | sending | | 4.0 and later | domain, global |
-| [bounce_suppress_list](/momentum/4/config/ref-bounce-suppress-list) – Configure a list of email addresses that may not be considered original recipients | sending | | 4.0 and later | global |
-| [bounces_inline_original](/momentum/4/config/ref-bounces-inline-original) – How much of the original message to include in MDNs | sending | headers | 4.0 and later | binding, binding_group, domain, global |
-| [capabilities](/momentum/4/config/ref-capabilities) – Selectively retain root capabilities | na | (*non-dynamic*) | 4.0 and later | security |
-| [chroot](/momentum/4/config/ref-chroot) – chroot to a secure environment | na | (*non-dynamic*) | 4.0 and later | security |
-| [clear_mail_queue_maintainers](/momentum/4/config/ref-clear-mail-queue-maintainers) – Reschedule the mail queue maintainer | both | true | 4.0 and later | global |
-| [click_tracking_enabled](/momentum/4/config/click-tracking-enabled) – Enable or disable click tracking for SMTP injections | boolean | false | 4.1-HF4 (beta) | esmtp_listener, listen, pathway, pathway_group, peer |
-| [click_tracking_scheme](/momentum/4/config/click-tracking-scheme) – Set the hyperlink scheme to use for click tracking links in SMTP injections | string | http | 4.1-HF4 (beta) | esmtp_listener, listen, pathway, pathway_group, peer |
-| **cluster_group** – The DuraVIP™ system coordinates IP ownership responsibilities via the cluster_group extended virtual synchrony group (cluster-specific) | na | ec_cluster | 4.0 and later | cluster |
-| [cluster_max_outbound_connections](/momentum/4/config/ref-cluster-max-outbound-connections) – Set the maximum number of outbound connections for a domain (cluster-specific) | sending | -1 | 4.0 and later | binding, domain, global, host |
-| [cluster_outbound_throttle_connections](/momentum/4/config/ref-cluster-outbound-throttle-connections) – Limit the rate at which connections are established (cluster-specific) | sending | | 4.0 and later | binding_group, domain, global |
-| [cluster_outbound_throttle_messages](/momentum/4/config/ref-cluster-outbound-throttle-messages) – Limit the rate at which messages are delivered (cluster-specific) | sending | | 4.0 and later | binding_group, domain, global |
-| [cluster_scope_max_outbound_connections](/momentum/4/config/ref-cluster-scope-max-outbound-connections) – Provide traffic shaping for outbound connections (cluster-specific) | sending | | 4.0 and later | binding, binding_group, domain, global, host |
-| [cluster_server_max_outbound_connections](/momentum/4/config/ref-cluster-server-max-outbound-connections) – Set the maximum number of outbound connections (cluster-specific) | sending | | 4.0 and later | binding, binding_group, global |
-| [codes](/momentum/4/modules/4-adaptive#modules.adaptive.codes) – adaptive_sweep_rule bounce or fbl codes | sending | | 4.0 and later | adaptive_sweep_rule |
-| [community](/momentum/4/config/ref-snmp#conf.ref.snmp.community) – Set the SNMP Community option value to the desired SNMP community the agent is to join | na | public (*non-dynamic*) | 4.0 and later | snmp |
-| [concurrency](/momentum/4/esmtp-listener#esmtp_listener.config) – Define number of available threads | receiving | 0 | 4.0 and later | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, threadpool, xmpp_listener |
-| [connect_timeout](/momentum/4/config/ref-connect-timeout) – Set the connection timeout | sending | 300 | 4.0 and later | binding, binding_group, domain, global |
-| [connect_timeout_to_delay](/momentum/4/config/ref-connect-timeout-to-delay) – Time interval before moving mail into the delayed queue | sending | 900 | 4.0 and later | binding, binding_group, domain, global |
-| [connection_allocation_aggressiveness](/momentum/4/config/ref-connection-allocation-aggressiveness) – Tune the aggressiveness for establishing new connections to domains | sending | normal | 4.0 and later | binding, binding_group, domain, global |
-| [context](/momentum/4/config/ref-context) – Use to set arbitrary connection context key value pairs | receiving | | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [control_cache](/momentum/4/config/ref-eccluster-conf#eccluster.conf.logs.control_cache) – Name of the cache file storing asynchronous responses | na | | 4.0 and later | logs |
-| [control_client_timeout](/momentum/4/config/ref-control-client-timeout) – Network timeout for Momentum control client connections | na | 60 | 4.0 and later | global |
-| [control_group](/momentum/4/config/ref-ecelerity-cluster-conf) – Cluster manager utilizes this group to issue cluster-wide configuration commands (cluster-specific) | na | ec_console | 4.0 and later | cluster |
-| [control_listener](/momentum/4/control-listener#control_listener.config) *(scope)* – Listener for incoming control connections | na | | 4.0 and later | global |
-| [critical](/momentum/4/config/ref-debug-flags) – Set the debug level | na | ALL | 4.0 and later | debug_flags |
-| [crypto_engine](/momentum/4/config/ref-crypto-engine) – Enable hardware cryptography acceleration | both | | 4.0 and later | global |
-| [crypto_lock_method](/momentum/4/config/crypto-lock-method) – Set the locking method used by the TLS layer | receiving and sending | EC_SSL_DEFAULTLOCK (*non-dynamic*) | 4.0 through 5.2 | global |
-| [curfew](/momentum/4/modules/curfew#modules.curfew.configuration) *(scope)* – Configure the curfew (scheduled delivery suspension) module | sending | | 5.3 and later | global |
-| [debug](/momentum/4/config/ref-debug-flags) – Set the debug level | na | | 4.0 and later | debug_flags |
-| [debug_flags](/momentum/4/config/ref-debug-flags) *(scope)* – Configure debug verbosity | na | | 4.0 and later | global |
-| [debug_level](/momentum/4/4-module-config) – Set the module debug level (applicable to all modules) (cluster-specific) | na | error | 4.0 and later | cluster |
-| [debug_throttle_max_num_same_message](/momentum/4/config/ref-debug-throttle) – Maximum number of identical debug messages to log within an interval | na | 0 | 5.2 and later | global |
-| [debug_throttle_period_secs](/momentum/4/config/ref-debug-throttle) – Time interval for debug message throttling, in seconds | na | 1 | 5.2 and later | global |
-| [default_binding](/momentum/4/config/ref-default-binding) – Control the default binding | sending | normal | 4.0 and later | global |
-| [default_charset](/momentum/4/config/ref-default-charset) – Control the character set | both | us-ascii | 4.0 and later | global, pathway, pathway_group |
-| [delay_dsn_max_retry_interval](/momentum/4/config/ref-delay-dsn-max-retry-interval) – Maximum interval for sending DSNs to the sender of a message that has not yet been delivered | sending | 43200 | 4.0 and later | binding, binding_group, domain, global |
-| [delay_dsn_retry_interval](/momentum/4/config/ref-delay-dsn-retry-interval) – Base interval for sending DSNs to the sender of a message that has not yet been delivered | sending | 3600 | 4.0 and later | binding, binding_group, domain, global |
-| [delayed_binding_domain_fuzz](/momentum/4/config/ref-delayed-binding-domain-fuzz) – Time period to spread scheduled messages over when a bulk requeue is necessary | sending | 0 | 4.0 and later | binding, binding_group, global |
-| [delayed_queue_scan_interval](/momentum/4/config/ref-delayed-queue-scan-interval) – How often to call the maintainer for a domain | sending | 15 | 4.0 and later | global |
-| [delivery_method](/momentum/4/config/ref-delivery-method) – Set the delivery method | sending | ESMTP (*3.0*), SMTP (*2.2*) | 4.0 and later | binding, binding_group, domain, global |
-| [delivery_pool](/momentum/4/config/ref-delivery-pool) – Associate an eventloop with mail delivery | sending | (*non-dynamic*) | 4.0 and later | global |
-| [delivery_response_timeout](/momentum/4/config/ref-delivery-response-timeout) – Time to wait for a response to an outbound request | sending | 5000 | 4.0 and later | binding, domain, global |
-| [dir_mode](/momentum/4/config/ref-eccluster-conf#eccluster.conf.logs.dir_mode) – Octal representation of the file permissions | na | | 4.0 and later | logs |
-| [disable_chunked](/momentum/mobile/mobile-reference/mobility-mm-7-listener) – Option used with aggregators who do not support chunked transfer-coding (Mobile Momentum) | both | false | 4.0 and later | http_listener, listen, pathway, pathway_group, peer |
-| [disable_nagle_algorithm](/momentum/4/config/ref-disable-nagle-algorithm) – Disable nagle algorithm on sockets | both | false | 4.0 and later | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, global, http_listener, listen, xmpp_listener |
-| [disk_queue_drain_rate](/momentum/4/config/ref-disk-queue-drain-rate) – Control the rate at which messages are spooled in on start-up | both | 100 | 4.0 and later | global |
-| [dns_cache_purge_interval](/momentum/4/config/ref-dns-cache-purge-interval) – How often the DNS response cache is scanned for stale entries | sending | 60 | 4.0 and later | global |
-| [dns_expire_interval](/momentum/4/config/ref-dns-expire-interval) – How often to check for domains with expired DNS information | sending | 10 | 4.0 and later | global |
-| [dns_failures_to_purge](/momentum/4/config/ref-dns-failures-to-purge) – Configure the maximum number of DNS lookups | sending | 10 | 4.0 and later | domain, global |
-| [dns_fallback_to_tcp](/momentum/4/config/ref-dns-fallback-to-tcp) – Whether or not to fail over to TCP in place of UDP | both | false | 4.0 and later | global |
-| [dns_max_udp_queries_per_port](/momentum/4/config/ref-dns-max-udp-queries-per-port) - Limit the number of DNS queries sent using the same UDP source port | sending | 0 | 5.2 and later | global |
-| [dns_rate_limit_enabled](/momentum/4/config/ref-dns-rate-limit) - Enable or disable the DNS rate limiter | sending | false | 5.3 and later | global |
-| [dns_rate_limit_max_queue](/momentum/4/config/ref-dns-rate-limit) - Maximum number of domains the rate limiter will hold while waiting for a token | sending | 100000 | 5.3 and later | global |
-| [dns_rate_limit_mx_queries](/momentum/4/config/ref-dns-rate-limit) - Maximum number of MX DNS queries dispatched per period | sending | 100 | 5.3 and later | global |
-| [dns_rate_limit_period](/momentum/4/config/ref-dns-rate-limit) - The period, in seconds, used by the DNS rate limiter | sending | 1 | 5.3 and later | global |
-| [dns_udp_rcvbuf_size](/momentum/4/config/ref-dns-udp-buffer-size) - Set the size of the UDP socket receiving buffer used by DNS lookups | both | 0 | 5.2 and later | global |
-| [dns_udp_sndbuf_size](/momentum/4/config/ref-dns-udp-buffer-size) - Set the size of the UDP socket sending buffer used by DNS lookups | both | 0 | 5.2 and later | global |
-| [domain](/momentum/4/config/ref-domain) *(scope)* – Configure domain-specific options | sending | | 4.0 and later | binding, binding_group, global |
-| [domain_for_unqualified_recipient_addresses](/momentum/4/config/ref-domain-for-unqualified-recipient-addresses) – Configure a domain which will be used to resolve delivery for unqualified addresses | receiving | | 4.0 and later | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [domain_for_unqualified_sender_address](/momentum/4/config/ref-domain-for-unqualified-sender-address) – Configure a domain which will be used to substitute for unqualified sender addresses | receiving | | 4.0 and later | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [domainkeys](/momentum/4/config/ref-domainkeys) – Enable or disable domainkeys signing | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [drop_body_after_trans_fail](/momentum/4/config/ref-drop-body-after-trans-fail) – Number of retry attempts before freeing message memory | sending | 3 | 4.0 and later | binding, binding_group, domain, global |
-| [duravip_balance_set_size](/momentum/4/modules/4-modules-cluster#option.duravip_balance_set_size) – When balancing DuraVIP™s, how many to process as a batch in response to a balance request (cluster-specific) | na | 1 | 4.0 and later | cluster |
-| [duravip_follow](/momentum/4/4-cluster-config-duravip) – Specify the binding a listener should follow (cluster-specific) | receiving | | 4.0 and later | listen |
-| [duravip_preference](/momentum/4/4-cluster-config-duravip) – Specify a DuraVIP™ preference (cluster-specific) | both | | 4.0 and later | binding, listen |
-| [eccluster_listener](/momentum/4/cluster-listeners#eccluster_listener) *(scope)* – Control communication between cluster nodes (cluster-specific) | na | | 4.0 and later | global |
-| [ecstream_idle_time](/momentum/4/ecstream-listener) – Number of seconds of inactivity before a client is disconnected (ECStream only) | receiving | 300 | 4.0 and later | ecstream_listener, listen, pathway, pathway_group, peer |
-| [ecstream_listener](/momentum/4/ecstream-listener) *(scope)* – Listener for incoming ECSTREAM connections | receiving | | 4.0 and later | global |
-| [ecstream_max_batch_size](/momentum/4/ecstream-listener) – Maximum number of ECStream messages to accept before dropping back into the scheduler (ECStream only) | receiving | 10000 | 4.0 and later | ecstream_listener, listen, pathway, pathway_group, peer |
-| [ecstream_port](/momentum/4/config/ref-ecstream-port) – Configure the port for ecstream deliveries | sending | 1825 | 4.0 and later | binding, binding_group, domain, global |
-| [ecstream_timeout](/momentum/4/config/ref-ecstream-timeout) – Amount of time to wait for an ecstream connection to be established | sending | 600 | 4.0 and later | binding, binding_group, domain, global |
-| [ehlo_hostname](/momentum/4/config/ref-ehlo-hostname) – Set the hostname used for EHLO in outbound mail | sending | __hostname__ | 4.0 and later | binding, binding_group, domain, global |
-| [ehlo_timeout](/momentum/4/config/ref-ehlo-timeout) – Network timeout for EHLO | sending | 300 | 4.0 and later | binding, binding_group, domain, global |
-| [enable](/momentum/4/listeners#listeners.enable.option) – Enable or disable a listener scope | receiving | true | 4.0 and later | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| [enable_authentication](/momentum/4/control-auth) – Whether or not to enable authentication | receiving | | 4.0 and later | control_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [enable_authorization](/momentum/4/control-authz) – Whether or not to enable authorization for console commands | receiving | | 4.0 and later | control_listener, listen, peer |
-| [enable_duravip](/momentum/4/4-cluster-config-duravip) – Whether to enable Durable MultiVIP© bindings (cluster-specific) | both | | 4.0 and later | binding, listen |
-| [enable_fbl_header_insertion](/momentum/4/config/ref-enable-fbl-header-insertion) – Enable or disable fbl header insertion | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [enable_mta_sts](/momentum/4/config/mta-sts/enable-mta-sts) – Enable or disable MTA-STS policy application | sending | | 4.8 and later | binding, binding_group, domain, global |
-| **enabled** – Whether or not the module is enabled (cluster-specific) | na | true | 4.0 and later | cluster |
-| [error](/momentum/4/config/ref-debug-flags) – Set the debug level | na | ALL | 4.0 and later | debug_flags |
-| [esmtp_listener](/momentum/4/esmtp-listener) *(scope)* – Listener for incoming SMTP connections | receiving | | 4.0 and later | global |
-| [event_loop](/momentum/4/config/ref-event-loop) – Associate a listener with an eventloop | sending | (*non-dynamic*) | 4.0 and later | ecstream_listener, esmtp_listener, listen |
-| [eventloop](/momentum/4/config/ref-eventloop) *(scope)* – Define a pool of event loops to enable multiple event loop configuration | both | (*non-dynamic*) | 4.0 and later | global |
-| [events_per_iter](/momentum/4/config/ref-events-per-iter) – Employ when using a Concurrency greater than 1 | receiving | 0 | 4.0 and later | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [exclude_vctx_conn](/momentum/4/config/ref-exclude-vctx-conn) – Exclude validation connection context keys from being journaled in the spool metadata | both | | 4.0 and later | binding, binding_group, domain, global |
-| [exclude_vctx_mess](/momentum/4/config/ref-exclude-vctx-mess) – Exclude validation message context keys from being journaled in the spool metadata | both | | 4.0 and later | binding, binding_group, domain, global |
-| [expensive_batch_assessment](/momentum/4/config/ref-expensive-batch-assessment) – Treat messages as equal even if the bodies or headers have been modified since reception | receiving | false | 4.0 and later | global |
-| [File_Mode](/momentum/4/config/ref-eccluster-conf#eccluster.conf.logs.file_mode) – File access rights in octal notation | na | 0660 | 4.0 and later | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, msgcserver_listener, xmpp_listener |
-| [file_mode](/momentum/4/config/ref-eccluster-conf#eccluster.conf.logs.logfile) – Octal representation of the file permissions (cluster logs) | na | | 4.0 and later | logs |
-| [force_fsync](/momentum/4/config/ref-force-fsync) – Ensure that data is synced to disk on reception | receiving | false | 4.0 and later | global |
-| [fully_resolve_before_smtp](/momentum/4/config/ref-fully-resolve-before-smtp) – Resolve all MX and A records before attempting delivery | sending | true | 4.0 and later | binding, binding_group, domain, global |
-| [gateway](/momentum/4/config/ref-gateway) – Configure a static SMTP route for mail | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [gcm_application_id](/momentum/3/3-push/push-gcm-gcm-application-id) – Define the package name of the Android application allowed to received notifications | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [gcm_authorization_token_id](/momentum/3/3-push/push-gcm-gcm-authorization-token-id) – Authorization token that permits sending Google push notifications | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [gcm_delay_while_idle](/momentum/3/3-push/push-gcm-gcm-delay-while-idle) – Whether or not to send the notification immediately if a device is idle | sending | false | 4.0 and later | binding, binding_group, domain, global |
-| [gcm_dry_run](/momentum/3/3-push/push-gcm-gcm-dry-run) – Test a request without actually sending a message | sending | false | 4.0 and later | binding, binding_group, domain, global |
-| [gcm_ttl](/momentum/3/3-push/push-gcm-gcm-ttl) – Default Time To Live for notifications | sending | -1 | 4.0 and later | binding, binding_group, domain, global |
-| [generate_bounces](/momentum/4/config/ref-generate-bounces) – Generate MDNs if mail is failed after reception | sending | true | 4.0 and later | binding, binding_group, domain, global |
-| [generate_bounces_for_multi_recipient_policy_rejections](/momentum/4/config/ref-generate-bounces-for-multi-recipient-policy-rejections) – Generate MDNs after reception for policy rejections | receiving | true | 4.0 and later | global, pathway, pathway_group |
-| [generate_delay_dsn](/momentum/4/config/ref-generate-delay-dsn) – Generate DSNs if mail is delayed | sending | false | 4.0 and later | binding, binding_group, domain, global |
-| [group](/momentum/4/config/ref-user) – Group identity to assume after startup | na | ecuser (*non-dynamic*) | 4.0 and later | security |
-| [growbuf_size](/momentum/4/config/ref-growbuf-size) – Size of an element in a growbuf chain | na | 16384 | 4.0 and later | global |
-| [heartbeat_start_delay](/momentum/4/modules/4-modules-cluster#option.heartbeat_start_delay) – Seconds to wait after startup before the cluster heartbeat is activated (cluster-specific) | na | 15 | 4.0 and later | cluster |
-| [heartbeats_per_sec](/momentum/4/modules/4-modules-cluster#option.heartbeats_per_sec) – How often to send a heartbeat (cluster-specific) | na | 1 | 4.0 and later | cluster |
-| [high_action](/momentum/4/modules/4-adaptive#modules.adaptive.high_action) – Action when the high threshold is met and the number of delivery attempts exceeds the adaptive_attempt_threshold | sending | "suspend" "4 hours" | 4.0 and later | adaptive_sweep_rule |
-| [high_threshold](/momentum/4/modules/4-adaptive#modules.adaptive.high_threshold) – High threshold value for the sum of the rates of the bounce codes or FBL categories | sending | 10 | 4.0 and later | adaptive_sweep_rule |
-| [host](/momentum/4/config/ref-host) *(scope)* – Configure host-specific options | sending | | 4.0 and later | binding, binding_group, global |
-| [host_failure_retry](/momentum/4/config/ref-host-failure-retry) – Time to wait before attempting a retry | sending | 120 | 4.0 and later | domain, global |
-| [hot_domains](/momentum/4/config/ref-hot-domains) - List of high-traffic domains that should be spread across maintainer threads | sending | version-dependent | 3.6 and later | global |
-| [hostname](/momentum/4/config/ref-hostname) – Override the system configured hostname | both | | 4.0 and later | global |
-| [http_basic_auth](/momentum/4/config/ref-http-basic-auth) – Define the user credentials when using basic HTTP authentication | both | | 4.0 and later | binding, binding_group, domain, global |
-| [http_host](/momentum/4/config/ref-http-host) – Define the HTTP host | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [http_listener](/momentum/3/3-rest/rest-http-listener) *(scope)* – Listener used with the REST injector | sending | | 4.0 and later | global |
-| [http_method](/momentum/4/config/ref-http-method) – Define the HTTP method to use | sending | POST | 4.0 and later | binding, binding_group, domain, global |
-| [http_uri](/momentum/4/config/ref-http-uri) – Define the HTTP URI that you wish to connect to | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [http_version](/momentum/4/config/ref-http-version) – Define the HTTP version to use | sending | 1.1 | 4.0 and later | binding, binding_group, domain, global |
-| [idle_time](/momentum/4/config/ref-idle-time) – Number of seconds of inactivity before a client is disconnected | receiving | 300 | 4.0 and later | esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [idle_timeout](/momentum/4/config/ref-idle-timeout) – Time to maintain idle outbound connections | sending | 5 | 4.0 and later | binding, binding_group, domain, global |
-| [if_check_interval](/momentum/4/modules/4-modules-cluster#option.if_check_interval) – How often to run through a maintenance cycle (cluster-specific) | na | 30 | 4.0 and later | cluster |
-| [if_down_limit](/momentum/4/modules/4-modules-cluster#option.if_down_limit) – How long to wait before deciding to bring an IP online (cluster-specific) | na | 4 | 4.0 and later | cluster |
-| [inbound_throttle_messages](/momentum/4/config/ref-inbound-throttle-messages) – Rate limit inbound mail | receiving | | 4.0 and later | global, pathway, pathway_group |
-| [info](/momentum/4/config/ref-debug-flags) – Set the debug level | na | | 4.0 and later | debug_flags |
-| [initial_hash_buckets](/momentum/4/config/ref-initial-hash-buckets) – Set the number of hash buckets used by the system | na | 32 | 4.0 and later | global |
-| [inline_transfail_processing](/momentum/4/config/ref-inline-transfail-processing) – How to handle transient failure processing | sending | 1 | 4.0 and later | global |
-| [keep_message_dicts_in_memory](/momentum/4/config/ref-keep-message-dicts-in-memory) – Preserve memory representation of metadata when memory is low | both | false (*non-dynamic*) | 4.0 and later | global |
-| [large_message_threshold](/momentum/4/config/ref-large-message-threshold) – Consider a message large when its size exceeds this amount | both | 131072 | 4.0 and later | global |
-| [legacy_message_threshold](/momentum/4/config/ref-legacy-message-threshold) – Maximum size allowed for messages being passed to legacy modules | both | 1048576 | 4.0 and later | global |
-| [license](/momentum/4/config/ref-license) – Specify an alternate license location | na | /opt/msys/ecelerity/etc (*non-dynamic*) | 4.0 and later | global |
-| [listen](/momentum/4/listeners#listeners.enable.option) *(scope)* – Specify the socket that a listener listens on | receiving | | 4.0 and later | control_listener, ecstream_listener, esmtp_listener, http_listener, msgcserver_listener, xmpp_listener |
-| **listen_backlog** – Listen backlog | receiving | 500 (*3.0*) | 4.0 and later | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [listener_sessions](/momentum/4/config/ref-listener-sessions) – Specifies the maximum number of concurrent sessions that can be established to this listener | receiving | 0 | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [lmtp_port](/momentum/4/config/ref-lmtp-port) – Configure the port for LMTP deliveries | sending | 2003 | 4.0 and later | binding, binding_group, domain, global |
-| [local_changes_file](/momentum/4/config/ref-local-changes-file) – File for writing local configuration changes | na | /opt/msys/ecelerity/etc/local_changes.conf | 4.0 and later | global |
-| [local_changes_only](/momentum/4/config/ref-local-changes-only) – Whether there is a file for writing local configuration change | na | false | 4.0 and later | global |
-| [log_active_interval](/momentum/4/modules/4-modules-cluster#option.log_active_interval) – Used to tune centralized logging (cluster-specific) | na | 1 | 4.0 and later | cluster |
-| [log_group](/momentum/4/modules/4-modules-cluster#option.log_group) – Whether or not panic log messages are broadcast over spread (cluster-specific) | na | | 4.0 and later | cluster |
-| [log_hires_timestamp](/momentum/4/config/ref-log-hires-timestamp) – Enable microsecond resolution for log timestamps | na | false | 5.3 and later | global |
-| [log_idle_interval](/momentum/4/modules/4-modules-cluster#option.log_idle_interval) – Amount of time to sleep before looking for another segment (cluster-specific) | na | 10 | 4.0 and later | cluster |
-| [log_requests_to_paniclog](/momentum/3/3-rest/rest-http-listener) – Whether to log REST injection requests | sending | false | 4.0 and later | http_listener, listen, pathway, pathway_group, peer |
-| [Logfile](/momentum/4/config/ref-eccluster-conf#eccluster.conf.logs.logfile) – Describe the full path to the log file | na | | 4.0 and later | logs |
-| [logs](/momentum/4/config/ref-ecelerity-cluster-conf) – Define the location of the cluster manager logs (cluster-specific) | na | | 4.0 and later | cluster |
-| [logs](/momentum/4/config/ref-eccluster-conf) *(scope)* – Configure centralized log files on the cluster manager | na | | 4.0 and later | global |
-| [low_action](/momentum/4/modules/4-adaptive#modules.adaptive.low_action) – Action when the high threshold is not met but the low threshold is met | sending | "throttle" "down" | 4.0 and later | adaptive_sweep_rule |
-| [low_threshold](/momentum/4/modules/4-adaptive#modules.adaptive.low_threshold) – Low threshold value for the sum of the rates of the bounce codes or FBL categories | sending | 5 | 4.0 and later | adaptive_sweep_rule |
-| [mail_queue_check_vm_interval](/momentum/4/config/ref-mail-queue-check-vm-interval) – How often to apply memory management reduction on mail queues | both | 60 | 4.0 and later | global |
-| [mailerdaemon](/momentum/4/config/ref-mailerdaemon) – Set the From: address for MDNs | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [mailfrom_timeout](/momentum/4/config/ref-mailfrom-timeout) – Timeout after MAIL FROM | sending | 300 | 4.0 and later | binding, binding_group, domain, global |
-| [maintainer_pool](/momentum/4/config/ref-maintainer-pool) – Create an eventloop for maintainers | both | (*non-dynamic*) | 4.0 and later | global |
-| [malloc2mmap_threshold](/momentum/4/config/ref-malloc-2-mmap-threshold) – Use mmap when allocations exceed this amount | na | 4092 | 4.0 and later | global |
-| [manager](/momentum/4/cluster-config-logging-complex) *(scope)* – Define managers for subclusters | na | | 4.0 and later | logs |
-| [masterdb_file](/momentum/4/config/ref-masterdb-file) – Specify an alternate path for the statistics permastore | na | /var/log/ecelerity/ecdb (*non-dynamic*) | 4.0 and later | global |
-| [match_cache_life](/momentum/4/config/ref-match-cache-life) – Set the maximum number of seconds that the match cache will be valid | na | 0 | 4.0 and later | global |
-| [match_cache_size](/momentum/4/config/ref-match-cache-size) – Size of the cache that holds the results of looking up matching scopes | na | 16384 | 4.0 and later | global |
-| [max_deliveries_per_connection](/momentum/4/config/ref-max-deliveries-per-connection) – Maximum number of messages to deliver before closing a connection | sending | 0 | 4.0 and later | binding, binding_group, domain, global |
-| [max_dns_ttl](/momentum/4/config/ref-max-dns-ttl) – Set the maximum DNS TTL | sending | 4294967295 | 4.0 and later | global |
-| [max_idle](/momentum/4/config/ref-eccluster-conf#eccluster.conf.logs.max_idle) – Maximum number of seconds a log file may be left open | na | | 4.0 and later | logs |
-| **max_message_size** – Maximum number of bytes allowed in a single message before a "resources exhausted" message is returned to the client | receiving | 0 | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [max_open](/momentum/4/config/ref-eccluster-conf#eccluster.conf.logs.max_open) – Maximum number of concurrently open log files | na | | 4.0 and later | logs |
-| [max_outbound_connections](/momentum/4/config/ref-max-outbound-connections) – Set the maximum number of outbound connections | sending | 32 | 4.0 and later | binding, binding_group, domain, global, host |
-| **max_receptions_per_connection** – Maximum number of messages allowed in a single session, after which a 421 error will be returned | receiving | 0 | 4.0 and later | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [max_recipients_per_batch](/momentum/4/config/ref-max-recipients-per-batch) – Maximum number of recipients to send in a single outbound message transaction | sending | 100 | 4.0 and later | binding, binding_group, domain, global |
-| **max_recipients_per_connection** – Maximum number of recipients allowed in a single session, after which a 421 error will be returned | sending | 0 | 4.0 and later | binding, binding_group, domain, esmtp_listener, global, listen, peer |
-| **max_recipients_per_message** – Maximum number of recipients allowed in a message, after which a 421 error will be returned | receiving | 0 | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [max_request_size](/momentum/4/config/max-request-size) – Limit the size of an HTTP request | both | | 4.0 and later | http_listener, listen, pathway, pathway_group, peer |
-| [max_resident_active_queue](/momentum/4/config/ref-max-resident-active-queue) – Threshold above which messages are not held in memory | sending | 250 | 4.0 and later | binding, binding_group, domain, global |
-| [max_resident_messages](/momentum/4/config/ref-max-resident-messages) – Threshold above which messages are not held in memory | sending | 32768 | 4.0 and later | binding, binding_group, global |
-| [max_resident_transfails](/momentum/4/config/ref-max-resident-transfails) – If the transient failure queue grows beyond this size, messages are swapped out of memory | sending | 100 | 4.0 and later | global |
-| [mta_sts_dns_cname_max_depth](/momentum/4/config/mta-sts/mta-sts-dns-cname-max-depth) – Maximum number of continous CNAME lookups allowed while doing MTA-STS DNS lookup | sending | 5 | 4.8 and later | global |
-| [mta_sts_policy_store](/momentum/4/config/mta-sts/mta-sts-policy-store) – Directory to store MTA-STS policy files | sending | /var/spool/ecelerity/mtasts (*non-dynamic*) | 4.8 and later | global |
-| [swap_out_meta_after_each_tempfail](/momentum/4/config/ref-swap-out-meta-after-each-tempfail) – If this is set to false, Momentum will only update metadata on disk after each tempfail if the message context is dirty, and the num_retires, next_attempt and message context may not be accurate if Momentum crashes | sending | true | 4.3.1 and later | global |
-| [max_retries](/momentum/4/config/ref-max-retries) – Override the system configured max_retries | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [max_retry_interval](/momentum/4/config/ref-max-retry-interval) – Maximum retry interval | sending | 43200 | 4.0 and later | binding, binding_group, domain, global |
-| [max_timed_events_per_iter](/momentum/4/config/ref-max-timed-events-per-iter) – Maximum numer of timed events per scheduler iteration | na | 1024 | 4.0 and later | global |
-| [mcmt_reception](/momentum/mobile/mobile-reference/mm-7-mcmt-reception) – Configure a listener to accept the Multi-Channel Message Type (Mobile Momentum) | both | passthru | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [mdn_failures_notify](/momentum/4/config/ref-mdn-failures-notify) – Mailbox to which to send null recipient MDNs | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [memory_goal](/momentum/4/config/ref-memory-goal) – Configure physical memory usage goal | na | 90 | 4.0 and later | global |
-| [memory_hwm](/momentum/4/config/ref-memory-hwm) – Configure physical memory usage high-water mark | na | 95 | 4.0 and later | global |
-| [message_expiration](/momentum/4/config/ref-message-expiration) – Time to live for messages | sending | 86400 | 4.0 and later | binding, binding_group, domain, global |
-| [migrate_connections_between_sibling_domains](/momentum/4/config/ref-migrate-connections-between-sibling-domains) – Optimize connections for sibling domains | both | true | 4.0 and later | global |
-| [mime_parse_large_messages_during_reception](/momentum/4/config/ref-mime-parse-large-messages-during-reception) – Configure whether large messages are parsed upon reception or just in time | receiving | true | 4.0 and later | global |
-| [min_dns_ttl](/momentum/4/config/ref-min-dns-ttl) – Override DNS TTLs smaller than this value | sending | 0 | 4.0 and later | global |
-| [mx_failures_fallback_to_a](/momentum/4/config/ref-mx-failures-fallback-to-a) – Configure the maximum number of times an MX lookup will be attempted | sending | 3 | 4.0 and later | domain, global |
-| [mx_failures_to_delay](/momentum/4/config/ref-mx-failures-to-delay) – Number of consecutive failures before a domain is auto-delayed | sending | 50 | 4.0 and later | domain, global |
-| [never_attempt_expired_messages](/momentum/4/config/ref-never-attempt-expired-messages) – Never attempt delivery of expired messages | sending | false | 4.0 and later | binding, binding_group, domain, global |
-| [never_retry](/momentum/4/config/ref-never-retry) – Whether or not to retry delivery of failed messages | sending | false | 4.0 and later | binding, binding_group, domain, global |
-| [nodeaddr](/momentum/4/modules/4-modules-cluster#option.nodeaddr) – Canonical cluster address for the node (cluster-specific) | na | | 4.0 and later | cluster |
-| [nodename](/momentum/4/modules/4-modules-cluster#option.nodename) – Override the node name that is used to canonically identify this cluster node (cluster-specific) | na | | 4.0 and later | cluster |
-| [notice](/momentum/4/config/ref-debug-flags) – Set the debug level | na | | 4.0 and later | debug_flags |
-| [only_use_best_mx_for_relay_domains](/momentum/4/config/ref-only-use-best-mx-for-relay-domains) – If this is set to true only the lowest numerical priority MXs are used | sending | true | 4.0 and later | global |
-| [open_tracking_enabled](/momentum/4/config/open-tracking-enabled) – Enable or disable open tracking for SMTP injections | boolean | false | 4.1-HF4 (beta) | esmtp_listener, listen, pathway, pathway_group, peer |
-| [open_tracking_scheme](/momentum/4/config/open-tracking-scheme) – Set the hyperlink scheme to use for open tracking links in SMTP injections | string | http | 4.1-HF4 (beta) | esmtp_listener, listen, pathway, pathway_group, peer |
-| [open_relay](/momentum/4/config/ref-open-relay) – Whether the MTA is an open relay or not | receiving | false | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [opendkim_sign](/momentum/4/config/ref-opendkim-sign) – Whether or not to enable OpenDKIM signing | sending | true (*non-dynamic*) | 4.0 and later | binding, binding_group, domain, global |
-| [outbound_throttle_connections](/momentum/4/config/ref-outbound-throttle-connections) – Limit the rate at which connections are established | sending | | 4.0 and later | binding, binding_group, domain, global, host |
-| [outbound_throttle_messages](/momentum/4/config/ref-outbound-throttle-messages) – Limit the rate at which messages are delivered | sending | | 4.0 and later | binding, binding_group, domain, global, host |
-| [pathway](/momentum/4/config/ref-pathway) *(scope)* – Grouping of inbound configuration options | receiving | | 4.0 and later | global, pathway_group |
-| [pathway](/momentum/4/config/ref-pathway) – Means for associating a Listener with a pathway scope | receiving | | 4.0 and later | ecstream_listener, esmtp_listener, listen, peer |
-| [pathway_group](/momentum/4/config/ref-pathway-group) *(scope)* – Container for pathway scopes | receiving | | 4.0 and later | global |
-| [pcre_cache_size](/momentum/4/config/ref-pcre-cache-size) – Set the maximum size of the ec_pcre_compile cache | na | 100 | 4.0 and later | global |
-| [pcre_cache_ttl](/momentum/4/config/ref-pcre-cache-ttl) – Set the maximum TTL for the ec_pcre_compile cache | na | 300 | 4.0 and later | global |
-| [peer](/momentum/4/listeners#listeners.acls) *(scope)* – Create an ACL within a specific listener | receiving | | 4.0 and later | control_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [permastore_interval](/momentum/4/config/ref-permastore-interval) – Frequency for saving various statistics | na | 300 | 4.0 and later | global |
-| [pidfile](/momentum/4/config/ref-pidfile) – Set the PID file path | na | /var/run/ecelerity.pid (*non-dynamic*) | 4.0 and later | global |
-| [pool_name](/momentum/4/esmtp-listener#esmtp_listener.config) – Associate a threadpool with a listener | receiving | | 4.0 and later | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [prefer_ipv6_mxs](/momentum/4/config/ref-prefer_ipv6_mxs) - Prefer IPv6 addresses over IPv4 addresses at a given MX priority level | sending | false | 4.0 and later | global |
-| [prohibited_hosts](/momentum/4/config/ref-prohibited-hosts) – Prevent mail from being delivered to invalid destinations | sending | | 4.0 and later | global |
-| [proxy_protocol](/momentum/4/config/ref-proxy-protocol) – Read the originating client address from a PROXY protocol header (version 1; version 2 headers since 5.4) | receiving | false | 4.2.11 and later | control_listener, ecstream_listener, esmtp_listener, http_listener, listen, peer, xmpp_listener |
-| [proxy_protocol_timeout](/momentum/4/config/ref-proxy-protocol-timeout) – How long to wait for a complete PROXY protocol header | receiving | 60 | 4.2.11 and later | control_listener, ecstream_listener, esmtp_listener, http_listener, listen, peer, xmpp_listener |
-| [rcptto_timeout](/momentum/4/config/ref-rcptto-timeout) – Timeout after RCPT TO | sending | 300 | 4.0 and later | binding, binding_group, domain, global |
-| **received_hostname** – Hostname that is placed in the received headers; these are added to the messages as it transits Momentum | receiving | | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [reconfig_message](/momentum/4/esmtp-listener-reconfig-message) – Message if the configuration has changed | receiving | 4.3.2 Reconfiguration in progress | 4.0 and later | esmtp_listener |
-| [relay_domains](/momentum/4/config/ref-relay-domains) – Configure the list of domains for which Momentum relays mail | receiving | | 4.0 and later | global, pathway, pathway_group |
-| [relay_for_sending_domains](/momentum/4/config/ref-relay-for-sending-domains) – Domains that may use the MTA as a relay | receiving | | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [relay_hosts](/momentum/4/config/ref-relay-hosts) – Configure the list of hosts for which Momentum relays mail | receiving | | 4.0 and later | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [remote_smtp_port](/momentum/4/config/ref-remote-smtp-port) – Set the port to be used for SMTP deliveries | sending | 25 | 4.0 and later | binding, binding_group, domain, global |
-| [replicate](/momentum/4/config/ref-ecelerity-cluster-conf) *(scope)* – Define the cluster replication framework (cluster-specific) | na | | 4.0 and later | cluster |
-| [require_ehlo](/momentum/4/config/ref-require-ehlo) – Reject mail from clients that do not say HELO | receiving | false | 4.0 and later | esmtp_listener, global, listen, pathway, pathway_group, peer |
-| [reserve_maintenance_interval](/momentum/4/config/ref-reserve-maintenance-interval) – How often to perform mail queue maintenance | sending | 15 | 4.0 and later | global |
-| [resolv_conf](/momentum/4/config/ref-resolv-conf) – Specify a custom resolv.conf file | sending | | 4.0 and later | global |
-| [response_transcode_pattern](/momentum/4/config/ref-response-transcode-pattern) – Regex pattern for comparison to a server response | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [response_transcode_replace](/momentum/4/config/ref-response-transcode-replace) – Replacement string for a server response | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [retry_interval](/momentum/4/config/ref-retry-interval) – Base retry interval | sending | 1200 | 4.0 and later | binding, binding_group, domain, global |
-| [rfc2821_allow_whitespace_in_envelope](/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope) – Permit trailing white space before the final CRLF | receiving | false | 4.0 and later | global, pathway, pathway_group |
-| [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules) – Allow relaxation of enforcement of the rfc2821 address rules | receiving | true | 4.0 and later | global, pathway, pathway_group |
-| [rfc2822_date_header](/momentum/4/config/ref-rfc-2822-date-header) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ifneeded | 4.0 and later | global, pathway, pathway_group |
-| [rfc2822_lone_lf_in_body](/momentum/4/config/ref-rfc-2822-lone-lf-in-body) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ignore | 4.0 and later | global, pathway, pathway_group |
-| [rfc2822_lone_lf_in_headers](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | pedantic | 4.0 and later | global, pathway, pathway_group |
-| [rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ignore | 4.0 and later | global, pathway, pathway_group |
-| [rfc2822_max_line_length_policy](/momentum/4/config/ref-rfc-2822-max-line-length-policy) – Determine how non-RFC-compliant line lengths are handled | receiving | none | 4.0 and later | global, pathway, pathway_group |
-| [rfc2822_messageid_header](/momentum/4/config/ref-rfc-2822-messageid-header) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | ifneeded | 4.0 and later | global, pathway, pathway_group |
-| [rfc2822_missing_headers](/momentum/4/config/ref-rfc-2822-missing-headers) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | reject | 4.0 and later | global, pathway, pathway_group |
-| [rfc2822_trace_headers](/momentum/4/config/ref-rfc-2822-trace-headers) – Allow relaxation of enforcement of the rfc2822 address rules | receiving | true | 4.0 and later | global, pathway, pathway_group |
-| [replicate](/momentum/4/config/ref-authorization) *(scope)* – Define a role within an authorization stanza | na | | 4.0 and later | authorization |
-| [routes](/momentum/4/config/ref-routes) – Configure message routing | sending | | 4.0 and later | domain, global |
-| [rset_timeout](/momentum/4/config/ref-rset-timeout) – Set the timeout after RSET | sending | 30 | 4.0 and later | binding, binding_group, domain, global |
-| [Schedule_File](/momentum/4/modules/curfew#modules.curfew.schedule_file) – Path to the curfew schedule file | sending | | 5.3 and later | curfew |
-| [scheduler](/momentum/4/config/ref-scheduler) – Override the default IO scheduler | na | (*non-dynamic*) | 4.0 and later | global |
-| [scope_max_outbound_connections](/momentum/4/config/ref-scope-max-outbound-connections) – Provide traffic shaping for outbound connections | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [security](/momentum/4/config/ref-security) *(scope)* – Scope for defining which permissions are retained by which user | na | (*non-dynamic*) | 4.0 and later | global |
-| [send_8bitmime](/momentum/4/config/ref-send-8-bitmime) – Enable advertising of 8BITMIME when sending mail | sending | no | 4.0 and later | binding, binding_group, domain, global |
-| [server_max_file_descriptors](/momentum/4/config/ref-server-max-file-descriptors) – Sets the maximum number of file descriptors usable by the system | na | 3000000 | 4.0 and later | global |
-| [server_max_outbound_connections](/momentum/4/config/ref-server-max-outbound-connections) – Sets the maximum number of outbound connections | sending | 20000 | 4.0 and later | binding, binding_group, global |
-| [server_reserve_outbound_connections](/momentum/4/config/ref-server-reserve-outbound-connections) – Sets the server-wide connection limit reserve | sending | 200 | 4.0 and later | global |
-| [service_sessions](/momentum/4/config/ref-service-sessions) – Specifies the maximum number of concurrent sessions that can be established to all listeners for this service (e.g., ESMTP, ECStream) | receiving | 0 | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [signing_stats](/momentum/4/config/ref-signing-stats) – Control how signing statistics are recorded | sending | all | 4.0 and later | global |
-| [siv_throttle_cache_size](/momentum/4/config/ref-siv-throttle-cache-size) – Set the maximum number of named throttles | both | 100, 1000 (*3.0.24*) | 4.0 and later | global |
-| [skip_hosts](/momentum/4/config/ref-skip-hosts) – Skip the specified host, but consider other hosts in the domain | sending | | 4.2.1.6 and later | global |
-| [smtp_extensions](/momentum/4/esmtp-listener-extensions) – Array of SMTP extensions | receiving | | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [SNMP](/momentum/4/config/ref-snmp) *(scope)* – Simple Network Management Protocol Support scope options | na | (*non-dynamic*) | 4.0 and later | global |
-| [snmp_traps](/momentum/4/config/ref-snmp) *(scope)* – Enable and configure generation of SNMP traps | na | (*non-dynamic*) | 4.0 and later | global |
-| [soft_bounce_drain_rate](/momentum/4/config/ref-soft-bounce-drain-rate) – How many soft bounces to place into the mail queues in a single scheduler iteration | sending | 100 | 4.0 and later | global |
-| [spool_mode](/momentum/4/config/ref-spool-mode) – Set the file mode for newly created spool files | na | 0640 (*non-dynamic*) | 4.0 and later | global |
-| [spoolbase](/momentum/4/config/ref-spoolbase) – Set the base directory for the spool | na | /var/spool/ecelerity (*non-dynamic*) | 4.0 and later | global |
-| [ssl_lock_method](/momentum/4/config/ssl-lock-method) – Specify the SSL lock method | na | mutex (*non-dynamic*) | 4.0 through 5.2 | global |
-| [stack_size](/momentum/4/config/ref-threadpool) – Stack space for a threadpool | na | 0 (*non-dynamic*) | 4.0 and later | threadpool |
-| [starttls_injection_policy](/momentum/4/config/starttls-injection-policy) – Protect against SMTP injections prior to TLS | receiving | reject | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [state](/momentum/4/config/ref-snmp) – Whether to enable the SNMP agent | na | 1 (*non-dynamic*) | 4.0 and later | snmp |
-| [state](/momentum/4/config/ref-snmp) – Whether to enable generation of SNMP traps | na | 0 (*non-dynamic*) | 4.0 and later | snmp_traps |
-| **static_banner** – Specifies the banner that will be displayed to the remote client upon connecting. You must include 220 as the beginning of your replacement string; e.g., 220 my.mail.server ESMTP | receiving | | 4.0 and later | esmtp_listener, listen, pathway, pathway_group, peer |
-| [supplemental_groups](/momentum/4/config/ref-supplemental-groups) – Supplemental groups to assume after startup | na | (*non-dynamic*) | 4.0 and later | security |
-| [suspend_delivery](/momentum/4/config/ref-suspend-delivery) – Prevent outbound mail delivery | sending | false | 4.0 and later | binding, binding_group, domain, global |
-| [syscontact](/momentum/4/config/ref-snmp) – Set the SNMP SysContact option value | na | (*non-dynamic*) | 4.0 and later | snmp |
-| [sysdescription](/momentum/4/config/ref-snmp) – Set the SNMP SysDescription option value | na | (*non-dynamic*) | 4.0 and later | snmp |
-| [syslocation](/momentum/4/config/ref-snmp) – Set the SNMP SysLocation option value | na | (*non-dynamic*) | 4.0 and later | snmp |
-| [tcp_buffer_size](/momentum/4/config/ref-tcp-buffer-size) – Maximum tcp buffer size for outbound connections | sending | 32768 | 4.0 and later | cluster, global |
-| [tcp_recv_buffer_size](/momentum/4/config/ref-tcp-recv-buffer-size) – Sets the TCP receive buffer size for inbound connections. When set to 0, the operating system automatically manages the buffer size. | receiving | 4096 (ESMTP_Listener), 32768 (HTTP_Listener) | 4.0 and later | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| **tcp_send_buffer_size** – Sets the TCP send buffer size. When set to 0, the operating system automatically manages the buffer size. | receiving | 4096 (ESMTP_Listener), 32768 (HTTP_Listener) | 4.0 and later | control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, xmpp_listener |
-| [threadpool](/momentum/4/config/ref-threadpool) *(scope)* – Configure thread pool specific options | na | | 4.0 and later | global |
-| [timeout](/momentum/4/control-listener#control_listener.config) – Timeout for idle control connections on Control_Listeners | receiving | 60 | 4.0 and later | control_listener |
-| [timestampformat](/momentum/4/config/ref-timestampformat) – Set the timestamp format used when logging to stderr | na | [%a %d %b %Y %H:%M:%S] | 4.0 and later | global |
-| [Timezone](/momentum/4/modules/curfew#modules.curfew.timezone) – Timezone in which curfew cron fields are interpreted | sending | UTC | 5.3 and later | curfew |
-| [tls](/momentum/4/config/ref-tls) – Determine whether to use a TLS connection for outbound mail | sending | no | 4.0 and later | binding, binding_group, domain, global |
-| [tls_allow_renegotiation](/momentum/4/config/tls-allow-renegotiation) – Determine whether to enable TLS renegotiation | receiving and sending | true | 4.0 and later | ecstream_listener, esmtp_listener, http_listener, listen, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_ca](/momentum/4/config/tls-ca) – Specify certificate authority for outbound mail | sending | | 4.0 and later | binding, binding_group, domain, global |
-| [tls_certificate](/momentum/4/config/tls-certificate) – Specify certificate to use for inbound and outbound mail | receiving and sending | | 4.0 and later | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_ciphers](/momentum/4/config/tls-ciphers) – Specify allowable ciphers for TLS inbound and outbound sessions | receiving and sending | | 4.0 and later | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tlsv13_ciphersuites](/momentum/4/config/tlsv13-ciphersuites) – Specify allowable TLSv1.3 ciphersuites for TLS inbound and outbound sessions | receiving and sending | | 4.6 and later | binding, binding_group, domain, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer |
-| [tls_client_ca](/momentum/4/config/tls-client-ca) – Specify certificate authority for inbound mail | receiving | | 4.0 and later | ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_dhparams_file](/momentum/4/config/ref-tls-dhparams-file) – Specifies DHE parameters that add per-session randomness to the encryption | both | | 4.0 and later | global |
-| [tls_ec_curve_names](/momentum/4/config/tls-ec-curve-names) – Select the elliptic curves or TLS groups used for ECDHE key exchange in inbound and outbound TLS sessions | both | | 4.2 and later | global |
-| [tls_enable_dhe_ciphers](/momentum/4/config/ref-tls-enable-dhe-ciphers) – Controls whether or not DHE ciphers are available | both | true | 4.0 and later | global |
-| [tls_engine](/momentum/4/config/tls-engine) – Specify the TLS library to use (OpenSSL or GNUTLS) | sending | openssl | 4.0 and later | global |
-| [tls_ifavailable_fallback](/momentum/4/config/tls-ifavailable-fallback) – Determine the behavior if TLS negotiation fails | sending | true | 4.1 and later | binding, binding_group, domain, global |
-| [tls_key](/momentum/4/config/tls-key) – Specify the TLS key to use for outbound mail or inbound mail | receiving and sending | | 4.0 and later | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tls_protocols](/momentum/4/config/tls-protocols) – Allowable ciphers for TLS inbound and outbound sessions | receiving and sending | | 4.1.0.2 and later | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer |
-| **tls_verified_peer_can_relay** – Verification that peer can relay | receiving | false | 4.0 and later | ecstream_listener, esmtp_listener, listen, pathway, pathway_group, peer |
-| [tls_verified_peer_is_authorized](/momentum/4/config/tls-verified-peer-is-authorized) – Mark requests that use a verified SSL Client certificate as being authorized | sending | false | 4.0 and later | http_listener, listen, pathway, peer |
-| [tls_verify](/momentum/4/config/tls-verify) – Specify how to handle the remote presented certificate | sending | no | 4.0 and later | binding, binding_group, domain, global |
-| [tls_verify_mode](/momentum/4/config/tls-verify-mode) – Determine whether a TLS certificates is required | receiving | | 4.0 and later | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer, xmpp_listener |
-| [tlsa_expire_interval](/momentum/4/config/tlsa-expire-interval) – How often to check for domains with expired DANE TLSA information | sending | 3600 | 4.8 and later | global |
-| [topology](/momentum/4/4-cluster-config-duravip) *(scope)* – Define the cluster network topology (cluster-specific) | na | | 4.0 and later | cluster |
-| [trace_smtp_mode](/momentum/4/config/ref-trace-smtp-mode) – Set the default permissions of trace files | sending | 0640 (*non-dynamic*) | 4.0 and later | global |
-| [tracking_domain](/momentum/4/config/tracking-domain) – Set the tracking domain to use for engagement tracking in SMTP injections | string | localhost:8080 | 4.1-HF4 (beta) | esmtp_listener, listen, pathway, pathway_group, peer |
-| [tracking_link_expiry](/momentum/4/config/tracking-link-expiry) – Set the expiration time, in seconds, for engagement tracking for SMTP injections | integer | 31536000 | 4.1-HF4 (beta) | esmtp_listener, listen, pathway, pathway_group, peer |
-| [transfail_drain_rate](/momentum/4/config/ref-transfail-drain-rate) – Maximum number of messages to pop off the transient failure queue in a single scheduler iteration | sending | 100 | 4.0 and later | global |
-| [transform_8bitmime_content](/momentum/4/config/ref-transform-8-bitmime-content) – Enable 8BITMIME downconversion when sending mail | sending | ifneeded (*3.1.6*) | 4.0 and later | binding, binding_group, domain, global |
-| [trap_destination](/momentum/4/config/ref-snmp#example.snmp.3) – Destination for SNMP trap | na | (*non-dynamic*) | 4.0 and later | snmp_traps |
-| [trap_interval](/momentum/4/config/ref-snmp#conf.ref.snmp.trap_interval) – Frequency of SNMP trap generation | na | 60 (*non-dynamic*) | 4.0 and later | snmp_traps |
-| [unconditional_rebind](/momentum/4/modules/4-modules-cluster#option.unconditional_rebind) – Whether the full set_binding logic is invoked or not (cluster-specific) | na | true | 4.0 and later | cluster |
-| [unlink_on_spool_in_failure](/momentum/4/config/ref-unlink-on-spool-in-failure) – Whether or not to remove malformed messages | receiving | true | 4.0 and later | global |
-| [use_iflist_cache](/momentum/4/config/ref-use-iflist-cache) – Whether or not to cache the list of interfaces configured by the system | sending | 0 (*non-dynamic*) | 4.0 and later | global |
-| [use_ipv6](/momentum/4/config/ref-use-ipv-6) – Affects the selection of IPv6 hosts in the SMTP client | sending | false | 4.0 and later | global |
-| [use_mmap](/momentum/4/config/ref-use-mmap) – Use mmap when spooling messages from disk | na | false | 4.0 and later | global |
-| [use_mta_sts](/momentum/4/config/mta-sts/use-mta-sts) – Enable MTA-STS policy fetching on a domain | sending | false | 4.8 and later | global, domain |
-| [use_sendfile](/momentum/4/config/ref-use-sendfile) – Use sendfile() when sending mail | sending | false | 4.0 and later | global |
-| **use_ssl** – Whether or not to use SSL verification | receiving | false | 4.0 and later | ecstream_listener, esmtp_listener, http_listener, listen, pathway, pathway_group, peer |
-| [user](/momentum/4/config/ref-user) – User identity to assume after startup | na | ecuser (*non-dynamic*) | 4.0 and later | security |
-| [view_balance_interval](/momentum/4/modules/4-modules-cluster#option.view_balance_interval) – How often DuraVIP™ views are subject to balancing (cluster-specific) | na | 10 | 4.0 and later | cluster |
-| [view_broadcast_interval](/momentum/4/modules/4-modules-cluster#option.view_broadcast_interval) – How often to speculatively broadcast a view announcement to the cluster (cluster-specific) | na | 0 | 4.0 and later | cluster |
-| [view_mature_time](/momentum/4/modules/4-modules-cluster#option.view_mature_time) – How long a DuraVIP™ view needs to remain unchanged before considering it "mature" (cluster-specific) | na | 5 | 4.0 and later | cluster |
-| [warning](/momentum/4/config/ref-debug-flags) – Set the debug level | na | | 4.0 and later | debug_flags |
-| [trap_interval](/momentum/4/config/ref-snmp#conf.ref.snmp.watch_interval) – Interval for watched system variables for SNMP traps | na | 10 (*non-dynamic*) | 4.0 and later | snmp_traps |
-| [watch_variables](/momentum/4/config/ref-snmp#conf.ref.snmp.watch_variables) – SNMP traps watch variables | na | (*non-dynamic*) | 4.0 and later | snmp_traps |
-| [xclient](/momentum/4/config/ref-xclient) – Use the XCLIENT extension to SMTP for outbound mail | sending | no | 4.0 and later | binding, binding_group, domain, global |
-| [xmpp_dialback_secret](/momentum/mobile/mobile-reference/mobility-xmpp-modules#mobility.xmpp.modules.xmpp_role) – Use when verifying the XMPP server dialback key (Mobile Momentum) | both | | 4.0 and later | domain |
-| [xmpp_listener](/momentum/mobile/mobile-reference/mobility-xmpp-modules#modules.xmpp.xmpp_listener) *(scope)* – The listener for incoming XMPP connections (Mobile Momentum) | receiving | | 4.0 and later | global |
-| [xmpp_role](/momentum/mobile/mobile-reference/mobility-xmpp-modules#mobility.xmpp.modules.xmpp_role) – Define whether a domain is an XMPP server or client (Mobile Momentum) | both | | 4.0 and later | domain |
diff --git a/content/momentum/4/config/click-tracking-enabled.md b/content/momentum/4/config/click-tracking-enabled.md
deleted file mode 100644
index 05c844b98..000000000
--- a/content/momentum/4/config/click-tracking-enabled.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "click_tracking_enabled"
-description: "click tracking enabled enable or disable click tracking for SMTP injections Click Tracking Enabled true false Configuration Change This option is available as of version 4 1 HF 4 When click tracking is enabled Momentum converts the target links in the top text plain and top text html part of..."
----
-
-
-## Name
-
-click_tracking_enabled — enable or disable click tracking for SMTP injections
-
-## Synopsis
-
-`Click_Tracking_Enabled = "true|false"`
-
-
-## Description
-
-**Configuration Change. ** This option is available as of version 4.1-HF4.
-
-When click tracking is enabled, Momentum converts the target links in the top text/plain and top text/html part of SMTP-injected messages into click-tracked links . When a recipient clicks the link, Momentum reports this engagement event as a click.
-
-This option can be set to the following:
-
-* `true` – Click tracking event data will be available for SMTP-injected messages.
-
-* `false` – Click tracking event data will not be available for SMTP-injected messages.
-
-The default value is `false`.
-
-The corresponding context variable is `smtpapi_click_tracking`, and the corresponding X-MSYS-API header field is `options.click_tracking` .
-
-
-## Scope
-
-`click_tracking_enabled` is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/click-tracking-scheme.md b/content/momentum/4/config/click-tracking-scheme.md
deleted file mode 100644
index 0fb2e4436..000000000
--- a/content/momentum/4/config/click-tracking-scheme.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "click_tracking_scheme"
-description: "click tracking scheme set the hyperlink scheme to use for click tracking links in SMTP injections click tracking scheme http Configuration Change This option is available as of version 4 1 HF 4 If open or click tracking is enabled this option sets the hyperlink scheme to use for click..."
----
-
-
-## Name
-
-click_tracking_scheme — set the hyperlink scheme to use for click tracking links in SMTP injections
-
-## Synopsis
-
-`click_tracking_scheme = "http"`
-
-
-## Description
-
-**Configuration Change. ** This option is available as of version 4.1-HF4.
-
-If open or click tracking is enabled, this option sets the hyperlink scheme to use for click tracking links in SMTP-injected messages.
-
-The default value is `http`.
-
-The corresponding context variable is `smtpapi_click_tracking_scheme`. There is no corresponding X-MSYS-API header field.
-
-
-## Scope
-
-`click_tracking_scheme` is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/crypto-lock-method.md b/content/momentum/4/config/crypto-lock-method.md
deleted file mode 100644
index 6c8116e25..000000000
--- a/content/momentum/4/config/crypto-lock-method.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "06/03/2026"
-title: "crypto_lock_method"
-description: "crypto lock method set the locking method used by the TLS layer Crypto Lock Method EC SSL SPINLOCK Crypto Lock Method EC SSL MUTEX Crypto Lock Method EC SSL DEFAULTLOCK This option affects how thread safe locking is performed You should not need to change the default value of this..."
----
-
-
-## Name
-
-crypto_lock_method — set the locking method used by the TLS layer
-
-> **NOTE: This option is DEPRECATED as of Momentum 5.3.0 and has no effect.** OpenSSL 1.1.1 and later (the supported range, from 1.1.1 on RHEL 8 through the 3.x series) is internally thread-safe; the `CRYPTO_set_locking_callback()`-based locking that this option configured was retired from OpenSSL itself. The option is still accepted so existing configurations continue to load, but it is ignored and logs a deprecation warning when set; remove it from `ecelerity.conf` to silence the warning. This page is retained for reference on releases prior to 5.3.0. See also [ssl_lock_method](/momentum/4/config/ssl-lock-method).
-
-## Synopsis
-
-`Crypto_Lock_Method = "EC_SSL_SPINLOCK"`
-
-`Crypto_Lock_Method = "EC_SSL_MUTEX"`
-
-`Crypto_Lock_Method = "EC_SSL_DEFAULTLOCK"`
-
-
-## Description
-
-This option affects how thread-safe locking is performed. You should not need to change the default value of this setting.
-
-The default value for option is `EC_SSL_DEFAULTLOCK`.
-
-
-## Scope
-
-`crypto_lock_method` is valid in the global scope.
diff --git a/content/momentum/4/config/enable-dane.md b/content/momentum/4/config/enable-dane.md
deleted file mode 100644
index 0765917f7..000000000
--- a/content/momentum/4/config/enable-dane.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "06/01/2024"
-title: "enable_dane"
-description: "config option to enable application of DANE TLS verification for outbound mails"
----
-
-
-## Name
-
-enable_dane — specify whether Momentum should apply DANE TLS verification for outbound emails
-
-## Synopsis
-
-`enable_dane = "true|false"`
-
-## Description
-
-This option is only effective when [dane module](/momentum/4/modules/dane) is configured and
- [use_dane](/momentum/4/config/use-dane) is `true` for a recipient domain.
-
-This option specifies whether Momentum should try to apply the DANE TLS verification rules defined
- in TLSA record when sending emails to a remote site.
-
-The default value is `true` when `use_dane` is `true` for a domain.
-
-
-## Scope
-
-`enable_dane` is valid in the binding, binding_group, domain and global scopes.
diff --git a/content/momentum/4/config/index.md b/content/momentum/4/config/index.md
deleted file mode 100644
index cfc1dca8f..000000000
--- a/content/momentum/4/config/index.md
+++ /dev/null
@@ -1,253 +0,0 @@
----
-lastUpdated: "09/20/2023"
-title: "Category File"
-type: "custom"
-name: "Configuration Options Reference"
-description: "This chapter provides the definitions of the configuration options for the configuration files that are referenced in this document Most options that are common to Momentum 4 and Momentum 3 are documented in the Momentum 3 x Reference Manual See the Chapter 66 Configuration Options Summary..."
----
-
-
-| Name | Description |
-| ---- | ----------- |
-| [adaptive_backstore_leveldb](/momentum/4/config/ref-adaptive-backstore-leveldb) | use LevelDB as the backing store for Adaptive Delivery |
-| [adaptive_backstore_riak](/momentum/4/config/ref-adaptive-backstore-riak) | set characteristics of the Riak backing store |
-| [adaptive_enabled](/momentum/4/config/ref-adaptive-enabled) | enable or disable the adaptive module |
-| [adaptive_scope](/momentum/4/config/ref-adaptive-scope) | define the scope applicable to adaptive delivery (AD) |
-| [address_metrics_cleanse_interval](/momentum/4/config/ref-address-metrics-cleanse-interval) | the interval for refreshing address metrics |
-| [address_metrics_lifetime](/momentum/4/config/ref-address-metrics-lifetime) | the TTL of address metrics |
-| [alias_schemes](/momentum/4/config/ref-alias-schemes) | enable named alias expansion schemes |
-| [allow_ip_literal](/momentum/4/config/ref-allow-ip-literal) | allow IP addresses in email addresses |
-| [allow_null_envelope_sender](/momentum/4/config/ref-allow-null-envelope-sender) | allow the null envelope sender in e-mail addresses |
-| [allow_trailing_whitespace_in_commands](/momentum/4/config/ref-allow-trailing-whitespace-in-commands) | permit trailing whitespace at the end of an SMTP command |
-| [async_bounce_rendering](/momentum/4/config/ref-async-bounce-rendering) | which thread pool to use for bounce rendering |
-| [authorization](/momentum/4/config/ref-authorization) | configure the console commands applicable to users |
-| [bind_address](/momentum/4/config/ref-bind-address) | source address for outbound connections |
-| [binding](/momentum/4/config/ref-binding) | configure binding specific options |
-| [binding_auto_replumb](/momentum/4/config/ref-binding-auto-replumb) | enable or disable the auto replumber |
-| [binding_auto_replumb_interval](/momentum/4/config/ref-binding-auto-replumb-interval) | sets the time interval to check the plumbed state of statically plumbed bindings |
-| [binding_group](/momentum/4/config/ref-binding-group) | logically group a set of bindings |
-| [blackhole](/momentum/4/config/ref-blackhole) | blackhole mail |
-| [body_timeout](/momentum/4/config/ref-body-timeout) | network timeout once the DATA phase is complete |
-| [bounce_behavior](/momentum/4/config/ref-bounce-behavior) | configure the action taken when a message is classified as a bounce |
-| [bounce_domains](/momentum/4/config/ref-bounce-domains) | configure the list of domains eligible for bounce processing by Momentum. |
-| [bounce_pattern](/momentum/4/config/ref-bounce-pattern) | configure the pattern that inbound email addresses must match in order to be considered bounces. |
-| [bounce_suppress_list](/momentum/4/config/ref-bounce-suppress-list) | configure a list of email addresses that may not be considered original recipients. |
-| [bounces_inline_original](/momentum/4/config/ref-bounces-inline-original) | how much of the original message to include in MDNs |
-| [capabilities](/momentum/4/config/ref-capabilities) | selectively retain "root" capabilities |
-| [chroot](/momentum/4/config/ref-chroot) | chroot to a secure environment |
-| [clear_mail_queue_maintainers](/momentum/4/config/ref-clear-mail-queue-maintainers) | reschedule the mail queue maintainer |
-| [click_tracking_enabled](/momentum/4/config/click-tracking-enabled) | enable or disable click tracking for SMTP injections |
-| [click_tracking_scheme](/momentum/4/config/click-tracking-scheme) | set the hyperlink scheme to use for click tracking links in SMTP injections |
-| [cluster_max_outbound_connections](/momentum/4/config/ref-cluster-max-outbound-connections) | set the maximum number of outbound connections for a scope and enforce it across a cluster |
-| [cluster_outbound_throttle_connections](/momentum/4/config/ref-cluster-outbound-throttle-connections) | limit the rate at which connections are established, and enforce it across a cluster of systems |
-| [cluster_outbound_throttle_messages](/momentum/4/config/ref-cluster-outbound-throttle-messages) | limit the rate at which messages are delivered, and enforce it across the cluster |
-| [cluster_scope_max_outbound_connections](/momentum/4/config/ref-cluster-scope-max-outbound-connections) | provide traffic shaping for outbound connections in a cluster configuration |
-| [cluster_server_max_outbound_connections](/momentum/4/config/ref-cluster-server-max-outbound-connections) | set the maximum number of outbound connections, and enforce it across a cluster |
-| [connect_timeout](/momentum/4/config/ref-connect-timeout) | set the connection timeout |
-| [connect_timeout_to_delay](/momentum/4/config/ref-connect-timeout-to-delay) | time interval before sweeping mail into the delayed queue |
-| [connection_allocation_aggressiveness](/momentum/4/config/ref-connection-allocation-aggressiveness) | tune the aggressiveness for establishing new connections to domains |
-| [context](/momentum/4/config/ref-context) | use to set arbitrary connection context key value pairs. |
-| [control_client_timeout](/momentum/4/config/ref-control-client-timeout) | network timeout for Momentum control client connections |
-| [crypto_engine](/momentum/4/config/ref-crypto-engine) | enable hardware cryptography acceleration |
-| [crypto_lock_method](/momentum/4/config/crypto-lock-method) | set the locking method used by the TLS layer |
-| [debug_flags](/momentum/4/config/ref-debug-flags) | configure debug verbosity |
-| [default_binding](/momentum/4/config/ref-default-binding) | control usage of the "default" binding |
-| [default_charset](/momentum/4/config/ref-default-charset) | control usage of the "default" character set |
-| [delay_dsn_max_retry_interval](/momentum/4/config/ref-delay-dsn-max-retry-interval) | maximum interval for sending DSNs to the sender of a message that has not yet been delivered |
-| [delay_dsn_retry_interval](/momentum/4/config/ref-delay-dsn-retry-interval) | base interval for sending DSNs to the sender of a message that has not yet been delivered |
-| [delayed_binding_domain_fuzz](/momentum/4/config/ref-delayed-binding-domain-fuzz) | length of time to spread scheduled messages over when a bulk requeue is necessary |
-| [delayed_queue_scan_interval](/momentum/4/config/ref-delayed-queue-scan-interval) | how often to call the maintainer for a domain |
-| [delivery_method](/momentum/4/config/ref-delivery-method) | set the delivery method |
-| [delivery_pool](/momentum/4/config/ref-delivery-pool) | associate a pool of event loops with email delivery to use multiple threads |
-| [delivery_response_timeout](/momentum/4/config/ref-delivery-response-timeout) | time to wait for a response to an outbound request |
-| [disable_nagle_algorithm](/momentum/4/config/ref-disable-nagle-algorithm) | disable nagle algorithm on sockets |
-| [disk_queue_drain_rate](/momentum/4/config/ref-disk-queue-drain-rate) | control the rate at which messages are spooled in on start-up |
-| [dns_cache_purge_interval](/momentum/4/config/ref-dns-cache-purge-interval) | how often the DNS response cache is scanned for stale entries |
-| [dns_expire_interval](/momentum/4/config/ref-dns-expire-interval) | how often to check for domains with expired DNS information |
-| [dns_failures_to_purge](/momentum/4/config/ref-dns-failures-to-purge) | configure the maximum number of DNS lookups |
-| [dns_fallback_to_tcp](/momentum/4/config/ref-dns-fallback-to-tcp) | whether or not to fail over to TCP in place of UDP |
-| [dns_max_udp_queries_per_port](/momentum/4/config/ref-dns-max-udp-queries-per-port) | limit the number of DNS queries sent using the same UDP source port |
-| [dns_rate_limit_enabled](/momentum/4/config/ref-dns-rate-limit) | enable or disable the DNS rate limiter |
-| [dns_rate_limit_max_queue](/momentum/4/config/ref-dns-rate-limit) | maximum number of domains the rate limiter will hold while waiting for a token |
-| [dns_rate_limit_mx_queries](/momentum/4/config/ref-dns-rate-limit) | maximum number of MX DNS queries dispatched per period |
-| [dns_rate_limit_period](/momentum/4/config/ref-dns-rate-limit) | the period, in seconds, used by the DNS rate limiter |
-| [dns_udp_rcvbuf_size](/momentum/4/config/ref-dns-udp-buffer-size) | set the size of the UDP socket receiving buffer used by DNS lookups |
-| [dns_udp_sndbuf_size](/momentum/4/config/ref-dns-udp-buffer-size) | set the size of the UDP socket sending buffer used by DNS lookups |
-| [domain_for_unqualified_recipient_addresses](/momentum/4/config/ref-domain-for-unqualified-recipient-addresses) | configure a domain which will be used to resolve delivery for unqualified addresses |
-| [domain_for_unqualified_sender_address](/momentum/4/config/ref-domain-for-unqualified-sender-address) | configure a domain which will be used to substitute for unqualified sender addresses |
-| [domain](/momentum/4/config/ref-domain) | configure domain specific options |
-| [domainkeys](/momentum/4/config/ref-domainkeys) | enable or disable domainkeys signing |
-| [drop_body_after_trans_fail](/momentum/4/config/ref-drop-body-after-trans-fail) | number of retry attempts before freeing message memory |
-| [ecstream_port](/momentum/4/config/ref-ecstream-port) | configure the port for ecstream deliveries |
-| [ecstream_timeout](/momentum/4/config/ref-ecstream-timeout) | the amount of time to wait for an ecstream connection to be established |
-| [ehlo_hostname](/momentum/4/config/ref-ehlo-hostname) | set the hostname used for EHLO in outbound mail |
-| [ehlo_timeout](/momentum/4/config/ref-ehlo-timeout) | network timeout for EHLO |
-| [enable_dane](/momentum/4/config/enable-dane) | enable application of DANE TLS verification on email delivery to a remote domain |
-| [enable_fbl_header_insertion](/momentum/4/config/ref-enable-fbl-header-insertion) | enable or disable fbl header insertion |
-| [enable_mta_sts](/momentum/4/config/mta-sts/enable-mta-sts) | enable application of MTA-STS policy on email delivery to a remote domain |
-| [event_loop](/momentum/4/config/ref-event-loop) | associate a pool of event loops within a listener scope to use multiple threads |
-| [eventloop](/momentum/4/config/ref-eventloop) | define a pool of event loops to enable multiple event loop configuration |
-| [events_per_iter](/momentum/4/config/ref-events-per-iter) | employ when using a concurrency greater than 1. |
-| [exclude_vctx_conn](/momentum/4/config/ref-exclude-vctx-conn) | exclude validation context keys from being journaled in the spool metadata. |
-| [exclude_vctx_mess](/momentum/4/config/ref-exclude-vctx-mess) | exclude validation context keys from being journaled in the spool metadata. |
-| [expensive_batch_assessment](/momentum/4/config/ref-expensive-batch-assessment) | only treat messages as different if the headers are rendered differently |
-| [force_fsync](/momentum/4/config/ref-force-fsync) | ensure that data is synced to disk on reception |
-| [fully_resolve_before_smtp](/momentum/4/config/ref-fully-resolve-before-smtp) | resolve all MX and A records before attempting delivery |
-| [gateway](/momentum/4/config/ref-gateway) | configure a static SMTP route for mail |
-| [generate_bounces](/momentum/4/config/ref-generate-bounces) | generate MDNs if mail is failed after reception |
-| [generate_bounces_for_multi_recipient_policy_rejections](/momentum/4/config/ref-generate-bounces-for-multi-recipient-policy-rejections) | generate MDNs after reception for policy rejections |
-| [generate_delay_dsn](/momentum/4/config/ref-generate-delay-dsn) | generate DSNs if mail is delayed |
-| [growbuf_size](/momentum/4/config/ref-growbuf-size) | The size of an element in a growbuf chain |
-| [host](/momentum/4/config/ref-host) | configure host specific options |
-| [hostname](/momentum/4/config/ref-hostname) | override the system configured hostname |
-| [host_failure_retry](/momentum/4/config/ref-host-failure-retry) | time to wait before attempting a retry |
-| [hot_domains](/momentum/4/config/ref-hot-domains) | list of high-traffic domains that should be spread across maintainer threads |
-| [http_basic_auth](/momentum/4/config/ref-http-basic-auth) | Define the user credentials when using basic HTTP authentication |
-| [http_host](/momentum/4/config/ref-http-host) | Define the HTTP host |
-| [http_method](/momentum/4/config/ref-http-method) | Define the HTTP method to use |
-| [http_uri](/momentum/4/config/ref-http-uri) | Define the HTTP URI that you wish to connect to |
-| [http_version](/momentum/4/config/ref-http-version) | Define the HTTP version to use |
-| [idle_timeout](/momentum/4/config/ref-idle-timeout) | time to maintain idle outbound connections |
-| [inbound_throttle_messages](/momentum/4/config/ref-inbound-throttle-messages) | rate limit inbound mail |
-| [initial_hash_buckets](/momentum/4/config/ref-initial-hash-buckets) | Set the number of hash buckets used by the system |
-| [inline_transfail_processing](/momentum/4/config/ref-inline-transfail-processing) | how to handle transient failure processing |
-| [keep_message_dicts_in_memory](/momentum/4/config/ref-keep-message-dicts-in-memory) | preserve memory representation of metadata when memory is low |
-| [large_message_threshold](/momentum/4/config/ref-large-message-threshold) | Consider a message large when its size exceeds this amount |
-| [legacy_message_threshold](/momentum/4/config/ref-legacy-message-threshold) | The maximum size allowed for messages being passed to legacy modules |
-| [license](/momentum/4/config/ref-license) | specify an alternate license location |
-| [lmtp_port](/momentum/4/config/ref-lmtp-port) | configure the port for LMTP deliveries |
-| [local_changes_file](/momentum/4/config/ref-local-changes-file) | the file for writing local configuration changes |
-| [local_changes_only](/momentum/4/config/ref-local-changes-only) | whether there is a file for writing local configuration changes |
-| [mail_queue_check_vm_interval](/momentum/4/config/ref-mail-queue-check-vm-interval) | how often to apply memory management reduction on mail queues |
-| [mailerdaemon](/momentum/4/config/ref-mailerdaemon) | set the From: address for MDNs |
-| [mailfrom_timeout](/momentum/4/config/ref-mailfrom-timeout) | timeout after MAIL FROM |
-| [maintainer_pool](/momentum/4/config/ref-maintainer-pool) | associate a pool of event loops with mail queues, DNS lookup, and module events to use multiple threads |
-| [malloc2mmap_threshold](/momentum/4/config/ref-malloc-2-mmap-threshold) | use mmap when allocations exceed this amount |
-| [masterdb_file](/momentum/4/config/ref-masterdb-file) | specify an alternate path for the statistics permastore |
-| [match_cache_life](/momentum/4/config/ref-match-cache-life) | set the maximum number of seconds that the match cache will be valid |
-| [match_cache_size](/momentum/4/config/ref-match-cache-size) | the size of the cache that holds the results of looking up matching scopes |
-| [max_deliveries_per_connection](/momentum/4/config/ref-max-deliveries-per-connection) | maximum number of messages to deliver before closing a connection |
-| [max_dns_ttl](/momentum/4/config/ref-max-dns-ttl) | set the maximum DNS TTL |
-| [max_outbound_connections](/momentum/4/config/ref-max-outbound-connections) | set the maximum number of outbound connections for a domain |
-| [max_recipients_per_batch](/momentum/4/config/ref-max-recipients-per-batch) | maximum number of recipients to send in a single outbound message transaction |
-| [max_request_size](/momentum/4/config/max-request-size) | maximum size of an HTTP request |
-| [max_resident_active_queue](/momentum/4/config/ref-max-resident-active-queue) | threshold above which messages are not held in memory |
-| [max_resident_messages](/momentum/4/config/ref-max-resident-messages) | threshold above which messages are not held in memory |
-| [max_resident_transfails](/momentum/4/config/ref-max-resident-transfails) | the threshold for swapping transient failures out of memory |
-| [swap_out_meta_after_each_tempfail](/momentum/4/config/ref-swap-out-meta-after-each-tempfail) | controls whether or not Momentum will update metadata such as num_retries, next_attempt, and message context on disk after each tempfail. |
-| [max_retries](/momentum/4/config/ref-max-retries) | override the system configured max_retries |
-| [max_retry_interval](/momentum/4/config/ref-max-retry-interval) | maximum retry interval |
-| [max_timed_events_per_iter](/momentum/4/config/ref-max-timed-events-per-iter) | the maximum numer of timed events per scheduler iteration |
-| [mdn_failures_notify](/momentum/4/config/ref-mdn-failures-notify) | mailbox to which to send null recipient MDNs |
-| [memory_goal](/momentum/4/config/ref-memory-goal) | configure physical memory usage goal |
-| [memory_hwm](/momentum/4/config/ref-memory-hwm) | configure physical memory usage high-water mark |
-| [message_expiration](/momentum/4/config/ref-message-expiration) | the time to live for messages |
-| [migrate_connections_between_sibling_domains](/momentum/4/config/ref-migrate-connections-between-sibling-domains) | optimize connections for sibling domains |
-| [mime_parse_large_messages_during_reception](/momentum/4/config/ref-mime-parse-large-messages-during-reception) | configure whether large messages are parsed upon reception or just in time. |
-| [min_dns_ttl](/momentum/4/config/ref-min-dns-ttl) | override DNS TTLs smaller than this value |
-| [mta_sts_dns_cname_max_depth](/momentum/4/config/mta-sts/mta-sts-dns-cname-max-depth) | the maximum number of continuous CNAME lookups while doing MTA-STS DNS TXT lookup |
-| [mta_sts_policy_store](/momentum/4/config/mta-sts/mta-sts-policy-store) | the directory to store MTA-STS policy files |
-| [mx_failures_fallback_to_a](/momentum/4/config/ref-mx-failures-fallback-to-a) | configure the maximum number of times an MX lookup will be attempted |
-| [mx_failures_to_delay](/momentum/4/config/ref-mx-failures-to-delay) | number of consecutive failures before a domain is auto-delayed |
-| [never_attempt_expired_messages](/momentum/4/config/ref-never-attempt-expired-messages) | Never attempt delivery of expired messages |
-| [never_retry](/momentum/4/config/ref-never-retry) | whether or not to retry delivery of failed messages |
-| [only_use_best_mx_for_relay_domains](/momentum/4/config/ref-only-use-best-mx-for-relay-domains) | If this is set to `true`, only the lowest numerical priority MXs are used when sending to domains listed in `bounce_domains` or `relay_domains`. |
-| [open_relay](/momentum/4/config/ref-open-relay) | whether the MTA is an open relay or not |
-| [open_tracking_enabled](/momentum/4/config/open-tracking-enabled) | enable or disable open tracking for SMTP injections |
-| [open_tracking_scheme](/momentum/4/config/open-tracking-scheme) | set the hyperlink scheme to use for open tracking links in SMTP injections |
-| [opendkim_sign](/momentum/4/config/ref-opendkim-sign) | whether or not to enable OpenDKIM signing |
-| [outbound_throttle_connections](/momentum/4/config/ref-outbound-throttle-connections) | limit the rate at which connections are established |
-| [outbound_throttle_messages](/momentum/4/config/ref-outbound-throttle-messages) | limit the rate at which messages are delivered |
-| [pathway](/momentum/4/config/ref-pathway) | a grouping of inbound configuration options |
-| [pathway_group](/momentum/4/config/ref-pathway-group) | a container for pathways |
-| [pcre_cache_size](/momentum/4/config/ref-pcre-cache-size) | set the maximum size of the ec_pcre_compile cache |
-| [pcre_cache_ttl](/momentum/4/config/ref-pcre-cache-ttl) | set the maximum TTL for the ec_pcre_compile cache |
-| [permastore_interval](/momentum/4/config/ref-permastore-interval) | the frequency for saving various statistics |
-| [pidfile](/momentum/4/config/ref-pidfile) | set the PID file path |
-| [prefer_ipv6_mxs](/momentum/4/config/ref-prefer_ipv6_mxs) | prefer IPv6 addresses over ipv4 at a given mx priority level |
-| [prohibited_hosts](/momentum/4/config/ref-prohibited-hosts) | prevent mail from being delivered to invalid destinations |
-| [rcptto_timeout](/momentum/4/config/ref-rcptto-timeout) | timeout after RCPT TO |
-| [relay_for_sending_domains](/momentum/4/config/ref-relay-for-sending-domains) | domains that may use the MTA as a relay. |
-| [relay_domains](/momentum/4/config/ref-relay-domains) | configure the list of domains for which Momentum relays mail |
-| [relay_hosts](/momentum/4/config/ref-relay-hosts) | configure the list of hosts for which Momentum relays mail |
-| [remote_smtp_port](/momentum/4/config/ref-remote-smtp-port) | set the port to be used for SMTP deliveries |
-| [require_ehlo](/momentum/4/config/ref-require-ehlo) | reject mail from clients that don't say HELO |
-| [reserve_maintenance_interval](/momentum/4/config/ref-reserve-maintenance-interval) | how often to perform mail queue maintenance |
-| [resolv_conf](/momentum/4/config/ref-resolv-conf) | specify a custom resolv.conf |
-| [response_transcode_pattern](/momentum/4/config/ref-response-transcode-pattern) | the regex pattern for comparison to a server response |
-| [response_transcode_replace](/momentum/4/config/ref-response-transcode-replace) | the replacement string for a server response |
-| [retry_interval](/momentum/4/config/ref-retry-interval) | base retry interval |
-| [rfc2821_allow_whitespace_in_envelope](/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope) | permit trailing whitespace before the final CRLF |
-| [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules) | Allow relaxation of enforcement of the rfc2821 address rules. |
-| [rfc2822_date_header](/momentum/4/config/ref-rfc-2822-date-header) | rfc2822 conformance |
-| [rfc2822_lone_lf_in_body](/momentum/4/config/ref-rfc-2822-lone-lf-in-body) | rfc2822 conformance |
-| [rfc2822_lone_lf_in_headers](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers) | rfc2822 conformance |
-| [rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length) | rfc2822 conformance |
-| [rfc2822_max_line_length_policy](/momentum/4/config/ref-rfc-2822-max-line-length-policy) | determine how non-RFC-compliant line lengths are handled |
-| [rfc2822_messageid_header](/momentum/4/config/ref-rfc-2822-messageid-header) | rfc2822 conformance |
-| [rfc2822_missing_headers](/momentum/4/config/ref-rfc-2822-missing-headers) | rfc2822 conformance |
-| [rfc2822_trace_headers](/momentum/4/config/ref-rfc-2822-trace-headers) | rfc2822 conformance |
-| [rollup_mx](/momentum/4/config/ref-rollup-mx) | MX Rollup enable/disable |
-| [rollup_mx_name](/momentum/4/config/ref-rollup-mx-name) | MX Rollup routing domain specification |
-| [routes](/momentum/4/config/ref-routes) | configure message routing |
-| [rset_timeout](/momentum/4/config/ref-rset-timeout) | set the timeout after RSET |
-| [scope_max_outbound_connections](/momentum/4/config/ref-scope-max-outbound-connections) | provide traffic shaping for outbound connections |
-| [scheduler](/momentum/4/config/ref-scheduler) | override the default IO scheduler |
-| [security](/momentum/4/config/ref-security) | Scope for defining which permissions are retained by which user |
-| [send_8bitmime](/momentum/4/config/ref-send-8-bitmime) | Enable advertising of 8BITMIME when sending mail |
-| [server_max_file_descriptors](/momentum/4/config/ref-server-max-file-descriptors) | sets the maximum number of file descriptors usable by the system |
-| [server_max_outbound_connections](/momentum/4/config/ref-server-max-outbound-connections) | sets the maximum number of outbound connections |
-| [server_reserve_outbound_connections](/momentum/4/config/ref-server-reserve-outbound-connections) | sets the server-wide connection limit reserve |
-| [signing_stats](/momentum/4/config/ref-signing-stats) | control how signing statistics are recorded |
-| [siv_throttle_cache_size](/momentum/4/config/ref-siv-throttle-cache-size) | set the maximum number of named throttles |
-| [skip_hosts](/momentum/4/config/ref-skip-hosts) | skip the specified host, but consider other hosts in the domain |
-| [SNMP](/momentum/4/config/ref-snmp) | Simple Network Management Protocol Support |
-| [soft_bounce_drain_rate](/momentum/4/config/ref-soft-bounce-drain-rate) | how many soft bounces to place into the mail queues in a single scheduler iteration |
-| [spool_mode](/momentum/4/config/ref-spool-mode) | set the file mode for newly created spool files |
-| [spoolbase](/momentum/4/config/ref-spoolbase) | set the base directory for the spool |
-| [ssl_lock_method](/momentum/4/config/ssl-lock-method) | the SSL lock method |
-| [starttls_injection_policy](/momentum/4/config/starttls-injection-policy) | protect against SMTP injections prior to TLS |
-| [supplemental_groups](/momentum/4/config/ref-supplemental-groups) | security: supplemental groups to assume after startup |
-| [suspend_delivery](/momentum/4/config/ref-suspend-delivery) | prevent outbound mail delivery |
-| [tcp_buffer_size](/momentum/4/config/ref-tcp-buffer-size) | maximum tcp buffer size for outbound connections |
-| [threadpool](/momentum/4/config/ref-threadpool) | configure thread pool specific options |
-| [timestampformat](/momentum/4/config/ref-timestampformat) | set the timestamp format used when logging to stderr |
-| [tls](/momentum/4/config/ref-tls) | determine whether to use TLS connection for outbound mail |
-| [tls_allow_renegotiation](/momentum/4/config/tls-allow-renegotiation) | determine whether to enable TLS renegotiation |
-| [tls_ca](/momentum/4/config/tls-ca) | certificate authority for outbound mail |
-| [tls_certificate](/momentum/4/config/tls-certificate) | certificate to use for inbound and outbound mail |
-| [tls_ciphers](/momentum/4/config/tls-ciphers) | specify allowable ciphers for TLS inbound and outbound sessions |
-| [tlsv13_ciphersuites](/momentum/4/config/tlsv13-ciphersuites) | specify allowable TLSv1.3 ciphersuites for TLS inbound and outbound sessions |
-| [tls_client_ca](/momentum/4/config/tls-client-ca) | certificate authority for inbound mail |
-| [tls_dhparams_file](/momentum/4/config/ref-tls-dhparams-file) | specifies the file of Diffie Hellman (DHE) parameters that add per-session randomness to the encryption. Default parameters are built in the product if none are specified. |
-| [tls_ec_curve_names](/momentum/4/config/tls-ec-curve-names) | select the elliptic curves or TLS groups used for ECDHE key exchange in inbound and outbound TLS sessions |
-| [tls_enable_dhe_ciphers](/momentum/4/config/ref-tls-enable-dhe-ciphers) | controls whether or not Diffie Hellman (DHE) ciphers are available |
-| [tls_engine](/momentum/4/config/tls-engine) | specify the TLS library to use |
-| [tls_ifavailable_fallback](/momentum/4/config/tls-ifavailable-fallback) | determine the behavior if TLS negotiation fails |
-| [tls_key](/momentum/4/config/tls-key) | TLS key to use for outbound or inbound mail |
-| [tls_protocols](/momentum/4/config/tls-protocols) | allowable ciphers for TLS inbound and outbound sessions |
-| [tls_verified_peer_is_authorized](/momentum/4/config/tls-verified-peer-is-authorized) | Marks requests that use a verified SSL Client certificate as being authorized |
-| [tls_verify](/momentum/4/config/tls-verify) | specify how to handle the remote presented certificate |
-| [tls_verify_mode](/momentum/4/config/tls-verify-mode) | determine whether a TLS certificate is required |
-| [tlsa_expire_interval](/momentum/4/config/tlsa-expire-interval) | how often to check for expired TLSA records |
-| [trace_smtp_mode](/momentum/4/config/ref-trace-smtp-mode) | set the default permissions of trace files |
-| [tracking_domain](/momentum/4/config/tracking-domain) | set the tracking domain to use for engagement tracking in SMTP injections |
-| [tracking_link_expiry](/momentum/4/config/tracking-link-expiry) | set the expiration time for engagement tracking for SMTP injections |
-| [transfail_drain_rate](/momentum/4/config/ref-transfail-drain-rate) | the maximum number of messages to pop off the transient failure queue in a single scheduler iteration |
-| [transform_8bitmime_content](/momentum/4/config/ref-transform-8-bitmime-content) | Enable 8BITMIME downconversion when sending mail |
-| [unlink_on_spool_in_failure](/momentum/4/config/ref-unlink-on-spool-in-failure) | Whether or not to remove malformed messages |
-| [_unsafe_spool](/momentum/4/config/ref-unsafe-spool) | allow dangerous spool semantics to be used |
-| [use_dane](/momentum/4/config/use-dane) | enable DNSSEC validation on MX/A records, if both secure, TLSA record is fetched and DNSSEC validation is done for a domain |
-| [use_iflist_cache](/momentum/4/config/ref-use-iflist-cache) | Whether or not to cache the list of network interfaces configured by the system |
-| [use_ipv6](/momentum/4/config/ref-use-ipv-6) | Affects the selection of IPv6 hosts in the SMTP client |
-| [use_mmap](/momentum/4/config/ref-use-mmap) | use mmap when spooling messages from disk |
-| [use_mta_sts](/momentum/4/config/mta-sts/use-mta-sts) | fetch MTA-STS policy for a domain |
-| [use_sendfile](/momentum/4/config/ref-use-sendfile) | use sendfile() when sending mail |
-| [user](/momentum/4/config/ref-user) | security: user identity to assume after startup |
-| [xclient](/momentum/4/config/ref-xclient) | use the xclient extension to SMTP for outbound mail |
-
-
-
-This chapter provides the definitions of the configuration options for the configuration files that are referenced in this document.
-
-Most options that are common to Momentum 4 and Momentum 3 are documented in the Momentum 3.x Reference Manual. See the [*Configuration Options Summary*](/momentum/4/config-options-summary) .
diff --git a/content/momentum/4/config/max-request-size.md b/content/momentum/4/config/max-request-size.md
deleted file mode 100644
index 020ce230c..000000000
--- a/content/momentum/4/config/max-request-size.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "08/06/2025"
-title: "max_request_size"
-description: "max request size maximum size of an HTTP request Max Request Size 50000 This option limits the size of an HTTP request If this option is not set there is no limit max request size is valid in the http listener listen pathway pathway group and peer scopes..."
----
-
-
-## Name
-
-max_request_size — maximum size of an HTTP request
-
-## Synopsis
-
-`Max_Request_Size = 50000`
-
-
-## Description
-
-This option limits the size of an HTTP request. If this option is not set, there is no limit.
-
-
-## Scope
-
-`max_request_size` is valid in the http_listener, listen, pathway, pathway_group, and peer scopes.
diff --git a/content/momentum/4/config/mta-sts/enable-mta-sts.md b/content/momentum/4/config/mta-sts/enable-mta-sts.md
deleted file mode 100644
index 8f4197d97..000000000
--- a/content/momentum/4/config/mta-sts/enable-mta-sts.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-lastUpdated: "06/01/2024"
-title: "enable_mta_sts"
-description: "config option to enable MTA-STS policy application for outbound mails"
----
-
-
-## Name
-
-enable_mta_sts — specify whether Momentum should apply MTA-STS policies for outbound emails.
-
-## Synopsis
-
-`enable_mta_sts = "true|false"`
-
-## Description
-
-This option is only effective when [use_mta_sts](/momentum/4/config/mta-sts/use-mta-sts) is `true`
-for a recipient domain.
-This option specifies whether Momentum should try to apply the retrieved MTA-STS policy when sending
-emails to a remote site. See [MTA-STS support in Momentum](/momentum/4/mta-sts) for more details.
-
-
-When this option is `true`, the MTA-STS policy mode will be considered along with the configuration
- values for [TLS](/momentum/4/config/ref-tls) and [TLS_Verify](/momentum/4/config/tls-verify).
- The more strict policy will apply:
-
-- When the MTA-STS policy mode is `enforce`, regardless of the
- values for `TLS` and `TLS_Verify`, Momentum will enforce TLS (equivalent to `TLS = required`) and
- will fail the delivery upon a failed certificate validation (equivalent to `TLS_Verify = host`).
-- When the MTA-STS policy mode is `testing`, Momentum will apply `TLS = ifavailable` (unless
- `TLS = required` is specified) and `TLS_Verify = optional` (unless `TLS_Verify = host` is
- specified).
-- When the MTA-STS policy mode is `none`, the policy will be ignored and the configuration values for
- `TLS` and `TLS_Verify` will be respected.
-
-The default value is `true` when `use_mta_sts` is `true` for a domain.
-
-
-## Scope
-
-`enable_mta_sts` is valid in the domain, binding, binding_group, and global scopes.
diff --git a/content/momentum/4/config/mta-sts/index.md b/content/momentum/4/config/mta-sts/index.md
deleted file mode 100644
index 391faeb2b..000000000
--- a/content/momentum/4/config/mta-sts/index.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-lastUpdated: "06/01/2024"
-title: "Category File"
-type: "custom"
-name: "MTA-STS Configuration Options Reference"
-description: "MTA-STS configuration Options index"
----
-
-- [use_mta_sts](/momentum/4/config/mta-sts/use-mta-sts)
-- [enable_mta_sts](/momentum/4/config/mta-sts/enable-mta-sts)
-- [mta_sts_dns_cname_max_depth](/momentum/4/config/mta-sts/mta-sts-dns-cname-max-depth)
-- [mta_sts_policy_store](/momentum/4/config/mta-sts/mta-sts-policy-store)
-
-
diff --git a/content/momentum/4/config/mta-sts/mta-sts-dns-cname-max-depth.md b/content/momentum/4/config/mta-sts/mta-sts-dns-cname-max-depth.md
deleted file mode 100644
index 29e4c8630..000000000
--- a/content/momentum/4/config/mta-sts/mta-sts-dns-cname-max-depth.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "06/01/2024"
-title: "mta_sts_dns_cname_max_depth"
-description: "config option on how many continuous CNAME lookups are allowed when doing MTA-STS TXT
-record lookup for a domain"
----
-
-
-## Name
-
-mta_sts_dns_cname_max_depth — specifies how many continuous `CNAME` lookups are allowed when doing DNS
- lookups for MTA-STS TXT record for a domain. Exceeding the configured value will be treated as a DNS
- lookup failure, which will be further treated as no MTA-STS policy available.
-
-## Synopsis
-
-`mta_sts_dns_cname_max_depth = 5`
-
-## Description
-
-Momentum supports MTA-STS policy delegation, which points the `_mta-sts` TXT record for the policy
- domain via `CNAME` (to the `_mta-sts` record maintained by the provider). Momentum's DNS lookup
- will follow the `CNAME`s. To avoid a DNS lookup loop, Momentum uses this config option to limit how
- many continuous `CNAME` lookups can happen before claiming a lookup failure.
-
-The default value is `5`.
-
-
-## Scope
-
-`mta_sts_dns_cname_max_depth` is valid in the domain and global scopes.
diff --git a/content/momentum/4/config/mta-sts/mta-sts-policy-store.md b/content/momentum/4/config/mta-sts/mta-sts-policy-store.md
deleted file mode 100644
index 188409941..000000000
--- a/content/momentum/4/config/mta-sts/mta-sts-policy-store.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-lastUpdated: "06/01/2024"
-title: "mta_sts_policy_store"
-description: "the location to store the MTA-STS policy"
----
-
-
-## Name
-
-mta_sts_policy_store — specifies the location to keep the MTA-STS policy details for the domains.
-
-## Synopsis
-
-`mta_sts_policy_store = "/var/spool/ecelerity/mtasts"`
-
-## Description
-
-Momentum stores MTA-STS policy for a domain in a file on disk, and accesses the HTTPS endpoint to refresh the
- policy once every 24 hours. This config option specifies the directory where the policies are stored
- on the disk.
-
-The default value is `/var/spool/ecelerity/mtasts`.
-
-
-## Scope
-
-`mta_sts_policy_store` is valid in the global scope.
diff --git a/content/momentum/4/config/mta-sts/use-mta-sts.md b/content/momentum/4/config/mta-sts/use-mta-sts.md
deleted file mode 100644
index ed6f1ab08..000000000
--- a/content/momentum/4/config/mta-sts/use-mta-sts.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-lastUpdated: "06/01/2024"
-title: "use_mta_sts"
-description: "config option to enable MTA-STS policy fetching for a domain"
----
-
-
-## Name
-
-use_mta_sts — specify whether Momentum should do MTA-STS policy fetching for a domain.
-
-## Synopsis
-
-`use_mta_sts = "true|false"`
-
-## Description
-
-This option specifies whether Momentum shall attempt to discover the recipient domain's MTA-STS
- policy (via a DNS TXT lookup to retrieve the MTA-STS policy ID and a HTTPS lookup to retrieve the
- MTA-STS policy).
-
-The default value is `false`.
-
-
-## Scope
-
-`use_mta_sts` is valid in the domain and global scopes.
diff --git a/content/momentum/4/config/open-tracking-enabled.md b/content/momentum/4/config/open-tracking-enabled.md
deleted file mode 100644
index 0d07dd449..000000000
--- a/content/momentum/4/config/open-tracking-enabled.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "open_tracking_enabled"
-description: "open tracking enabled enable or disable open tracking for SMTP injections Open Tracking Enabled true false Configuration Change This option is available as of version 4 1 HF 4 When open tracking is enabled Momentum inserts an open tracked image into the top text html part of SMTP injected messages..."
----
-
-
-## Name
-
-open_tracking_enabled — enable or disable open tracking for SMTP injections
-
-## Synopsis
-
-`Open_Tracking_Enabled = "true|false"`
-
-
-## Description
-
-**Configuration Change. ** This option is available as of version 4.1-HF4.
-
-When open tracking is enabled, Momentum inserts an open-tracked image into the top text/html part of SMTP-injected messages. When a recipient opens the message, Momentum reports this engagement event as an open.
-
-This option can be set to the following:
-
-* `true` – Open tracking event data will be available for SMTP-injected messages.
-
-* `false` – Open tracking event data will not be available for SMTP-injected messages.
-
-The default value is `false`.
-
-The corresponding context variable is `smtpapi_open_tracking`, and the corresponding X-MSYS-API header field is `options.open_tracking`
-
-
-## Scope
-
-`open_tracking_enabled` is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/open-tracking-scheme.md b/content/momentum/4/config/open-tracking-scheme.md
deleted file mode 100644
index 61d14e296..000000000
--- a/content/momentum/4/config/open-tracking-scheme.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "open_tracking_scheme"
-description: "open tracking scheme set the hyperlink scheme to use for open tracking links in SMTP injections open tracking scheme http Configuration Change This option is available as of version 4 1 HF 4 If open or click tracking is enabled this option sets the hyperlink scheme to use for open..."
----
-
-
-## Name
-
-open_tracking_scheme — set the hyperlink scheme to use for open tracking links in SMTP injections
-
-## Synopsis
-
-`open_tracking_scheme = "http"`
-
-
-## Description
-
-**Configuration Change. ** This option is available as of version 4.1-HF4.
-
-If open or click tracking is enabled, this option sets the hyperlink scheme to use for open tracking links in SMTP-injected messages.
-
-The default value is `http`.
-
-The corresponding context variable is `smtpapi_open_tracking_scheme`. There is no corresponding X-MSYS-API header field.
-
-
-## Scope
-
-`open_tracking_scheme` is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-adaptive-backstore-leveldb.md b/content/momentum/4/config/ref-adaptive-backstore-leveldb.md
deleted file mode 100644
index 7f8f9315a..000000000
--- a/content/momentum/4/config/ref-adaptive-backstore-leveldb.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "adaptive_backstore_leveldb"
-description: "adaptive backstore leveldb use Level DB as the backing store for Adaptive Delivery adaptive backstore leveldb path var log ecelerity adaptive leveldb Riak is the default backing store for the adaptive module In some circumstances it may not provide the required level of performance As an alternate backing store you..."
----
-
-
-## Name
-
-adaptive_backstore_leveldb — use LevelDB as the backing store for Adaptive Delivery
-
-## Synopsis
-
-`adaptive_backstore_leveldb { path = "/var/log/ecelerity/adaptive.leveldb" }`
-
-
-## Description
-
-Riak is the default backing store for the adaptive module. In some circumstances, it may not provide the required level of performance. As an alternate backing store, you can use [LevelDB](http://en.wikipedia.org/wiki/LevelDB) on Linux. To use LevelDB, add the following stanza to your `ecelerity.conf` file:
-
-```
-adaptive_backstore_leveldb {
- path = "/var/log/ecelerity/adaptive.leveldb"
-}
-```
-
-`path` identifies the LevelDB database and is the only option in the `adaptive_backstore_leveldb` scope. Default value is `/var/log/ecelerity/adaptive.leveldb`.
-
-### Warning
-
-Please consult with support before reconfiguring Momentum as described here. The LevelDB package can be used only as a replacement backing store for the adaptive module. If you are using Mobile Momentum, Riak continues to be used for message resubmission. *LevelDB is not cluster aware.*
-
-
-## Scope
-
-`adaptive_backstore_leveldb` is valid in the global scope.
-
-
-## See Also
-
-[“adaptive – Adaptive Delivery”](/momentum/4/modules/4-adaptive)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-adaptive-backstore-riak.md b/content/momentum/4/config/ref-adaptive-backstore-riak.md
deleted file mode 100644
index c44bdf155..000000000
--- a/content/momentum/4/config/ref-adaptive-backstore-riak.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "adaptive_backstore_riak"
-description: "adaptive backstore riak set characteristics of the Riak backing store Riak is the default backing store for the adaptive module Use the adaptive backstore riak scope to set the timeout and the connect timeout timeout defines the amount of time in seconds that the adaptive module will wait for a..."
----
-
-
-## Name
-
-adaptive_backstore_riak — set characteristics of the Riak backing store
-
-
-## Description
-
-Riak is the default backing store for the adaptive module. Use the `adaptive_backstore_riak` scope to set the timeout and the connect timeout:
-
-```
-adaptive_backstore_riak {
- timeout = 5
- connect_timeout = 5
-}
-```
-
-`timeout` defines the amount of time in seconds that the adaptive module will wait for a response from the adaptive backing store. The default setting is `5` seconds. `connect_timeout` defines the amount of time in seconds that the adaptive module will wait for a connection to the backing store server. This occurs in the connection phase only and also defaults to `5` seconds.
-
-### Note
-
-The options in this scope replace the `backing_store_connect_timeout` and the `backing_store_timeout` options defined in the adaptive module scope.
-
-
-## Scope
-
-`adaptive_backstore_riak` is valid in the global scope.
-
-
-## See Also
-
-[“adaptive – Adaptive Delivery”](/momentum/4/modules/4-adaptive) and [adaptive_backstore_leveldb](/momentum/4/config/ref-adaptive-backstore-leveldb)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-adaptive-enabled.md b/content/momentum/4/config/ref-adaptive-enabled.md
deleted file mode 100644
index 89c3d56a9..000000000
--- a/content/momentum/4/config/ref-adaptive-enabled.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "adaptive_enabled"
-description: "adaptive enabled enable or disable the adaptive module adaptive enabled true adaptive enabled false This directive is only valid if the Momentum adaptive module is loaded See Section 71 3 adaptive Adaptive Delivery This directive instructs Momentum to enable or disable the adaptive module globally on a specific domain binding..."
----
-
-
-## Name
-
-adaptive_enabled — enable or disable the adaptive module
-
-## Synopsis
-
-`adaptive_enabled = "true"`
-`adaptive_enabled = "false"`
-
-
-## Description
-
-### Note
-
-This directive is only valid if the Momentum adaptive module is loaded. See [“adaptive – Adaptive Delivery”](/momentum/4/modules/4-adaptive).
-
-This directive instructs Momentum to enable (or disable) the adaptive module globally, on a specific domain, binding or domain within a binding.
-
-
-## Scope
-
-adaptive_enabled is valid in the binding, binding_group, domain and global scope.
-
-
-## See Also
-
-[“adaptive – Adaptive Delivery”](/momentum/4/modules/4-adaptive)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-adaptive-scope.md b/content/momentum/4/config/ref-adaptive-scope.md
deleted file mode 100644
index 4a98486a2..000000000
--- a/content/momentum/4/config/ref-adaptive-scope.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "adaptive_scope"
-description: "adaptive scope define the scope applicable to adaptive delivery AD adaptive scope auto This directive is only valid if the Momentum adaptive module is loaded See Section 71 3 adaptive Adaptive Delivery This option controls the scope of adaptive delivery making it local to the node or cluster wide i..."
----
-
-
-## Name
-
-adaptive_scope — define the scope applicable to adaptive delivery (AD)
-
-## Synopsis
-
-`adaptive_scope = "auto"`
-
-
-## Description
-
-### Note
-
-This directive is only valid if the Momentum adaptive module is loaded. See [“adaptive – Adaptive Delivery”](/momentum/4/modules/4-adaptive).
-
-This option controls the scope of adaptive delivery, making it local to the node or cluster-wide (i.e., global). It can be be set to `local`, `global`, or `auto`. When it is set to `auto`, the scope will be global if the binding is DuraVIP™ enabled and local for all other cases.
-
-When it is set to `global` for a binding::domain:
-
-* AD is cluster-wide for that binding::domain.
-
-* The stats will be aggregated across all MTA nodes. Although stats are replicated across the cluster, rules are only evaluated for the binding::domain pair on the node where messages have been sent. This may cause a small latency for a recently transferred virtual IP that has activity in its previous host (but only if the transfer occurs while rules are being evaluated).
-
-* Any action triggered for a binding::domain, where `adaptive_scope` is global, will affect the same binding::domain across all MTA nodes.
-
-*Note*: If `adaptive_scope` evaluates to "global" for a binding::domain combination, it does not imply that it will also evaluate to the same value for that binding alone.
-
-If `adaptive_scope` evaluates to "global" for a [binding](/momentum/4/config/ref-binding) scope, the age set for that binding through the warmup action will be applied to the binding across the whole cluster.
-
-The following use cases apply to the `adaptive_scope` option:
-
-* In a standalone MTA, `adaptive_scope` is local no matter what value the option is set to.
-
-* In a cluster where more than one MTA is doing the sending and all traffic goes through a network router, you will want to set `adaptive_scope` to `global` for the relevant bindings/domains. This is because the outside world sees only one source IP.
-
-* When a binding is DuraVIP™ enabled, it may be relocated to another host. For this reason, set the scope to `global` or `auto` (which is effectively `global` for a DuraVIP™ binding).
-
-* In all other circumstances, set the scope to `local` to save CPU and network bandwidth. For example, where different IPs are used for different bindings (and the binding is not DuraVIP™), `adaptive_scope` should be local.
-
-The default value for this option is `auto`.
-
-
-## Scope
-
-adaptive_scope is valid in the binding, binding_group, domain, and global scopes.
-
-
-## See Also
-
-[“adaptive – Adaptive Delivery”](/momentum/4/modules/4-adaptive), [adaptive_enabled](/momentum/4/config/ref-adaptive-enabled)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-address-metrics-cleanse-interval.md b/content/momentum/4/config/ref-address-metrics-cleanse-interval.md
deleted file mode 100644
index a2e6ea6de..000000000
--- a/content/momentum/4/config/ref-address-metrics-cleanse-interval.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "address_metrics_cleanse_interval"
-description: "address metrics cleanse interval the interval for refreshing address metrics address metrics cleanse interval 3600 Address metrics store data on the quality of service to a particular target host from a particular binding data such as the time since the last failure and how long it takes to connect and..."
----
-
-
-## Name
-
-address_metrics_cleanse_interval — the interval for refreshing address metrics
-
-## Synopsis
-
-`address_metrics_cleanse_interval = 3600`
-
-
-## Description
-
-Address metrics store data on the quality of service to a particular target host from a particular binding; data such as the time since the last failure, and how long it takes to connect and to deliver a message. Address metrics are used to determine which of a domain's MXs to open more connections to. `address_metrics_cleanse_interval` controls how often stale entries are cleaned up. Normally this option does not need to be changed.
-
-The default value is 3600 seconds.
-
-
-## Scope
-
-address_metrics_cleanse_interval is valid in the global scope.
-
-
-## See Also
-
-[address_metrics_lifetime](/momentum/4/config/ref-address-metrics-lifetime)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-address-metrics-lifetime.md b/content/momentum/4/config/ref-address-metrics-lifetime.md
deleted file mode 100644
index eb528419b..000000000
--- a/content/momentum/4/config/ref-address-metrics-lifetime.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "address_metrics_lifetime"
-description: "address metrics lifetime the TTL of address metrics address metrics lifetime 1800 Address metrics store data on the quality of service to a particular target host from a particular binding data such as the time since the last failure and how long it takes to connect and to deliver a..."
----
-
-
-## Name
-
-address_metrics_lifetime — the TTL of address metrics
-
-## Synopsis
-
-`address_metrics_lifetime = 1800`
-
-
-## Description
-
-Address metrics store data on the quality of service to a particular target host from a particular binding; data such as the time since the last failure, and how long it takes to connect and to deliver a message. Address metrics are used to determine which of a domain's MXs to open more connections to. `address_metrics_lifetime` controls how long a set of address metrics will live after last being updated. Normally this option does not need to be changed.
-
-The default value is 1800 seconds.
-
-
-## Scope
-
-address_metrics_lifetime is valid in the global scope.
-
-
-## See Also
-
-[address_metrics_cleanse_interval](/momentum/4/config/ref-address-metrics-cleanse-interval)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-alias-schemes.md b/content/momentum/4/config/ref-alias-schemes.md
deleted file mode 100644
index 924d60d77..000000000
--- a/content/momentum/4/config/ref-alias-schemes.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "alias_schemes"
-description: "alias schemes enable named alias expansion schemes Alias Schemes ldapaliases When the alias module is loaded the Alias Schemes option can be used to configure alias expansion on a per domain basis with optional global behavior When alias expansion is run Momentum looks to see if Alias Schemes is configured..."
----
-
-
-## Name
-
-alias_schemes — enable named alias expansion schemes
-
-## Synopsis
-
-`Alias_Schemes = ("ldapaliases")`
-
-
-## Description
-
-When the alias module is loaded, the `Alias_Schemes` option can be used to configure alias expansion on a per-domain basis, with optional global behavior.
-
-When alias expansion is run, Momentum looks to see if `Alias_Schemes` is configured for the domain of the recipient, and applies the expansions from listed schemes, in the order that they are listed. Alias expansion is recursive; each recipient can expand to 0 or more recipients, with 0 expansions halting the process for a given recipient. Expansion loops are detected and prevented by the alias module.
-
-An empty `Alias_Schemes` list means that no aliasing should be performed; this can be used in situations where you want to apply aliases globally, except for a handful of domains.
-
-If a domain does not specify `Alias_Schemes`, then the value of `Alias_Schemes` is used instead.
-
-The default global value of `Alias_Schemes` is an empty list, meaning that no alias expansion will be performed.
-
-In the following example, mail for `example.com` recipients will expand aliases from an LDAP directory, mail for `localhost.localdomain` recipients will expand aliases from a local sqlite database and no alias expansion will be performed for any other domains.
-
-
-
-
-```
-Datasource "sqlitedb" {
- uri = ("sqlite:/path/to/sqlite.db")
-}
-Datasource "ldap" {
- uri = ("ldap://ldaphost")
-}
-
-alias "alias1" {
- Scheme "local" {
- cache = "sqlitedb"
- query = "SELECT expansion FROM foo WHERE address = :address"
- column = "expansion"
- map [
- address = "%{rcptto}"
- local = "%{localpart}"
- domain = "%{domain}"
- ]
- }
- Scheme "ldapaliases" {
- cache = "ldap"
- query = "ldap:///cn=$local%2Cou=mailAliases%2Cdc= ’
- example%2Cdc=com?mgrpRFC822MailMember?sub?(objectClass=mailGroup)?"
- map [
- local = "%{localpart}"
- domain = "%{domain}"
- ]
- }
-}
-
-Domain localhost.localdomain {
- Alias_Schemes = ( "local" )
-}
-
-Domain example.com {
- Alias_Schemes = ( "ldapaliases" )
-}
-```
-
-
-## Scope
-
-alias_schemes is valid in the domain, global, pathway, and pathway_group scopes.
-
-
-## See Also
-
-[“alias – Alias Expansion”](/momentum/4/modules/alias)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-allow-ip-literal.md b/content/momentum/4/config/ref-allow-ip-literal.md
deleted file mode 100644
index cb8676cea..000000000
--- a/content/momentum/4/config/ref-allow-ip-literal.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "allow_ip_literal"
-description: "allow ip literal allow IP addresses in email addresses allow ip literal true This directive instructs Momentum to respect or reject IP addresses in e mail addresses If this option is set to false email addresses such as jimsmith 192 168 0 1 will not deliver successfully as the DNS..."
----
-
-
-## Name
-
-allow_ip_literal — allow IP addresses in email addresses
-
-## Synopsis
-
-`allow_ip_literal = true`
-
-
-## Description
-
-This directive instructs Momentum to respect (or reject) IP addresses in e-mail addresses. If this option is set to `false`, email addresses such as jimsmith@[192.168.0.1] will not deliver successfully as the DNS system will not allow 192.168.0.1 to resolve to an email address. If this option is set to `true`, the DNS system will resolve any domain in IPv4 form to the email address that it represents and messages addressed to that "domain" will be attempted normally.
-
-The default value for this option is `true`.
-
-This option is checked at reception time, rather than at delivery time. Once accepted and spooled, messages with a literal IP domain will never be subject to the `allow_ip_literal` check.
-
-
-## Scope
-
-allow_ip_literal is valid in the global, listener, listen, peer, pathway, and pathway_group scopes.
-
-
-## See Also
-
-[allow_null_envelope_sender](/momentum/4/config/ref-allow-null-envelope-sender)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-allow-null-envelope-sender.md b/content/momentum/4/config/ref-allow-null-envelope-sender.md
deleted file mode 100644
index 2757db804..000000000
--- a/content/momentum/4/config/ref-allow-null-envelope-sender.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "allow_null_envelope_sender"
-description: "allow null envelope sender allow the null envelope sender in e mail addresses allow null envelope sender true This directive instructs Momentum to respect or reject null envelope senders Null envelope senders MAIL FROM are used by systems to send Delivery Status Notifications DS Ns and Message Disposition Notifications MD..."
----
-
-
-## Name
-
-allow_null_envelope_sender — allow the null envelope sender in e-mail addresses
-
-## Synopsis
-
-`allow_null_envelope_sender = true`
-
-
-## Description
-
-This directive instructs Momentum to respect (or reject) null envelope senders. Null envelope senders (`MAIL FROM:<>`) are used by systems to send Delivery Status Notifications (DSNs) and Message Disposition Notifications (MDNs). These are messages about a previous message, and are used for non-delivery reports, among other things. Note that RFC 1123 requires null sender support, and that if you disable this feature, your senders will never receive any bounce notification when their messages are undeliverable.
-
-
-## Scope
-
-allow_null_envelope_sender is valid in the global, listener, listen, peer, pathway_group, and pathway scopes.
-
-
-## See Also
-
-[allow_ip_literal](/momentum/4/config/ref-allow-ip-literal)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-allow-trailing-whitespace-in-commands.md b/content/momentum/4/config/ref-allow-trailing-whitespace-in-commands.md
deleted file mode 100644
index 35d38f4a0..000000000
--- a/content/momentum/4/config/ref-allow-trailing-whitespace-in-commands.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "allow_trailing_whitespace_in_commands"
-description: "allow trailing whitespace in commands permit trailing whitespace at the end of an SMTP command allow trailing whitespace in commands false When set to true this directive instructs Momentum to ignore white spaces found between an address and angle brackets in the RCPT TO or MAIL FROM commands for example..."
----
-
-
-## Name
-
-allow_trailing_whitespace_in_commands — permit trailing whitespace at the end of an SMTP command
-
-## Synopsis
-
-`allow_trailing_whitespace_in_commands = false`
-
-
-## Description
-
-When set to true, this directive instructs Momentum to ignore white spaces found between an address and angle brackets in the RCPT TO or MAIL FROM commands, for example `< user@company.com >`.
-
-The default value is `false`.
-
-
-## Scope
-
-`allow_trailing_whitespace_in_commands` is valid in the global, listener, listen, peer, pathway_group, and pathway scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-async-bounce-rendering.md b/content/momentum/4/config/ref-async-bounce-rendering.md
deleted file mode 100644
index 6bbb25454..000000000
--- a/content/momentum/4/config/ref-async-bounce-rendering.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "async_bounce_rendering"
-description: "async bounce rendering which thread pool to use for bounce rendering async bounce rendering true When a message fails to be delivered due to a timeout or a 5 XX error from the remote MTA Momentum generates and injects a bounce message If async bounce rendering is true this job..."
----
-
-
-## Name
-
-async_bounce_rendering — which thread pool to use for bounce rendering
-
-## Synopsis
-
-`async_bounce_rendering = true`
-
-
-## Description
-
-When a message fails to be delivered due to a timeout or a 5XX error from the remote MTA, Momentum generates and injects a bounce message. If `async_bounce_rendering` is true, this job is done in the IO thread pool, otherwise it gets done in the scheduler before returning control to the code that noted the bounce, namely the outbound SMTP or the mail queue maintainer.
-
-The default value is `true`.
-
-
-## Scope
-
-async_bounce_rendering is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-authorization.md b/content/momentum/4/config/ref-authorization.md
deleted file mode 100644
index eeec9ba10..000000000
--- a/content/momentum/4/config/ref-authorization.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "authorization"
-description: "authorization configure the console commands applicable to users Example 72 2 authorization The authorization stanza will prevent console commands from being run unless an allow entry is explicitly configured The authorization process first enumerates the roles group membership of the user by querying the authorization module configured in the listener..."
----
-
-
-## Name
-
-authorization — configure the console commands applicable to users
-
-
-## Description
-
-
-
-
-```
-Authorization {
- Role "name" {
- allow = ( "list" "of" "patterns" )
- }
- Role "othername" {
- allow = ( "list" "of" "patterns" )
- }
-}
-```
-
-The authorization stanza will prevent console commands from being run unless an "allow" entry is explicitly configured. The authorization process first enumerates the roles/group membership of the user by querying the authorization module configured in the listener configuration. Then the username and each role for the user are compared against the authorization rules; if the username or role name matches, then the "allow" rules are processed in the order that they are defined.
-
-To use the Authorization stanza, authorization must be enabled within the listener or listen scope by setting `enable_authorization` to `true`. An auth_ds module must also be configured.
-
-Each allow rule is a Perl compatible regular expression that will be matched against the command being executed. If the regular expression matches, then processing of authorization rules stops and the console command is allowed to execute. If no rules match, then the command is not allowed to execute and if account logging is enabled a log entry is written.
-
-The configuration of the autorization stanza has no effect unless `enable_authorization` is set to `true` in the control listener scope.
-
-
-## Scope
-
-authorization is valid in the global scope.
-
-
-## See Also
-
-[msys.registerAuth](/momentum/4/lua/ref-msys-register-auth), [“auth_ds – Datasource based SMTP Authentication”](/momentum/4/modules/auth-ds) and [“Control_Listener Authorization”](/momentum/4/control-authz)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-bind-address.md b/content/momentum/4/config/ref-bind-address.md
deleted file mode 100644
index d518a65bf..000000000
--- a/content/momentum/4/config/ref-bind-address.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "bind_address"
-description: "bind address source address for outbound connections Bind Address 10 0 0 1 Bind Address fe 80 a 00 1 Bind Address my local host name Configures the source address that Momentum uses for outbound connections When specified at the global scope Bind Address configures the source IP for the..."
----
-
-
-## Name
-
-bind_address — source address for outbound connections
-
-## Synopsis
-
-`Bind_Address = "10.0.0.1"`
-
-`Bind_Address = "fe80::a00:1"`
-
-`Bind_Address = "my.local.host.name"`
-
-
-## Description
-
-Configures the source address that Momentum uses for outbound connections. When specified at the global scope, Bind_Address configures the source IP for the `default` binding. When specified in a `Binding` stanza, the source IP for that binding will be configured.
-
-This option must be present in a Binding stanza to dictate which IP address that named binding represents. If bind_address is defined in the global scope it *is* the fallback value; the kernel chooses the value only if bind_address is not set in either the binding stanza or the global scope.
-
-The default for this option is `*`, which corresponds to `INADDR_ANY` (or its IPv6 equivalent); the actual address used in that case is determined by the operating system kernel based on the destination address.
-
-### Note
-
-You must restart ecelerity whenever you make a change to a
bind_address.
-
-### Warning
-
-If the delivery of a message requires contacting a machine on a private network (on a multi-homed machine) and the bind address specified is a public IP address, the internal address may be considered "unroutable" and all messages destined for that IP address will subsequently be undeliverable.
-
-
-## Scope
-
-bind_address is valid in the global, binding_group, and binding scopes.
-
-
-## See Also
-
-[binding](/momentum/4/config/ref-binding)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-binding-auto-replumb-interval.md b/content/momentum/4/config/ref-binding-auto-replumb-interval.md
deleted file mode 100644
index fa4553429..000000000
--- a/content/momentum/4/config/ref-binding-auto-replumb-interval.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "binding_auto_replumb_interval"
-description: "binding auto replumb interval sets the time interval to check the plumbed state of statically plumbed bindings binding auto replumb interval 60 This option sets the time interval in seconds to check the plumbed state of statically plumbed bindings The default value is 60 binding auto replumb interval is valid..."
----
-
-
-## Name
-
-binding_auto_replumb_interval — sets the time interval to check the plumbed state of statically plumbed bindings
-
-## Synopsis
-
-`binding_auto_replumb_interval = "60"`
-
-
-## Description
-
-This option sets the time interval in seconds to check the plumbed state of statically plumbed bindings.
-
-The default value is `60`.
-
-
-## Scope
-
-`binding_auto_replumb_interval` is valid in the global scope.
-
-
-## See Also
-
-[binding_auto_replumb](/momentum/4/config/ref-binding-auto-replumb)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-binding-auto-replumb.md b/content/momentum/4/config/ref-binding-auto-replumb.md
deleted file mode 100644
index 2892e3e7c..000000000
--- a/content/momentum/4/config/ref-binding-auto-replumb.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "binding_auto_replumb"
-description: "binding auto replumb enable or disable the auto replumber binding auto replumb enabled binding auto replumb disabled This directive instructs Momentum to enable or disable the auto replumber The replumber periodically checks the plumbed state for bindings with static addresses and replumbs any that are unplumbed Bindings can become unplumbed..."
----
-
-
-## Name
-
-binding_auto_replumb — enable or disable the auto replumber
-
-## Synopsis
-
-`binding_auto_replumb = "enabled"`
-`binding_auto_replumb = "disabled"`
-
-
-## Description
-
-This directive instructs Momentum to enable (or disable) the auto replumber. The replumber periodically checks the plumbed state for bindings with static addresses and replumbs any that are unplumbed. Bindings can become unplumbed if there are network issues or if the NIC goes down temporarily.
-
-The default value is `disabled`.
-
-
-## Scope
-
-`binding_auto_replumb` is valid in the global scope.
-
-
-## See Also
-
-[binding_auto_replumb_interval](/momentum/4/config/ref-binding-auto-replumb-interval)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-binding-group.md b/content/momentum/4/config/ref-binding-group.md
deleted file mode 100644
index 104be90c7..000000000
--- a/content/momentum/4/config/ref-binding-group.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "binding_group"
-description: "binding group logically group a set of bindings The binding group stanza is a logical container which allows you to group bindings together and conveniently collect common configuration options without repeating them throughout your configuration file The group name is an arbitrary string and holds no particular semantic value beyond..."
----
-
-
-## Name
-
-binding_group — logically group a set of bindings
-
-
-## Description
-
-```
-binding_group "example" {
- # binding_group-specific settings
-}
-```
-
-The `binding_group` stanza is a logical container, which allows you to group bindings together and conveniently collect common configuration options without repeating them throughout your configuration file. The group name is an arbitrary string and holds no particular semantic value beyond being a symbolic identifier for the group.
-
-The following is an example of a `binding_group` stanza:
-
-```
-binding_group "group1" {
- max_outbound_connections = 5
-
- binding "example" {
- bind_address = "10.10.10.10"
- }
-
- binding "example2" {
- bind_address = "10.10.10.11"
- }
-}
-```
-
-Note that you can specify the same group multiple times, which is useful if you have structured your configuration into a series of include files:
-
-```
-binding_group "group1" {
- max_outbound_connections = 5
-
- binding "example" {
- bind_address = "10.10.10.10"
- }
-}
-# Perhaps this piece is included from an auxillary configuration file
-binding_group "group1" {
- binding "example2" {
- bind_address = "10.10.10.11"
- }
-}
-```
-
-### Note
-
-Binding group names are case-sensitive and spaces are not allowed in binding group names.
-
-There is no upper limit to the number of bindings that can be in a binding group. When Adaptive Delivery is enabled, a large number of bindings in a binding group will affect performance since significant CPU time is spent checking for suspended bindings. For this reason the recommended best practice, when using the [adaptive module](/momentum/4/modules/4-adaptive), is not to exceed 32 bindings per binding group.
-
-
-## `default` Binding Group
-
-The `default` binding_group is a special case of a binding group scope. This binding group exists without being explicitly defined.
-
-However, if you wish, you can explicitly create the `default` binding_group scope and set options in that scope, as follows:
-
-```
-binding_group "default" {
- ehlo_hostname = "example.com"
-}
-```
-
-The `default` binding_group behaves in the same way as the `default` binding. For more information, see [the section called “`default` Binding”](/momentum/4/config/ref-binding#conf.ref.binding.default).
-
-
-## Scope and Valid Options
-
-`binding_group` is valid in the global scope.
-
-For a complete list of options valid in the binding_group scope, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-
-## See Also
-
-[binding](/momentum/4/config/ref-binding)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-binding.md b/content/momentum/4/config/ref-binding.md
deleted file mode 100644
index 258a086bf..000000000
--- a/content/momentum/4/config/ref-binding.md
+++ /dev/null
@@ -1,96 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "binding"
-description: "binding configure binding specific options Use the binding stanza to define per binding configuration options You can nest domain and host stanzas inside binding stanzas to create per binding per domain or per binding per host configurations For additional details see Section 15 3 Configuration Scopes and Fallback Apart from..."
----
-
-
-## Name
-
-binding — configure binding specific options
-
-
-## Description
-
-```
-binding "example" {
- # binding-specific settings
-}
-```
-
-Use the `binding` stanza to define per-binding configuration options. You can nest `domain` and `host` stanzas inside `binding` stanzas to create per-binding per-domain or per-binding per-host configurations. For additional details, see [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback).
-
-Apart from the `domain` and `host` options, the following options are commonly specified in a `binding` stanza:
-
-* [bind_address](/momentum/4/config/ref-bind-address)
-
-* [connect_timeout](/momentum/4/config/ref-connect-timeout)
-
-* [ehlo_hostname](/momentum/4/config/ref-ehlo-hostname)
-
-* [generate_bounces](/momentum/4/config/ref-generate-bounces)
-
-* [message_expiration](/momentum/4/config/ref-message-expiration)
-
-For a complete list of options valid in the binding scope, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-The following is an example of a `binding` stanza:
-
-```
-# my_binding-1 rules
-binding "my_binding-1" {
- bind_address = "10.10.10.1"
- generate_bounces = true
- ehlo_hostname = "my_name-1.com"
-}
-
-# my_binding-2 rules
-binding "my_binding-2" {
- bind_address = "10.10.10.2"
- generate_bounces = false
- ehlo_hostname = "my_name-2.com"
-}
-```
-
-In this example, the source IP for my_binding-1 mail is `10.10.10.1`, while the source IP for my_binding-2 mail is `10.10.10.2`.
-
-### Note
-
-Binding names are case-sensitive. Spaces and colons are not allowed in binding names.
-
-
-## `default` Binding
-
-The `default` binding is a special case of a binding scope. Messages that are not assigned to a specific binding will fallback to the `default` binding. Ensure that *all* messages are assigned to a binding or that this fallback binding meets your needs.
-
-You should ensure that all messages are dealt with in some way. For example, you can create a variable at the top of your script with the most general binding, then use `if` blocks to assign a message to a more specific binding. At the end of the script, if no `if` condition applies, the `else` clause would assign the message to the general binding.
-
-Even if you do not assign messages to bindings, youy can use the `default` binding to alter default behavior by setting the values of options in the `default` binding scope.
-
-The `default` binding is not explicitly defined. You can confirm its existence by issuing the ec_console command [binding summary](/momentum/4/console-commands/binding-summary). You should see `Summary Statistics For Binding default` along with any other bindings you defined.
-
-Defining and using the `default` binding is required any time you want to change the behavior of any message not assigned to some other binding. You can explicitly define the `default` binding scope and set options in that scope in your configuration file or at runtime using Lua.
-
-The following is an example configuration:
-
-```
-binding "default" {
- ehlo_hostname = "example.com"
-}
-```
-
-Setting the `default` binding from a script is done in exactly the same way as setting any other binding. For an example of setting a binding, see [msg:binding](/momentum/4/lua/ref-msg-binding).
-
-In a cluster configuration, if you wish to set an option to different values within the `default` binding scope, you can explicitly define the `default` binding in the node-specific configuration file and then define options within that scope. You can create a node-specific configuration file by manually creating it, as described in [“Adding Configuration Files”](/momentum/4/conf-overview#conf.adding.configuration.files).
-
-
-## Scope and Valid Options
-
-`binding` is valid in the global scope and in the binding_group scope.
-
-For a complete list of options valid in the binding scope, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-
-## See Also
-
-[binding_group](/momentum/4/config/ref-binding-group), [domain](/momentum/4/config/ref-domain), [host](/momentum/4/config/ref-host)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-blackhole.md b/content/momentum/4/config/ref-blackhole.md
deleted file mode 100644
index c532511eb..000000000
--- a/content/momentum/4/config/ref-blackhole.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "blackhole"
-description: "blackhole blackhole mail Blackhole false Blackhole true Blackhole inline Blackhole internal This option may be specified globally or inside a domain binding group or binding stanza If specified in the domain scope Momentum immediately fails all messages queued for that domain Likewise if it is specified in the binding or..."
----
-
-
-## Name
-
-blackhole — blackhole mail
-
-## Synopsis
-
-`Blackhole = "false"`
-
-`Blackhole = "true"`
-
-`Blackhole = "inline"`
-
-`Blackhole = "internal"`
-
-
-## Description
-
-This option may be specified globally or inside a `domain`, `binding_group` or `binding` stanza. If specified in the domain scope, Momentum immediately fails all messages queued for that domain. Likewise, if it is specified in the binding or binding_group scope. If `Generate_Bounces` is true, then a bounce message will be generated for each message failed.
-
-If this option is set to `inline`, messages are failed permanently during the SMTP transaction (upon reception), immediately after receiving the RCPT TO command.
-
-If `internal` is specified, the message is accepted and internally dropped. The normal message failure operations such as logging, still take place.
-
-The default value for this option is `false`. Specifying `true` is equivalent to specifying `inline`.
-
-
-## Scope
-
-Blackhole is valid in the binding, binding_group, domain and global scopes.
-
-
-## See Also
-
-[bounce_behavior](/momentum/4/config/ref-bounce-behavior), [generate_bounces](/momentum/4/config/ref-generate-bounces)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-body-timeout.md b/content/momentum/4/config/ref-body-timeout.md
deleted file mode 100644
index e24076575..000000000
--- a/content/momentum/4/config/ref-body-timeout.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "body_timeout"
-description: "body timeout network timeout once the DATA phase is complete body timeout 600 The amount of time in seconds to wait for a response once the DATA phase has been terminated by a CRLF CRLF This timeout is relatively long because this is the only phase of transmission which involves..."
----
-
-
-## Name
-
-body_timeout — network timeout once the DATA phase is complete
-
-## Synopsis
-
-`body_timeout = 600`
-
-
-## Description
-
-The amount of time in seconds to wait for a response once the `DATA` phase has been terminated by a `CRLF.CRLF`. This timeout is relatively long because this is the only phase of transmission which involves significant network transmission. This option applies to outbound mail only.
-
-The default value is `600`.
-
-
-## Scope
-
-body_timeout is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-bounce-behavior.md b/content/momentum/4/config/ref-bounce-behavior.md
deleted file mode 100644
index e30e4aa58..000000000
--- a/content/momentum/4/config/ref-bounce-behavior.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "bounce_behavior"
-description: "bounce behavior configure the action taken when a message is classified as a bounce bounce behavior pass bounce behavior blackhole When an out of band bounce message is received by the server and satisfies both the bounce domains and bounce pattern configuration settings it will either be allowed to pass..."
----
-
-
-## Name
-
-bounce_behavior — configure the action taken when a message is classified as a bounce
-
-## Synopsis
-
-`bounce_behavior = "pass"`
-
-`bounce_behavior = "blackhole"`
-
-
-## Description
-
-When an *out-of-band* bounce message is received by the server and satisfies both the `bounce_domains` and `bounce_pattern` configuration settings, it will either be allowed to pass through for traditional message routing or internally disposed of. Note that this configuration option does not apply to in-band bounces.
-
-The default behavior is to pass the message through into the normal message routing process. However, Momentum can be told that such messages should be internally disposed of in a manner similar to the `blackhole = internal` configuration setting.
-
-As an example, suppose you have out-of-band bounces destined for `bounces.abc.com` and `bounces.xyz.com`. You wish to log bounces for `bounces.abc.com` but not those for `bounces.xyz.com`. To do this you can use the following configuration:
-
-```
-generate_bounces = "true"
-bounce_behavior = "pass"
-
-domain "bounces.abc.com" {
- routes = ( "smtp://10.2.3.4" )
-}
-domain "bounces.xyz.com" {
- bounce_behavior = "blackhole"
-}
-```
-
-Bounces for Domain "bounces.xyz.com" will be blackholed because `bounce_behavior` is set to `blackhole` in the Domain "bounces.xyz.com" scope whereas Domain "bounces.abc.com" inherits the value of `bounce_behavior` defined in the global scope.
-
-
-## Scope
-
-`bounce_behavior` is valid in the domain and global scopes.
-
-
-## See Also
-
-[blackhole](/momentum/4/config/ref-blackhole), [bounce_domains](/momentum/4/config/ref-bounce-domains), [bounce_pattern](/momentum/4/config/ref-bounce-pattern), [generate_bounces](/momentum/4/config/ref-generate-bounces) and [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/4/modules/bounce-logger)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-bounce-domains.md b/content/momentum/4/config/ref-bounce-domains.md
deleted file mode 100644
index 62bbd6e74..000000000
--- a/content/momentum/4/config/ref-bounce-domains.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "bounce_domains"
-description: "bounce domains configure the list of domains eligible for bounce processing by Momentum Bounce Domains example com example net When configured as an inbound mail relay it is necessary to set this option to have mail delivery notifications be reported as bounces Momentum will treat the listed domains as relay..."
----
-
-
-## Name
-
-bounce_domains — configure the list of domains eligible for bounce processing by Momentum.
-
-## Synopsis
-
-`Bounce_Domains = ("*.example.com" "example.net")`
-
-
-## Description
-
-When configured as an inbound mail relay, it is necessary to set this option to have mail delivery notifications be reported as bounces. Momentum will treat the listed domains as relay domains in that it will accept mail destined for them and offer them up to internal bounce classification systems and/or loggers. This option can be further qualified with the `Bounce_Pattern` configuration setting and the ultimate behavior of bounce handling is dictated by the the `Bounce_Behavior` configuration setting.
-
-With the `Bounce_Domains` option, you may specify a list of domains and left-globbed domains for which the instance will process as possible bounces. Left-globbed domains are of the form `*fixed.ending`. `*.omniti.com` would **not** match omniti.com (as the dot is required), but would match test.omniti.com, mail.omniti.com, foo.omniti.com, etc. `*omniti.com` would match omniti.com. However, it would also match badomniti.com, which is usually undesirable, so in most cases the asterisk should be followed by a period.
-
-To accept mail for the domain example.com and all subdomains under it, one would specify
-
-`Bounce_Domains = ( "example.com" "*.example.com" )`
-## Scope
-
-bounce_domains is valid in the global, pathway_group and pathway scopes.
-
-
-## See Also
-
-[bounce_pattern](/momentum/4/config/ref-bounce-pattern), [bounce_behavior](/momentum/4/config/ref-bounce-behavior), [bounce_suppress_list](/momentum/4/config/ref-bounce-suppress-list), and [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/4/modules/bounce-logger)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-bounce-pattern.md b/content/momentum/4/config/ref-bounce-pattern.md
deleted file mode 100644
index 71c523ecf..000000000
--- a/content/momentum/4/config/ref-bounce-pattern.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "bounce_pattern"
-description: "bounce pattern configure the pattern that inbound email addresses must match in order to be considered bounces Bounce Pattern Perl compatible regular expression When a message passed through the server bounces due to an in band SMTP failure or is received out of band as a notification of failed delivery..."
----
-
-
-## Name
-
-bounce_pattern — configure the pattern that inbound email addresses must match in order to be considered bounces.
-
-## Synopsis
-
-`Bounce_Pattern = "Perl-compatible regular expression"`
-
-
-## Description
-
-When a message passed through the server bounces due to an in-band SMTP failure or is received out-of-band as a notification of failed delivery, this option will qualify the "original sending" email address as suitable for bounce classification and processing. For in-band bounces, the "original sending" email address is the envelope sender. For out-of-band delivery failures the "original sending" address is the envelope recipient. The ultimate behavior of bounce handling is dictated by the the `Bounce_Behavior` configuration setting.
-
-If you leave the `Bounce_Pattern` setting unconfigured, then any mail to any of the `Bounce_Domains` will be considered a bounce, and processed as such.
-
-To treat all mails originally sent from an email address like bounces-####-###@bounces.example.com as eligible for bounce processing, you would specify:
-
-```
-Bounce_Domains = ( bounces.example.com )
-Bounce_Pattern = "^bounces-\d+-\d+@"
-```
-
-## Scope
-
-bounce_pattern is valid in the domain and global scopes.
-
-
-## See Also
-
-[bounce_domains](/momentum/4/config/ref-bounce-domains), [bounce_behavior](/momentum/4/config/ref-bounce-behavior), [bounce_suppress_list](/momentum/4/config/ref-bounce-suppress-list), and [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/4/modules/bounce-logger)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-bounce-suppress-list.md b/content/momentum/4/config/ref-bounce-suppress-list.md
deleted file mode 100644
index f6247853a..000000000
--- a/content/momentum/4/config/ref-bounce-suppress-list.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "bounce_suppress_list"
-description: "bounce suppress list configure a list of email addresses that may not be considered original recipients bounce suppress list comma separated list of email addresses When a Message Delivery Notification MDN is received this option will suppress certain addresses from being identified as the purported original sender An MDN is..."
----
-
-
-## Name
-
-bounce_suppress_list — configure a list of email addresses that may not be considered original recipients.
-
-## Synopsis
-
-`bounce_suppress_list = "comma-separated list of email addresses"`
-
-
-## Description
-
-When a Message Delivery Notification (MDN) is received, this option will suppress certain addresses from being identified as the purported original sender.
-
-An MDN is an out-of-band notification of delivery failure. Momentum's out-of-band bounce processing capability includes an algorithm which attempts to extract the original recipient from the MDN. You can use the `Bounce_Suppress_List` option to improve the accuracy of this algorithm by excluding addresses and/or domains that you know could not have been the original recipient.
-
-To disqualify an email address like `bounces@bounces.example.com` from being considered a potential original recipient, you would specify:
-
-```
-bounce_domains = ( bounces.example.com )
-bounce_suppress_list = "bounces@bounces.example.com"
-```
-
-You can also specify domains that you would like to disqualify, as shown below. Multiple addresses can be specified by using a comma separated list.
-
-```
-bounce_domains = ( bounces.example.com )
-bounce_suppress_list = "bounces@bounces.example.com,@bounces.example.org"
-```
-
-## Scope
-
-`bounce_suppress_list` is valid in the global scope.
-
-
-## See Also
-
-[bounce_domains](/momentum/4/config/ref-bounce-domains), [bounce_pattern](/momentum/4/config/ref-bounce-pattern), [bounce_behavior](/momentum/4/config/ref-bounce-behavior), and [“bounce_logger – Momentum-Style Bounce Logging”](/momentum/4/modules/bounce-logger)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-bounces-inline-original.md b/content/momentum/4/config/ref-bounces-inline-original.md
deleted file mode 100644
index 54c25867a..000000000
--- a/content/momentum/4/config/ref-bounces-inline-original.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "bounces_inline_original"
-description: "bounces inline original how much of the original message to include in MD Ns bounces inline original headers bounces inline original none bounces inline original all If the system has been configured to generate bounce messages for failed deliveries the bounce message will start with a brief description of the..."
----
-
-
-## Name
-
-bounces_inline_original — how much of the original message to include in MDNs
-
-## Synopsis
-
-`bounces_inline_original = "headers"`
-
-`bounces_inline_original = "none"`
-
-`bounces_inline_original = "all"`
-
-
-## Description
-
-If the system has been configured to generate bounce messages for failed deliveries, the bounce message will start with a brief description of the error followed by some information about the original message.
-
-The parameters control which, if any, parts of the original message are included in the bounce message.
-
-
-
-- none
-
--
-
-causes the original message to be omitted from the bounce message.
-
-
-
-- headers
-
--
-
-causes only the headers of the original message to be appended to the bounce message.
-
-
-
-- all
-
--
-
-causes the entire original message, including headers, to be appended to the bounce message.
-
-
-
-
-
-The default value is `headers`.
-
-
-## Scope
-
-bounces_inline_original is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-capabilities.md b/content/momentum/4/config/ref-capabilities.md
deleted file mode 100644
index 0a1bb1ced..000000000
--- a/content/momentum/4/config/ref-capabilities.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "capabilities"
-description: "capabilities selectively retain root capabilities Security capabilities linux capability set It is generally agreed that running with root privileges is dangerous for Internet servers As such Linux exposes a capabilities system that allows a non privileged user to retain certain root privileges The capability system makes this possible The list..."
----
-
-
-## Name
-
-capabilities — selectively retain "root" capabilities
-
-## Synopsis
-
-`Security { capabilities = "linux capability set" }`
-
-
-## Description
-
-It is generally agreed that running with "root privileges" is dangerous for Internet servers. As such, Linux exposes a "capabilities" system that allows a non-privileged user to retain certain root privileges. The capability system makes this possible.
-
-The list of possible capabilities for Linux may vary depending on your Linux distribution, but documentation is found in the `capabilities` manual page. We use the `cap_from_text` library function to process the Linux capabilities string, so we will accept any capability supported by the operating system. The capability adjustment is applied via the `cap_set_proc` library function. If no capabilities string is specified, no privileges are retained; this is the default.
-
-The following is an example of using the Capabilities option in a single-node configuration:
-
-
-
-
-```
-Security {
- user = ecuser
- group = ecuser
- # Allow binding to privileged ports without requiring a process restart
- Capabilities = "cap_net_bind_service+ep"
-}
-```
-
-The following is an example of using the Capabilities option on a cluster node:
-
-
-
-
-```
-Security {
- user = ecuser
- group = ecuser
- Capabilities = "cap_net_admin+ep cap_net_bind_service+ep cap_net_raw+ep cap_sys_resource+ep"
-}
-```
-
-### Note
-
-The capabilities in this example make it possible to use DuraVIP™ bindings in a cluster when running as the user "ecuser".
-
-The DuraVIP™ feature of Momentum requires higher privileges than usual in order to manipulate the network interfaces on the machine; rather than running with all possible privileges, you can configure Capabilities to specify the subset of privileges that are required. During initialization, Momentum will adjust the process privileges as you specify, and this typically results in a process running at a lower privilege level that cannot later increase its privilege level.
-
-### Note
-
-Changing the value of options in the `security` scope at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-
-## Scope
-
-`capabilities` is valid in the security scope.
-
-
-## See Also
-
-[security](/momentum/4/config/ref-security), [user](/momentum/4/config/ref-user), [chroot](/momentum/4/config/ref-chroot), and [supplemental_groups](/momentum/4/config/ref-supplemental-groups)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-chroot.md b/content/momentum/4/config/ref-chroot.md
deleted file mode 100644
index 923295959..000000000
--- a/content/momentum/4/config/ref-chroot.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "chroot"
-description: "chroot chroot to a secure environment Security chroot chroot dir This security feature invokes the underlying operating system's chroot call to place Momentum in an alternate root directory This can be used to limit the portions of the file system that are available to Momentum and can be an added..."
----
-
-
-## Name
-
-chroot — chroot to a secure environment
-
-## Synopsis
-
-`Security { chroot = "/chroot/dir" }`
-
-
-## Description
-
-This security feature invokes the underlying operating system's `chroot` call to place Momentum in an alternate root directory. This can be used to limit the portions of the file system that are available to Momentum and can be an added protection should the instance be compromised.
-
-The default value for this option is to use no chroot.
-
-### Note
-
-Changing the value of options in the `security` scope at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-
-## Scope
-
-chroot is valid in the security scope.
-
-
-## See Also
-
-[security](/momentum/4/config/ref-security), [capabilities](/momentum/4/config/ref-capabilities), [user](/momentum/4/config/ref-user), and [supplemental_groups](/momentum/4/config/ref-supplemental-groups)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-clear-mail-queue-maintainers.md b/content/momentum/4/config/ref-clear-mail-queue-maintainers.md
deleted file mode 100644
index 1c4c1aa30..000000000
--- a/content/momentum/4/config/ref-clear-mail-queue-maintainers.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "clear_mail_queue_maintainers"
-description: "clear mail queue maintainers reschedule the mail queue maintainer clear mail queue maintainers true clear mail queue maintainers enables you to remove and reschedule events in the mail queue maintainer This prevents you from ending up with redundant events scheduled for a given domain which could potentially cause abnormally high..."
----
-
-
-## Name
-
-clear_mail_queue_maintainers — reschedule the mail queue maintainer
-
-## Synopsis
-
-`clear_mail_queue_maintainers = true`
-
-
-## Description
-
-`clear_mail_queue_maintainers` enables you to remove and reschedule events in the mail queue maintainer. This prevents you from ending up with redundant events scheduled for a given domain, which could potentially cause abnormally high memory usage.
-
-The default value is `true`.
-
-
-## Scope
-
-This option is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-cluster-max-outbound-connections.md b/content/momentum/4/config/ref-cluster-max-outbound-connections.md
deleted file mode 100644
index da0a86375..000000000
--- a/content/momentum/4/config/ref-cluster-max-outbound-connections.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "cluster_max_outbound_connections"
-description: "cluster max outbound connections set the maximum number of outbound connections for a scope and enforce it across a cluster Cluster Max Outbound Connections 128 This will limit the number of outbound connections across the cluster to an individual binding to the specified value It can also be set at..."
----
-
-
-## Name
-
-cluster_max_outbound_connections — set the maximum number of outbound connections for a scope and enforce it across a cluster
-
-## Synopsis
-
-`Cluster_Max_Outbound_Connections = 128`
-
-
-## Description
-
-This will limit the number of outbound connections across the cluster to an individual binding to the specified value. It can also be set at a global level, which enforces the limit on every domain in the cluster. The global value can be overridden by setting it in a `Binding` stanza. Furthermore, this option can be used in a `Host` stanza to limit the connections to a particular MX as shown in [the section called “Scope”](/momentum/4/config/ref-cluster-max-outbound-connections#conf.ref.cluster_max_outbound_connections.scope). *Note*: When used in the Host scope, `Cluster_Max_Outbound_Connections` limits the number of connections **to** the particular MX.
-
-The default value is `-1`, which means that an unlimited number of connections are allowed.
-
-### Note
-
-When this option is used in scopes other than Host, the cluster module must have the outbound_domains parameter configured as defined in [“Replication Configurations”](/momentum/4/4-cluster-config-replication#cluster.replication.features).
-
-
-## Scope
-
-cluster_max_outbound_connections is valid in the binding, domain, global, and host scopes.
-
-### Note
-
-This option is not valid when defined in a binding contained within a binding_group.
-
-When used within a Host scope, a limit on the number of connections to a particular MX is enforced. The Host should be listed exactly as it exists in the DNS MX record. (Do not specify an equivalent IP address or hostname). For example, the console can be used to obtain the MX records for a given domain, and then a Host stanza can be written to limit connections to a particular MX.
-
-```
-16:33:51 ecelerity(/tmp/2025)> dig messagesystems.com
-submitted
-16:34:01 ecelerity(/tmp/2025)> domain messagesystems.com
-Domain 'messagesystems.com' has 1 MXs and a TTL of 86394 seconds
- [10 edge.omniti.com. TTL:594]
-```
-
-This domain has only one MX record (edge.omniti.com). A Host stanza to limit connections to it would look like this:
-
-```
-Host edge.omniti.com {
- cluster_max_outbound_connections = 2
-}
-```
-
-`cluster_max_outbound_connections` is one of only two options valid in the host scope and is *not* valid in the binding_group scope. The value that this option assumes, in order of decreasing precedence, is as follows:
-
-1. binding::host
-
-2. host
-
-3. binding::domain
-
-4. binding
-
-5. domain
-
-6. global
-
-
-## See Also
-
-[max_outbound_connections](/momentum/4/config/ref-max-outbound-connections), [host](/momentum/4/config/ref-host)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-cluster-outbound-throttle-connections.md b/content/momentum/4/config/ref-cluster-outbound-throttle-connections.md
deleted file mode 100644
index 2b75ab5b1..000000000
--- a/content/momentum/4/config/ref-cluster-outbound-throttle-connections.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "cluster_outbound_throttle_connections"
-description: "cluster outbound throttle connections limit the rate at which connections are established and enforce it across a cluster of systems Cluster Outbound Throttle Connections 1 Cluster Outbound Throttle Connections 1 60 This allows you to limit the rate at which Momentum will attempt to establish TCP IP connections It can..."
----
-
-
-## Name
-
-cluster_outbound_throttle_connections — limit the rate at which connections are established, and enforce it across a cluster of systems
-
-## Synopsis
-
-`Cluster_Outbound_Throttle_Connections = "1"`
-
-`Cluster_Outbound_Throttle_Connections = "1/60"`
-
-
-## Description
-
-This allows you to limit the rate at which Momentum will attempt to establish TCP/IP connections. It can be employed to globally limit connection allocation or to reduce the rate established to a particular binding_group.
-
-If a single integer parameter is provided, Momentum will ensure that no more than the specified number of connections are initiated in a given second. If a proper fraction parameter is provided, Momentum will limit the number of connection initiations to the number specified in the numerator over the time window in seconds specified by the denominator.
-
-### Note
-
-The cluster module must be configured with the outbound throttle parameters.
-
-
-## Scope
-
-`cluster_outbound_throttle_connections` is valid in the binding_group, domain, and global scopes.
-
-
-## See Also
-
-[cluster_outbound_throttle_messages](/momentum/4/config/ref-cluster-outbound-throttle-messages)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-cluster-outbound-throttle-messages.md b/content/momentum/4/config/ref-cluster-outbound-throttle-messages.md
deleted file mode 100644
index b8f7e5ca2..000000000
--- a/content/momentum/4/config/ref-cluster-outbound-throttle-messages.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "cluster_outbound_throttle_messages"
-description: "cluster outbound throttle messages limit the rate at which messages are delivered and enforce it across the cluster Cluster Outbound Throttle Messages 1 Cluster Outbound Throttle Messages 1 60 This allows you to limit the rate at which Momentum will attempt to deliver mail It can be employed to globally..."
----
-
-
-## Name
-
-cluster_outbound_throttle_messages — limit the rate at which messages are delivered, and enforce it across the cluster
-
-## Synopsis
-
-`Cluster_Outbound_Throttle_Messages = "1"`
-
-`Cluster_Outbound_Throttle_Messages = "1/60"`
-
-
-## Description
-
-This allows you to limit the rate at which Momentum will attempt to deliver mail. It can be employed to globally limit throughput or to reduce the rate sent to a particular domain.
-
-If a single integer parameter is provided, Momentum will ensure that no more than the specified number of messages are sent in a given second of time. If a proper fraction parameter is provided, Momentum will limit the number of sent message to the number specified in the numerator over the time window in seconds specified by the denominator.
-
-### Note
-
-For best results, a throttle in the same scope and with the same values should also be defined using [cluster_outbound_throttle_connections](/momentum/4/config/ref-cluster-outbound-throttle-connections)
-
-The cluster module must be configured with the outbound throttle parameters.
-
-
-## Scope
-
-`cluster_outbound_throttle_messages` is valid in the binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-cluster-scope-max-outbound-connections.md b/content/momentum/4/config/ref-cluster-scope-max-outbound-connections.md
deleted file mode 100644
index 41d5b2eaa..000000000
--- a/content/momentum/4/config/ref-cluster-scope-max-outbound-connections.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "cluster_scope_max_outbound_connections"
-description: "cluster scope max outbound connections provide traffic shaping for outbound connections in a cluster configuration cluster scope max outbound connections 20 cluster scope max outbound connections is for use in a cluster configuration and is the equivalent of scope max outbound connections It provides for finer grained manipulation of the..."
----
-
-
-## Name
-
-cluster_scope_max_outbound_connections — provide traffic shaping for outbound connections in a cluster configuration
-
-## Synopsis
-
-`cluster_scope_max_outbound_connections = 20`
-
-
-## Description
-
-`cluster_scope_max_outbound_connections` is for use in a cluster configuration and is the equivalent of `scope_max_outbound_connections`. It provides for finer-grained manipulation of the number of outbound connections than does `cluster_scope_max_outbound_connections`. When used in different scopes its behavior is as follows:
-
-* In the global scope, it behaves like `cluster_server_max_outbound_connections`
-
-* In a Global::Domain scope, it determines the maximum number of connections to the specified domain across all bindings
-
-* In a Binding_Group::Domain scope, it determines the maximum number of connections to the specified domain across all the bindings in that Binding Group
-
-* In a Binding::Domain scope, it behaves like `cluster_max_outbound_connections`
-
-* In a Global:Host scope it determines the maximum number of connections to the specified host across all bindings
-
-`cluster_scope_max_outbound_connections` is disabled by default. When it is not set then `cluster_max_outbound_connections` or `cluster_server_max_outbound_connections` is used, depending on the context.
-
-To use this option the `Replicate "outbound_binding_domains" {}` stanza must be defined in `ecelerity-cluster.conf`.
-
-
-## Scope
-
-cluster_scope_max_outbound_connections is valid in the global, binding, binding_group, domain, and host scopes.
-
-
-## See Also
-
-[scope_max_outbound_connections](/momentum/4/config/ref-scope-max-outbound-connections), [cluster_max_outbound_connections](/momentum/4/config/ref-cluster-max-outbound-connections), [cluster_server_max_outbound_connections](/momentum/4/config/ref-cluster-server-max-outbound-connections)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-cluster-server-max-outbound-connections.md b/content/momentum/4/config/ref-cluster-server-max-outbound-connections.md
deleted file mode 100644
index 1b413970a..000000000
--- a/content/momentum/4/config/ref-cluster-server-max-outbound-connections.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "cluster_server_max_outbound_connections"
-description: "cluster server max outbound connections set the maximum number of outbound connections and enforce it across a cluster cluster server max outbound connections 800 Limits the number of total connections that will be established concurrently by a cluster of Momentum systems irrespective of bindings There is no limit enforced by..."
----
-
-
-## Name
-
-cluster_server_max_outbound_connections — set the maximum number of outbound connections, and enforce it across a cluster
-
-## Synopsis
-
-`cluster_server_max_outbound_connections = 800`
-
-
-## Description
-
-Limits the number of total connections that will be established concurrently by a cluster of Momentum systems, irrespective of bindings. There is no limit enforced by default; 800 is an example value. A more realistic value would need to be based on the cluster size and the capabilities of the underlying hardware and operating system.
-
-Within a `Binding` stanza, this option will regulate the total number of connections through that particular binding across the cluster.
-
-### Note
-
-The cluster module must be configured with the outbound CIDR parameters.
-
-
-## Scope
-
-cluster_server_max_outbound_connections is valid in the binding, binding_group, and global scopes.
-
-
-## See Also
-
-[server_max_outbound_connections](/momentum/4/config/ref-server-max-outbound-connections)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-connect-timeout-to-delay.md b/content/momentum/4/config/ref-connect-timeout-to-delay.md
deleted file mode 100644
index 22a09bd91..000000000
--- a/content/momentum/4/config/ref-connect-timeout-to-delay.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "connect_timeout_to_delay"
-description: "connect timeout to delay time interval before sweeping mail into the delayed queue connect timeout to delay 900 When Momentum detects that a domain cannot be contacted for example due to a network block it will move all that domain's active messages into the delayed queue This setting allows you..."
----
-
-
-## Name
-
-connect_timeout_to_delay — time interval before sweeping mail into the delayed queue
-
-## Synopsis
-
-`connect_timeout_to_delay = 900`
-
-
-## Description
-
-When Momentum detects that a domain cannot be contacted (for example, due to a network block), it will move all that domain's active messages into the delayed queue. This setting allows you to configure the sensitivity of Momentum to the time spent attempting to contact a domain before temporarily giving up and sweeping its messages into the delayed queue.
-
-The default value is 900 seconds.
-
-
-## Scope
-
-connect_timeout_to_delay is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-connect-timeout.md b/content/momentum/4/config/ref-connect-timeout.md
deleted file mode 100644
index 029e4cedd..000000000
--- a/content/momentum/4/config/ref-connect-timeout.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "connect_timeout"
-description: "connect timeout set the connection timeout Connect Timeout 300 The amount of time in seconds to spend waiting for the connect system call to return The default value for this option is 300 connect timeout is valid in the binding binding group domain and global scopes..."
----
-
-
-## Name
-
-connect_timeout — set the connection timeout
-
-## Synopsis
-
-`Connect_Timeout = 300`
-
-
-## Description
-
-The amount of time in seconds to spend waiting for the `connect` system call to return. The default value for this option is `300`.
-
-
-## Scope
-
-connect_timeout is valid in the binding, binding_group, domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-connection-allocation-aggressiveness.md b/content/momentum/4/config/ref-connection-allocation-aggressiveness.md
deleted file mode 100644
index 289cd087a..000000000
--- a/content/momentum/4/config/ref-connection-allocation-aggressiveness.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "connection_allocation_aggressiveness"
-description: "connection allocation aggressiveness tune the aggressiveness for establishing new connections to domains connection allocation aggressiveness normal connection allocation aggressiveness high When set to high Momentum will be more aggressive when opening up new connections to domains Momentum achieves this by considering the max outbound connections setting global or domain specific..."
----
-
-
-## Name
-
-connection_allocation_aggressiveness — tune the aggressiveness for establishing new connections to domains
-
-## Synopsis
-
-`connection_allocation_aggressiveness = "normal"`
-
-`connection_allocation_aggressiveness = "high"`
-
-
-## Description
-
-When set to `high`, Momentum will be more aggressive when opening up new connections to domains. Momentum achieves this by considering the max_outbound_connections setting (global or domain-specific, whichever is configured) and the size of the active queue for that domain. A setting of "normal" will produce a gradual increase in the number of connections, while "high" will result in a rapid number of new connections, up to the maximum allowed.
-
-The following figure illustrates a typical scenario, with an active queue of 400 messages and a max_outbound_connections = 32 (the default).
-
-
-
-
-
-
-The default value is `normal`.
-
-
-## Scope
-
-connection_allocation_aggressiveness is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-context.md b/content/momentum/4/config/ref-context.md
deleted file mode 100644
index 60bbf53ad..000000000
--- a/content/momentum/4/config/ref-context.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "context"
-description: "context use to set arbitrary connection context key value pairs context name value Provides a mechanism to set arbitrary connection context key value pairs The connection context is visible to all validation modules and scriptlets It allows the efficient assignment of metadata to connections based on the listener and arbitrary..."
----
-
-
-## Name
-
-context — use to set arbitrary connection context key value pairs.
-
-## Synopsis
-
-context = "*`(name = value)`* "
-
-
-## Description
-
-Provides a mechanism to set arbitrary connection context key value pairs. The connection context is visible to all validation modules and scriptlets. It allows the efficient assignment of metadata to connections based on the listener and arbitrary ACLs.
-
-
-## Scope
-
-context is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scopes.
-
-
-## See Also
-
-[“Validation and the Validation Context”](/momentum/4/4-policy#policy.validation)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-control-client-timeout.md b/content/momentum/4/config/ref-control-client-timeout.md
deleted file mode 100644
index 5192a03a0..000000000
--- a/content/momentum/4/config/ref-control-client-timeout.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "control_client_timeout"
-description: "control client timeout network timeout for Momentum control client connections Control Client Timeout 60 Specifies the timeout in seconds that will be used for control client connections The eccmgrio wrapper used in clustered configurations is one example of a control client connection The default value is 60 control client timeout..."
----
-
-
-## Name
-
-control_client_timeout — network timeout for Momentum control client connections
-
-## Synopsis
-
-`Control_Client_Timeout = 60`
-
-
-## Description
-
-Specifies the timeout in seconds that will be used for control client connections. The `eccmgrio://` wrapper used in clustered configurations is one example of a control client connection. The default value is `60`.
-
-
-## Scope
-
-control_client_timeout is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-crypto-engine.md b/content/momentum/4/config/ref-crypto-engine.md
deleted file mode 100644
index 7cb53ae5f..000000000
--- a/content/momentum/4/config/ref-crypto-engine.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "crypto_engine"
-description: "crypto engine enable hardware cryptography acceleration crypto engine engine name crypto engine is an option to allow hardware acceleration of the cryptographic processes in Momentum The right hand side takes the value of the specific hardware acceleration engine present There is no default value for this option The example below..."
----
-
-
-## Name
-
-crypto_engine — enable hardware cryptography acceleration
-
-> **NOTE: This option depends on the OpenSSL ENGINE API, which was removed in OpenSSL 3.0 in favor of the provider model.** On builds running OpenSSL 3.x, `crypto_engine` has no effect and is silently ignored; it remains functional only on OpenSSL 1.1.1 builds (for example, RHEL 8).
-
-## Synopsis
-
-crypto_engine = "*`engine_name`*"
-
-
-## Description
-
-`crypto_engine` is an option to allow hardware acceleration of the cryptographic processes in Momentum. The right hand side takes the value of the specific hardware acceleration engine present. There is no default value for this option.
-
-The example below shows how to configure Momentum to use the pkcs12 engine.
-
-
-
-
-`crypto_engine = "pkcs12"`
-
-## Scope
-
-crypto_engine is valid in the global scope.
diff --git a/content/momentum/4/config/ref-debug-flags.md b/content/momentum/4/config/ref-debug-flags.md
deleted file mode 100644
index cacdd02f6..000000000
--- a/content/momentum/4/config/ref-debug-flags.md
+++ /dev/null
@@ -1,84 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "debug_flags"
-description: "debug flags configure debug verbosity Debug Flags tells Momentum which events to write to the log error handler of the logging subsystem When using the default logging module ec logger these messages will appear in the paniclog The mask is a decimal number representing the bit mask that is used..."
----
-
-
-## Name
-
-debug_flags — configure debug verbosity
-
-
-## Description
-
-Debug_Flags {
- *`level`* = ( *`mask`* )
-}
-
-Debug_Flags tells Momentum which events to write to the log_error handler of the logging subsystem. When using the default logging module `ec_logger`, these messages will appear in the `paniclog`. The mask is a decimal number representing the bit mask that is used to activate logging statements. A human-readable variation of Debug_Flags is used. The sample below shows the default setting, which turns on useful severe error messages, but leaves the more informational messages turned off, so that they don't clutter your log files.
-
-```
-Debug_Flags {
- DEBUG = ()
- INFO = ()
- NOTICE = ()
- WARNING = ()
- ERROR = (TIME FD SMTP LOG1 DNS DNSDS NET SIG MEM DB LIC SSL MOD START ALL)
- CRITICAL = (TIME FD SMTP LOG1 DNS DNSDS NET SIG MEM DB LIC SSL MOD START ALL)
-}
-```
-### Note
-Use ‘`ALL`’ instead of listing each service debug flag.
-
-
-The example below enables more (at `WARNING` level) MTA-STS and SSL related logging, along with default
-`ERROR` and `CRITICAL` loggings:
-```
-Debug_Flags {
- WARNING = (MTA_STS SSL)
- ERROR = (ALL)
- CRITICAL = (ALL)
-}
-```
-
-
-
-
-
-| Level | Description |
-| --- | --- |
-| 0 | Debug |
-| 1 | Info |
-| 2 | Notice |
-| 3 | Warning |
-| 4 | Error |
-| 5 | Critical |
-
-
-
-
-| Subsystem | Symbolic Name |
-| --- | --- |
-| Generic | ERROR |
-| Time | TIME |
-| File Descriptors | FD |
-| SMTP | SMTP |
-| LOG1 | LOG1 |
-| DANE | DANE |
-| DNS | DNS |
-| DNS data structures | DNSDS |
-| MTA-STS | MTA_STS |
-| Network | NET |
-| Signals | SIG |
-| Memory Management | MEM |
-| Database | DB |
-| License | LIC |
-| SSL | SSL |
-| Modules | MOD |
-| Start | START |
-
-
-## Scope
-
-debug_flags is valid in the global scope.
diff --git a/content/momentum/4/config/ref-debug-throttle.md b/content/momentum/4/config/ref-debug-throttle.md
deleted file mode 100644
index 3f51ffe71..000000000
--- a/content/momentum/4/config/ref-debug-throttle.md
+++ /dev/null
@@ -1,92 +0,0 @@
----
-lastUpdated: "12/31/2025"
-title: "Throttling Debug Messages"
-description: "Configure throttling to tell Momentum how to suppress repeated debug messages. When using the default logging module the messages will appear in the paniclog. The throttle is a decimal number representing the maximum number of repeated debug messages to log within a specified time interval"
----
-
-When using the default logging module, debug messages will appear in the [paniclog](/momentum/4/log-formats-paniclog)
-depending on subsystem and level settings configured in [Debug_Flags](/momentum/4/config/ref-debug-flags). `Debug_Flags` is
-usually empty, so very few events are written to the `paniclog`. However, under certain circumstances, you need to get more
-information about some subsystem's behavior (e.g., SMTP), then by setting `Debug_Flags`, you can enable more verbose logging
-into `paniclog`. On the other hand, depending on the chosen level, `paniclog` may get populated with several lines of the same
-message, including some that might not be of your interest.
-
-Momentum’s debug throttling configuration allows you to suppress repeated debug messages. The throttle suppresses the logging
-of repeated messages beyond a specified limit during a time interval also specified. It is a global setting that applies to
-messages of all subsystems.
-
-> **NOTE:** Debug throttling global configuration **DOES NOT** apply to messages logged at the `CRITICAL`, `ERROR`, or
-> `WARNING` levels of any subsystem, due to their relevance for operation and diagnosis.
-
-It is important to note that debug throttling is applied not necessarily to *identical* messages, but to messages that are
-considered the same after removing variable parts such as timestamps, IP addresses, or other dynamic content. In other words,
-if the source of the message is something like this:
-
-```
- Message received from:
-```
-
-then all messages that match this pattern will be considered the same for throttling purposes, regardless of the actual
-values of `` and ``. This happens because the default logging module is based on `printf`-style
-format strings, which allows variable content in log messages, and it is the format string that determines message sameness.
-
-> __**_WARNING:_**__ Be cautious when enabling debug throttling, as it may cause some performance overhead due to the additional
-> processing required to track and suppress repeated messages.
-
-
-# Configuration options
-
-Debug throttling is configured using the following options in the global scope of your `ecelerity.conf` file:
-- **debug_throttle_max_num_same_message**
-- **debug_throttle_period_secs**
-
-
-## Maximum number of the same message
-
-
-### Name
-
-`debug_throttle_max_num_same_message`
-
-
-### Description
-
-Sets the maximum number of repeated debug messages to log within a specified time interval. The default is `0`, which means no
-throttling is applied to the logging of repeated debug messages.
-
-
-### Example
-
-```
-debug_throttle_max_num_same_message = 5
-```
-
-With this configuration, if the same debug message occurs 20 times within the time interval specified by `debug_throttle_period_secs`,
-only the first 5 instances will be logged. The remaining 15 messages are suppressed.
-
-
-## Time interval of throttling
-
-
-### Name
-`debug_throttle_period_secs`
-
-
-### Description
-
-Sets the time interval in seconds during which repeated debug messages are counted for throttling purposes.
-The counters are reset when starting a new interval. The default is `1` second, with a maximum of `60` seconds.
-
-
-### Example
-```
-debug_throttle_period_secs = 30
-```
-With this configuration, the time interval for counting repeated debug messages is set to 30 seconds. Combined with the
-previous example for `debug_throttle_max_num_same_message`, up to 5 lines of the same debug message will be logged every
-30 seconds. After that, the counter resets and other 5 instances can be logged during the next 30-second window.
-
-
-# Scope
-
-Debug throttling options are valid in the global scope.
diff --git a/content/momentum/4/config/ref-default-binding.md b/content/momentum/4/config/ref-default-binding.md
deleted file mode 100644
index ed3031c5e..000000000
--- a/content/momentum/4/config/ref-default-binding.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "default_binding"
-description: "default binding control usage of the default binding default binding normal default binding suspended default binding none The default binding is the binding that a message belongs to when no other binding applies The default value is normal If you are using Multi VIP interfaces you may want to use..."
----
-
-
-## Name
-
-default_binding — control usage of the "default" binding
-
-## Synopsis
-
-`default_binding = "normal"`
-
-`default_binding = "suspended"`
-
-`default_binding = "none"`
-
-
-## Description
-
-The default binding is the binding that a message belongs to when no other binding applies. The default value is `normal`.
-
-If you are using MultiVIP© interfaces, you may want to use one of the following options rather than the 'default' binding:
-
-* If `default_binding` is set to `none`, then messages that would fall into the default binding will generate a 451 transient failure back to the generating software.
-
-* If `default_binding` is set to `suspended`, you can suspend delivery for the default binding using the [suspend_delivery](/momentum/4/config/ref-suspend-delivery) option.
-
-
-## Scope
-
-`default_binding` is valid in the global scope.
-
-
-## See Also
-
-[suspend_delivery](/momentum/4/config/ref-suspend-delivery), [binding](/momentum/4/config/ref-binding), and [the section called “`default` Binding”](/momentum/4/config/ref-binding#conf.ref.binding.default)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-default-charset.md b/content/momentum/4/config/ref-default-charset.md
deleted file mode 100644
index 16682e388..000000000
--- a/content/momentum/4/config/ref-default-charset.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "default_charset"
-description: "default charset control usage of the default character set default charset charset default charset is intended to allow the customer to specify what the default assumed character set within the product is This does not prevent the product from interpreting other character sets as normal This is helpful to international..."
----
-
-
-## Name
-
-default_charset — control usage of the "default" character set
-
-## Synopsis
-
-`default_charset = "charset"`
-
-
-## Description
-
-`default_charset` is intended to allow the customer to specify what the default assumed character set within the product is. This does not prevent the product from interpreting other character sets as normal. This is helpful to international customers, as some MUAs do not correctly represent their charset.
-
-The default value is `"us-ascii"`
-
-
-## Scope
-
-default_binding is valid in the global, pathway_group, and pathway scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-delay-dsn-max-retry-interval.md b/content/momentum/4/config/ref-delay-dsn-max-retry-interval.md
deleted file mode 100644
index 31006107e..000000000
--- a/content/momentum/4/config/ref-delay-dsn-max-retry-interval.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "delay_dsn_max_retry_interval"
-description: "delay dsn max retry interval maximum interval for sending DS Ns to the sender of a message that has not yet been delivered delay dsn max retry interval 43200 The maximum interval between successive warning messages delivery status notifications or DS Ns sent to the sender of a message that..."
----
-
-
-## Name
-
-delay_dsn_max_retry_interval — maximum interval for sending DSNs to the sender of a message that has not yet been delivered
-
-## Synopsis
-
-`delay_dsn_max_retry_interval = "43200"`
-
-
-## Description
-
-The maximum interval between successive warning messages (delivery status notifications, or DSNs) sent to the sender of a message that has not yet been delivered. This provides a cap on the effective interval between DSNs calculated from `delay_dsn_retry_interval`.
-
-### Note
-
-To use this feature the [delay_dsn](/momentum/4/modules/delay-dsn) module must be loaded.
-
-The default value is `0`.
-
-
-## Scope
-
-`delay_dsn_max_retry_interval` is valid in the binding_group, binding, domain, and global scopes.
-
-
-## See Also
-
-[generate_delay_dsn](/momentum/4/config/ref-generate-delay-dsn), [delay_dsn_max_retry_interval](/momentum/4/config/ref-delay-dsn-max-retry-interval), and [delay_dsn_retry_interval](/momentum/4/config/ref-delay-dsn-retry-interval)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-delay-dsn-retry-interval.md b/content/momentum/4/config/ref-delay-dsn-retry-interval.md
deleted file mode 100644
index ec62b527d..000000000
--- a/content/momentum/4/config/ref-delay-dsn-retry-interval.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "delay_dsn_retry_interval"
-description: "delay dsn retry interval base interval for sending DS Ns to the sender of a message that has not yet been delivered delay dsn retry interval 3600 The base retry period in seconds for sending warning messages delivery status notifications or DS Ns to the sender of a message which..."
----
-
-
-## Name
-
-delay_dsn_retry_interval — base interval for sending DSNs to the sender of a message that has not yet been delivered
-
-## Synopsis
-
-`delay_dsn_retry_interval = "3600"`
-
-
-## Description
-
-The base retry period in seconds for sending warning messages (delivery status notifications, or DSNs) to the sender of a message which has not yet been delivered. Momentum employs an exponential back-off scheme for sending DSNs. The first DSN is sent `delay_dsn_retry_interval` seconds after the message is queued for delivery. The second DSN is sent twice that after the second DSN. The third DSN four times that after the second DSN. The fourth DSN, eight times that. This process continues until delivery attempts for the message have ceased. The interval between DSNs cannot exceed `delay_dsn_max_retry_interval`.
-
-### Note
-
-To use this feature the [delay_dsn](/momentum/4/modules/delay-dsn) module must be loaded.
-
-The default value for this option is `3600`.
-
-
-## Scope
-
-`delay_dsn_retry_interval` is valid in the binding_group, binding, domain, and global scopes.
-
-
-## See Also
-
-[generate_delay_dsn](/momentum/4/config/ref-generate-delay-dsn), [delay_dsn_max_retry_interval](/momentum/4/config/ref-delay-dsn-max-retry-interval)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-delayed-binding-domain-fuzz.md b/content/momentum/4/config/ref-delayed-binding-domain-fuzz.md
deleted file mode 100644
index 34d30fce3..000000000
--- a/content/momentum/4/config/ref-delayed-binding-domain-fuzz.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "delayed_binding_domain_fuzz"
-description: "delayed binding domain fuzz length of time to spread scheduled messages over when a bulk requeue is necessary delayed binding domain fuzz 0 When a bulk requeue is necessary this option sets the number of seconds to spread scheduled messages over This option must be a power of two value..."
----
-
-
-## Name
-
-delayed_binding_domain_fuzz — length of time to spread scheduled messages over when a bulk requeue is necessary
-
-## Synopsis
-
-`delayed_binding_domain_fuzz = 0`
-
-
-## Description
-
-When a bulk requeue is necessary, this option sets the number of seconds to spread scheduled messages over. This option must be a power-of-two value from 2 - n. It is possible to set this to values that are not powers of two, but this may result in sub-optimal performance and ecelerity scheduler congestion.
-
-The default value is `0`.
-
-
-## Scope
-
-delayed_binding_domain_fuzz is valid in the global, binding, and binding_group scopes.
-
-
-## See Also
-
-[“adaptive – Adaptive Delivery”](/momentum/4/modules/4-adaptive)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-delayed-queue-scan-interval.md b/content/momentum/4/config/ref-delayed-queue-scan-interval.md
deleted file mode 100644
index e456a8f7d..000000000
--- a/content/momentum/4/config/ref-delayed-queue-scan-interval.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "delayed_queue_scan_interval"
-description: "delayed queue scan interval how often to call the maintainer for a domain delayed queue scan interval 15 The primary function of the delayed queue scan interval option is to determine how often to call the maintainer for a domain If there are messages on the active queue then it..."
----
-
-
-## Name
-
-delayed_queue_scan_interval — how often to call the maintainer for a domain
-
-## Synopsis
-
-`delayed_queue_scan_interval = 15`
-
-
-## Description
-
-The primary function of the `delayed_queue_scan_interval` option is to determine how often to call the maintainer for a domain. If there are messages on the active queue, then it is called at least every delayed_queue_scan_interval. If all the messages are on the delayed queue, then the maintainer is scheduled for the next attempt on the first delayed message.
-
-Additionally, when the maintainer is called, it will sweep any delayed messages that are ready to go onto the active queue. If there are constantly active messages, `delayed_queue_scan_interval` will control how often the delayed messages get swept onto the active queue.
-
-### Note
-
-This option has no effect when the entire queue is delayed.
-
-The default value is `15`.
-
-
-## Scope
-
-delayed_queue_scan_interval is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-delivery-method.md b/content/momentum/4/config/ref-delivery-method.md
deleted file mode 100644
index 8e76fc02d..000000000
--- a/content/momentum/4/config/ref-delivery-method.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "delivery_method"
-description: "delivery method set the delivery method Delivery Method ESMTP Delivery Method SMTP Delivery Method LMTP Delivery Method ECSTREAM Delivery Method APN Delivery Method GCM Delivery Method MM 7 This option directs Momentum to perform deliveries via ESMTP LMTP Local Mail Transport Protocol SMTP ECSTREAM APN GCM and MM 7 ESMTP..."
----
-
-
-## Name
-
-delivery_method — set the delivery method
-
-## Synopsis
-
-`Delivery_Method = "ESMTP"`
-
-`Delivery_Method = "SMTP"`
-
-`Delivery_Method = "LMTP"`
-
-`Delivery_Method = "ECSTREAM"`
-
-`Delivery_Method = "APN"`
-
-`Delivery_Method = "GCM"`
-
-`Delivery_Method = "MM7"`
-
-
-## Description
-
-This option directs Momentum to perform deliveries via ESMTP, LMTP (Local Mail Transport Protocol), SMTP, ECSTREAM, APN, GCM, and MM7.
-
-`ESMTP` is the default value.
-
-* Use `apn` to deliver Apple push notifications.
-
-* Use `gcm` to deliver Google push notifications.
-
-* Use `mm7` for multimedia messaging.
-
-The `delivery_method` option is used in combination with [routes](/momentum/4/config/ref-routes). Use `delivery_method` in the following way:
-
-```
-domain "apn_example.com"{
- ...
- delivery_method = "apn"
- routes = ("apn://gateway.push.apple.com?port=2195")
-}
-domain "gcm.example.com" {
- ...
- delivery_method = "gcm"
- routes = ("gcm://android.google.apis.com?port=443")
-}
-```
-
-Typically, with push notifications `delivery_method` will be defined within a domain scope applicable to the Apple or Google application that is receiving the notifications. For a detailed description of configuring Momentum for push notifications see [Momentum for Mobile Push Notifications](/momentum/3/3-push).
-
-For domain configuration when the `delivery_method` is `mm7` see [Domain Configuration for MM7](/momentum/mobile/mobile-reference/mobility-mm-7-config).
-
-
-## Scope
-
-`delivery_method` is valid in the binding, binding_group, domain, and global scopes.
-
-
-## See Also
-
-[ecstream_port](/momentum/4/config/ref-ecstream-port), [lmtp_port](/momentum/4/config/ref-lmtp-port), [Momentum for Mobile Push Notifications](/momentum/3/3-push), [msg:get_delivery_method](/momentum/4/lua/ref-msg-get-delivery-method), and [routes](/momentum/4/config/ref-routes)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-delivery-pool.md b/content/momentum/4/config/ref-delivery-pool.md
deleted file mode 100644
index 4ab906068..000000000
--- a/content/momentum/4/config/ref-delivery-pool.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "delivery_pool"
-description: "delivery pool associate a pool of event loops with email delivery to use multiple threads delivery pool pool name To use this option you must have a Supercharger license This option is used in a multiple event loop configuration To configure threading for email delivery assign delivery pool the name..."
----
-
-
-## Name
-
-delivery_pool — associate a pool of event loops with email delivery to use multiple threads
-
-## Synopsis
-
-`delivery_pool = "pool_name"`
-
-
-## Description
-
-### Note
-
-To use this option, you must have a Supercharger license.
-
-This option is used in a multiple event loop configuration. To configure threading for email delivery, assign `delivery_pool` the name of your `eventloop`. Note that the name must match what was defined in the EventLoop configuration. See [eventloop](/momentum/4/config/ref-eventloop).
-
-For an example multiple event loop configuration, see [*Configuring Multiple Event Loops*](/momentum/4/multi-event-loops) .
-
-### Note
-
-If you change the value of `delivery_pool` at runtime, you must restart the ecelerity process using the executable command [ec_ctl](/momentum/4/executable/ec-ctl). Note: issuing the ec_console command **config reload** will not work.
-
-There is no default value for this option.
-
-
-## Scope
-
-`delivery_pool` is valid in the global scope.
-
-
-## See Also
-
-[eventloop](/momentum/4/config/ref-eventloop)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-delivery-response-timeout.md b/content/momentum/4/config/ref-delivery-response-timeout.md
deleted file mode 100644
index eae5d7262..000000000
--- a/content/momentum/4/config/ref-delivery-response-timeout.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "delivery_response_timeout"
-description: "delivery response timeout time to wait for a response to an outbound request delivery response timeout 5000 The time in milliseconds to wait for a response to an outbound request Use this option when delivery method is set to an HTTP protocol The default value is 5000 This option was..."
----
-
-
-## Name
-
-delivery_response_timeout — time to wait for a response to an outbound request
-
-## Synopsis
-
-`delivery_response_timeout = 5000`
-
-
-## Description
-
-The time in milliseconds to wait for a response to an outbound request. Use this option when `delivery_method` is set to an HTTP protocol.
-
-The default value is `5000`.
-
-This option was introduced to define the delivery response timeout for Mobile push notifications. Use it in the following way:
-
-```
-domain "apn_example.com"{
- ...
- delivery_method = "apn"
- routes = ("apn://gateway.push.apple.com?port=2195")
- idle_timeout = 10
- delivery_response_timeout = 1000
-}
-domain "gcm.example.com" {
- ...
- delivery_method = "gcm"
- routes = ("gcm://android.google.apis.com?port=443")
- idle_timeout = 10
- delivery_response_timeout = 1000
-}
-```
-
-## Scope
-
-`delivery_response_timeout` is valid in the global, binding, and domain scopes.
-
-
-## See Also
-
-[idle_timeout](/momentum/4/config/ref-idle-timeout), [delivery_method](/momentum/4/config/ref-delivery-method), and [Momentum for Mobile Push Notifications](/momentum/3/3-push)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-disable-nagle-algorithm.md b/content/momentum/4/config/ref-disable-nagle-algorithm.md
deleted file mode 100644
index 695beacc7..000000000
--- a/content/momentum/4/config/ref-disable-nagle-algorithm.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "disable_nagle_algorithm"
-description: "disable nagle algorithm disable nagle algorithm on sockets disable nagle algorithm false Momentum can be configured to disable the Nagle algorithm on the TCP connections it manages The default for this option is false This is an advanced option Thorough testing is recommended before deployment in a production environment disable..."
----
-
-
-## Name
-
-disable_nagle_algorithm — disable nagle algorithm on sockets
-
-## Synopsis
-
-`disable_nagle_algorithm = false`
-
-
-## Description
-
-Momentum can be configured to disable the Nagle algorithm on the TCP connections it manages.
-
-The default for this option is `false`.
-
-### Warning
-
-This is an advanced option. Thorough testing is recommended before deployment in a production environment.
-
-
-## Scope
-
-`disable_nagle_algorithm` is valid in the eccluster_listener, ecstream_listener, esmtp_listener, global, http_listener and listen scopes.
-
-`disable_nagle_algorithm` is valid in the ecstream_listener, esmtp_listener, global and listen scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-disk-queue-drain-rate.md b/content/momentum/4/config/ref-disk-queue-drain-rate.md
deleted file mode 100644
index dd3725ce6..000000000
--- a/content/momentum/4/config/ref-disk-queue-drain-rate.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "disk_queue_drain_rate"
-description: "disk queue drain rate control the rate at which messages are spooled in on start up disk queue drain rate 100 Every iteration through the system messages are taken from the disk queue The disk queue's asynchronous population commences at Momentum's startup As messages are ready swapped in they are..."
----
-
-
-## Name
-
-disk_queue_drain_rate — control the rate at which messages are spooled in on start-up
-
-## Synopsis
-
-`disk_queue_drain_rate = 100`
-
-
-## Description
-
-Every iteration through the system, messages are taken from the disk queue. The disk queue's asynchronous population commences at Momentum's startup. As messages are ready (swapped in), they are pushed onto the "disk queue". This configuration directive dictates the maximum number of messages that will be pulled off the disk queue in a single iteration of the scheduler. The default value is `100`.
-
-### Warning
-
-This is an advanced option. Setting this value too high could saturate a server's I/O subsystem. Thorough testing is recommended before deployment in a production environment.
-
-
-## Scope
-
-disk_queue_drain_rate is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-dns-cache-purge-interval.md b/content/momentum/4/config/ref-dns-cache-purge-interval.md
deleted file mode 100644
index 0cdf369fa..000000000
--- a/content/momentum/4/config/ref-dns-cache-purge-interval.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "dns_cache_purge_interval"
-description: "dns cache purge interval how often the DNS response cache is scanned for stale entries dns cache purge interval 60 How often the DNS response cache is scanned for stale entries The default value is 60 seconds dns cache purge interval is valid in the global scope..."
----
-
-
-## Name
-
-dns_cache_purge_interval — how often the DNS response cache is scanned for stale entries
-
-## Synopsis
-
-`dns_cache_purge_interval = 60`
-
-
-## Description
-
-How often the DNS response cache is scanned for stale entries.
-
-The default value is `60` (seconds).
-
-
-## Scope
-
-`dns_cache_purge_interval` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-dns-expire-interval.md b/content/momentum/4/config/ref-dns-expire-interval.md
deleted file mode 100644
index a64ad5764..000000000
--- a/content/momentum/4/config/ref-dns-expire-interval.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "dns_expire_interval"
-description: "dns expire interval how often to check for domains with expired DNS information dns expire interval 10 How often the garbage collector should check for domains with expired DNS entries and resubmit them for lookup The default is 10 seconds dns expire interval is valid in the global scope..."
----
-
-
-## Name
-
-dns_expire_interval — how often to check for domains with expired DNS information
-
-## Synopsis
-
-`dns_expire_interval = 10`
-
-
-## Description
-
-How often the garbage collector should check for domains with expired DNS entries and resubmit them for lookup.
-
-The default is `10` seconds.
-
-
-## Scope
-
-`dns_expire_interval` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-dns-failures-to-purge.md b/content/momentum/4/config/ref-dns-failures-to-purge.md
deleted file mode 100644
index c97bdf965..000000000
--- a/content/momentum/4/config/ref-dns-failures-to-purge.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "dns_failures_to_purge"
-description: "dns failures to purge configure the maximum number of DNS lookups dns failures to purge 10 After the specified number of failed DNS lookups a message will be failed permanently The default value is 10 dns failures to purge is valid in the domain and global scopes mx failures fallback..."
----
-
-
-## Name
-
-dns_failures_to_purge — configure the maximum number of DNS lookups
-
-## Synopsis
-
-`dns_failures_to_purge = 10`
-
-
-## Description
-
-After the specified number of failed DNS lookups, a message will be failed permanently. The default value is `10`.
-
-
-## Scope
-
-`dns_failures_to_purge` is valid in the domain and global scopes.
-
-
-## See Also
-
-[mx_failures_fallback_to_a](/momentum/4/config/ref-mx-failures-fallback-to-a)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-dns-fallback-to-tcp.md b/content/momentum/4/config/ref-dns-fallback-to-tcp.md
deleted file mode 100644
index 004fb2f7d..000000000
--- a/content/momentum/4/config/ref-dns-fallback-to-tcp.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "dns_fallback_to_tcp"
-description: "dns fallback to tcp whether or not to fail over to TCP in place of UDP dns fallback to tcp false Momentum uses User Datagram Protocol UDP for DNS queries However the size of a UDP packet is limited and a DNS query can exceed it Set this option to..."
----
-
-
-## Name
-
-dns_fallback_to_tcp — whether or not to fail over to TCP in place of UDP
-
-## Synopsis
-
-`dns_fallback_to_tcp = false`
-
-
-## Description
-
-Momentum uses User Datagram Protocol (UDP) for DNS queries. However, the size of a UDP packet is limited and a DNS query can exceed it. Set this option to `true` and Momentum tries first with UDP then fails over to TCP if the query response is too large. This avoids having lengthy DNS responses truncated.
-
-The default value is `false`.
-
-
-## Scope
-
-`dns_fallback_to_tcp` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-dns-max-udp-queries-per-port.md b/content/momentum/4/config/ref-dns-max-udp-queries-per-port.md
deleted file mode 100644
index 4faa3ca93..000000000
--- a/content/momentum/4/config/ref-dns-max-udp-queries-per-port.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "01/31/2026"
-title: "dns_max_udp_queries_per_port"
-description: "dns max udp queries per port limit the number of DNS queries sent using the same UDP source port Momentum uses User Datagram Protocol UDP for DNS queries However the size of a UDP packet is limited and a DNS query can exceed it Set this option to..."
----
-
-
-## Name
-
-dns_max_udp_queries_per_port — limit the number of DNS queries sent using the same UDP source port
-
-## Synopsis
-
-`dns_max_udp_queries_per_port = 10`
-
-
-## Description
-
-Momentum uses User Datagram Protocol (UDP) for DNS queries. Each internal channel to the DNS server(s) is assigned a dynamic (ephemeral) UDP source port number. All DNS queries sent over that channel use the same source port. When many queries originate from a single source port, security devices such as firewalls may interpret this pattern as malicious behavior (e.g., a DNS-based attack) and drop or block the queries. This setting limits how many DNS queries will be sent from each source port before Momentum allocates a new port number, helping to avoid triggering such security measures.
-
-The default value is `0` (no limit). Most users do not need to change this value unless experiencing DNS-related firewall blocks.
-
-
-## Scope
-
-`dns_max_udp_queries_per_port` is valid in the global scope.
diff --git a/content/momentum/4/config/ref-dns-rate-limit.md b/content/momentum/4/config/ref-dns-rate-limit.md
deleted file mode 100644
index 1504af700..000000000
--- a/content/momentum/4/config/ref-dns-rate-limit.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-lastUpdated: "07/01/2026"
-title: "dns_rate_limit_enabled, dns_rate_limit_mx_queries, dns_rate_limit_period, dns_rate_limit_max_queue"
-description: "dns_rate_limit_* configuration options that limit the rate at which Momentum dispatches DNS queries, to prevent bursts that may overwhelm the DNS infrastructure"
----
-
-
-## Name
-
-dns_rate_limit_enabled — enable or disable the DNS rate limiter
-
-dns_rate_limit_mx_queries — maximum number of MX DNS lookups dispatched per period
-
-dns_rate_limit_period — length of the rate limit window, in seconds
-
-dns_rate_limit_max_queue — maximum number of domains the rate limiter will hold while waiting for a token
-
-## Synopsis
-
-`dns_rate_limit_enabled = true`
-
-`dns_rate_limit_mx_queries = 500`
-
-`dns_rate_limit_period = 1`
-
-`dns_rate_limit_max_queue = 50000`
-
-
-## Description
-
-Momentum initiates an MX lookup each time a new destination domain enters the internal lookup table and each time a cached domain record expires and must be refreshed. Under normal traffic the resulting query rate is manageable, but several conditions can produce sudden, large bursts:
-
-- Traffic spikes that bring in messages for thousands of distinct domains within a few seconds.
-- TTL expiry storms where many cached records expire at the same instant.
-- Restart recovery, where the lookup table is repopulated from the spool and can fire tens of thousands of lookups in rapid succession.
-
-These bursts can overwhelm the recursive resolver configured in `resolv.conf` — some resolvers enforce their own incoming query-rate caps, others simply drop packets under load — causing DNS timeouts, stalled deliveries, and degraded throughput - even though the MTA itself is healthy.
-
-### How It Works
-
-The DNS rate limiter caps the number of outgoing MX lookups Momentum issues per unit of time. When the cap is reached, new lookups are placed in a bounded in-memory queue and dispatched at the configured rate. If the queue itself fills up, the lookup is sent immediately as a safety-valve fallback rather than being dropped.
-
-### Configuration Options
-
-`dns_rate_limit_enabled` turns the rate limiter on or off. The default value is `false` (disabled), in which case MX lookups go out as before and no queue is maintained. **Changing this option requires Momentum to be restarted.**
-
-`dns_rate_limit_mx_queries` sets the maximum number of MX domain lookups that may be dispatched within each `dns_rate_limit_period`-second window. The budget is counted per domain lookup, not per UDP packet (see *Caveats* below). The default value is `100`. The value must be positive and can be changed with a configuration reload; the new limit becomes effective on the next drain cycle.
-
-`dns_rate_limit_period` sets the length of the rate limit window, in seconds. `dns_rate_limit_mx_queries` lookups are permitted within each window. A period of `1` gives the smoothest rate, closest to a true per-second limit; larger values allow more burstiness within the window. Note that `dns_rate_limit_mx_queries = 200` with `dns_rate_limit_period = 2` is **not** equivalent to 100 lookups per second — it permits a total of 200 lookups across the 2-second window, so for example 180 lookups in the first second leave only 20 lookups of budget for the second second. The default value is `1`. The value must be positive and can be changed with a configuration reload.
-
-`dns_rate_limit_max_queue` sets the maximum number of domains that may be held in the rate limiter queue waiting for a token. A domain that is already queued is not enqueued a second time. Size the queue large enough to absorb the burst expected between drain cycles (roughly 100 ms); raising it uses more memory, and lowering it below the expected burst size increases the likelihood of overflow events. When the queue is full, new domains bypass the rate limiter and are resolved immediately, which can temporarily exceed the configured query budget. The default value is `100000` and the minimum accepted value is `1000`. **Changing this option requires Momentum to be restarted.**
-
-### Statistics
-
-Counters reported by the `summary` [console command](/momentum/4/console-commands/summary) and the [HTTP API endpoint](/momentum/4/http-api-stats/summary) — `Immediate`, `Queued`, `Drained` and `Overflow` — can be used to evaluate whether the configured rate and queue size are appropriate for the workload. A healthy system under light-to-moderate load shows mostly `Immediate` increments. A system hitting its limit intentionally shows `Queued` and `Drained` growing in tandem. Persistent growth of `Overflow` means the queue or the configured rate is too small for the traffic volume — increase `dns_rate_limit_max_queue`, increase `dns_rate_limit_mx_queries`, or reduce the inbound message acceptance rate.
-
-
-## Caveats
-
-When the rate limiter is enabled, the internal DNS resolver library (c-ares) is forced to `attempts=1`. This reduces resilience to transient failures; ensure that the configured nameservers are reliable before enabling this feature.
-
-The `rotate` option in `resolv.conf` cycles the starting nameserver round-robin across successive lookups, but combined with the forced `attempts=1` each nameserver is still attempted at most once per lookup, and only sequentially on timeout. When using `rotate` with multiple nameservers, take the nameserver count into account when sizing `dns_rate_limit_mx_queries`.
-
-_Overflow is a safety valve, not a guarantee of delivery._ When the queue is full and a lookup bypasses the rate limiter, the configured rate is exceeded; if the resolver itself starts dropping or rate-limiting packets at that point, the resulting DNS timeouts may cause delivery delays.
-
-TTL-expiry refreshes count against the same budget as lookups triggered by new messages. In environments with very high domain-cache churn, refreshes can consume a meaningful fraction of the configured limit.
-
-
-## Scope
-
-`dns_rate_limit_enabled`, `dns_rate_limit_mx_queries`, `dns_rate_limit_period` and `dns_rate_limit_max_queue` are valid in the global scope.
diff --git a/content/momentum/4/config/ref-dns-udp-buffer-size.md b/content/momentum/4/config/ref-dns-udp-buffer-size.md
deleted file mode 100644
index 76c78f3fe..000000000
--- a/content/momentum/4/config/ref-dns-udp-buffer-size.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "01/31/2026"
-title: "dns_udp_rcvbuf_size, dns_udp_sndbuf_size"
-description: "dns_udp_***buf_size set the size of the UDP socket buffers used by DNS lookups"
----
-
-
-## Name
-
-dns_udp_rcvbuf_size — set the size of the UDP socket receiving buffer used by DNS lookups
-
-dns_udp_sndbuf_size - set the size of the UDP socket sending buffer
-
-## Synopsis
-
-`dns_udp_rcvbuf_size = 65536`
-
-`dns_udp_sndbuf_size = 16384`
-
-
-## Description
-
-By default, Momentum uses the operating system's default buffer sizes for the UDP sockets used for DNS lookups. In high-volume environments with tens of thousands of domains, these default buffer sizes may be insufficient. When the receive buffer fills up, incoming DNS responses can be dropped, causing unnecessary DNS failures and retries that further increase query volume. These configuration options allow you to increase the DNS socket buffer sizes at startup.
-
-The default value for both options is `0` (use OS defaults).
-
-
-## Scope
-
-Both `dns_udp_rcvbuf_size` and `dns_udp_sndbuf_size` are valid in the global scope.
diff --git a/content/momentum/4/config/ref-domain-for-unqualified-recipient-addresses.md b/content/momentum/4/config/ref-domain-for-unqualified-recipient-addresses.md
deleted file mode 100644
index 8a097f058..000000000
--- a/content/momentum/4/config/ref-domain-for-unqualified-recipient-addresses.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "domain_for_unqualified_recipient_addresses"
-description: "domain for unqualified recipient addresses configure a domain which will be used to resolve delivery for unqualified addresses domain for unqualified recipient addresses example com RFC 2821 section 4 5 1 requires that all compliant MTA s accept the special address of RCPT TO postmaster without a domain name Mail..."
----
-
-
-## Name
-
-domain_for_unqualified_recipient_addresses — configure a domain which will be used to resolve delivery for unqualified addresses
-
-## Synopsis
-
-`domain_for_unqualified_recipient_addresses = "example.com"`
-
-
-## Description
-
-RFC-2821, section 4.5.1, requires that all compliant MTA's accept the special address of "RCPT TO:" without a domain name. Mail sent to this address should normally be forwarded to the entity responsible for the MTA as a whole, not some specific domain being accepted by that MTA. To make this support more flexible, `domain_for_unqualified_recipient_addresses` will actually support any unqualified e-mail address. For example, a site may wish to also support "RCPT TO:" as an alias, as suggested by RFC-2142.
-
-When set, `domain_for_unqualified_recipient_addresses` will rewrite the envelope address internally, although the original "RCPT TO:" is still available from Sieve during all rcptto and data phases, using `vctx rcptto_string`. The envelope address is actually rewritten before the each_rcpt phases, and will now use the expanded address when relayed to the final destination. The trace headers, however, will reflect the original "RCPT TO" string. NOTE that the "TO:" header in the e-mail is never rewritten.
-
-`domain_for_unqualified_recipient_addresses` is valid in either a global scope (for a single fallback domain for all unqualified addresses) or can be set in a Pathway scope (for specific fallback domains for any number of specific domains). The more specific Pathway scope overrides any existing value set in a global scope.
-
-To accept unqualified "Postmaster" mail for the entire MTA, one would specify
-
-`domain_for_unqualified_recipient_addresses = "example.com"`
-
-which would rewrite any message sent to "RCPT TO:" as if it had originally been written "RCPT TO:" .
-
-
-## Scope
-
-domain_for_unqualified_recipient_addresses is valid in pathway, pathway_group, global, and listener scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-domain-for-unqualified-sender-address.md b/content/momentum/4/config/ref-domain-for-unqualified-sender-address.md
deleted file mode 100644
index 0f04ea148..000000000
--- a/content/momentum/4/config/ref-domain-for-unqualified-sender-address.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "domain_for_unqualified_sender_address"
-description: "domain for unqualified sender address configure a domain which will be used to substitute for unqualified sender addresses domain for unqualified sender address example com When set domain for unqualified sender address will rewrite the envelope address internally although the original MAIL FROM is still available from Sieve during all..."
----
-
-
-## Name
-
-domain_for_unqualified_sender_address — configure a domain which will be used to substitute for unqualified sender addresses
-
-## Synopsis
-
-`domain_for_unqualified_sender_address = "example.com"`
-
-
-## Description
-
-When set, `domain_for_unqualified_sender_address` will rewrite the envelope address internally, although the original "MAIL FROM:" is still available from Sieve during all rcptto and data phases, using `vctx mailfrom_string`. The trace headers, however, will reflect the original "MAIL FROM" string. NOTE that the "FROM:" header in the e-mail is never rewritten.
-
-`domain_for_unqualified_sender_address` is valid in either a global scope (for a single fallback domain for all unqualified addresses) or can be set in a Pathway scope (for specific fallback domains for any number of specific domains). The usual fallback semantics apply.
-
-
-## Scope
-
-domain_for_unqualified_sender_address is valid in a pathway, pathway_group, listener, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-domain.md b/content/momentum/4/config/ref-domain.md
deleted file mode 100644
index 59b3b02e3..000000000
--- a/content/momentum/4/config/ref-domain.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "domain"
-description: "domain configure domain specific options Use the domain stanza to define per domain configuration options You can nest domain stanzas beneath binding stanzas creating a binding domain configuration For additional details see Section 15 3 Configuration Scopes and Fallback In addition to defining domain stanzas using domain names you can..."
----
-
-
-## Name
-
-domain — configure domain specific options
-
-
-## Description
-
-```
-domain "example.com" {
- # domain-specific settings
-}
-
-binding example {
- domain "example.com" {
- # domain-specific settings for the "example" binding
- }
-}
-```
-
-Use the `domain` stanza to define per-domain configuration options. You can nest `domain` stanzas beneath `binding` stanzas creating a binding:domain configuration. For additional details, see [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback).
-
-In addition to defining `domain` stanzas using domain names, you can also use IP addresses:
-
-```
-domain "192.0.43.10" {
-}
-```
-
-When declaring IPv6 domains, use the following syntax:
-
-```
-domain "[IPv6:fd82:7796:815b:be0:222:19ff:fe52:3629]" {
- # domain specific settings
-}
-```
-
- **Regex Domains. ** In addition to specifying a domain by domain name, you may use Perl-compatible regular expression (PCRE) syntax to define a "Regex Domain". Using regex domains, you can define common rules for domains that have similar configurations, without needing to specify the rules for every possible matching domain.
-
-```
-domain "example.com" {
- max_outbound_connections = 20
-}
-
-domain "/(?:^|[.])example[.](/momentum/4/com-co-uk)$/" {
- max_outbound_connections = 15
- max_deliveries_per_connection = 5
-}
-```
-
-In the example above, mail for `example.com` will use no more than 20 connections, and will send no more than 5 messages on a given connection before tearing it down. Mail for `example.co.uk` will have `max_deliveries_per_connection` set to 5 and `max_outbound_connections` set to 15, as would mail for any sub-domain of `example.com` or `example.co.uk`.
-
-Option resolution will always match a value defined in a normal `domain` stanza before looking for a matching regex domain stanza in the same container, which is why `example.com` would have `max_outbound_connections` set to 20, despite it being set to 15 in the regex domain stanza that matches.
-
-If multiple regex domain stanzas are declared in the same container, normal domain stanzas are checked first before finding a match from the regex domain stanzas in the order that the regex domain stanzas were declared in the configuration file.
-
-### Note
-
-You almost always want to anchor the start and end of your regular expressions when using them for regex domains, otherwise they will perform substring matching which might have unexpected side effects, such as matching subdomains of "bad guy" domains and routing unwanted mail via trusted interfaces.
-
-For domain naming when using Momentum Mobile, see [Multi-protocol Domain Naming](/momentum/mobile/mobile-reference/mobility-mm-7-multiprotocol).
-
-
-## Scope and Valid Options
-
-`domain` is valid in the binding, binding_group, and global scopes.
-
-For a complete list of options valid in the domain scope, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-
-## See Also
-
-[binding](/momentum/4/config/ref-binding), [host](/momentum/4/config/ref-host), [match_cache_life](/momentum/4/config/ref-match-cache-life), [match_cache_size](/momentum/4/config/ref-match-cache-size)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-domainkeys.md b/content/momentum/4/config/ref-domainkeys.md
deleted file mode 100644
index 802af5518..000000000
--- a/content/momentum/4/config/ref-domainkeys.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "domainkeys"
-description: "domainkeys enable or disable domainkeys signing domainkeys enabled domainkeys disabled This directive instructs Momentum to enable or disable signing messages with a Domain Keys signature globally on a specific domain binding or domain within a binding To use this directive you must also configure the dk sign module When the..."
----
-
-
-## Name
-
-domainkeys — enable or disable domainkeys signing
-
-## Synopsis
-
-`domainkeys = "enabled"`
-`domainkeys = "disabled"`
-
-
-## Description
-
-This directive instructs Momentum to enable (or disable) signing messages with a DomainKeys signature globally, on a specific domain, binding, or domain within a binding. To use this directive, you must also configure the [`dk_sign`](/momentum/4/modules/domainkeys) module. When the dk_sign module is loaded, signing occurs for all messages by default. This is the same as setting `domainkeys = "enabled"` at the global scope.
-
-
-## Scope
-
-domainkeys is valid in the binding, binding_group, domain, and global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-drop-body-after-trans-fail.md b/content/momentum/4/config/ref-drop-body-after-trans-fail.md
deleted file mode 100644
index 98e46a288..000000000
--- a/content/momentum/4/config/ref-drop-body-after-trans-fail.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "drop_body_after_trans_fail"
-description: "drop body after trans fail number of retry attempts before freeing message memory drop body after trans fail 3 Momentum aggressively attempts to keep messages in memory to avoid reading their contents from disk For domains which have a large number of transient failures or for which messages often remain..."
----
-
-
-## Name
-
-drop_body_after_trans_fail — number of retry attempts before freeing message memory
-
-## Synopsis
-
-`drop_body_after_trans_fail = 3`
-
-
-## Description
-
-Momentum aggressively attempts to keep messages in memory, to avoid reading their contents from disk. For domains which have a large number of transient failures, or for which messages often remain for a long time in the queue, this can have abusive effects on memory usage. To counter this, Momentum allows you to specify a threshold of transient failures after which Momentum will not store the message in memory, but instead always read it from disk. To force Momentum to read from disk all messages that have had any transient failures, set this value to `0`.
-
-The default value is 3 attempts.
-
-
-## Scope
-
-drop_body_after_trans_fail is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-eccluster-conf.md b/content/momentum/4/config/ref-eccluster-conf.md
deleted file mode 100644
index f42c017b2..000000000
--- a/content/momentum/4/config/ref-eccluster-conf.md
+++ /dev/null
@@ -1,270 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "eccluster.conf File"
-description: "The eccluster conf file configures the behavior of the Momentum Cluster Manager eccmgr Note that it does not configure the behavior of cluster nodes This file is found in the opt msys ecelerity etc conf default directory The following is an example eccluster conf file Example 16 1 eccluster conf..."
----
-
-The `eccluster.conf` file configures the behavior of the Momentum Cluster Manager [eccmgr](/momentum/4/executable/eccmgr). Note that it does not configure the behavior of cluster nodes. This file is found in the `/opt/msys/ecelerity/etc/conf/default/` directory.
-
-The following is an example `eccluster.conf` file:
-
-
-
-
-```
-# Security stanza
-Security {
- user = "ecuser"
- group = "ecuser"
-}
-
-# Logs stanza
-Logs {
- logfile = "/var/log/eccluster/%Y/%m/%d/%{l}/%{s}/%{n}"
- file_mode = "0640"
- dir_mode = "0755"
-}
-
-# Control_Listener stanza
-Control_Listener {
- AuthDigestMD5Parameters = [
- uri = "ecauth://"
- ]
- Enable_Authentication = "true"
-
- Enable_Authorization = "false"
- AuthorizationParameters = [
- uri = "ecauth://"
- ]
-
- Listen "/tmp/2025" {
- Enable_Authentication = "false"
- }
- Listen "127.0.0.1:2025" {
- }
-}
-
-# Cluster Manager event logging
-# troubleshoot the eccmgr instance by looking for its logs
-# in /var/log/eccluster/paniclog.ec
-ec_logger "ec_logger"
-{
- rejectlog = "/var/log/eccluster/rejectlog.ec"
- mainlog = "/var/log/eccluster/mainlog.ec"
- heartbeat = "0"
- paniclog = "/var/log/eccluster/paniclog.ec"
-# acctlog = "/var/log/eccluster/acctlog.ec"
-}
-
-# Include auxillary information prepared by the installer; this must be the
-# last thing in the top level eccluster.conf file
-readonly_include "/opt/msys/etc/installer/eccmgr.d/ecdb.conf"
-```
-
-Using the console from the cluster manager, you can view the contents of the `eccluster.conf` file. For instance, if your configuration matches the example above, the output of **config show Logs** is as follows:
-
-```
-/tmp/2025> config show Logs
-dir_mode = "0755"
-logfile = "/var/log/eccluster/%Y/%m/%d/%{l}/%{s}/%{n}"
-file_mode = "0640"
-```
-
-Since the `eccluster.conf` file is specific to the cluster manager, you cannot view the `Logs` scope from the console on a cluster node.
-
-For a discussion of scopes and fallbacks, see [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback).
-
-For a summary of all the non-module specific configuration options, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/4/modules/) .
-
-The following sections provide an overview of the configuration commonly defined in the `eccluster.conf` file.
-
-
-
-- Security
-
--
-
-For a discussion of the `Security` stanza options, see [security](/momentum/4/config/ref-security).
-
-
-
-- Control_Listener
-
--
-
-The `Control_Listener` stanza, specifies the port on which `eccmgr` listens. On Unix systems, `eccmgr` listens at `/tmp/2025` by default. For a discussion of the Control_Listener, see [*Configuring Momentum's System Console*](/momentum/4/control-listener) .
-
-
-
-- Cluster Manager Event Logging
-
--
-
-For a discussion of using the ec_logger module on the cluster manager, see [“Configuration for the Cluster Manager”](/momentum/4/modules/ec-logger#modules.ec_logger.eccmgr).
-
-For a discussion of using the bounce_logger module on the cluster manager, see [“Configuration for the Cluster Manager”](/momentum/4/modules/bounce-logger#modules.bounce_logger.eccmgr).
-
-
-
-- Log Aggregation
-
--
-
-The `Logs` scope must be configured in order to aggregate node logs on the log aggregator. The following is the default configuration in the `eccluster.conf` file:
-
-
-
-
-```
-Logs {
- logfile = "/var/log/eccluster/%Y/%m/%d/%{l}/%{s}/%{n}"
- file_mode = "0640"
- dir_mode = "0755"
-}
-```
-
-The following options are valid in the `Logs` scope.
-
-
-
-- Control_Cache
-
--
-
-Name of the cache file storing asynchronous responses to clusterwide Momentum inquiries
-
-
-
-- Dir_Mode
-
--
-
-Octal representation of the file permissions of newly created log directories
-
-
-
-- File_Mode
-
--
-
-Octal representation of the file permissions of newly created log files
-
-
-
-- Logfile
-
--
-
-Defines the full pathname of the log file to be written.
-
-As `eccmgr` is capable of writing log files into several distinct locations, a simple interpolation set is provided. All of the POSIX strftime macros are supported (see the POSIX strftime standard), as well as two special interpolations. %{n} will interpolate to the name of the cluster node that generated the log line in question. %{l} will interpolate to the name of the log as named in the logs section of the cluster configuration in the `ecelerity.conf`. For more information about the POSIX strftime macros, see [strftime](http://www.opengroup.org/onlinepubs/009695399/functions/strftime.html).
-
-There is no restriction on the value assigned to this option as long as it creates a valid path after all the macros get expanded; it does not have to exist beforehand, `eccmgr` will create directories as needed, hence the `Dir_Mode`.
-
-
-
-- Max_Idle
-
--
-
-Maximum number of seconds a log file may be left open without writing a new log entry to it
-
-
-
-- Max_Open
-
--
-
-Maximum number of concurrently open log files
-
-
-
-
-
-The example configuration, [“Logs Stanza”](/momentum/4/config/ref-eccluster-conf#conf.ref.eccluster.conf.logs.stanza), creates logs under `/var/log/eccluster` according to the `logfile` setting. This is processed by `strftime` expanding the macros as follows:
-
-
-
-- %Y
-
--
-
-Four digit representation of the year
-
-
-
-- %m
-
--
-
-Two digit representation of the month
-
-
-
-- %d
-
--
-
-Two digit representation of the day of the month
-
-
-
-
-
-Additional special place holders are as follows:
-
-
-
-- %{l}
-
--
-
-Expands to the name of the log specified as the key in the `logs` dictionary configured within the cluster scope of the `ecelerity-cluster.conf` file. See [logs](/momentum/4/modules/4-modules-cluster#option.logs.dictionary)
-
-
-
-- %{n}
-
--
-
-Expands to the name of the node
-
-
-
-- %{s}
-
--
-
-Expands to the name of the subcluster to which the node belongs
-
-
-
-
-
-For example, the mainlog, being pulled from `node1`, where `node1` is a member of the subcluster named `mycluster`, the data would be logged to: /var/log/eccluster*`/year/month/day/`*mainlog/mycluster/node1.
-
-In addition to the place holders shown above, all of the POSIX `strftime` macros are supported. For more information, see [strftime](http://www.opengroup.org/onlinepubs/009695399/functions/strftime.html).
-
-There are no requirements regarding the structure of the filenames, nor is there any expectation that you have configured centralized logging, so you are free to adjust the `logfile` parameter to suit your needs as long as `logfile` defines a valid path after all the macros get expanded. The path does not have to exist beforehand, `eccmgr` will create directories as needed.
-
-
-
-- Included Files
-
--
-
-The `/opt/msys/etc/installer/eccmgr.d/ecdb.conf` file contains the definition of the `ecdb` datasource file.
-
-
-
-- as_logger Module
-
--
-
-The [as_logger](/momentum/4/modules/as-logger) module is specific to the cluster manager. It must be manually added to the `eccluster.conf` file, if needed.
-
-
-
-
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-ecelerity-cluster-conf.md b/content/momentum/4/config/ref-ecelerity-cluster-conf.md
deleted file mode 100644
index e26f6646e..000000000
--- a/content/momentum/4/config/ref-ecelerity-cluster-conf.md
+++ /dev/null
@@ -1,119 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ecelerity-cluster.conf File"
-description: "The ecelerity cluster conf file is a cluster specific configuration file that configures cluster behavior This file is typically used to specify options common to all nodes e g the cluster topology It is included from within ecelerity conf The following is an example ecelerity cluster conf file Example 16..."
----
-
-The `ecelerity-cluster.conf` file is a cluster-specific configuration file that configures cluster behavior. This file is typically used to specify options common to all nodes, e.g. the cluster topology. It is included from within `ecelerity.conf`.
-
-The following is an example `ecelerity-cluster.conf` file:
-
-
-
-
-```
-# Security stanza
-# Ensure that you have appropriate privileges
-Security {
- user = "ecuser"
- group = "ecuser"
- Capabilities = "cap_net_admin+ep cap_net_bind_service+ep cap_net_raw+ep cap_sys_resource+ep"
-}
-
-# Aggregated cluster node logging
-ec_logger "ec_logger_cluster" {
- mainlog = "cluster:///var/log/ecelerity/mainlog.cluster=>master"
- paniclog = "cluster:///var/log/ecelerity/paniclog.cluster=>master"
- rejectlog = "cluster:///var/log/ecelerity/rejectlog.cluster=>master"
- acctlog = "cluster:///var/log/ecelerity/acctlog.cluster=>master"
-}
-
-bounce_logger "bounce_logger_cluster" {
- bouncelog = "cluster:///var/log/ecelerity/bouncelog.cluster=>master"
-}
-
-# ECCluster_Listener stanza
-ECCluster_Listener {
- Listen "*:4802" {}
-}
-
-# Cluster module
-cluster {
- cluster_group = "ec_cluster"
- control_group = "ec_console"
- logs = [
- rejectlog = "/var/log/ecelerity/rejectlog.cluster"
- paniclog = "/var/log/ecelerity/paniclog.cluster"
- mainlog = "/var/log/ecelerity/mainlog.cluster"
- acctlog = "/var/log/ecelerity/acctlog.cluster"
- bouncelog = "/var/log/ecelerity/bouncelog.cluster"
- ]
- Replicate "inbound_cidr" {}
- Replicate "outbound_cidr" {}
- Replicate "outbound_domains" {}
- Replicate "outbound_binding_domains" {}
- Replicate "shared_named_throttles" {}
-
- # DuraVIP network topology hints
- Topology "10.1.1.0/24" {
- cidrmask = "32"
- interface = "eth1"
- }
-}
-```
-
-### Note
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-You **cannot** view the contents of the `ecelerity-cluster.conf` file using the console from the cluster manager. You can only view the contents of this file from a cluster node because it is included from the `ecelerity.conf` file.
-
-For a discussion of scopes and fallbacks, see [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback).
-
-For a summary of all the non-module specific configuration options, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/4/modules/) .
-
-The following sections provide an overview of the configuration commonly defined in the `ecelerity-cluster.conf` file.
-
-
-
-- Security
-
--
-
-The definition of the `Security` stanza in the `ecelerity-cluster.conf` file applies to the cluster nodes only and usually differs from the configuration found in the `eccluster.conf` file.
-
-For a discussion of the `Security` stanza options, see [security](/momentum/4/config/ref-security).
-
-
-
-- ECCluster_Listener
-
--
-
-For a discussion of the `ECCluster_Listener` stanza, see [“ECCluster_Listener Configuration”](/momentum/4/cluster-listeners#eccluster_listener).
-
-
-
-- Aggregated Cluster Node Logging
-
--
-
-For a discussion of using the ec_logger module in aggregated logging, see [“Configuration of Aggregated Cluster Node Logging”](/momentum/4/modules/ec-logger#modules.ec_logger.cluster).
-
-For a discussion of using the bounce_logger module in aggregated logging, see [“Configuration of Aggregated Cluster Node Logging”](/momentum/4/modules/bounce-logger#modules.bounce_logger.cluster).
-
-
-
-- cluster Module
-
--
-
-For details about the cluster module, see [“cluster – Cluster”](/momentum/4/modules/4-modules-cluster).
-
-
-
-
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-ecelerity-conf.md b/content/momentum/4/config/ref-ecelerity-conf.md
deleted file mode 100644
index 7f120394f..000000000
--- a/content/momentum/4/config/ref-ecelerity-conf.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ecelerity.conf File"
-description: "The ecelerity conf file is the master configuration file for the Momentum application server It contains general configuration for Momentum along with other configuration files included from within ecelerity conf The default search path for the configuration file is Configuration options defined at the top level of the ecelerity conf..."
----
-
-The `ecelerity.conf` file is the master configuration file for the Momentum application server. It contains general configuration for Momentum, along with other configuration files included from within `ecelerity.conf`.
-
-The default search path for the configuration file is:
-
-```
-/opt/msys/ecelerity/etc/conf/global:/opt/msys/ecelerity/etc/conf/{NODENAME}:»
- /opt/msys/ecelerity/etc/conf/default
-```
-
-Configuration options defined at the top level of the `ecelerity.conf` file are defined in a global scope. Many of these options can be defined in other scopes for a more fine-grained configuration. For example, the `max_outbound_connections` option can be set globally to apply to all outbound connections or within a domain scope to apply to a specific domain only. You can also set it in both scopes if you wish.
-
-For a discussion of scopes and fallbacks, see [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback).
-
-For a summary of all the non-module specific configuration options, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/4/modules/) .
-
-The following sections provide an overview of the configuration commonly defined in the `ecelerity.conf` file.
-
-
-
-- Control Listener
-
--
-
-Momentum's control listener is configured in the `ecelerity.conf` file. For details, see [*Configuring Momentum's System Console*](/momentum/4/control-listener) .
-
-
-
-- Inbound Mail Service Listeners
-
--
-
-Momentum's inbound mail service for SMTP or ECStream is configured in the `ecelerity.conf` file; while inbound mail service for HTTP is configured in the `msg_gen.conf` file included from within `ecelerity.conf`. Follow each link for details:
-
-* SMTP - Simple Mail Transfer Protocol (see [*Configuring Inbound Mail Service Using SMTP*](/momentum/4/esmtp-listener) .)
-
-* HTTP - Hypertext Transfer Protocol (see [*Configuring Inbound Mail Service Using HTTP*](/momentum/4/http-listener) .)
-
-* ECStream - Custom, bare-bones, high performance injection mechanism (see [*Configuring Inbound Mail Service Using ECStream*](/momentum/4/ecstream-listener) .)
-
-
-
-- Cluster Listener
-
--
-
-The ECCluster_Listener configures direct, point-to-point communication between cluster nodes and is configured in the `ecelerity-cluster.conf` file that is included from within `ecelerity.conf`. For details, see [“ECCluster_Listener Configuration”](/momentum/4/cluster-listeners#eccluster_listener).
-
-
-
-- Module Configuration
-
--
-
-Momentum's functionality is extended through its module API. Modules can be explicitly loaded and their configuration options set in the `ecelerity.conf` file. For details, see [“Modules”](/momentum/4/4-module-config).
-
-
-
-- Outbound Mail Delivery Configuration
-
--
-
-Momentum provides a variety of options that allows you to control its outbound mail delivery. For details, see [*Configuring Outbound Mail Delivery*](/momentum/4/outbound-mail) .
-
-
-
-
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-ecstream-port.md b/content/momentum/4/config/ref-ecstream-port.md
deleted file mode 100644
index b9c0505cd..000000000
--- a/content/momentum/4/config/ref-ecstream-port.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ecstream_port"
-description: "ecstream port configure the port for ecstream deliveries ecstream port 1825 When Momentum is set to perform delivery via ecstream this option sets the destination port that will be used The default value is 1825 Example 72 6 ecstream port example ecstream port is valid in the binding binding group..."
----
-
-
-## Name
-
-ecstream_port — configure the port for ecstream deliveries
-
-## Synopsis
-
-`ecstream_port = 1825`
-
-
-## Description
-
-When Momentum is set to [perform delivery via ecstream](/momentum/4/config/ref-delivery-method), this option sets the *destination* port that will be used. The default value is `1825`.
-
-
-
-
-```
-domain “gold.example.com” {
- delivery_method = "ECSTREAM"
- ecstream_port = 31337
-}
-```
-
-
-## Scope
-
-ecstream_port is valid in the binding, binding_group, domain, and global scopes.
-
-
-## See Also
-
-[delivery_method](/momentum/4/config/ref-delivery-method)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-ecstream-timeout.md b/content/momentum/4/config/ref-ecstream-timeout.md
deleted file mode 100644
index c9933d10f..000000000
--- a/content/momentum/4/config/ref-ecstream-timeout.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ecstream_timeout"
-description: "ecstream timeout the amount of time to wait for an ecstream connection to be established ecstream timeout 600 The amount of time in seconds to spend waiting for a remote ecstream connection to be established The default value is 600 ecstream timeout is valid in the binding binding group domain..."
----
-
-
-## Name
-
-ecstream_timeout — the amount of time to wait for an ecstream connection to be established
-
-## Synopsis
-
-`ecstream_timeout = 600`
-
-
-## Description
-
-The amount of time in seconds to spend waiting for a remote ecstream connection to be established. The default value is `600`.
-
-
-## Scope
-
-ecstream_timeout is valid in the binding, binding_group, domain, and global scopes.
-
-
-## See Also
-
-[ecstream_port](/momentum/4/config/ref-ecstream-port)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-ehlo-hostname.md b/content/momentum/4/config/ref-ehlo-hostname.md
deleted file mode 100644
index 53bca40f7..000000000
--- a/content/momentum/4/config/ref-ehlo-hostname.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ehlo_hostname"
-description: "ehlo hostname set the hostname used for EHLO in outbound mail EHLO Hostname example com EHLO Hostname message EHLO Hostname hostname When delivering messages to remote mail exchanges Momentum uses the SMTP protocol This requires initiating the conversation with the remote server using the EHLO or HELO command Both commands..."
----
-
-
-## Name
-
-ehlo_hostname — set the hostname used for EHLO in outbound mail
-
-## Synopsis
-
-`EHLO_Hostname = "example.com"`
-
-`EHLO_Hostname = "__message__"`
-
-`EHLO_Hostname = "__hostname__"`
-
-
-## Description
-
-```
-EHLO_Hostname =
-EHLO_Hostname = __message__
-EHLO_Hostname = __hostname__
-
-Domain example.com {
- EHLO_Hostname =
- EHLO_Hostname = __message__
- EHLO_Hostname = __hostname__
-}
-
-Binding example {
- EHLO_Hostname =
- EHLO_Hostname = __message__
- EHLO_Hostname = __hostname__
-
- Domain example.com {
- EHLO_Hostname =
- EHLO_Hostname = __message__
- EHLO_Hostname = __hostname__
- }
-}
-```
-
-When delivering messages to remote mail exchanges, Momentum uses the SMTP protocol. This requires initiating the conversation with the remote server using the `EHLO` or `HELO` command. Both commands are followed by the canonical name of the initiator.
-
-When EHLO_Hostname is set to `__message__`, Momentum will extract the domain name from the envelope sender of the outbound message. If you prefer to use the hostname of the local machine (as returned by the `gethostname()` system call, then you may specify the special value `__hostname__`.
-
-Otherwise, an arbitrary hostname may be specified using the first syntax listed above.
-
-The default value for this option is `__hostname__`.
-
-
-## Scope
-
-ehlo_hostname is valid in the binding, binding_group, domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-ehlo-timeout.md b/content/momentum/4/config/ref-ehlo-timeout.md
deleted file mode 100644
index 4542021c4..000000000
--- a/content/momentum/4/config/ref-ehlo-timeout.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "ehlo_timeout"
-description: "ehlo timeout network timeout for EHLO ehlo timeout 300 The amount of time in seconds to wait for a response to the EHLO command The default value is 300 ehlo timeout is valid in the binding binding group domain and global scopes..."
----
-
-
-## Name
-
-ehlo_timeout — network timeout for EHLO
-
-## Synopsis
-
-`ehlo_timeout = 300`
-
-
-## Description
-
-The amount of time in seconds to wait for a response to the `EHLO` command. The default value is `300`.
-
-
-## Scope
-
-ehlo_timeout is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-enable-fbl-header-insertion.md b/content/momentum/4/config/ref-enable-fbl-header-insertion.md
deleted file mode 100644
index cd532358f..000000000
--- a/content/momentum/4/config/ref-enable-fbl-header-insertion.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "enable_fbl_header_insertion"
-description: "enable fbl header insertion enable or disable fbl header insertion enable fbl header insertion enabled This option is used to enable or disable feedback loop header insertion Note that for header insertion to work the fbl module option Auto log must also be set to true This option is valid..."
----
-
-
-## Name
-
-enable_fbl_header_insertion — enable or disable fbl header insertion
-
-## Synopsis
-
-`enable_fbl_header_insertion = "enabled"`
-
-
-## Description
-
-This option is used to enable or disable feedback loop header insertion. Note that for header insertion to work, the fbl module option, `Auto_log`, must also be set to `true`.
-
-
-## Scope
-
-This option is valid in the global, binding, binding_group, and domain scopes.
-
-
-## See Also
-
-[“fbl - Feedback Loop”](/momentum/4/modules/fbl)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-event-loop.md b/content/momentum/4/config/ref-event-loop.md
deleted file mode 100644
index 4deb8a3c0..000000000
--- a/content/momentum/4/config/ref-event-loop.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "event_loop"
-description: "event loop associate a pool of event loops within a listener scope to use multiple threads event loop pool name To use this option you must have a Supercharger license This option is used in a multiple event loop configuration To configure threading for email reception assign event loop the..."
----
-
-
-## Name
-
-event_loop — associate a pool of event loops within a listener scope to use multiple threads
-
-## Synopsis
-
-`event_loop = "pool_name"`
-
-
-## Description
-
-### Note
-
-To use this option, you must have a Supercharger license.
-
-This option is used in a multiple event loop configuration. To configure threading for email reception, assign `event_loop` the name of your `eventloop` inside a listener scope. Note that the name must match what was defined in the EventLoop configuration. See [eventloop](/momentum/4/config/ref-eventloop).
-
-The following is an example configuration clause:
-
-```
-ESMTP_Listener {
- # Multi-threading - use event loops in ESMTP listener
- event_loop = "event_loops"
-
- .
- .
- .
-```
-
-For an example multiple event loop configuration, see [*Configuring Multiple Event Loops*](/momentum/4/multi-event-loops) .
-
-### Note
-
-If you change the value of `event_loop` at runtime, you must restart the ecelerity process using the executable command [ec_ctl](/momentum/4/executable/ec-ctl). Note: issuing the ec_console command **config reload** will not work.
-
-There is no default value for this option.
-
-
-## Scope
-
-`event_loop` is valid in the esmtp_listener, the ecstream_listener, the http_listener and the listen scopes within those scopes.
-
-
-## See Also
-
-[eventloop](/momentum/4/config/ref-eventloop)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-eventloop.md b/content/momentum/4/config/ref-eventloop.md
deleted file mode 100644
index 99faa7384..000000000
--- a/content/momentum/4/config/ref-eventloop.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "eventloop"
-description: "eventloop define a pool of event loops to enable multiple event loop configuration To use this option you must have a Supercharger license This license specifies a maximum number of event loops When configuring an event loop the concurrency option in the eventloop scope cannot exceed the licensed number of..."
----
-
-
-## Name
-
-eventloop — define a pool of event loops to enable multiple event loop configuration
-
-
-## Description
-
-### Note
-
-To use this option, you must have a Supercharger license. This license specifies a maximum number of event loops. When configuring an event loop, the `concurrency` option in the eventloop scope cannot exceed the licensed number of event loops.
-
-This scope defines a pool of event loops to create a multiple event loop configuration. This eventloop is then associated with specific tasks, such as SMTP reception. In general, we recommend defining only one eventloop pool.
-
-The following is an example configuration clause:
-
-```
-EventLoop "event_loops" {
- concurrency = 6
-}
-```
-
-For an example multiple event loop configuration, see [*Configuring Multiple Event Loops*](/momentum/4/multi-event-loops) .
-
-The only option valid in the eventloop scope is `concurrency`. Set the `concurrency` option to a value equal to approximately 75% of the total number of CPUs in the system. If the value of the `concurrency` option exceeds the licensed number of event loops you will see an error message in the log file such as the following:
-
-```
-[Wed 19 Jun 2013 11:02:47] <0x29b7510> Event loop license violation
-[Wed 19 Jun 2013 11:02:47] <0x29b7510> Invalid license [Event Loop
-Concurrency]
-[Wed 19 Jun 2013 11:02:47] <0x29b7510> License machine mismatch
-```
-
-### Note
-
-You cannot define an eventloop or change its `concurrency` at runtime as these changes require you to restart the ecelerity process. To restart, use the executable command [ec_ctl](/momentum/4/executable/ec-ctl); issuing the ec_console command **config reload** will not work.
-
-
-## Scope
-
-`eventloop` is valid in the global scope.
-
-
-## See Also
-
-[delivery_pool](/momentum/4/config/ref-delivery-pool), [maintainer_pool](/momentum/4/config/ref-maintainer-pool), and [event_loop](/momentum/4/config/ref-event-loop)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-events-per-iter.md b/content/momentum/4/config/ref-events-per-iter.md
deleted file mode 100644
index 0f90c5ab2..000000000
--- a/content/momentum/4/config/ref-events-per-iter.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "events_per_iter"
-description: "events per iter employ when using a concurrency greater than 1 events per iter 0 This option may be used when using a concurrency greater than 1 a threaded accept When running in this mode accept is called on a secondary thread specified by the pool name and the accepted..."
----
-
-
-## Name
-
-events_per_iter — employ when using a concurrency greater than 1.
-
-## Synopsis
-
-`events_per_iter = 0`
-
-
-## Description
-
-This option may be used when using a concurrency greater than 1 (a threaded accept). When running in this mode, `accept()` is called on a secondary thread (specified by the `pool_name`) and the accepted connection put on a queue to be dispatched from the main thread. `events_per_iter` limits the number of items that can be dispatched in a single scheduler iteration. If unspecified, or less than 1, then `events_per_iter` will be treated as though it was set to 1.
-
-The default value is `0`.
-
-
-## Scope
-
-events_per_iter is valid in the control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen, and xmpp_listener scopes.
-
-
-## See Also
-
-[pool_name](/momentum/4/esmtp-listener#esmtp_listener.config)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-exclude-vctx-conn.md b/content/momentum/4/config/ref-exclude-vctx-conn.md
deleted file mode 100644
index 08ea4ab2a..000000000
--- a/content/momentum/4/config/ref-exclude-vctx-conn.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "exclude_vctx_conn"
-description: "exclude vctx conn exclude validation context keys from being journaled in the spool metadata Exclude VCTX Conn regex otherregex With more advanced policy configurations the aggregate size of the validation context data retained in memory may become significant especially if keep message dicts in memory is enabled Exclude VCTX Conn..."
----
-
-
-## Name
-
-exclude_vctx_conn — exclude validation context keys from being journaled in the spool metadata.
-
-## Synopsis
-
-`Exclude_VCTX_Conn = ("regex$" "otherregex")`
-
-
-## Description
-
-With more advanced policy configurations, the aggregate size of the validation context data retained in memory may become significant, especially if `keep_message_dicts_in_memory` is enabled.
-
-`Exclude_VCTX_Conn` allows you to specify a list of one or more Perl-compatible regular expressions. During swap out, the keys to the connection dictionary are compared against the patterns listed by `Exclude_VCTX_Conn`. If a key matches, then that data value will be deleted from the dictionary.
-
-Note that keys that have special significance to the core product (these typically have a `#` prefix) can not be filtered by this module.
-
-
-## Scope
-
-Exclude_VCTX_Conn is valid in the global, binding, binding_group, and domain scopes.
-
-
-## See Also
-
-[exclude_vctx_mess](/momentum/4/config/ref-exclude-vctx-mess), [keep_message_dicts_in_memory](/momentum/4/config/ref-keep-message-dicts-in-memory)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-exclude-vctx-mess.md b/content/momentum/4/config/ref-exclude-vctx-mess.md
deleted file mode 100644
index eeba672e2..000000000
--- a/content/momentum/4/config/ref-exclude-vctx-mess.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "exclude_vctx_mess"
-description: "exclude vctx mess exclude validation context keys from being journaled in the spool metadata Exclude VCTX Mess regex otherregex With more advanced policy configurations the aggregate size of the validation context data retained in memory may become significant especially if keep message dicts in memory is enabled Exclude VCTX Mess..."
----
-
-
-## Name
-
-exclude_vctx_mess — exclude validation context keys from being journaled in the spool metadata.
-
-## Synopsis
-
-`Exclude_VCTX_Mess = ("regex$" "otherregex")`
-
-
-## Description
-
-With more advanced policy configurations, the aggregate size of the validation context data retained in memory may become significant, especially if `keep_message_dicts_in_memory` is enabled.
-
-`Exclude_VCTX_Mess` allows you to specify a list of one or more Perl-compatible regular expressions. During swap out, the keys to the message dictionary are compared against the patterns listed by `Exclude_VCTX_Mess`. If a key matches, then that data value will be deleted from the dictionary.
-
-Note that keys that have special significance to the core product (these typically have a `#` prefix) can not be filtered by this module.
-
-```
-# filters all keys ending in _string from the per-message context
-Exclude_VCTX_Mess = ( "_string$" )
-```
-
-## Scope
-
-Exclude_VCTX_Mess is valid in the global, binding, binding_group, and domain scopes.
-
-
-## See Also
-
-[exclude_vctx_mess](/momentum/4/config/ref-exclude-vctx-mess), [keep_message_dicts_in_memory](/momentum/4/config/ref-keep-message-dicts-in-memory)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-expensive-batch-assessment.md b/content/momentum/4/config/ref-expensive-batch-assessment.md
deleted file mode 100644
index 1f5a7c631..000000000
--- a/content/momentum/4/config/ref-expensive-batch-assessment.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "expensive_batch_assessment"
-description: "expensive batch assessment only treat messages as different if the headers are rendered differently expensive batch assessment false When looking for messages that can be delivered as a batch Momentum checks the headers and bodies of every MIME part of messages that were submitted as a batch a batch being..."
----
-
-
-## Name
-
-expensive_batch_assessment — only treat messages as different if the headers are rendered differently
-
-## Synopsis
-
-`expensive_batch_assessment = false`
-
-
-## Description
-
-When looking for messages that can be delivered as a batch, Momentum checks the headers and bodies of every MIME part of messages that were submitted as a batch—a batch being one transaction with multiple RCPT TOs. Normally, if the bodies or headers have been modified since reception, the messages are treated as different. Enabling `expensive_batch_assessment` renders the headers from each message to strings, and compares the strings, only treating the messages as different if the headers render differently. This enables messages with (identical) header modifications to be sent out in a batch, at the expense of more CPU load and IO. You should only enable this option if you are doing header modification using DKIM signing, for example, and you want batched outbound delivery to continue to work despite this.
-
-The default value is `false`.
-
-
-## Scope
-
-expensive_batch_assessment is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-force-fsync.md b/content/momentum/4/config/ref-force-fsync.md
deleted file mode 100644
index d3f870c8a..000000000
--- a/content/momentum/4/config/ref-force-fsync.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "force_fsync"
-description: "force fsync ensure that data is synced to disk on reception force fsync false force fsync true Upon receiving a message but before a 250 response is sent to the client confirming receipt of that message Momentum must write the message to the spool If the system does not invoke..."
----
-
-
-## Name
-
-force_fsync — ensure that data is synced to disk on reception
-
-## Synopsis
-
-`force_fsync = false`
-
-`force_fsync = true`
-
-
-## Description
-
-Upon receiving a message, but before a 250 response is sent to the client confirming receipt of that message, Momentum must write the message to the spool. If the system does not invoke the `fsync` call, it cannot guarantee that the message has been completely journalled to permanent storage.
-
-If this option is set to true, `fsync` (or `fdatasync` if available) will be called prior to returning a confirmation to the SMTP client. If it is false, the system will not.
-
-Mail systems concerned about losing messages during a system crash should set this option to `true`
-
-The default is `false`.
-
-
-## Scope
-
-force_fsync is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-fully-resolve-before-smtp.md b/content/momentum/4/config/ref-fully-resolve-before-smtp.md
deleted file mode 100644
index 1499499c3..000000000
--- a/content/momentum/4/config/ref-fully-resolve-before-smtp.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "fully_resolve_before_smtp"
-description: "fully resolve before smtp resolve all MX and A records before attempting delivery fully resolve before smtp true fully resolve before smtp false Momentum uses an asynchronous DNS architecture that allows delivery to commence as soon as there is a valid A record for any of a given domain's MX..."
----
-
-
-## Name
-
-fully_resolve_before_smtp — resolve all MX and A records before attempting delivery
-
-## Synopsis
-
-`fully_resolve_before_smtp = true`
-
-`fully_resolve_before_smtp = false`
-
-
-## Description
-
-Momentum uses an asynchronous DNS architecture that allows delivery to commence as soon as there is a valid A record for any of a given domain's MX records. This can occasionally lead to an initial delivery attempt to an MX that is not the lowest numbered.
-
-If you need to ensure that the highest-priority MX is selected, you can enable this option; it is configurable globally as well as at the `Domain` and `Binding` level, so that you can choose where it is applied; setting this option to `true` will marginally slow down the DNS resolution process, and on aggregate, may affect performance, depending on the quantity of mail and the number of domains to which it is being delivered.
-
-The default value is `true`.
-
-When a domain is listed in `relay_domains`, we wait for all MXs to be resolved when opening new connections. `fully_resolve_before_smtp` controls this behavior for domains not listed in `relay_domains`.
-
-
-## Scope
-
-fully_resolve_before_smtp is valid in the binding, binding_group, domain, and global scopes.
-
-
-## See Also
-
-[relay_domains](/momentum/4/config/ref-relay-domains)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-gateway.md b/content/momentum/4/config/ref-gateway.md
deleted file mode 100644
index a4c10e2e9..000000000
--- a/content/momentum/4/config/ref-gateway.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "gateway"
-description: "gateway configure a static SMTP route for mail Gateway 10 0 0 1 Gateway fe 80 a 00 1 Gateway my local smart host This directive allows for what other MT As call smarthosting If this option is specified at the global configuration level all outbound connections will be made..."
----
-
-
-## Name
-
-gateway — configure a static SMTP route for mail
-
-## Synopsis
-
-`Gateway = "10.0.0.1"`
-
-`Gateway = "[fe80::a00]:1"`
-
-`Gateway = "my.local.smart.host"`
-
-
-## Description
-
-This directive allows for what other MTAs call "smarthosting." If this option is specified at the global configuration level, all outbound connections will be made to the host name specified.
-
-### Note
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require that, in circumstances where a configuration parameter can also contain something other than an IP address, that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts` do not require the IPv6 address in brackets.
-
-If it is specified within a `Domain` stanza, Momentum will ignore the MXs for the domain and send mail to the gateway host name instead. Other configurations in the domain stanza for that domain will have no effects if a gateway is specified, as mails to that domain are actually sent to the gateway.
-
-In many use cases, this option is supplanted by the Routes option. See [routes](/momentum/4/config/ref-routes) for more information.
-
-### Note
-
-When delivering mail via ecstream, do not use the `routes`. Use the `gateway` instead.
-
-
-## Scope
-
-gateway is valid in the binding, binding_group, domain and global scopes.
-
-
-## See Also
-
-[routes](/momentum/4/config/ref-routes)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-generate-bounces-for-multi-recipient-policy-rejections.md b/content/momentum/4/config/ref-generate-bounces-for-multi-recipient-policy-rejections.md
deleted file mode 100644
index a38f78fd9..000000000
--- a/content/momentum/4/config/ref-generate-bounces-for-multi-recipient-policy-rejections.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "generate_bounces_for_multi_recipient_policy_rejections"
-description: "generate bounces for multi recipient policy rejections generate MD Ns after reception for policy rejections generate bounces for multi recipient policy rejections true generate bounces for multi recipient policy rejections false If you have configured a module or a policy script to reject mail in the each rcpt phase of..."
----
-
-
-## Name
-
-generate_bounces_for_multi_recipient_policy_rejections — generate MDNs after reception for policy rejections
-
-## Synopsis
-
-`generate_bounces_for_multi_recipient_policy_rejections = true`
-
-`generate_bounces_for_multi_recipient_policy_rejections = false`
-
-
-## Description
-
-If you have configured a module or a policy script to reject mail in the each_rcpt phase of the validation process, then it is possible that you don't want to generate an MDN for that rejected mail, on the grounds that it was unwanted mail and likely has a bogus sender. If that is the case, setting `generate_bounces_for_multi_recipient_policy_rejections` to `false` will cause Momentum to suppress MDN generation for multi-recipient mail when some, but not all, recipients were rejected.
-
-When all recipients reject the mail, Momentum will respond with a failure code to the sender; an MDN does not need to be generated in this case.
-
-The default value is `true` for conformance with the SMTP specification.
-
-
-## Scope
-
-generate_bounces_for_multi_recipient_policy_rejections is valid in the global, pathway_group, and pathway scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-generate-bounces.md b/content/momentum/4/config/ref-generate-bounces.md
deleted file mode 100644
index 24aeccbb8..000000000
--- a/content/momentum/4/config/ref-generate-bounces.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "generate_bounces"
-description: "generate bounces generate MD Ns if mail is failed after reception generate bounces true generate bounces false Momentum has the ability to generate failure messages to be delivered to the envelope sender of an undeliverable message In large outbound mail systems for example large mailing lists it is often desirable..."
----
-
-
-## Name
-
-generate_bounces — generate MDNs if mail is failed after reception
-
-## Synopsis
-
-`generate_bounces = true`
-
-`generate_bounces = false`
-
-
-## Description
-
-Momentum has the ability to generate failure messages to be delivered to the envelope sender of an undeliverable message. In large outbound mail systems (for example large mailing lists), it is often desirable to suppress the generation and delivery of such failure notifications and opt for a more efficient approach such as post-processing failure logs. Note that this configuration option applies only to in-band bounces.
-
-The default value for this option is `true` for conformance with the SMTP specification.
-
-
-## Scope
-
-generate_bounces is valid in the binding, binding_group, domain and global scopes.
-
-
-## See Also
-
-[bounce_behavior](/momentum/4/config/ref-bounce-behavior)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-generate-delay-dsn.md b/content/momentum/4/config/ref-generate-delay-dsn.md
deleted file mode 100644
index 76c4187c3..000000000
--- a/content/momentum/4/config/ref-generate-delay-dsn.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "generate_delay_dsn"
-description: "generate delay dsn generate DS Ns if mail is delayed generate delay dsn true generate delay dsn false Momentum has the ability to generate warning messages delivery status notifications or DS Ns that are delivered to the envelope sender of a message that has not yet been delivered The default..."
----
-
-
-## Name
-
-generate_delay_dsn — generate DSNs if mail is delayed
-
-## Synopsis
-
-`generate_delay_dsn = true`
-
-`generate_delay_dsn = false`
-
-
-## Description
-
-Momentum has the ability to generate warning messages (delivery status notifications, or DSNs) that are delivered to the envelope sender of a message that has not yet been delivered.
-
-The default value for this option is `false`.
-
-### Note
-
-To use this feature the [delay_dsn](/momentum/4/modules/delay-dsn) module must be loaded.
-
-
-## Scope
-
-`generate_delay_dsn` is valid in the binding_group, binding, domain and global scopes.
-
-
-## See Also
-
-[delay_dsn_retry_interval](/momentum/4/config/ref-delay-dsn-retry-interval), [delay_dsn_max_retry_interval](/momentum/4/config/ref-delay-dsn-max-retry-interval) and [generate_delay_dsn](/momentum/4/config/ref-generate-delay-dsn)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-growbuf-size.md b/content/momentum/4/config/ref-growbuf-size.md
deleted file mode 100644
index 74cb3466e..000000000
--- a/content/momentum/4/config/ref-growbuf-size.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "growbuf_size"
-description: "growbuf size The size of an element in a growbuf chain growbuf size 16384 Momentum uses a growbuf chain to hold message contents as they are received The chain allows reception of messages into memory without first having to know how much memory to allocate By default each element in..."
----
-
-
-## Name
-
-growbuf_size — The size of an element in a growbuf chain
-
-## Synopsis
-
-`growbuf_size = 16384`
-
-
-## Description
-
-Momentum uses a growbuf chain to hold message contents as they are received. The chain allows reception of messages into memory without first having to know how much memory to allocate. By default, each element in the chain is 16k in size, meaning that the first 16k of a message will occupy one growbuf, the next will occupy the second in the chain and so forth. When the memory usage for a growbuf chain exceeds the `large_message_threshold`, the growbuf chain is swapped to disk and reception continues.
-
-For better performance, you should ensure that the `growbuf_size` is large enough to accomodate the typical message size you see entering your system. This will cause the majority of your messages to fit in a single growbuf and reduce the amount of work required to receive those messages.
-
-Raising `growbuf_size` too high will be a waste of memory, so you should not set this value based on the maximum message size you expect to transit; Momentum will still continue to function well even if the message size greatly exceeds the `growbuf_size`.
-
-The default is 16384 bytes. If the majority of your messages are larger than the default, then you could consider adjusting the `growbuf_size` upwards so that the system will run more efficiently.
-
-
-## Scope
-
-growbuf_size is valid in the global scope.
-
-
-## See Also
-
-[large_message_threshold](/momentum/4/config/ref-large-message-threshold)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-host-failure-retry.md b/content/momentum/4/config/ref-host-failure-retry.md
deleted file mode 100644
index f5f9aea2a..000000000
--- a/content/momentum/4/config/ref-host-failure-retry.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "host_failure_retry"
-description: "host failure retry time to wait before attempting a retry Host Failure Retry 120 The amount of time in seconds to wait after a connect or protocol failure on a connection to a specific IP address before attempting deliveries to that IP address again The default value is 120 host..."
----
-
-
-## Name
-
-host_failure_retry — time to wait before attempting a retry
-
-## Synopsis
-
-`Host_Failure_Retry = 120`
-
-
-## Description
-
-The amount of time in seconds to wait after a connect or protocol failure on a connection to a specific IP address before attempting deliveries to that IP address again. The default value is `120`.
-
-
-## Scope
-
-host_failure_retry is valid in the domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-host.md b/content/momentum/4/config/ref-host.md
deleted file mode 100644
index 03ea58733..000000000
--- a/content/momentum/4/config/ref-host.md
+++ /dev/null
@@ -1,108 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "host"
-description: "host configure host specific options Use the host stanza to define per host configuration options You can nest host stanzas beneath binding stanzas to define binding host configuration options For additional details see Section 15 3 Configuration Scopes and Fallback The following options can be specified in a host stanza..."
----
-
-
-## Name
-
-host — configure host specific options
-
-
-## Description
-
-```
-host "smtp.example.com" {
- # host specific settings
-}
-
-binding "example" {
- # binding specific settings
- host "smtp.example.com" {
- # host specific settings for this binding
- }
-}
-```
-
-Use the `host` stanza to define per-host configuration options. You can nest `host` stanzas beneath `binding` stanzas to define binding::host configuration options. For additional details, see [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback).
-
-The following options can be specified in a `host` stanza:
-
-* [cluster_max_outbound_connections](/momentum/4/config/ref-cluster-max-outbound-connections)
-
-* [max_outbound_connections](/momentum/4/config/ref-max-outbound-connections)
-
-* [outbound_throttle_connections](/momentum/4/config/ref-outbound-throttle-connections)
-
-* [outbound_throttle_messages](/momentum/4/config/ref-outbound-throttle-messages)
-
-**Configuration Change. ** As of version 4.2, Regex is supported in the `Host` stanza.
-
-In addition to specifying a host by host name, you may use Perl-compatible regular expression (PCRE) syntax to define a "Regex Host". Using regex hosts you can define common rules for hosts that have similar configurations, without needing to specify the rules for every possible matching host.
-
-```
-host "/(?:^|[.])example[.](/momentum/4/com-co-uk)$/" {
- max_outbound_connections = 15
-}
-```
-
-If you are unsure of the correct host name, you can determine it using the **domain *`domain_name`*** command from the system console. For example, issuing the command **`domain messagesystems.com`** results in the following output:
-
-```
-Domain 'messagesystems.com' has 2 MXs and a TTL of 86397 seconds
- [10 edge.omniti.com. TTL:597]
- => [8.8.38.6]:0 IPv4 (0.00ms con 0.00ms dlv)
- [10 edge2.omniti.com. TTL:597]
- [8.8.38.36]:0 IPv4 (0.00ms con 0.00ms dlv)
- ...
-```
-
-In this case, the host name to use would be `edge.omniti.com` or `edge2.omniti.com`.
-
-You can also determine MX servers from the Unix command line by entering **dig *`domain_name`* mx** . If you do a dig and there are no MX records returned, then the host name is the same as the domain name.
-
-
-### `host` Scope
-
-The `host` scope is more specific than the `domain` scope; host applies to the individual host name of the mail exchanger that is being communicated with.
-
-For example, you can determine Yahoo's MX hosts by issuing the command, **dig +short yahoo.com mx** , from the command line. You should see something similar to the following:
-
-```
-1 i.mx.mail.yahoo.com.
-1 j.mx.mail.yahoo.com.
-1 k.mx.mail.yahoo.com.
-1 a.mx.mail.yahoo.com.
-1 b.mx.mail.yahoo.com.
-1 c.mx.mail.yahoo.com.
-1 d.mx.mail.yahoo.com.
-1 e.mx.mail.yahoo.com.
-1 f.mx.mail.yahoo.com.
-1 g.mx.mail.yahoo.com.
-1 h.mx.mail.yahoo.com.
-```
-
-If you wanted to configure settings specific to `i.mx.mail.yahoo.com`, you would do so using a `host` stanza.
-
-You might use a `host` stanza outside of a `domain` stanza if you were configuring concurrency limits for hosts that provide service for multiple domains. For instance, Google apps provides mail services to many domains. To limit your overall concurrency to a specific MX machine at Google for a given binding, regardless of which domain you are sending to, do the following:
-
-```
-binding "mycustomer" {
- host "aspmx.l.google.com" {
- max_outbound_connections = 32
- }
-}
-```
-
-To be effective, you would do this for each of the MX hosts that service Google apps hosts. You can find the list of hosts in the documentation provided by Google.
-
-
-## Scope
-
-`host` is valid in the binding, binding_group, and global scopes.
-
-
-## See Also
-
-[binding](/momentum/4/config/ref-binding), [domain](/momentum/4/config/ref-domain)
diff --git a/content/momentum/4/config/ref-hostname.md b/content/momentum/4/config/ref-hostname.md
deleted file mode 100644
index 10462b862..000000000
--- a/content/momentum/4/config/ref-hostname.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "hostname"
-description: "hostname override the system configured hostname hostname my alternate host name This configuration directive is used to override the default hostname as determined by the gethostname system call If this value is unset Momentum will use the system's hostname as the default hostname is valid in the global scope..."
----
-
-
-## Name
-
-hostname — override the system configured hostname
-
-## Synopsis
-
-`hostname = "my.alternate.host.name"`
-
-
-## Description
-
-This configuration directive is used to override the default hostname as determined by the `gethostname` system call. If this value is unset, Momentum will use the system's hostname as the default.
-
-
-## Scope
-
-hostname is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-hot-domains.md b/content/momentum/4/config/ref-hot-domains.md
deleted file mode 100644
index 6260d0107..000000000
--- a/content/momentum/4/config/ref-hot-domains.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-lastUpdated: "02/09/2021"
-title: "hot_domains"
-description: "Configure the list of high-traffic domains that should be spread across maintainer threads"
----
-
-
-## Name
-
-hot_domains — configure the list of high-traffic domains that should be spread across maintainer threads
-
-## Synopsis
-
-`Hot_Domains = ( "gmail.com" "hotmail.com" )`
-
-
-## Description
-
- The hot domains subsystem is intended to spread highly-trafficked domains across multiple maintainer threads.
-
- The maintainer threads in the maintainer pool are responsible for managing the mail queues for all the domains and bindings in the system, and handing off messages to SMTP delivery connections for delivery.
-
- All domains are assigned to a particular maintainer thread in the maintainer thread pool. Normally a domain is assigned to a thread when a message is received to that domain.
-
- The hot domains are different, and are assigned to threads during start-up, in a round-robin fashion. This is to try to avoid having multiple high-traffic domains serviced by the same maintainer thread, so reduce the chance that a particular maintainer thread will saturate a CPU core (i.e.: CPU core 100% used). If a maintainer thread saturates a CPU, then it may affect throughput, because the maintainer thread may not be able to process mail queues and service connections fast enough to keep up with reception and delivery rates.
-
-Here is an example of a hot domains configuration from SparkPost production:
-
-```
-09:52:44 /tmp/2025> config eval hot_domains
-Hot_Domains = (
- "gmail.com"
- "hotmail.com"
- "yahoo.com"
- "google.com"
- "aol.com"
- "mac.com"
- "att.net"
- "comcast.net"
- "naver.com"
- "seznam.cz"
- "mail.ru"
- "web.de"
- "gmx.de"
- "verizon.net"
- "googlemail.com"
- "cox.net"
- "yahoo.co.uk"
- "yahoo.fr"
- "qq.com"
- "yahoo.co.jp"
-)
-```
-
-## Scope
-
-hot_domains is valid in the global scope.
-
-## See Also
-
-[maintainer_pool](/momentum/4/config/ref-maintainer-pool) configuration option,
-[hot_domains list](/momentum/4/console-commands/hot-domains-list) command, [hot_domains list json](/momentum/4/console-commands/hot-domains-list-json) command
diff --git a/content/momentum/4/config/ref-http-basic-auth.md b/content/momentum/4/config/ref-http-basic-auth.md
deleted file mode 100644
index d0f752844..000000000
--- a/content/momentum/4/config/ref-http-basic-auth.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "http_basic_auth"
-description: "http basic auth Define the user credentials when using basic HTTP authentication http basic auth user password Define the user credentials when using basic HTTP authentication Use this option when the delivery method uses an HTTP protocol Use a to separate the username and password Theres is no default value..."
----
-
-
-## Name
-
-http_basic_auth — Define the user credentials when using basic HTTP authentication
-
-## Synopsis
-
-http_basic_auth = "*`user:password`*"
-
-
-## Description
-
-Define the user credentials when using basic HTTP authentication. Use this option when the [delivery_method](/momentum/4/config/ref-delivery-method) uses an HTTP protocol. Use a ‘`:`’ to separate the username and password.
-
-Theres is no default value for this option.
-
-
-## Scope
-
-`http_` is valid in the global, binding_group, binding, and domain scopes.
-
-
-## See Also
-
-[http_basic_auth](/momentum/4/config/ref-http-basic-auth), [http_method](/momentum/4/config/ref-http-method), [http_uri](/momentum/4/config/ref-http-uri), [http_host](/momentum/4/config/ref-http-host), [http_version](/momentum/4/config/ref-http-version), and [Momentum for Mobile Push Notifications](/momentum/3/3-push)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-http-host.md b/content/momentum/4/config/ref-http-host.md
deleted file mode 100644
index c49a7807d..000000000
--- a/content/momentum/4/config/ref-http-host.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "http_host"
-description: "http host Define the HTTP host http host android google apis com Define the HTTP host when the delivery method uses an HTTP protocol There is no default value for this option http host is valid in the global binding group binding and domain scopes delivery method http basic auth..."
----
-
-
-## Name
-
-http_host — Define the HTTP host
-
-## Synopsis
-
-`http_host = "android.google.apis.com"`
-
-
-## Description
-
-Define the HTTP host when the `delivery_method` uses an HTTP protocol.
-
-There is no default value for this option.
-
-
-## Scope
-
-`http_host` is valid in the global, binding_group, binding, and domain scopes.
-
-
-## See Also
-
-[delivery_method](/momentum/4/config/ref-delivery-method), [http_basic_auth](/momentum/4/config/ref-http-basic-auth), [http_method](/momentum/4/config/ref-http-method), [http_version](/momentum/4/config/ref-http-version), and [Momentum for Mobile Push Notifications](/momentum/3/3-push)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-http-method.md b/content/momentum/4/config/ref-http-method.md
deleted file mode 100644
index 866825433..000000000
--- a/content/momentum/4/config/ref-http-method.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "http_method"
-description: "http method Define the HTTP method to use http method POST Define the HTTP method to use when delivery method is set to an HTTP protocol This option may be set to the following values POST SET GET DELETE The default value for this option is POST http method is..."
----
-
-
-## Name
-
-http_method — Define the HTTP method to use
-
-## Synopsis
-
-`http_method = "POST"`
-
-
-## Description
-
-Define the HTTP method to use when `delivery_method` is set to an HTTP protocol. This option may be set to the following values:
-
-* `POST`
-
-* `SET`
-
-* `GET`
-
-* `DELETE`
-
-The default value for this option is `"POST"`.
-
-
-## Scope
-
-`http_method` is valid in the global, binding_group, binding, and domain scopes.
-
-
-## See Also
-
-[http_basic_auth](/momentum/4/config/ref-http-basic-auth), [delivery_method](/momentum/4/config/ref-delivery-method), [http_uri](/momentum/4/config/ref-http-uri), [http_host](/momentum/4/config/ref-http-host), [http_version](/momentum/4/config/ref-http-version), and [Momentum for Mobile Push Notifications](/momentum/3/3-push)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-http-uri.md b/content/momentum/4/config/ref-http-uri.md
deleted file mode 100644
index 432c346f3..000000000
--- a/content/momentum/4/config/ref-http-uri.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "http_uri"
-description: "http uri Define the HTTP URI that you wish to connect to http uri gcm send When using the HTTP protocol this option defines the HTTP URI that you wish to connect to This option is used in conjunction with the http host option Use this option when the delivery..."
----
-
-
-## Name
-
-http_uri — Define the HTTP URI that you wish to connect to
-
-## Synopsis
-
-`http_uri = "/gcm/send"`
-
-
-## Description
-
-When using the HTTP protocol this option defines the HTTP URI that you wish to connect to. This option is used in conjunction with the [http_host](/momentum/4/config/ref-http-host) option. Use this option when the [delivery_method](/momentum/4/config/ref-delivery-method) is one of the following:
-
-* `apn`
-
-* `gcm`
-
-* `mm7`
-
-The default value for this option is an empty string.
-
-
-## Scope
-
-`http_uri` is valid in the global, binding_group, binding, and domain scopes.
-
-
-## See Also
-
-[http_basic_auth](/momentum/4/config/ref-http-basic-auth), [http_method](/momentum/4/config/ref-http-method), [http_host](/momentum/4/config/ref-http-host), [http_version](/momentum/4/config/ref-http-version), and [Momentum for Mobile Push Notifications](/momentum/3/3-push)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-http-version.md b/content/momentum/4/config/ref-http-version.md
deleted file mode 100644
index dffbb361c..000000000
--- a/content/momentum/4/config/ref-http-version.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "http_version"
-description: "http version Define the HTTP version to use http version 1 1 Define which version of HTTP to use when delivery method is set to an HTTP protocol This option may be set to any one of the following values 0 9 1 0 1 1 The default value for..."
----
-
-
-## Name
-
-http_version — Define the HTTP version to use
-
-## Synopsis
-
-`http_version = "1.1"`
-
-
-## Description
-
-Define which version of HTTP to use when `delivery_method` is set to an HTTP protocol. This option may be set to any one of the following values:
-
-* `0.9`
-
-* `1.0`
-
-* `1.1`
-
-The default value for this option is `"1.1"`.
-
-
-## Scope
-
-`http_version` is valid in the global, binding_group, binding, and domain scopes.
-
-
-## See Also
-
-[delivery_method](/momentum/4/config/ref-delivery-method), [http_basic_auth](/momentum/4/config/ref-http-basic-auth), [http_method](/momentum/4/config/ref-http-method), [http_uri](/momentum/4/config/ref-http-uri), [http_host](/momentum/4/config/ref-http-host), [http_host](/momentum/4/config/ref-http-host), and [Momentum for Mobile Push Notifications](/momentum/3/3-push)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-idle-time.md b/content/momentum/4/config/ref-idle-time.md
deleted file mode 100644
index 4769fd124..000000000
--- a/content/momentum/4/config/ref-idle-time.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-lastUpdated: "06/24/2026"
-title: "Idle_Time"
-description: "idle time specifies the number of seconds of inactivity before an inbound client connection is disconnected It recycles idle session slots so that concurrency caps such as listener sessions and service sessions are not held by idle connections."
----
-
-
-## Name
-
-Idle_Time — number of seconds of inactivity before an inbound client is disconnected.
-
-## Synopsis
-
-`Idle_Time = 300`
-
-
-## Description
-
-`Idle_Time` sets the number of seconds an inbound client connection may remain idle before Momentum disconnects it. It is the primary mechanism for reclaiming session slots held by connections that are no longer doing useful work, and it works hand-in-hand with the inbound concurrency caps [Listener_Sessions](/momentum/4/config/ref-listener-sessions) and [Service_Sessions](/momentum/4/config/ref-service-sessions): because a session slot is held for the entire life of a connection, reaping idle connections frees slots that would otherwise count against those caps.
-
-The default for this option is `0`, which means connections are never reaped for inactivity. The `ecelerity.conf` file shipped with Momentum sets `Idle_Time` to `300`, which is the recommended value.
-
-Like the session caps, `Idle_Time` can be set per source block by placing it inside a `Peer` (CIDR) scope — for example, a longer idle window for trusted senders and a shorter one for everyone else:
-
-```
-ESMTP_Listener {
- Idle_Time = 60
-
- Peer "10.0.0.0/8" { # trusted senders: longer idle window
- Idle_Time = 300
- }
- Peer "0.0.0.0/0" { # everyone else: faster reaping
- Idle_Time = 30
- }
-}
-```
-
-### Caveats
-
-`Idle_Time` only reaps connections that the event loop is actively watching, and only when the loop is free. Under saturation it fires late, and it will not reap connections parked for asynchronous work. It recycles idle session slots, but it will not clear every lingering connection — it is not a substitute for addressing connections that fail to close.
-
-
-## Scope
-
-`Idle_Time` is valid in the esmtp_listener, http_listener, listen, pathway, pathway_group, peer, and xmpp_listener scopes.
-
-
-## See Also
-
-[Listener_Sessions](/momentum/4/config/ref-listener-sessions), [Service_Sessions](/momentum/4/config/ref-service-sessions), [Listeners](/momentum/4/listeners), [Configuring Inbound Mail Service Using SMTP](/momentum/4/esmtp-listener)
diff --git a/content/momentum/4/config/ref-idle-timeout.md b/content/momentum/4/config/ref-idle-timeout.md
deleted file mode 100644
index 11dac3eb3..000000000
--- a/content/momentum/4/config/ref-idle-timeout.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "idle_timeout"
-description: "idle timeout time to maintain idle outbound connections idle timeout 5 The amount of time in seconds to hold open an idle connection when there are no messages currently deliverable for that domain Momentum holds SMTP sessions open for this amount of time in case another message should enter the..."
----
-
-
-## Name
-
-idle_timeout — time to maintain idle outbound connections
-
-## Synopsis
-
-`idle_timeout = 5`
-
-
-## Description
-
-The amount of time in seconds to hold open an idle connection when there are no messages currently deliverable for that domain. Momentum holds SMTP sessions open for this amount of time in case another message should enter the queue destined for that host. The default value is `5`.
-
-`idle_timeout` is also used to define idle connections for Apple Push Notifications (APN), Google Cloud Messages (GCM), and MM7.
-
-Use this option in the following way:
-
-```
-domain "apn_example.com"{
- ...
- delivery_method = "apn"
- routes = ("apn://gateway.push.apple.com?port=2195")
- idle_timeout = 10
- delivery_response_timeout = 1000
-}
-domain "gcm.example.com" {
- ...
- delivery_method = "gcm"
- routes = ("gcm://android.google.apis.com?port=443")
- idle_timeout = 10
- delivery_response_timeout = 1000
-}
-domain "mm7.example.com" {
- ...
- delivery_method = "mm7"
- http_basic_auth = "admin:admin"
- mm7_vasid = "test_domain_vas_id"
- mm7_vaspid = "test_global_vasp_id"
- mm7_message_class="personal"
- mm7_delivery_report="true"
- idle_timeout = 300
- ..."
-}
-```
-
-For a detailed description of configuring Momentum for push notifications, see [Momentum for Mobile Push Notifications](/momentum/3/3-push). To configure MM7, see [Mobile Momentum MM7](/momentum/mobile/mobile-reference/mobility-mm-7).
-
-
-## Scope
-
-`idle_timeout` is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-inbound-throttle-messages.md b/content/momentum/4/config/ref-inbound-throttle-messages.md
deleted file mode 100644
index 22b8ce898..000000000
--- a/content/momentum/4/config/ref-inbound-throttle-messages.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "inbound_throttle_messages"
-description: "inbound throttle messages rate limit inbound mail inbound throttle messages 3 inbound throttle messages 3 60 This allows you to limit the rate at which Momentum will accept messages from the network By default there are no artificial limitations on the acceptance rate it accepts as quickly as possible Sometimes..."
----
-
-
-## Name
-
-inbound_throttle_messages — rate limit inbound mail
-
-## Synopsis
-
-`inbound_throttle_messages = "3"`
-
-`inbound_throttle_messages = "3/60"`
-
-
-## Description
-
-This allows you to limit the rate at which Momentum will accept messages from the network. By default, there are no artificial limitations on the acceptance rate (it accepts as quickly as possible). Sometimes limiting the acceptance rate gives finer control to the entire mailing process as well as controlling sudden bursts of inbound mail.
-
-If a single integer parameter is provided, Momentum will ensure that no more than the specified number of messages are received in a given second of time. If a proper fraction parameter is provided, Momentum will limit the number of received message to the number specified in the numerator over the time window in seconds specified by the denominator.
-
-For a discussion of throttles and fallback see [the section called “Throttles and Fallback”](/momentum/4/config/ref-outbound-throttle-messages#conf.ref.outbound_throttle_messages.fallback).
-
-
-## Scope
-
-inbound_throttle_messages is valid in the global, pathway_group, and pathway scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-initial-hash-buckets.md b/content/momentum/4/config/ref-initial-hash-buckets.md
deleted file mode 100644
index 73ce3e16f..000000000
--- a/content/momentum/4/config/ref-initial-hash-buckets.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "initial_hash_buckets"
-description: "initial hash buckets Set the number of hash buckets used by the system initial hash buckets 32 This option sets the number of hash buckets used by the system If this value is set too low the system will incur additional overhead during rehashing in order to enlarge the tables..."
----
-
-
-## Name
-
-initial_hash_buckets — Set the number of hash buckets used by the system
-
-## Synopsis
-
-`initial_hash_buckets = 32`
-
-
-## Description
-
-This option sets the number of hash buckets used by the system
-
-If this value is set too low, the system will incur additional overhead during rehashing in order to enlarge the tables to match your workload. Setting this value too high uses more memory, but does not otherwise reduce system performance. If the environmental variable `ECELERITY_TRACE_EC_HASH` is set, the system will collect distribution metrics and display a simple histogram to `stderr` when it exits. Turning on ECELERITY_TRACE_EC_HASH will impact performance.
-
-The default value is `32`.
-
-
-## Scope
-
-`initial_hash_buckets` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-inline-transfail-processing.md b/content/momentum/4/config/ref-inline-transfail-processing.md
deleted file mode 100644
index f21222f22..000000000
--- a/content/momentum/4/config/ref-inline-transfail-processing.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "inline_transfail_processing"
-description: "inline transfail processing how to handle transient failure processing inline transfail processing 1 When true transient failure processing is handled inline in the scheduler thread Momentum's traditional behavior If you have custom loggers or other modules that react to transient failures and examine messages you may experience poor performance excessive..."
----
-
-
-## Name
-
-inline_transfail_processing — how to handle transient failure processing
-
-## Synopsis
-
-`inline_transfail_processing = 1`
-
-
-## Description
-
-When true, transient failure processing is handled inline in the scheduler thread, Momentum's traditional behavior. If you have custom loggers or other modules that react to transient failures, and examine messages, you may experience poor performance, excessive memory utilization and potentially a watchdog timeout, if a large batch of messages is transiently failed at the same time.
-
-Setting `inline_transfail_processing` to false uses an alternate strategy of breaking the transfails into more manageable chunks, affected by `transfail_drain_rate` and `max_resident_transfails`. In this alternate approach, the messages are queued up to a transfail queue.
-
-### Warning
-
-Setting `inline_transfail_processing` to `false` drops the remote IP address from the delivery log.
-
-The default value is `1`.
-
-
-## Scope
-
-inline_transfail_processing is valid in the global scope.
-
-
-## See Also
-
-[transfail_drain_rate](/momentum/4/config/ref-transfail-drain-rate) and [max_resident_transfails](/momentum/4/config/ref-max-resident-transfails)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-keep-message-dicts-in-memory.md b/content/momentum/4/config/ref-keep-message-dicts-in-memory.md
deleted file mode 100644
index 07f7727f8..000000000
--- a/content/momentum/4/config/ref-keep-message-dicts-in-memory.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "keep_message_dicts_in_memory"
-description: "keep message dicts in memory preserve memory representation of metadata when memory is low keep message dicts in memory false Momentum aggressively uses RAM to speed up processing and to make that approach successful it also needs to realize that it should reclaim and re use memory for messages that..."
----
-
-
-## Name
-
-keep_message_dicts_in_memory — preserve memory representation of metadata when memory is low
-
-## Synopsis
-
-`keep_message_dicts_in_memory = false`
-
-
-## Description
-
-Momentum aggressively uses RAM to speed up processing, and to make that approach successful, it also needs to realize that it should reclaim and re-use memory for messages that are delayed. When a message is placed on the delayed queue, or when one of the various memory management metrics indicates that too much memory is in use, Momentum will discard the message body and the in-memory representation of the validation context dictionaries that were captured during reception.
-
-This results in reduced memory usage, but can result in higher disk IO, and in particular, unexpected disk IO on the scheduler thread after periods of intense memory pressure if you are using validation context data to drive your binding assignment or other policy hooks.
-
-By setting `keep_message_dicts_in_memory` to `true`, Momentum will retain the validation context dictionaries in memory when it discards the message body memory. This will prevent additional disk IO when the message is later scheduled for delivery, but at the cost of increased memory usage.
-
-### Warning
-
-In some circumstances, using the Lua function [msg:routing_domain](/momentum/4/lua/ref-msg-routing-domain) may cause Momentum to "watchdog" (i.e., to become unresponsive and restart). To alleviate this, set `keep_message_dicts_in_memory` to `true`.
-
-If you change this option you must restart the ecelerity process for the change to take effect. Invoking **`config reload`** from the system console is not sufficient.
-
-To reduce the overall memory cost of enabling this option, make use of the `exclude_vctx_mess` and `exclude_vctx_conn` options to reduce the size of the validation context dictionaries.
-
-The default value is `false`.
-
-
-## Scope
-
-keep_message_dicts_in_memory is valid in the global scope.
-
-
-## See Also
-
-[exclude_vctx_conn](/momentum/4/config/ref-exclude-vctx-conn), [exclude_vctx_mess](/momentum/4/config/ref-exclude-vctx-mess)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-large-message-threshold.md b/content/momentum/4/config/ref-large-message-threshold.md
deleted file mode 100644
index cf0fdc83e..000000000
--- a/content/momentum/4/config/ref-large-message-threshold.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "large_message_threshold"
-description: "large message threshold Consider a message large when its size exceeds this amount large message threshold 131072 For performance reasons Momentum prefers to keep message contents in memory From time to time messages that are much larger than average enter the system Such messages may either be transiently rejected because..."
----
-
-
-## Name
-
-large_message_threshold — Consider a message large when its size exceeds this amount
-
-## Synopsis
-
-`large_message_threshold = 131072`
-
-
-## Description
-
-For performance reasons, Momentum prefers to keep message contents in memory. From time to time, messages that are much larger than average enter the system. Such messages may either be transiently rejected (because they cannot fit in memory) or increase demands on memory and have an adverse affect on overall system performance.
-
-In order to avoid this, Momentum can use alternative techniques for working with messages that are larger than the `large_message_threshold`. Large messages pass through the system a little more slowly (wallclock time) than their regular counterparts, mitigating their impact on the rest of the system.
-
-The default is 131072 bytes. If the majority of your messages are larger than the default, then you should adjust the threshold upwards so that the system will run more efficiently.
-
-
-## Scope
-
-large_message_threshold is valid in the global scope.
-
-
-## See Also
-
-[growbuf_size](/momentum/4/config/ref-growbuf-size), [legacy_message_threshold](/momentum/4/config/ref-legacy-message-threshold)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-legacy-message-threshold.md b/content/momentum/4/config/ref-legacy-message-threshold.md
deleted file mode 100644
index d1816f502..000000000
--- a/content/momentum/4/config/ref-legacy-message-threshold.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "legacy_message_threshold"
-description: "legacy message threshold The maximum size allowed for messages being passed to legacy modules legacy message threshold 1048576 For performance reasons Momentum prefers to keep message contents in memory From time to time messages that are much larger than the average for a given Momentum instance enter the system and..."
----
-
-
-## Name
-
-legacy_message_threshold — The maximum size allowed for messages being passed to legacy modules
-
-## Synopsis
-
-`legacy_message_threshold = 1048576`
-
-
-## Description
-
-For performance reasons, Momentum prefers to keep message contents in memory. From time to time, messages that are much larger than the average for a given Momentum instance enter the system, and may either be transiently rejected (because it cannot fit in memory) or otherwise increase memory pressure and have an adverse affect on the system performance.
-
-In order to avoid this, Momentum can use alternative techniques for working with messages that are larger than the `large_message_threshold`. Large messages are transited through the system a little slower (wallclock time) than their regular counterparts, but don't have a significant impact on the rest of the system.
-
-Large messages need to be pulled entirely into memory first, which increases the memory pressure and may harm the performance of your system. The `legacy_message_threshold` configuration option sets the maximum allowed size for messages being processed in this way, and defaults to 1MB. If a message is passed to a legacy module and its size exceeds this threshold value, the processing of that message is failed and the error pushed back to the caller. This typically results in a transient failure with the message "421 4.3.0 message is too large to process at this time."
-
-Note that in previous Momentum releases, this option was effectively set to indicate that any message size could be passed, subject to the system having enough available memory.
-
-The default is 1048576 bytes.
-
-
-## Scope
-
-legacy_message_threshold is valid in the global scope.
-
-
-## See Also
-
-[growbuf_size](/momentum/4/config/ref-growbuf-size), [large_message_threshold](/momentum/4/config/ref-large-message-threshold)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-license.md b/content/momentum/4/config/ref-license.md
deleted file mode 100644
index 5e6de3d9a..000000000
--- a/content/momentum/4/config/ref-license.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "license"
-description: "license specify an alternate license location License opt msys ecelerity etc license This configuration directive is used to override the default license file location Changing the value of this option at runtime requires restarting the ecelerity process issuing the ec console command config reload will not suffice license is valid..."
----
-
-
-## Name
-
-license — specify an alternate license location
-
-## Synopsis
-
-`License = "/opt/msys/ecelerity/etc/license"`
-
-
-## Description
-
-This configuration directive is used to override the default license file location.
-
-Changing the value of this option at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-
-## Scope
-
-`license` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-listener-sessions.md b/content/momentum/4/config/ref-listener-sessions.md
deleted file mode 100644
index c29461426..000000000
--- a/content/momentum/4/config/ref-listener-sessions.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-lastUpdated: "06/24/2026"
-title: "Listener_Sessions"
-description: "listener sessions specifies the maximum number of concurrent inbound sessions that can be established to this listener When the cap is reached new connections receive a retryable 421 4 4 5 response and are closed Use Peer CIDR scopes to partition the cap per source block."
----
-
-
-## Name
-
-Listener_Sessions — maximum number of concurrent inbound sessions for a single listener.
-
-## Synopsis
-
-`Listener_Sessions = 0`
-
-
-## Description
-
-`Listener_Sessions` caps the number of concurrent inbound sessions that may be established to *this* listener (for example, the `ESMTP_Listener`). It is a circuit-breaker that protects a node from being overwhelmed by inbound concurrency.
-
-A session slot is held for the entire life of a connection — including time spent idle or otherwise lingering — and is only released when the connection is fully closed. While the cap is reached, every new connection in the same scope is rejected, including legitimate mail, until a slot is freed.
-
-When the cap is reached, the connection is given a clean, retryable response and is closed:
-
-```
-421 4.4.5 Service unavailable, concurrency limit reached.
-```
-
-The default value is `0`, which means *no limit*.
-
-### Scope, fallback, and per-source caps
-
-`Listener_Sessions` is a *per-scope aggregate*, not a per-IP limit. How the active sessions are counted depends on the scope in which the option is set:
-
-* When set **outside** a `Peer` scope (directly in the `ESMTP_Listener` or a `Listen` scope), the cap is a single shared budget summed across **all** connecting sources. A few noisy sources can consume the entire budget.
-
-* When set **inside** a `Peer` (CIDR) scope, sessions are counted **per matching CIDR block**, so each source block gets its own independent budget.
-
-Because `Peer` scopes use most-specific-match fallback, you can partition a broad cap into narrower per-source budgets, and apply tighter caps to known offenders. For more information about fallback, see [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback).
-
-The following example sets an absolute ceiling on the listener, a larger budget for a trusted subnet, and a tighter budget for everyone else:
-
-```
-ESMTP_Listener {
- Listener_Sessions = 1800 # ceiling for this listener
- Idle_Time = 60
-
- Peer "10.0.0.0/8" { # trusted senders: larger budget
- Listener_Sessions = 1500
- Idle_Time = 300
- }
- Peer "0.0.0.0/0" { # everyone else: tighter cap, faster reaping
- Listener_Sessions = 600
- Idle_Time = 30
- }
-
- Listen ":25" {
- Listener_Sessions = 1800
- Idle_Time = 60
- }
-}
-```
-
-### Caveats
-
-* **The cap counts lingering connections too.** A slot is held for the connection's whole life, including while it is stuck. If connections keep lingering, the cap fills with them and then rejects all new connections in that scope. It is a circuit-breaker, not a cure for connections that fail to close.
-
-* **It is a per-scope aggregate, not per-IP.** A broad cap is one shared budget that a few noisy sources can consume. Partition it with narrower `Peer` scopes, and use specific tight scopes (or upstream firewalling) for known offenders.
-
-To cap concurrency across *all* listeners for a service rather than a single listener, see [Service_Sessions](/momentum/4/config/ref-service-sessions).
-
-
-## Scope
-
-`Listener_Sessions` is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scopes.
-
-
-## See Also
-
-[Service_Sessions](/momentum/4/config/ref-service-sessions), [Idle_Time](/momentum/4/config/ref-idle-time), [Listeners](/momentum/4/listeners), [Configuring Inbound Mail Service Using SMTP](/momentum/4/esmtp-listener)
diff --git a/content/momentum/4/config/ref-lmtp-port.md b/content/momentum/4/config/ref-lmtp-port.md
deleted file mode 100644
index 147488832..000000000
--- a/content/momentum/4/config/ref-lmtp-port.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "lmtp_port"
-description: "lmtp port configure the port for LMTP deliveries LMTP Port 2003 If Momentum is set to perform local delivery via LMTP this directive allows the remote port for LMTP delivery to be specified The default value for this option is 2003 lmtp port is valid in the binding binding group..."
----
-
-
-## Name
-
-lmtp_port — configure the port for LMTP deliveries
-
-## Synopsis
-
-`LMTP_Port = 2003`
-
-
-## Description
-
-If Momentum is set to [perform local delivery via LMTP](/momentum/4/config/ref-delivery-method), this directive allows the remote port for LMTP delivery to be specified. The default value for this option is `2003`.
-
-
-## Scope
-
-lmtp_port is valid in the binding, binding_group, domain and global scopes.
-
-
-## See Also
-
-[delivery_method](/momentum/4/config/ref-delivery-method)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-local-changes-file.md b/content/momentum/4/config/ref-local-changes-file.md
deleted file mode 100644
index 3feb06ad9..000000000
--- a/content/momentum/4/config/ref-local-changes-file.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "local_changes_file"
-description: "local changes file the file for writing local configuration changes local changes file opt msys ecelerity etc local changes conf local changes file sets the name of a configuration file which must be writable and which is implicitly loaded after all other configuration files regardless of its placement in the..."
----
-
-
-## Name
-
-local_changes_file — the file for writing local configuration changes
-
-## Synopsis
-
-`local_changes_file = "/opt/msys/ecelerity/etc/local_changes.conf"`
-
-
-## Description
-
-`local_changes_file` sets the name of a configuration file which must be writable, and which is implicitly loaded after all other configuration files regardless of its placement in the `ecelerity.conf` file. Since it must be writable and files included twice are read-only, the `local_changes_file` cannot point to the same file as any 'include' directive, and it cannot point to the main configuration file. Since the `local_changes_file` is effectively loaded at the end of the main configuration file, options set in it are able to override any setting in any other configuration file; if it were loaded at some other point, options set after that point could not be overridden by it.
-
-If `local_changes_file` is not defined, and the main configuration file is writable, then changes are written to the main configuration file. If `local_changes_file` is not defined, and the main configuration file is read-only, then a virtual file not associated with any real path is used to hold changes; in this case, the [config writeback](/momentum/4/console-commands/config#config_writeback) command will issue a warning stating that not all portions of the configuration could be saved, and show the contents of the virtual file. This situation can be remedied by setting the `local_changes_file` to a valid path and issuing the **config writeback** command again, at which point changes in the virtual file will be saved to the newly configured location.
-
-
-## Scope
-
-local_changes_file is valid in the global scope.
-
-
-## See Also
-
-[local_changes_only](/momentum/4/config/ref-local-changes-only)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-local-changes-only.md b/content/momentum/4/config/ref-local-changes-only.md
deleted file mode 100644
index 3461347df..000000000
--- a/content/momentum/4/config/ref-local-changes-only.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "local_changes_only"
-description: "local changes only whether there is a file for writing local configuration changes local changes only true local changes only defaults to false If it is true it must be defined and all changes are saved to the local changes file If it is false changes are distributed as described..."
----
-
-
-## Name
-
-local_changes_only — whether there is a file for writing local configuration changes
-
-## Synopsis
-
-`local_changes_only = true`
-
-
-## Description
-
-`local_changes_only` defaults to 'false'. If it is 'true', it must be defined and all changes are saved to the `local_changes_file`. If it is 'false', changes are distributed as described below:
-
-* When replacing a value that has previously been set, if the file it was last set in is writable then the change is made in-place; the new option value replaces the old option value at the same location in the writable file.
-
-* If replacing a value that was last set in a read-only file or setting a value that was not set previously, then the change will go to the lexically first writable file in which the scope instance containing the change was defined.
-
-
-## Scope
-
-local_changes_only is valid in the global scope.
-
-
-## See Also
-
-[local_changes_file](/momentum/4/config/ref-local-changes-file)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-log-hires-timestamp.md b/content/momentum/4/config/ref-log-hires-timestamp.md
deleted file mode 100644
index 96ee7524c..000000000
--- a/content/momentum/4/config/ref-log-hires-timestamp.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-lastUpdated: "07/01/2026"
-title: "log_hires_timestamp"
-description: "log_hires_timestamp enables microsecond resolution for log timestamps written by Momentum across the mainlog, bouncelog, rejectlog, paniclog, custom logs, and other logging modules"
----
-
-
-## Name
-
-log_hires_timestamp — enable microsecond resolution for log timestamps
-
-## Synopsis
-
-`log_hires_timestamp = true`
-
-
-## Description
-
-When `log_hires_timestamp` is set to `true`, Momentum writes log timestamps with microsecond (1 µs) resolution instead of the default 1-second resolution.
-
-### Rationale
-
-Several Momentum log files are produced concurrently by independent loggers (for example `mainlog`, `bouncelog`, `rejectlog`, and `paniclog`). With the default 1-second resolution, many events that happen within the same second share an identical timestamp, and the relative ordering of events between files becomes ambiguous when the logs are read together — for instance when merging them in a log viewer such as [lnav](https://lnav.org/) or feeding them into a SIEM or analytics pipeline. Microsecond timestamps preserve the true ordering across files, which is essential for diagnostics, latency analysis, and other investigations.
-
-### Scope of the option
-
-The setting is global and affects every log file whose timestamps are produced by the core logging code, including:
-
-* `mainlog` (reception, delivery, transient failure, permanent failure, heartbeat, accounting and import records — see [mainlog](/momentum/4/log-formats-mainlog))
-
-* `bouncelog` (bounce and heartbeat records — see [bouncelog](/momentum/4/log-formats-bouncelog))
-
-* `rejectlog` (rejection records — see [rejectlog](/momentum/4/log-formats-rejectlog))
-
-* `paniclog` (panic and HTTP request records — see [paniclog](/momentum/4/log-formats-paniclog))
-
-* Custom logs produced by [custom_logger](/momentum/4/modules/custom-logger) and [custom_bounce_logger](/momentum/4/modules/custom-bounce-logger)
-
-* Chunk logs produced by [chunk_logger](/momentum/4/modules/chunk-logger)
-
-* Message generation logs produced by the `msg_gen` module
-
-* Critical messages written to `stderr` by the [ec_logger](/momentum/4/modules/ec-logger), formatted with [timestampformat](/momentum/4/config/ref-timestampformat)
-
-The effect on each timestamp depends on how it is rendered:
-
-* **Numeric (epoch) timestamps.** A timestamp emitted as a decimal Unix epoch value (for example, the first field of every `mainlog`, `bouncelog`, `rejectlog`, or `paniclog` line) changes from a 10-digit seconds-since-epoch value (`1064868656`) to a 16-digit microseconds-since-epoch value (`1064868656123456`). No separator is inserted, so the field remains a single integer that downstream parsers can keep treating as a number.
-
-* **Formatted (`strftime`) timestamps.** Timestamps rendered through a `strftime(3)` format string — such as the `timestamp_format` of [chunk_logger](/momentum/4/modules/chunk-logger), the `%t{...}` macro of [custom_logger](/momentum/4/modules/custom-logger), or [timestampformat](/momentum/4/config/ref-timestampformat) — keep the configured format, but every `%S` or `%T` conversion is followed by a `.NNNNNN` six-digit microsecond fraction. For example, the default `[%a %d %b %Y %H:%M:%S] ` becomes `[%a %d %b %Y %H:%M:%S.NNNNNN] ` and renders as `[Mon 20 May 2026 14:32:17.482915] `.
-
-When `log_hires_timestamp` is `false` (the default), timestamps are emitted exactly as in previous releases of Momentum, with 1-second resolution and no `.NNNNNN` fraction.
-
-## Compatibility
-
-Tools that parse the numeric epoch field must accept either 10 or 16 decimal digits when this option is enabled. The Perl modules under `Ecelerity::Log` shipped with Momentum (`Ecelerity::Log::Auto`, `Ecelerity::Log::Bounce`, `Ecelerity::Log::Reject`, `Ecelerity::Log::Statp`) recognize both forms; when the source field is in microseconds, they expose it on the parsed record as `epoch_us` and keep populating `epoch` with the integer seconds, so existing consumers continue to work unchanged.
-
-
-## Online Modification
-
-`log_hires_timestamp` is not online-tunable. Changing the option requires a Momentum restart.
-
-
-## Scope
-
-`log_hires_timestamp` is valid in the global scope.
-
-## See Also
-
-[timestampformat](/momentum/4/config/ref-timestampformat), [mainlog](/momentum/4/log-formats-mainlog), [bouncelog](/momentum/4/log-formats-bouncelog), [rejectlog](/momentum/4/log-formats-rejectlog), [paniclog](/momentum/4/log-formats-paniclog)
diff --git a/content/momentum/4/config/ref-mail-queue-check-vm-interval.md b/content/momentum/4/config/ref-mail-queue-check-vm-interval.md
deleted file mode 100644
index a29ed62a7..000000000
--- a/content/momentum/4/config/ref-mail-queue-check-vm-interval.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "mail_queue_check_vm_interval"
-description: "mail queue check vm interval how often to apply memory management reduction on mail queues mail queue check vm interval 60 How often to apply memory management reduction on mail queues based on the configured memory utilization limits By default the system checks once a minute to see if too..."
----
-
-
-## Name
-
-mail_queue_check_vm_interval — how often to apply memory management reduction on mail queues
-
-## Synopsis
-
-`mail_queue_check_vm_interval = 60`
-
-
-## Description
-
-How often to apply memory management reduction on mail queues, based on the configured memory utilization limits.
-
-By default, the system checks once a minute to see if too much memory is being used and attempts to swap out messages from the queues if usage is excessive.
-
-The default value is `60`.
-
-
-## Scope
-
-mail_queue_check_vm_interval is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-mailerdaemon.md b/content/momentum/4/config/ref-mailerdaemon.md
deleted file mode 100644
index 7240bc815..000000000
--- a/content/momentum/4/config/ref-mailerdaemon.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "mailerdaemon"
-description: "mailerdaemon set the From address for MD Ns mailerdaemon mailer daemon hostname When sending bounce messages upon a permanent delivery failure of a message the recipient is specified as the original sender the envelop sender is null but the From header is dictated by Momentum as mailer daemon hostname where..."
----
-
-
-## Name
-
-mailerdaemon — set the From: address for MDNs
-
-## Synopsis
-
-`mailerdaemon = "mailer-daemon@hostname"`
-
-
-## Description
-
-When sending bounce messages upon a permanent delivery failure of a message, the recipient is specified as the original sender, the envelop sender is null, but the "From:" header is dictated by Momentum as "mailer-daemon@hostname" where hostname is the hostname of the local machine, as returned by `gethostname` . Alternatively, it can be explicitly set using this option.
-
-
-## Scope
-
-mailerdaemon is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-mailfrom-timeout.md b/content/momentum/4/config/ref-mailfrom-timeout.md
deleted file mode 100644
index 5f897715e..000000000
--- a/content/momentum/4/config/ref-mailfrom-timeout.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "mailfrom_timeout"
-description: "mailfrom timeout timeout after MAIL FROM mailfrom timeout 300 The amount of time in seconds to wait for a response from the MAIL FROM command The default value is 300 mailfrom timeout is valid in the binding binding group domain and global scopes..."
----
-
-
-## Name
-
-mailfrom_timeout — timeout after MAIL FROM
-
-## Synopsis
-
-`mailfrom_timeout = 300`
-
-
-## Description
-
-The amount of time in seconds to wait for a response from the `MAIL FROM` command. The default value is `300`.
-
-
-## Scope
-
-mailfrom_timeout is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-maintainer-pool.md b/content/momentum/4/config/ref-maintainer-pool.md
deleted file mode 100644
index 790364272..000000000
--- a/content/momentum/4/config/ref-maintainer-pool.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "maintainer_pool"
-description: "maintainer pool associate a pool of event loops with mail queues DNS lookup and module events to use multiple threads maintainer pool pool name To use this option you must have a Supercharger license This option is used in a multiple event loop configuration To configure threading for mail queues..."
----
-
-
-## Name
-
-maintainer_pool — associate a pool of event loops with mail queues, DNS lookup, and module events to use multiple threads
-
-## Synopsis
-
-`maintainer_pool = "pool_name"`
-
-
-## Description
-
-### Note
-
-To use this option, you must have a Supercharger license.
-
-This option is used in a multiple event loop configuration. To configure threading for mail queues, DNS lookup, and module events, assign `maintainer_pool` the name of your `eventloop`. Note that the name must match what was defined in the EventLoop configuration. See [eventloop](/momentum/4/config/ref-eventloop).
-
-For an example multiple event loop configuration, see [*Configuring Multiple Event Loops*](/momentum/4/multi-event-loops) .
-
-### Note
-
-If you change the value of `maintainer_pool` at runtime, you must restart the ecelerity process using the executable command [ec_ctl](/momentum/4/executable/ec-ctl). Note: issuing the ec_console command **config reload** will not work.
-
-There is no default value for this option.
-
-
-## Scope
-
-`maintainer_pool` is valid in the global scope.
-
-
-## See Also
-
-[eventloop](/momentum/4/config/ref-eventloop)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-malloc-2-mmap-threshold.md b/content/momentum/4/config/ref-malloc-2-mmap-threshold.md
deleted file mode 100644
index 4a7584ada..000000000
--- a/content/momentum/4/config/ref-malloc-2-mmap-threshold.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "malloc2mmap_threshold"
-description: "malloc 2 mmap threshold use mmap when allocations exceed this amount malloc 2 mmap threshold 4092 When set to a positive value Momentum will use mmap to fulfill memory allocation requirements exeeding the malloc 2 mmap threshold size rather than allocating memory from the heap via malloc Lowering this setting..."
----
-
-
-## Name
-
-malloc2mmap_threshold — use mmap when allocations exceed this amount
-
-## Synopsis
-
-`malloc2mmap_threshold = 4092`
-
-
-## Description
-
-When set to a positive value, Momentum will use `mmap` to fulfill memory allocation requirements exeeding the `malloc2mmap_threshold` size, rather than allocating memory from the heap via `malloc`.
-
-Lowering this setting can reduce heap fragmentation and the system RSS, but can use more address space than heap allocations alone, since the minimum granularity of `mmap` is the system page size.
-
-The default is 4092.
-
-
-## Scope
-
-malloc2mmap_threshold is valid in the global scope.
-
-
-## See Also
-
-[use_mmap](/momentum/4/config/ref-use-mmap)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-masterdb-file.md b/content/momentum/4/config/ref-masterdb-file.md
deleted file mode 100644
index 808fc8fa4..000000000
--- a/content/momentum/4/config/ref-masterdb-file.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "masterdb_file"
-description: "masterdb file specify an alternate path for the statistics permastore masterdb file var log ecelerity ecdb The master db file is used to persistently store statistical information between instance restarts masterdb file is valid in the global scope..."
----
-
-
-## Name
-
-masterdb_file — specify an alternate path for the statistics permastore
-
-## Synopsis
-
-`masterdb_file = "/var/log/ecelerity/ecdb"`
-
-
-## Description
-
-The master db file is used to persistently store statistical information between instance restarts.
-
-
-## Scope
-
-masterdb_file is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-match-cache-life.md b/content/momentum/4/config/ref-match-cache-life.md
deleted file mode 100644
index 9a7a7839b..000000000
--- a/content/momentum/4/config/ref-match-cache-life.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "match_cache_life"
-description: "match cache life set the maximum number of seconds that the match cache will be valid match cache life 0 match cache life determines the maximum validity for cache entries in the match cache With a default match cache life of 0 cache entries will be kept for as long..."
----
-
-
-## Name
-
-match_cache_life — set the maximum number of seconds that the match cache will be valid
-
-## Synopsis
-
-`match_cache_life = 0`
-
-
-## Description
-
-`match_cache_life` determines the maximum validity for cache entries in the match cache. With a default match_cache_life of `0`, cache entries will be kept for as long as they are still usable and the cache size hasn't been exceeded. Normally it is not necessary to set this option to a value other than `0`.
-
-
-## Scope
-
-`match_cache_life` is valid in the global scope.
-
-
-## See Also
-
-[match_cache_size](/momentum/4/config/ref-match-cache-size), [domain](/momentum/4/config/ref-domain)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-match-cache-size.md b/content/momentum/4/config/ref-match-cache-size.md
deleted file mode 100644
index c808e8034..000000000
--- a/content/momentum/4/config/ref-match-cache-size.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "match_cache_size"
-description: "match cache size the size of the cache that holds the results of looking up matching scopes match cache size 16384 This option determines the maximum number of elements in a cache that holds the results of looking up matching scopes It applies to regex domains Peer scopes in listeners..."
----
-
-
-## Name
-
-match_cache_size — the size of the cache that holds the results of looking up matching scopes
-
-## Synopsis
-
-`match_cache_size = 16384`
-
-
-## Description
-
-This option determines the maximum number of elements in a cache that holds the results of looking up matching scopes. It applies to regex domains, Peer scopes in listeners, and any user-defined scopes that use matching.
-
-For example, if your configuration uses regex domains, then, for best performance, the cache size should be larger than the number of unique queries. This should be at least the number of unique destination domains to which you send.
-
-It is not necessary to restart the MTA if changes are made to this option using **config set** .
-
-The default value is `16384`.
-
-### Warning
-
-The Match_Cache_Size **MUST NOT** be set to `0`; doing so will result in undefined behavior.
-
-
-## Scope
-
-match_cache_size is valid in the global scope.
-
-
-## See Also
-
-[match_cache_life](/momentum/4/config/ref-match-cache-life) and [domain](/momentum/4/config/ref-domain)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-max-deliveries-per-connection.md b/content/momentum/4/config/ref-max-deliveries-per-connection.md
deleted file mode 100644
index 3d7f244e0..000000000
--- a/content/momentum/4/config/ref-max-deliveries-per-connection.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "max_deliveries_per_connection"
-description: "max deliveries per connection maximum number of messages to deliver before closing a connection max deliveries per connection 0 The maximum number of messages that will be sent over a single SMTP connection This option limits successful deliveries only If you wish to limit the number of attempted RCPT TO..."
----
-
-
-## Name
-
-max_deliveries_per_connection — maximum number of messages to deliver before closing a connection
-
-## Synopsis
-
-`max_deliveries_per_connection = 0`
-
-
-## Description
-
-The maximum number of messages that will be sent over a single SMTP connection. This option limits *successful* deliveries only. If you wish to limit the number of attempted RCPT TO commands that are sent, use `max_recipients_per_connection`. `max_deliveries_per_connection` is configurable globally, in the binding scope and on a per-domain basis. If set to `0` (the default), then no maximum limit will be enforced.
-
-
-## Scope
-
-max_deliveries_per_connection is valid in the binding, binding_group, domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-max-dns-ttl.md b/content/momentum/4/config/ref-max-dns-ttl.md
deleted file mode 100644
index 4c896af0b..000000000
--- a/content/momentum/4/config/ref-max-dns-ttl.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "max_dns_ttl"
-description: "max dns ttl set the maximum DNS TTL max dns ttl 4294967295 max dns ttl and min dns ttl are optional overrides to the TTL values returned from DNS only as far as resolving SMTP destinations is concerned the DNS cache used by other parts of the system such as..."
----
-
-
-## Name
-
-max_dns_ttl — set the maximum DNS TTL
-
-## Synopsis
-
-`max_dns_ttl = 4294967295`
-
-
-## Description
-
-`max_dns_ttl` and `min_dns_ttl` are optional overrides to the TTL values returned from DNS (only as far as resolving SMTP destinations is concerned; the DNS cache used by other parts of the system such as DKIM is not affected by these parameters). Setting a `min_dns_ttl` can be used to prevent excessive DNS lookups in the event that an SMTP destination you are delivering mail to has unreasonably short TTL values for its DNS records. Conversely, `max_dns_ttl` can be used to force lookups to happen more often if a destination domain has excessively long TTL values in its DNS records. Setting this option should only be necessary in exceptional circumstances.
-
-Default value is `4294967295`.
-
-
-## Scope
-
-max_dns_ttl is valid in the global scope.
-
-
-## See Also
-
-[min_dns_ttl](/momentum/4/config/ref-min-dns-ttl)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-max-outbound-connections.md b/content/momentum/4/config/ref-max-outbound-connections.md
deleted file mode 100644
index bd93b6f18..000000000
--- a/content/momentum/4/config/ref-max-outbound-connections.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "max_outbound_connections"
-description: "max outbound connections set the maximum number of outbound connections for a domain Max Outbound Connections 32 This option will limit the number of outbound connections to an individual domain to the specified value It can be set at a global level which enforces the limit on every domain in..."
----
-
-
-## Name
-
-max_outbound_connections — set the maximum number of outbound connections for a domain
-
-## Synopsis
-
-`Max_Outbound_Connections = 32`
-
-
-## Description
-
-This option will limit the number of outbound connections to an individual domain to the specified value. It can be set at a global level, which enforces the limit on every domain in the system or at a binding, binding_group, or domain level. When this option is set in the domain, binding, or binding_group scope, the global value is overridden, and the usual fallback semantics apply. *Note*: When used in the `host` scope, `Max_Outbound_Connections` limits the number of connections to the specified IP address.
-
-Default value is `32`.
-
-### Note
-
-If your `Max_Outbound_Connections` setting is larger than 1000, you will need to adjust your system-wide and shell-specific open file limits to avoid errors. All errors from the program are placed in `/var/log/ecelerity/paniclog.ec`.
-
-
-## Usage Example
-
-Find below an example of how this configuration option might be used:
-
-```
-Max_Outbound_Connections = 30
-
-Domain "example.com" {
- opendkim_sign = "true"
-}
-
-Binding_Group "group1" {
-
- Max_Outbound_Connections = 5
-
- Binding "example" {
-
- Bind_Address = "10.10.10.10"
- Max_Outbound_Connections = 15
-
- Domain "example.com" {
- #some other options
- ...
- }
- }
-
-}
-```
-
-When connecting to `example.com` from the `example` binding, `Max_Outbound_Connections` will be `15`, when connecting from another binding in the `group1` group it will be `5`, and when connecting from a binding that is not in the `group1` group it will be 30.
-
-In some circumstances, it may make sense to declare a domain within a binding and also declare it globally—when you want interaction with that domain to be different globally versus in a particular binding. For example with the following configuration, customers on the `yahoofriends` binding are allowed to use 30 connections to yahoo.com, customers on other bindings are allowed to use only 10 connections per binding to yahoo.com, and connections to domains other than yahoo.com are unrestricted.
-
-```
-Binding "yahoofriends" {
- Domain "yahoo.com" {
- Max_Outbound_Connections = 30
- }
-}
-
-Domain "yahoo.com" {
- Max_Outbound_Connections = 10
-}
-```
-
-### `Max_Outbound_Connections` in the `host` Scope
-
-Note that the usual semantics do not apply with this option in the `host` scope. If you declare a `host` scope and do not define `Max_Outbound_Connections`, its value will be `-1` and not the fallback value of `Max_Outbound_Connections` in an encompassing scope.
-
-Given the following configuration file:
-
-```
-Max_Outbound_Connections = 32
-host "example.com" {}
-```
-
-You will see the following results from the system console:
-
-```
-09:45:58 /tmp/2025> config eval max_outbound_connections
-Max_Outbound_Connections = 32
-09:46:29 /tmp/2025> config eval host example.com max_outbound_connections
-Max_Outbound_Connections = -1
-```
-
-A setting of `-1` means that unlimited connections are allowed.
-
-
-## Scope
-
-max_outbound_connections is valid in the binding, binding_group, domain, global, and host scopes.
-
-
-## See Also
-
-[host](/momentum/4/config/ref-host), [“MultiVIP© Interfaces”](/momentum/4/outbound-mail-multivip-interfaces), [server_max_outbound_connections](/momentum/4/config/ref-server-max-outbound-connections), [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback), [scope_max_outbound_connections](/momentum/4/config/ref-scope-max-outbound-connections)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-max-recipients-per-batch.md b/content/momentum/4/config/ref-max-recipients-per-batch.md
deleted file mode 100644
index 313780700..000000000
--- a/content/momentum/4/config/ref-max-recipients-per-batch.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "max_recipients_per_batch"
-description: "max recipients per batch maximum number of recipients to send in a single outbound message transaction max recipients per batch 100 For a given multi recipient message leaving the system this configuration directive specifies the maximum number of recipients to be sent for a given batch The default value is..."
----
-
-
-## Name
-
-max_recipients_per_batch — maximum number of recipients to send in a single outbound message transaction
-
-## Synopsis
-
-`max_recipients_per_batch = 100`
-
-
-## Description
-
-For a given multi-recipient message leaving the system, this configuration directive specifies the maximum number of recipients to be sent for a given batch.
-
-The default value is `100`. For example, if a message has `200` recipients and `max_recipients_per_batch` is set to `100`, then Momentum will attempt to deliver the message in two batches containing 100 recipients.
-
-
-## Scope
-
-max_recipients_per_batch is valid in the binding, binding_group, domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-max-resident-active-queue.md b/content/momentum/4/config/ref-max-resident-active-queue.md
deleted file mode 100644
index 8be25dca3..000000000
--- a/content/momentum/4/config/ref-max-resident-active-queue.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "max_resident_active_queue"
-description: "max resident active queue threshold above which messages are not held in memory max resident active queue 250 The maximum number of messages in a domain's active queue before certain destaging actions should be taken to prevent them from consuming excessive system memory This option is very useful for domains..."
----
-
-
-## Name
-
-max_resident_active_queue — threshold above which messages are not held in memory
-
-## Synopsis
-
-`max_resident_active_queue = 250`
-
-
-## Description
-
-The maximum number of messages in a domain's active queue before certain destaging actions should be taken to prevent them from consuming excessive system memory. This option is very useful for domains that practice tarpitting. A value of ‘`-1`’ deactivates this setting and a value of ‘`0`’ makes the system drop all resident messages in the queue. The default value is `250`. Reasonable non-zero values are between 500 and 10000, depending on system memory.
-
-### Warning
-
-This is an advanced option. Setting this option to small non-zero values can have deleterious effects on performance. Thorough testing is recommended prior to deployment in a production environment.
-
-
-## Scope
-
-max_resident_active_queue is valid in the binding, binding_group, domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-max-resident-messages.md b/content/momentum/4/config/ref-max-resident-messages.md
deleted file mode 100644
index b48f11800..000000000
--- a/content/momentum/4/config/ref-max-resident-messages.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "max_resident_messages"
-description: "max resident messages threshold above which messages are not held in memory max resident messages 32768 max resident messages is used to control the maximum number of messages held concurrently in memory A value of 0 sets no limit A rough guide to setting this option is to divide the..."
----
-
-
-## Name
-
-max_resident_messages — threshold above which messages are not held in memory
-
-## Synopsis
-
-`max_resident_messages = 32768`
-
-
-## Description
-
-`max_resident_messages` is used to control the maximum number of messages held concurrently in memory. A value of 0 sets no limit. A rough guide to setting this option is to divide the maximum amount of RAM that you want to reserve for messages by your growbuf_size. For more information about the `growbuf_size` option see [growbuf_size](/momentum/4/config/ref-growbuf-size).
-
-The default value is `32768`. However, this value is typically overridden in the `ecelerity.conf` file and set to `65536`.
-
-### Warning
-
-This is an advanced option. Setting this option to small non-zero values can have deleterious effects on performance. Thorough testing is recommended prior to deployment in a production environment.
-
-
-## Scope
-
-`max_resident_messages` is valid in the binding, binding_group and global scopes.
-
-
-## See Also
-
-[growbuf_size](/momentum/4/config/ref-growbuf-size)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-max-resident-transfails.md b/content/momentum/4/config/ref-max-resident-transfails.md
deleted file mode 100644
index 127c59a23..000000000
--- a/content/momentum/4/config/ref-max-resident-transfails.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "max_resident_transfails"
-description: "max resident transfails the threshold for swapping transient failures out of memory max resident transfails 100 If the transfail queue grows beyond the size specified by this option messages are swapped out before being queued to the transfail queue thus mitigating a potential memory usage problem The default value is..."
----
-
-
-## Name
-
-max_resident_transfails — the threshold for swapping transient failures out of memory
-
-## Synopsis
-
-`max_resident_transfails = 100`
-
-
-## Description
-
-If the transfail queue grows beyond the size specified by this option, messages are swapped out before being queued to the transfail queue thus mitigating a potential memory usage problem.
-
-The default value is `100`.
-
-
-## Scope
-
-max_resident_transfails is valid in the global scope.
-
-
-## See Also
-
-[inline_transfail_processing](/momentum/4/config/ref-inline-transfail-processing) and [reserve_maintenance_interval](/momentum/4/config/ref-reserve-maintenance-interval)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-max-retries.md b/content/momentum/4/config/ref-max-retries.md
deleted file mode 100644
index d0d1613bb..000000000
--- a/content/momentum/4/config/ref-max-retries.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "max_retries"
-description: "max retries override the system configured max retries max retries auto max retries none max retries 5 By default Momentum uses the message expiration configuration setting to determine when a message's lifetime has been exceeded Optionally max retries allows you to specify a fixed maximum number of delivery retries for..."
----
-
-
-## Name
-
-max_retries — override the system configured max_retries
-
-## Synopsis
-
-`max_retries = "auto"`
-
-`max_retries = "none"`
-
-`max_retries = 5`
-
-
-## Description
-
-By default, Momentum uses the `message_expiration` configuration setting to determine when a message's lifetime has been exceeded. Optionally, `max_retries` allows you to specify a fixed maximum number of delivery retries for a message before it is permanently failed.
-
-'auto', the default setting calculates the maximum number of retries based on the message's message_expiration. 'none' never limits the number of retries of a message, falling back to rely only on message_expiration. These are subtly different in that manual flushing attempts can preempt the normal retry schedule for a message, causing the 'auto' limit to be hit before Message_Expiration would otherwise dictate.
-
-Momentum employs an exponential back-off scheme for retrying messages. On the first failure the message is retried `retry_interval` seconds later. On the second failure, twice that and so on until either `max_retries` or `message_expiration` is reached.
-
-If you wish to disable Momentum's exponential back-off scheme so that a message is retried at a fixed interval a specified number, use the following settings:
-
-```
-retry_interval = 1200
-max_retry_interval = 1200
-max_retries = 5
-```
-
-In this example, a bounced message will be retried every 1200 seconds and will expire in 6000 seconds—after five retries—unless `message_expiration` is set to a value lower than 6000\. in which case, the message will expire in `messsage_expiration` seconds.
-
-### Warning
-
-The default value for `max_retries` is "auto" so be sure to change it to a positive integer or "none" if you plan to use `max_retry_interval`. When `max_retries` is set to a positive integer, messages expire within `messsage_expiration` seconds or after the specified number of retries, whichever occurs first. When `max_retries` is "none" there is no limit on the number of retries of a message; the message will expire by `message_expiration` only.
-
-
-## Scope
-
-`max_retries` is valid in the binding, binding_group, domain and global scopes.
-
-
-## See Also
-
-[message_expiration](/momentum/4/config/ref-message-expiration) and [max_retry_interval](/momentum/4/config/ref-max-retry-interval)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-max-retry-interval.md b/content/momentum/4/config/ref-max-retry-interval.md
deleted file mode 100644
index 0230c4014..000000000
--- a/content/momentum/4/config/ref-max-retry-interval.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "max_retry_interval"
-description: "max retry interval maximum retry interval Max Retry Interval 43200 The maximum interval between successive retries for a message This provides a cap on the effective retry calculated from Retry Interval The default value for this option is 43200 seconds 12 hours Note that the Max Retries setting has a..."
----
-
-
-## Name
-
-max_retry_interval — maximum retry interval
-
-## Synopsis
-
-`Max_Retry_Interval = "43200"`
-
-
-## Description
-
-The maximum interval between successive retries for a message. This provides a cap on the effective retry calculated from `Retry_Interval`. The default value for this option is `43200` seconds (12 hours).
-
-### Warning
-
-Note that the `Max_Retries` setting has a bearing on this option. The default value for `Max_Retries` is "auto" so be sure to change it to a positive integer or "none" if you plan to use `Max_Retry_Interval`. When `Max_Retries` is set to a positive integer, messages expire within `Messsage_Expiration` seconds or after the specified number of retries, whichever occurs first. When `Max_Retries` is "none" there is no limit on the number of retries of a message; the message will expire by `Message_Expiration` only.
-
-Consider the following configuration snippet:
-
-```
-Retry_Interval = 1200
-Max_Retry_Interval = 1200
-Max_Retries = 5
-```
-
-Given this configuration, a bounced message will be retried every 1200 seconds and will expire in 6000 seconds unless `Message_Expiration` is set to a value lower than 6000\. In which case, the message will expire in `Messsage_Expiration` seconds. "Max_Retry_Interval" caps "Retry_Interval" at 1200\. Without it a bounced message would expire in 37200 seconds (unless Messsage_Expiration is less than this number) because the retry interval is doubled each time as follows:
-
-```
-1200
- 2400
- 4800
- 9600
- 19200
- -----
- 37200
-```
-
-## Scope
-
-max_retry_interval is valid in the binding, binding_group, domain and global scopes.
-
-
-## See Also
-
-[retry_interval](/momentum/4/config/ref-retry-interval), [max_retries](/momentum/4/config/ref-max-retries)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-max-timed-events-per-iter.md b/content/momentum/4/config/ref-max-timed-events-per-iter.md
deleted file mode 100644
index 72e091d3a..000000000
--- a/content/momentum/4/config/ref-max-timed-events-per-iter.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "max_timed_events_per_iter"
-description: "max timed events per iter the maximum numer of timed events per scheduler iteration max timed events per iter 1024 This option provides an upper boundary on how many timed events are dispatched in a single scheduler iteration This caps the number of timed events that will be processed by..."
----
-
-
-## Name
-
-max_timed_events_per_iter — the maximum numer of timed events per scheduler iteration
-
-## Synopsis
-
-`max_timed_events_per_iter = 1024`
-
-
-## Description
-
-This option provides an upper boundary on how many timed events are dispatched in a single scheduler iteration. This caps the number of timed events that will be processed by the scheduler before tending to events triggered by network traffic, preventing network events from being starved by time-based events.
-
-The default value is `1024`.
-
-
-## Scope
-
-max_timed_events_per_iter is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-mdn-failures-notify.md b/content/momentum/4/config/ref-mdn-failures-notify.md
deleted file mode 100644
index 337de9e7a..000000000
--- a/content/momentum/4/config/ref-mdn-failures-notify.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "mdn_failures_notify"
-description: "mdn failures notify mailbox to which to send null recipient MD Ns mdn failures notify postmaster example com If mdn failures notify is set to an email address Momentum will send the MDN to that mailbox allowing a postmaster to review and perhaps take action on those bounces When generating..."
----
-
-
-## Name
-
-mdn_failures_notify — mailbox to which to send null recipient MDNs
-
-## Synopsis
-
-`mdn_failures_notify = "postmaster@example.com"`
-
-
-## Description
-
-If `mdn_failures_notify` is set to an email address, Momentum will send the MDN to that mailbox, allowing a postmaster to review and perhaps take action on those bounces.
-
-When generating an MDN, Momentum will skip the bounce message generation if the message that triggered it was from the NULL sender, as there is no information about whom should be notified.
-
-
-## Scope
-
-mdn_failures_notify is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-memory-goal.md b/content/momentum/4/config/ref-memory-goal.md
deleted file mode 100644
index 29108e583..000000000
--- a/content/momentum/4/config/ref-memory-goal.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "memory_goal"
-description: "memory goal configure physical memory usage goal memory goal 90 The memory goal directive allows you to specify the maximum percentage of physical memory that should be used during normal operation If this threshold is exceeded the server will free up some resources to try to bring memory usage within..."
----
-
-
-## Name
-
-memory_goal — configure physical memory usage goal
-
-## Synopsis
-
-`memory_goal = 90`
-
-
-## Description
-
-The memory_goal directive allows you to specify the maximum percentage of physical memory that should be used during normal operation. If this threshold is exceeded, the server will free up some resources to try to bring memory usage within acceptable bounds. The default value is `90`.
-
-It is possible for the server to exceed the memory_goal. Other than trying to free up some resources, no action is taken to stop the memory_goal from being exceeded. For a "harder" limit, see [memory_hwm](/momentum/4/config/ref-memory-hwm).
-
-
-## Scope
-
-memory_goal is valid in the global scope.
-
-
-## See Also
-
-[memory_hwm](/momentum/4/config/ref-memory-hwm)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-memory-hwm.md b/content/momentum/4/config/ref-memory-hwm.md
deleted file mode 100644
index bb76e6f67..000000000
--- a/content/momentum/4/config/ref-memory-hwm.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "memory_hwm"
-description: "memory hwm configure physical memory usage high water mark memory hwm 95 The memory hwm directive allows you to specify the maximum percentage of physical memory that should be used during normal operation If this threshold is exceeded new mail will be transiently failed and the server will aggressively free..."
----
-
-
-## Name
-
-memory_hwm — configure physical memory usage high-water mark
-
-## Synopsis
-
-`memory_hwm = 95`
-
-
-## Description
-
-The memory_hwm directive allows you to specify the maximum percentage of physical memory that should be used during normal operation. If this threshold is exceeded, new mail will be transiently failed and the server will aggressively free up resources to bring memory usage within acceptable bounds. The default value is `95`.
-
-
-## Scope
-
-memory_hwm is valid in the global scope.
-
-
-## See Also
-
-[memory_goal](/momentum/4/config/ref-memory-goal)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-message-expiration.md b/content/momentum/4/config/ref-message-expiration.md
deleted file mode 100644
index 2fab75af7..000000000
--- a/content/momentum/4/config/ref-message-expiration.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "message_expiration"
-description: "message expiration the time to live for messages Message Expiration 604800 The maximum amount of time in seconds a message will remain undelivered in the system If a message remains undeliverable for this amount of time it will be removed and a delivery failure log entry will be made If..."
----
-
-
-## Name
-
-message_expiration — the time to live for messages
-
-## Synopsis
-
-`Message_Expiration = 604800`
-
-
-## Description
-
-The maximum amount of time in seconds a message will remain undelivered in the system. If a message remains undeliverable for this amount of time, it will be removed and a delivery failure log entry will be made. If the `Generate_Bounces` configuration option is enabled, then at failure time an out-of-band bounce message will be generated and queued for delivery. The default value for this option is `86400` seconds (24 hours). However, in the default `ecelerity.conf` file this option is set to `604800` (1 week).
-
-
-## Scope
-
-`message_expiration` is valid in the binding, binding_group, domain and global scopes.
-
-
-## See Also
-
-[never_attempt_expired_messages](/momentum/4/config/ref-never-attempt-expired-messages), [retry_interval](/momentum/4/config/ref-retry-interval) and [max_retries](/momentum/4/config/ref-max-retries)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-migrate-connections-between-sibling-domains.md b/content/momentum/4/config/ref-migrate-connections-between-sibling-domains.md
deleted file mode 100644
index 1662ebc4f..000000000
--- a/content/momentum/4/config/ref-migrate-connections-between-sibling-domains.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "migrate_connections_between_sibling_domains"
-description: "migrate connections between sibling domains optimize connections for sibling domains migrate connections between sibling domains true When this option is false if the active queue for a binding domain pair becomes empty its existing connection s sit idle When set to true Momentum attempts to find a sibling domain which..."
----
-
-
-## Name
-
-migrate_connections_between_sibling_domains — optimize connections for sibling domains
-
-## Synopsis
-
-`migrate_connections_between_sibling_domains = true`
-
-
-## Description
-
-When this option is `false`, if the active queue for a binding/domain pair becomes empty, its existing connection(s) sit idle. When set to `true`, Momentum attempts to find a sibling domain which shares the same binding and has a non-empty active queue and then move the idle connections to it.
-
-If two domains have at least one common mail server (MX), they are considered siblings.
-
-The default value is `true`.
-
-
-## Scope
-
-`migrate_connections_between_sibling_domains` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-mime-parse-large-messages-during-reception.md b/content/momentum/4/config/ref-mime-parse-large-messages-during-reception.md
deleted file mode 100644
index 02c22c091..000000000
--- a/content/momentum/4/config/ref-mime-parse-large-messages-during-reception.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "mime_parse_large_messages_during_reception"
-description: "mime parse large messages during reception configure whether large messages are parsed upon reception or just in time mime parse large messages during reception true This option sets or unsets the message mime parse state on a message generated with the builder API Setting this value to false may result..."
----
-
-
-## Name
-
-mime_parse_large_messages_during_reception — configure whether large messages are parsed upon reception or just in time.
-
-## Synopsis
-
-`mime_parse_large_messages_during_reception = true`
-
-
-## Description
-
-This option sets or unsets the message mime parse state on a message generated with the builder API.
-
-### Warning
-
-Setting this value to "false" may result in blocking the scheduler thread. The default value for this option is `true`.
-
-
-## Scope
-
-`mime_parse_large_messages_during_reception` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-min-dns-ttl.md b/content/momentum/4/config/ref-min-dns-ttl.md
deleted file mode 100644
index 95bd29ec9..000000000
--- a/content/momentum/4/config/ref-min-dns-ttl.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "min_dns_ttl"
-description: "min dns ttl override DNS TT Ls smaller than this value min dns ttl 0 Any DNS response with a TTL of less than the value of min dns ttl will be increased to the value of min dns ttl The default value is 0 min dns ttl is valid..."
----
-
-
-## Name
-
-min_dns_ttl — override DNS TTLs smaller than this value
-
-## Synopsis
-
-`min_dns_ttl = 0`
-
-
-## Description
-
-Any DNS response with a TTL of less than the value of `min_dns_ttl` will be increased to the value of `min_dns_ttl`. The default value is `0`.
-
-
-## Scope
-
-min_dns_ttl is valid in the global scope.
-
-
-## See Also
-
-[max_dns_ttl](/momentum/4/config/ref-max-dns-ttl)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-msg-gen-conf.md b/content/momentum/4/config/ref-msg-gen-conf.md
deleted file mode 100644
index 96846b5d0..000000000
--- a/content/momentum/4/config/ref-msg-gen-conf.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "msg_gen.conf File"
-description: "The msg gen conf file contains the configuration relevant to message generation This file is included from within ecelerity conf Restart the ecelerity process if you make any changes to the msg gen conf file Running the config reload command will not suffice The following is an example msg gen..."
----
-
-The `msg_gen.conf` file contains the configuration relevant to message generation. This file is included from within `ecelerity.conf`.
-
-### Warning
-
-Restart the ecelerity process if you make any changes to the `msg_gen.conf` file. Running the **`config reload`** command will not suffice.
-
-The following is an example `msg_gen.conf` file:
-
-
-
-
-```
-httpsrv { }
-HTTP_Listener {
- Listen ":2081" {}
-}
-substitution_engine {}
-
-scriptlet "scriptlet" {
- script "rest_templates" { source = "msys.rest.templates" }
- script "rest_users" { source = "msys.rest.users" }
- script "rest_transmissions" { source = "msys.rest.transmissions" }
- script "open_track" { source = "msys.rest.open_tracker" }
- script "click_tracker" { source = "msys.rest.click_tracker" }
-}
-# One entry for each Platform node
-cassandra_client {
- uri = ("name=cassandra_db;host=192.168.1.204;port=9160"
- "name=cassandra_db;host=192.168.1.206;port=9160")
-}
-
-engagement_tracker {}
-
-msg_gen {
- engagement_tracking_host = "example.com:81"
- cluster_cfg = true
- quorum = 2
- # a node stanza for each Platform node
- node node1.lan {
- mta_id = 1
- votes = 1
- }
- node node2.lan {
- mta_id = 2
- votes = 1
- }
-}
-```
-
-For a discussion of scopes and fallbacks, see [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback).
-
-For a summary of all the non-module specific configuration options, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/4/modules/) .
-
-The following are the modules configured in the `msg_gen.conf` file:
-
-
-
-- cassandra_client
-
--
-
-This module configuration includes a `uri` entry for each Platform node in your cluster. Do not change this setting.
-
-
-
-- engagement_tracker
-
--
-
-This module handles the creation of open-tracked and click-tracked links and the corresponding parsing of the links when an open or click event occurs. See [“engagement_tracker – HTTP Engagement Tracking”](/momentum/4/modules/engage-tracker).
-
-
-
-- HTTP_Listener
-
--
-
-To use the REST API, this listener module must be loaded. By default, the HTTP_Listener listens on port 2081\. See [*Configuring Inbound Mail Service Using HTTP*](/momentum/4/http-listener) .
-
-
-
-- httpsrv
-
--
-
-To use the REST API, this HTTP server infrastructure module must be loaded. See [“httpsrv – HTTP Server”](/momentum/4/modules/4-httpsrv).
-
-
-
-- msg_gen
-
--
-
-Handles message generation. See [“msg_gen – Message Generation”](/momentum/4/modules/msg-gen).
-
-
-
-- scriptlet
-
--
-
-The scriptlet module defined in `msg_gen.conf` supplements the scriptlet module defined in `ecelerity.conf`. The various `script` scopes point to the scripts needed to support message generation. Note that the scriptlet module instance name, `scriptlet`, is the same as the scriptlet instance name in the `ecelerity.conf` file. All instances of the scriptlet module must use the same instance name. For more information, see [“scriptlet - Lua Policy Scripts”](/momentum/4/modules/scriptlet).
-
-
-
-- substitution_engine
-
--
-
-This module handles substitution in the templates. It has no configuration options.
-
-
-
-
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-msgc-server-conf.md b/content/momentum/4/config/ref-msgc-server-conf.md
deleted file mode 100644
index bd7697f7e..000000000
--- a/content/momentum/4/config/ref-msgc-server-conf.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-lastUpdated: "05/21/2024"
-title: "msgc_server.conf File"
-description: "The msgc server conf file contains the configuration relevant to the cluster messaging bus This file is referenced from the eccluster conf file on the cluster manager and from the ecelerity cluster conf file on nodes"
----
-
-The `msgc_server.conf` file contains the configuration relevant to the cluster messaging bus. This file is referenced from the `eccluster.conf` file on the cluster manager and from the `ecelerity-cluster.conf` file on nodes. It MUST live in the global portion of the repository, as it must be the same for all nodes in the cluster.
-
-### Note
-
-For a discussion of scopes and fallbacks, see [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback).
-
-For a summary of all the non-module specific configuration options, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/4/modules/) .
-
-The following are the modules configured in the `msgc_server.conf` file:
-
-
-
-- msgc_server
-
--
-
-The msgc_server module maintains connections with all other msgc_servers in the network (if they exist).
-
-
-
-- msgc_client
-
--
-
-The msgc_client module connects to msgc_server in order to participate in the cluster.
-
-
-
-- msgcserver_listener
-
--
-
-The msgcserver_listener mediates between msgc_servers and between msgc_servers and their clients. See [“Msgcserver_Listener Configuration”](/momentum/4/cluster-listeners#msgcserver_listener).
-
-
-
-
diff --git a/content/momentum/4/config/ref-mx-failures-fallback-to-a.md b/content/momentum/4/config/ref-mx-failures-fallback-to-a.md
deleted file mode 100644
index be929f8e0..000000000
--- a/content/momentum/4/config/ref-mx-failures-fallback-to-a.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "04/08/2020"
-title: "mx_failures_fallback_to_a"
-description: "mx failures fallback to a configure the maximum number of times an MX lookup will be attempted mx failures fallback to a 3 The number of times an MX lookup will be attempted before attempting an A lookup The default value is 3 mx failures fallback to a is valid..."
----
-
-
-## Name
-
-mx_failures_fallback_to_a — configure the maximum number of times an MX lookup will be attempted
-
-## Synopsis
-
-`mx_failures_fallback_to_a = 3`
-
-
-## Description
-
-The number of times an MX lookup will be attempted before attempting an A lookup. The default value is "3".
-
-If the value is set to -1, the first lookup will be an MX lookup, and any subsequent lookups will be with A records.
-
-
-## Scope
-
-mx_failures_fallback_to_a is valid in the domain and global scopes.
-
-
-## See Also
-
-[dns_failures_to_purge](/momentum/4/config/ref-dns-failures-to-purge)
diff --git a/content/momentum/4/config/ref-mx-failures-to-delay.md b/content/momentum/4/config/ref-mx-failures-to-delay.md
deleted file mode 100644
index 3d9f6479c..000000000
--- a/content/momentum/4/config/ref-mx-failures-to-delay.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "mx_failures_to_delay"
-description: "mx failures to delay number of consecutive failures before a domain is auto delayed mx failures to delay 50 When Momentum detects that a domain has no contactable M Xs it will move all that domain's active messages into the delayed queue This setting allows you to configure the sensitivity..."
----
-
-
-## Name
-
-mx_failures_to_delay — number of consecutive failures before a domain is auto-delayed
-
-## Synopsis
-
-`mx_failures_to_delay = 50`
-
-
-## Description
-
-When Momentum detects that a domain has no contactable MXs, it will move all that domain's active messages into the delayed queue. This setting allows you to configure the sensitivity of Momentum to consecutive connection failures. Momentum will need `mx_failures_to_delay` consecutive failures for every MX in a domain to trigger a delay event. The default value is 50\. This is configurable both at a global and per-domain level. Setting this value to zero will disable the auto-delay feature.
-
-### Warning
-
-This is an advanced option. Making Momentum too sensitive to transient network connection problems will cause unnecessary delays in message delivery. Thorough testing is recommended prior to deployment in a production environment.
-
-
-## Scope
-
-`mx_failures_to_delay` is valid in the domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-never-attempt-expired-messages.md b/content/momentum/4/config/ref-never-attempt-expired-messages.md
deleted file mode 100644
index 752042cf7..000000000
--- a/content/momentum/4/config/ref-never-attempt-expired-messages.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "never_attempt_expired_messages"
-description: "never attempt expired messages Never attempt delivery of expired messages Never Attempt Expired Messages false Momentum's default behavior is to always attempt delivery of a message when it gets to the front of the queue regardless of whether or not it should have expired based on the values of message..."
----
-
-
-## Name
-
-never_attempt_expired_messages — Never attempt delivery of expired messages
-
-## Synopsis
-
-`Never_Attempt_Expired_Messages = "false"`
-
-
-## Description
-
-Momentum's default behavior is to always attempt delivery of a message when it gets to the front of the queue, regardless of whether or not it should have expired based on the values of [message_expiration](/momentum/4/config/ref-message-expiration) and [max_retries](/momentum/4/config/ref-max-retries). This may be desirable for some users, however it can have a side-effect of message queues for 'slow' receiver domains to grow very large, and contain messages that are many times older than the server's policy says they should be. Setting Never_Attempt_Expired_Messages to `true` will change this behavior, causing Momentum to not attempt delivery of a message if it should have already expired. When this option is set to `true`, log entries that have expired and reach the front of the queue will fail with the message "Delivery not attempted (message expired)".
-
-### Warning
-
-Under certain circumstances, using this feature can cause some messages to never have delivery attempted.
-
-
-## Scope
-
-never_attempt_expired_messages is valid in the binding, binding_group, domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-never-retry.md b/content/momentum/4/config/ref-never-retry.md
deleted file mode 100644
index c86f7c4c7..000000000
--- a/content/momentum/4/config/ref-never-retry.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "never_retry"
-description: "never retry whether or not to retry delivery of failed messages never retry false Whether or not to retry delivery of failed messages If it is set to true then instead of re queuing the message the message is failed with 554 5 4 7 internal exceeded max retries without..."
----
-
-
-## Name
-
-never_retry — whether or not to retry delivery of failed messages
-
-## Synopsis
-
-`never_retry = false`
-
-
-## Description
-
-Whether or not to retry delivery of failed messages. If it is set to true, then instead of re-queuing the message, the message is failed with: "554 5.4.7 [internal] exceeded max retries without delivery".
-
-The default value is `false`.
-
-
-## Scope
-
-never_retry is valid in the global, domain, binding, and binding_group scopes.
-
-
-## See Also
-
-[retry_interval](/momentum/4/config/ref-retry-interval)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-only-use-best-mx-for-relay-domains.md b/content/momentum/4/config/ref-only-use-best-mx-for-relay-domains.md
deleted file mode 100644
index 21f9e56f2..000000000
--- a/content/momentum/4/config/ref-only-use-best-mx-for-relay-domains.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "only_use_best_mx_for_relay_domains"
-description: "only use best mx for relay domains If this is set to true only the lowest numerical priority M Xs are used when sending to domains listed in bounce domains or relay domains only use best mx for relay domains false When only use best mx for relay domains is..."
----
-
-
-## Name
-
-only_use_best_mx_for_relay_domains — If this is set to `true`, only the lowest numerical priority MXs are used when sending to domains listed in `bounce_domains` or `relay_domains`.
-
-## Synopsis
-
-`only_use_best_mx_for_relay_domains = false`
-
-
-## Description
-
-When `only_use_best_mx_for_relay_domains` is set to `true`, only the lowest numerical priority MXs are used when sending to domains listed in `bounce_domains` or `relay_domains`; others are ignored. If this value is set to `false`, all MXs will be used. The default value is `true` (however, this option is typically set to `false` in the default `ecelerity.conf` file). We suggest setting this to `false` if you use the `routes` option.
-
-### Note
-
-The `relay_domains` value that interacts with `only_use_best_mx_for_relay_domains` is the one set in the global scope; any `relay_domains` set in pathway scopes will **not** be affected.
-
-
-## Scope
-
-only_use_best_mx_for_relay_domains is valid in the global scope.
-
-
-## See Also
-
-[routes](/momentum/4/config/ref-routes), [bounce_domains](/momentum/4/config/ref-bounce-domains), [relay_domains](/momentum/4/config/ref-relay-domains)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-open-relay.md b/content/momentum/4/config/ref-open-relay.md
deleted file mode 100644
index 6a20bcc0c..000000000
--- a/content/momentum/4/config/ref-open-relay.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "open_relay"
-description: "open relay whether the MTA is an open relay or not open relay true The relay hosts option is valid in the Peer scope but using open relay is more succinct open relay is valid in the esmtp listener listen pathway pathway group and peer scopes relay hosts..."
----
-
-
-## Name
-
-open_relay — whether the MTA is an open relay or not
-
-## Synopsis
-
-`open_relay = true`
-
-
-## Description
-
-The `relay_hosts` option is valid in the Peer scope but using `open_relay` is more succinct.
-
-```
-ESMTP_Listener {
- Peer "10.0.0.0/24" {
- # general options for this netblock here
- # use Open_Relay here instead of Relay_Hosts
- Open_Relay = true
- }
- Listen ":25" {
- Peer "10.0.0.1" {
- # options for 10.0.0.1 here
- SMTP_Extensions = ( "ENHANCEDSTATUSCODES" "AUTH LOGIN" )
- }
- }
-}
-```
-
-## Scope
-
-`open_relay` is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scopes.
-
-
-## See Also
-
-[relay_hosts](/momentum/4/config/ref-relay-hosts)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-opendkim-sign.md b/content/momentum/4/config/ref-opendkim-sign.md
deleted file mode 100644
index dcfec7680..000000000
--- a/content/momentum/4/config/ref-opendkim-sign.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "opendkim_sign"
-description: "opendkim sign whether or not to enable Open DKIM signing opendkim sign true Use this option to enable or disable Open DKIM signing To use Open DKIM you must also configure the opendkim module Default value is true opendkim sign is valid in the binding binding group domain and global..."
----
-
-
-## Name
-
-opendkim_sign — whether or not to enable OpenDKIM signing
-
-## Synopsis
-
-`opendkim_sign = "true"`
-
-
-## Description
-
-Use this option to enable or disable OpenDKIM signing. To use OpenDKIM, you must also configure the [`opendkim`](/momentum/4/modules/opendkim) module.
-
-Default value is `true`.
-
-
-## Scope
-
-`opendkim_sign` is valid in the binding, binding_group, domain, and global scopes.
-
-
-## See Also
-
-[`opendkim`](/momentum/4/modules/opendkim)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-outbound-throttle-connections.md b/content/momentum/4/config/ref-outbound-throttle-connections.md
deleted file mode 100644
index 80b23ac06..000000000
--- a/content/momentum/4/config/ref-outbound-throttle-connections.md
+++ /dev/null
@@ -1,108 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "outbound_throttle_connections"
-description: "outbound throttle connections limit the rate at which connections are established outbound throttle connections 1 outbound throttle connections 1 60 This allows you to limit the rate at which Momentum will attempt to establish TCP IP connections It can be employed to globally limit connection allocation or to reduce the..."
----
-
-
-## Name
-
-outbound_throttle_connections — limit the rate at which connections are established
-
-## Synopsis
-
-`outbound_throttle_connections = "1"`
-
-`outbound_throttle_connections = "1/60"`
-
-
-## Description
-
-This allows you to limit the rate at which Momentum will attempt to establish TCP/IP connections. It can be employed to globally limit connection allocation or to reduce the rate established to a particular domain. When used in the global scope it limits the entire system to the value specified. For example, when set to `100`, no more than a total of `100` outbound connections can be made in a given second across any number of bindings.
-
-If a single integer parameter is provided, Momentum will ensure that no more than the specified number of connections are initiated in a given second. If a proper fraction parameter is provided, Momentum will limit the number of connections to the number specified in the numerator over the time window in seconds specified by the denominator. By default this option is not set, indicating an unlimited number of connections.
-
-Where throttles are concerned, Momentum's fallback behavior differs. For more information, see [the section called “Throttles and Fallback”](/momentum/4/config/ref-outbound-throttle-messages#conf.ref.outbound_throttle_messages.fallback).
-
-### Note
-
-This option can also be used to throttle *ecstream* connections.
-
-
-### `Outbound_Throttle_Connections` in the `host` Scope
-
-`Outbound_Throttle_Connections` may also be declared inside a `host` stanza to limit the rate at which connections are initiated to a particular MX host — a dimension that the binding/binding_group/domain/global form cannot express on its own, since multiple domains can share a single MX host and a single domain can be served by several MX hosts. The throttle is consulted at connection-establishment time, once the MX host has been selected, and is enforced alongside any binding/binding_group/domain/global throttle already in effect (see [Layering on top of the binding/domain/global throttle](#conf.ref.outbound_throttle_connections.host_scope) below).
-
-#### Layering on top of the binding/domain/global throttle
-
-The host-scoped throttle is **additive**: it is consulted **in addition to** any `Outbound_Throttle_Connections` value already in effect for the binding/binding_group/domain/global fallback chain. A new outbound TCP connection to a host proceeds only when none of the applicable throttles is saturated.
-
-#### MX-preference fallback when a host throttle is saturated
-
-When a destination domain has multiple MX records, a saturated host-scoped throttle does **not** immediately defer the delivery attempt. Instead, the candidate-host selection during MX resolution treats a saturated host the same way it treats a host that has hit its `Max_Outbound_Connections` cap: the host is zero-weighted, and the weighted random pick spills over to a healthy sibling — falling back across preference levels as needed within the **same** delivery attempt.
-
-The fallback proceeds in this order:
-
-1. **Same preference level (spillover).** If two or more MX records share the most-preferred preference value and at least one of their hosts is not throttled, Momentum picks one of the unthrottled hosts. The saturated host is skipped silently for this attempt.
-
-2. **Next preference level (level walk).** If every host at the current preference level is throttled (or otherwise unavailable), the selection logic advances to the next preference level and repeats the same weighted-random pick over that group's hosts.
-
-3. **All preferences saturated (defer with recovery-window scheduling).** If every host at every preference level is throttled, the attempt is aborted and **the message stays in the active queue**. The retry is scheduled at the shortest throttle-recovery window seen across the throttled candidates, **not** at the default `retry_interval` (which would otherwise push the retry out by ~20 minutes). When the recovery window elapses, the next maintainer pass re-runs the MX-selection logic from scratch — potentially picking a host that has since recovered, or hitting the throttle again and rescheduling for the new shortest window.
-
-This matches the spillover behavior an operator already expects from [max_outbound_connections](/momentum/4/config/ref-max-outbound-connections) on multi-MX domains: a saturated host transparently yields to a healthy sibling within one attempt; only when the entire MX set is unavailable does the attempt defer.
-
-#### `host` scope fallback chain
-
-The `host`-scoped throttle walks its own dedicated fallback chain — separate from the binding/binding_group/domain/global chain — when looking up the most specific value for a given `(binding_group, binding, host)` triple:
-
-```
-binding_group::binding::host > binding_group::host > binding::host > host
-```
-
-The most specific declaration wins. If no `host` stanza along the chain sets `Outbound_Throttle_Connections`, the host-scoped throttle is not enforced; only the binding/domain/global throttle applies. Note that, as with [max_outbound_connections](/momentum/4/config/ref-max-outbound-connections) in the `host` scope, there is no fallback from a `host`-scope lookup to the binding/domain/global value of `Outbound_Throttle_Connections` — the two chains are independent.
-
-#### Usage Example
-
-```
-host "smtp.example.com" {
- Outbound_Throttle_Connections = "5/10"
-}
-
-Binding "vip" {
- host "smtp.example.com" {
- Outbound_Throttle_Connections = "30"
- }
-}
-```
-
-In the example above, connections opened to the resolved MX host `smtp.example.com` are limited to 5 every 10 seconds by default, but the `vip` binding may open up to 30 new connections per second to the same host.
-
-#### Throttles-by-reference semantics still apply
-
-As with the binding/domain/global form (see [the section called “Throttles and Fallback”](/momentum/4/config/ref-outbound-throttle-messages#conf.ref.outbound_throttle_messages.fallback)), the host-scoped throttle object is shared by reference across more specific scopes that fall back to it. Two bindings whose `binding::host` lookup falls back to the same plain `host "smtp.example.com"` declaration share the **same** token bucket and are rate-limited cumulatively. Declare an explicit `Outbound_Throttle_Connections` inside each binding's `host` stanza if you want each binding to have its own independent connection rate to the host.
-
-#### Regex `host` stanzas share one bucket across all matching hostnames
-
-A regex `Host` stanza creates **one shared bucket** across every MX hostname the pattern matches — not a separate bucket per matching host — mirroring the regex-domain behavior.
-
-```
-Host "/sink-[ab]\.test/" {
- Outbound_Throttle_Connections = "5/10"
-}
-```
-
-In the configuration above, connections opened to `sink-a.test` and `sink-b.test` are **combined** against a single 5-connections-per-10-seconds bucket. Five connections may be initiated in total across both hosts in the window, not five per host. If you need a separate bucket per hostname, declare each host with its own non-regex `Host` stanza.
-
-#### Note on cluster enforcement
-
-The `host`-scoped form of `Outbound_Throttle_Connections` is enforced **locally** on each Momentum node. The cluster module does **not** replicate this throttle across nodes; for cluster-wide rate limiting, use [cluster_outbound_throttle_connections](/momentum/4/config/ref-cluster-outbound-throttle-connections), which operates in the binding_group, domain, and global scopes.
-
-
-## Scope
-
-outbound_throttle_connections is valid in the binding, binding_group, domain, global, and host scopes. In the `host` scope it walks a dedicated fallback chain (binding_group::binding::host, binding_group::host, binding::host, host).
-
-
-## See Also
-
-[outbound_throttle_messages](/momentum/4/config/ref-outbound-throttle-messages), [host](/momentum/4/config/ref-host), [max_outbound_connections](/momentum/4/config/ref-max-outbound-connections), [cluster_outbound_throttle_connections](/momentum/4/config/ref-cluster-outbound-throttle-connections)
diff --git a/content/momentum/4/config/ref-outbound-throttle-messages.md b/content/momentum/4/config/ref-outbound-throttle-messages.md
deleted file mode 100644
index 600bb9fc1..000000000
--- a/content/momentum/4/config/ref-outbound-throttle-messages.md
+++ /dev/null
@@ -1,198 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "outbound_throttle_messages"
-description: "outbound throttle messages limit the rate at which messages are delivered outbound throttle messages 1 outbound throttle messages 1 60 This option allows you to limit the rate at which Momentum will attempt to deliver mail It can be employed to globally limit throughput or to reduce the rate sent..."
----
-
-
-## Name
-
-outbound_throttle_messages — limit the rate at which messages are delivered
-
-## Synopsis
-
-`outbound_throttle_messages = "1"`
-
-`outbound_throttle_messages = "1/60"`
-
-
-## Description
-
-This option allows you to limit the rate at which Momentum will attempt to deliver mail. It can be employed to globally limit throughput or to reduce the rate sent to a particular domain.
-
-If a single integer parameter is provided, Momentum will ensure that no more than the specified number of messages are sent in a given second of time. If a proper fraction parameter is provided, Momentum will limit the number of sent message to the number specified in the numerator over the time window in seconds specified by the denominator. By default this option is not set, indicating an unlimited number of deliveries.
-
-### Note
-
-For best results, a throttle in the same scope and with the same values should also be defined using [outbound_throttle_connections](/momentum/4/config/ref-outbound-throttle-connections).
-
-If this option is not set or if is set to `0`, there is no limit on the number of messages sent.
-
-
-### Throttles and Fallback
-
-In general, the configuration system works by taking the most specific instance of a given configuration option. Consider the following:
-
-```
-opt = "foo"
-a {
- b {
- opt = "bar"
- }
-
- c {}
-}
-```
-
-In this case, we have a notional option called `opt` specified globally, and within the `b` stanza. If we look it up globally, we get the value "`foo`. If we look it up inside the "`a` stanza, it falls back to global, and we get `foo`. Within the `b` stanza, it's explicitly set to `bar`, and this is the value we receive. Inside the `c` stanza, no value is set, so we fall back to `a`. As no value is set there, we fall back to the global `foo` value. The effective values are shown in the following:
-
-```
-opt = "foo"
-a {
- opt = "foo"
- b { opt = "bar" }
- c { opt = "foo" }
-}
-```
-
-Throttles work in a similar way, but are treated "by reference" as opposed to "by value." Consider the following configuration:
-
-```
-binding_group "mygroup" {
- Outbound_Throttle_Messages = "10"
-
- binding "mybinding1" {}
-
- binding "mybinding2" {}
-
- domain "mydomain1" {}
-
-}
-```
-
-A single throttle structure is created in the scope of the binding group, `mygroup`. However, this doesn't mean that you end up with a new throttle in each scope. The fallback behavior of the configuration system for throttles means that a broader scope throttle *will* apply cumulatively to all subordinate options. In other words, options falling back to a less specific stanza to find a throttle will all affect the throttle together.
-
-In the above configuration the **combined** scopes `mybinding1, mybinding2` and `mydomain1` may send 10 messages cumulatively within a 1 second time period. Thus, if 10 messages go out for `mybinding1, mybinding2` and `mydomain1` will not send out any messages within that second.
-
-The following configuration allows 10 messages per second individually for each scope.
-
-```
-binding_group "mygroup" {
- outbound_throttle_messages = "10"
-
- binding "mybinding1" {
- outbound_throttle_messages = "10"
- }
-
- binding "mybinding2" {
- outbound_throttle_messages = "10"
- }
-
- domain "mydomain1" {
- outbound_throttle_messages = "10"
- }
-}
-```
-
-## outbound_throttle_messages and Regex Domains
-
-Regex Domains can also be considered a scope.
-
-```
-Domain "/(?:^|[.])example[.](/momentum/4/com-co-uk)$/" {
- Outbound_Throttle_Messages = 10
-}
-```
-
-outbound_throttle_messages set in the regex domain shown in the preceding example will impact all domains together, in the same way that a throttle set in a binding_group impacts all bindings.
-
-
-### `Outbound_Throttle_Messages` in the `host` Scope
-
-`Outbound_Throttle_Messages` may also be declared inside a `host` stanza to limit the message-delivery rate to a particular MX host — a dimension that the binding/binding_group/domain/global form cannot express on its own, since multiple domains can share a single MX host and a single domain can be served by several MX hosts. The `host` scope identifies the resolved MX hostname for a delivery, so the throttle is consulted once the connection has been bound to a specific MX host, and is enforced alongside any binding/binding_group/domain/global throttle already in effect (see [Layering on top of the binding/domain/global throttle](#conf.ref.outbound_throttle_messages.host_scope) below).
-
-#### Layering on top of the binding/domain/global throttle
-
-The host-scoped throttle is **additive**: it is consulted **in addition to** any `Outbound_Throttle_Messages` value already in effect for the binding/binding_group/domain/global fallback chain. A delivery proceeds only when none of the applicable throttles is saturated; if either the per-binding/domain throttle **or** the per-host throttle is exceeded, the delivery is deferred.
-
-#### MX-preference fallback when a host throttle is saturated
-
-When a destination domain has multiple MX records, a saturated host-scoped throttle does **not** immediately defer the delivery attempt. Instead, the candidate-host selection during MX resolution treats a saturated host the same way it treats a host that has hit its `Max_Outbound_Connections` cap: the host is zero-weighted, and the weighted random pick spills over to a healthy sibling — falling back across preference levels as needed within the **same** delivery attempt.
-
-The fallback proceeds in this order:
-
-1. **Same preference level (spillover).** If two or more MX records share the most-preferred preference value and at least one of their hosts is not throttled, Momentum picks one of the unthrottled hosts. The saturated host is skipped silently for this attempt.
-
-2. **Next preference level (level walk).** If every host at the current preference level is throttled (or otherwise unavailable), the selection logic advances to the next preference level and repeats the same weighted-random pick over that group's hosts.
-
-3. **All preferences saturated (defer with recovery-window scheduling).** If every host at every preference level is throttled, the attempt is aborted and **the message stays in the active queue**. The retry is scheduled at the shortest throttle-recovery window seen across the throttled candidates, **not** at the default `retry_interval` (which would otherwise push the retry out by ~20 minutes). When the recovery window elapses, the next maintainer pass re-runs the MX-selection logic from scratch — potentially picking a host that has since recovered, or hitting the throttle again and rescheduling for the new shortest window.
-
-This matches the spillover behavior an operator already expects from [max_outbound_connections](/momentum/4/config/ref-max-outbound-connections) on multi-MX domains: a saturated host transparently yields to a healthy sibling within one attempt; only when the entire MX set is unavailable does the attempt defer.
-
-#### Mid-session saturation: in-session re-check on each message
-
-Because the message throttle is consumed per-message rather than per-connection, the host-scoped throttle may saturate **mid-session** — that is, after one or more messages have already been delivered over an open TCP connection to the host. Momentum re-checks the host throttle before sending every additional message on a still-open connection, so the message-rate cap is enforced continuously rather than only at connection-establishment time.
-
-On a mid-session hit:
-
-* The current message **is not** sent. The connection is closed cleanly with `QUIT`.
-* The undelivered message and any remaining queued messages are left in the active queue.
-* The maintainer fire for the affected (binding, domain) pair is pushed forward by the throttle's recovery window. When that fires, MX selection re-runs from scratch (which may pick a different host per the spillover rules above, or — if the still-saturated host is the only choice — re-defer).
-
-The first message on a newly-opened TCP connection is exempt from this in-session re-check, matching the existing semantics of the binding/binding_group/domain/global `Outbound_Throttle_Messages` form: the weight-time peek already gated the decision to open the connection, and a second check before the first send would just be redundant work on the success path.
-
-#### `host` scope fallback chain
-
-The `host`-scoped throttle walks its own dedicated fallback chain — separate from the binding/binding_group/domain/global chain — when looking up the most specific value for a given `(binding_group, binding, host)` triple:
-
-```
-binding_group::binding::host > binding_group::host > binding::host > host
-```
-
-The most specific declaration wins. If no `host` stanza along the chain sets `Outbound_Throttle_Messages`, the host-scoped throttle is not enforced; only the binding/domain/global throttle applies. Note that, as with [max_outbound_connections](/momentum/4/config/ref-max-outbound-connections) in the `host` scope, there is no fallback from a `host`-scope lookup to the binding/domain/global value of `Outbound_Throttle_Messages` — the two chains are independent.
-
-#### Usage Example
-
-```
-host "smtp.example.com" {
- Outbound_Throttle_Messages = "10/5"
-}
-
-Binding "vip" {
- host "smtp.example.com" {
- Outbound_Throttle_Messages = "100"
- }
-}
-```
-
-With the configuration above, deliveries to the resolved MX host `smtp.example.com` are capped at 10 messages per 5 seconds by default, but messages going out from the `vip` binding to the same host may run at 100 per second.
-
-#### Throttles-by-reference semantics still apply
-
-As with the binding/domain/global form (see [the section called “Throttles and Fallback”](#conf.ref.outbound_throttle_messages.fallback)), the host-scoped throttle object is shared by reference across more specific scopes that fall back to it. For example, deliveries from `binding_a::host smtp.example.com` and `binding_b::host smtp.example.com` that both fall back to the plain `host "smtp.example.com"` declaration share the **same** token bucket and are rate-limited cumulatively. Declare an explicit `Outbound_Throttle_Messages` inside each binding's `host` stanza if you want each binding to have its own independent rate to the host.
-
-#### Regex `host` stanzas share one bucket across all matching hostnames
-
-Just as a regex `Domain` stanza creates one shared throttle bucket across every domain the pattern matches, a regex `Host` stanza creates **one shared bucket** across every MX hostname the pattern matches — not a separate bucket per matching host.
-
-```
-Host "/sink-[ab]\.test/" {
- Outbound_Throttle_Messages = "8/3600"
-}
-```
-
-In the configuration above, deliveries to `sink-a.test` and `sink-b.test` are **combined** against a single 8-messages-per-hour bucket. Eight messages may be sent in total across both hosts in the window, not eight per host. If you need a separate bucket per hostname, declare each host with its own non-regex `Host` stanza.
-
-#### Note on cluster enforcement
-
-The `host`-scoped form of `Outbound_Throttle_Messages` is enforced **locally** on each Momentum node. The cluster module does **not** replicate this throttle across nodes; for cluster-wide rate limiting, use [cluster_outbound_throttle_messages](/momentum/4/config/ref-cluster-outbound-throttle-messages), which operates in the binding_group, domain, and global scopes.
-
-
-## Scope
-
-outbound_throttle_messages is valid in the binding, binding_group, domain, global, and host scopes. In the `host` scope it walks a dedicated fallback chain (binding_group::binding::host, binding_group::host, binding::host, host).
-
-
-## See Also
-
-[“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback), [outbound_throttle_connections](/momentum/4/config/ref-outbound-throttle-connections), [host](/momentum/4/config/ref-host), [max_outbound_connections](/momentum/4/config/ref-max-outbound-connections), [cluster_outbound_throttle_messages](/momentum/4/config/ref-cluster-outbound-throttle-messages)
diff --git a/content/momentum/4/config/ref-pathway-group.md b/content/momentum/4/config/ref-pathway-group.md
deleted file mode 100644
index 37a95dfb3..000000000
--- a/content/momentum/4/config/ref-pathway-group.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "pathway_group"
-description: "pathway group a container for pathways Currently esmtp listener options used in the pathway group scope are not recognized by ecelerity For this reason do not use pathway group as a configuration container As a workaround use the pathway scope only The pathway group scope is used to logically group..."
----
-
-
-## Name
-
-pathway_group — a container for pathways
-
-
-## Description
-
-### Warning
-
-Currently, esmtp_listener options used in the pathway_group scope are not recognized by ecelerity. For this reason, do not use pathway_group as a configuration container. As a workaround, use the pathway scope only.
-
-The `pathway_group` scope is used to logically group pathways so that common configuration options need not be repeated throughout a configuration file.
-
-```
-pathway_group "group1" {
- idle_time = 400
- pathway "example1" {
- banner_hostname = "example1.mail.server"
- }
-
- pathway "example2" {
- banner_hostname = "example2.mail.server"
- }
-}
-```
-
-In the example above, both pathways will have the same `idle_time` but different `banner_hostname`s.
-
-
-## Scope
-
-pathway_group is valid in the global scope.
-
-
-## See Also
-
-[pathway](/momentum/4/config/ref-pathway)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-pathway.md b/content/momentum/4/config/ref-pathway.md
deleted file mode 100644
index 8311afea2..000000000
--- a/content/momentum/4/config/ref-pathway.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "pathway"
-description: "pathway a grouping of inbound configuration options The pathway scope is used to group inbound configuration options that you wish to apply to a specific ESMTP Listener A pathway scope may be defined in the global scope or within a pathway group scope The usual fallback semantics apply to options..."
----
-
-
-## Name
-
-pathway — a grouping of inbound configuration options
-
-
-## Description
-
-The `pathway` *scope* is used to group inbound configuration options that you wish to apply to a specific ESMTP_Listener. A pathway scope may be defined in the global scope or within a `pathway_group` scope.
-
-```
-pathway "example1" {
- allow_null_envelope_sender = true
-}
-
-pathway_group "group1" {
-
- pathway "example2" {
- idle_time = 400
- }
-}
-```
-
-The usual fallback semantics apply to options valid in the Pathway scope. The value that an option assumes, in order of decreasing precedence, is as follows:
-
-1. pathway_group::pathway
-
-2. pathway
-
-3. pathway_group
-
-4. global
-
-A pathway is associated with a specific ESMTP_Listener or a listen or peer scope within an ESMTP_Listener by setting the `pathway` *option* within that scope. For example:
-
-```
-pathway "example1" {
- allow_null_envelope_sender = true
-}
-
-ESMTP_Listener {
- listen ":25" {
- ...
- **pathway = "example1"**
- }
-}
-```
-
-Pathway_groups are used for logical groupings only and cannot be associated with ESMTP_Listeners.
-
-Because a pathway is just a message context variable, you can set it in the following way:
-
-`vctx_mess_set "pathway" "example1"`
-## Scope
-
-The pathway scope is valid in the global scope and within a pathway group scope.
-
-The pathway *option* references a pathway scope and is valid within an esmtp_listener or within a listen or peer scope within an esmtp_listener.
-
-
-## See Also
-
-[pathway_group](/momentum/4/config/ref-pathway-group)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-pcre-cache-size.md b/content/momentum/4/config/ref-pcre-cache-size.md
deleted file mode 100644
index 1fb03f60a..000000000
--- a/content/momentum/4/config/ref-pcre-cache-size.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "pcre_cache_size"
-description: "pcre cache size set the maximum size of the ec pcre compile cache pcre cache size 0 pcre cache size and pcre cache ttl together set the maximum size and TTL of the ec pcre compile cache This cache is used by sieve sievelib the bounce classifier code and the..."
----
-
-
-## Name
-
-pcre_cache_size — set the maximum size of the ec_pcre_compile cache
-
-## Synopsis
-
-`pcre_cache_size = 0`
-
-
-## Description
-
-pcre_cache_size and pcre_cache_ttl together set the maximum size and TTL of the ec_pcre_compile cache. This cache is used by sieve, sievelib, the bounce_classifier code and the vctx_filter module to cache compiled regular expressions. It should not normally be necessary to modify these values.
-
-The default value is `100`.
-
-
-## Scope
-
-pcre_cache_size is valid in the global scope.
-
-
-## See Also
-
-[pcre_cache_ttl](/momentum/4/config/ref-pcre-cache-ttl)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-pcre-cache-ttl.md b/content/momentum/4/config/ref-pcre-cache-ttl.md
deleted file mode 100644
index 97b92f31d..000000000
--- a/content/momentum/4/config/ref-pcre-cache-ttl.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "pcre_cache_ttl"
-description: "pcre cache ttl set the maximum TTL for the ec pcre compile cache pcre cache size 300 pcre cache size and pcre cache ttl together set the maximum size and TTL of the ec pcre compile cache This cache is used by sieve sievelib the bounce classifier code and the..."
----
-
-
-## Name
-
-pcre_cache_ttl — set the maximum TTL for the ec_pcre_compile cache
-
-## Synopsis
-
-`pcre_cache_size = 300`
-
-
-## Description
-
-pcre_cache_size and pcre_cache_ttl together set the maximum size and TTL of the ec_pcre_compile cache. This cache is used by sieve, sievelib, the bounce_classifier code and the vctx_filter module to cache compiled regular expressions. It should not normally be necessary to modify these values.
-
-The default value is `300`.
-
-
-## Scope
-
-pcre_cache_ttl is valid in the global scope.
-
-
-## See Also
-
-[pcre_cache_size](/momentum/4/config/ref-pcre-cache-size)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-permastore-interval.md b/content/momentum/4/config/ref-permastore-interval.md
deleted file mode 100644
index 70a547671..000000000
--- a/content/momentum/4/config/ref-permastore-interval.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "permastore_interval"
-description: "permastore interval the frequency for saving various statistics permastore interval 300 Statistics related to global connections global and per binding signing and sieve are stored in an SQ Lite database whose location is configured by the masterdb file Every permastore interval a snapshot of these statistics is saved so that..."
----
-
-
-## Name
-
-permastore_interval — the frequency for saving various statistics
-
-## Synopsis
-
-`permastore_interval = 300`
-
-
-## Description
-
-Statistics related to global connections, global and per-binding signing and sieve are stored in an SQLite database whose location is configured by the `masterdb_file`. Every permastore_interval a snapshot of these statistics is saved so that in the event of a crash, this data is not lost. These values are also saved during a normal shutdown.
-
-if your disk subsystem is under pressure, and you have a large number of bindings and domains, Momentum may become unresponsive while it journals statistics to the permastore. In these circumstances you may turn off the periodic permastore writes by setting the interval to `0`. It is safe to set this to `0` even if you are not experiencing unresponsive behavior.
-
-The default value is `300`.
-
-
-## Scope
-
-permastore_interval is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-pidfile.md b/content/momentum/4/config/ref-pidfile.md
deleted file mode 100644
index 2ecb15d4e..000000000
--- a/content/momentum/4/config/ref-pidfile.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "pidfile"
-description: "pidfile set the PID file path pidfile path to ecelerity pid Sets the path to the PID file This is used by ec ctl to determine whether Momentum is running The PID file can be used by other processes to determine if the instance is running therefore each instance must..."
----
-
-
-## Name
-
-pidfile — set the PID file path
-
-## Synopsis
-
-`pidfile = "/path/to/ecelerity.pid"`
-
-
-## Description
-
-Sets the path to the PID file. This is used by **ec_ctl** to determine whether Momentum is running.
-
-The PID file can be used by other processes to determine if the instance is running; therefore, each instance must have its own PID file.
-
-
-## Scope
-
-pidfile is valid in the global scope.
-
-
-## See Also
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-prefer_ipv6_mxs.md b/content/momentum/4/config/ref-prefer_ipv6_mxs.md
deleted file mode 100644
index 7f337f8fd..000000000
--- a/content/momentum/4/config/ref-prefer_ipv6_mxs.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/12/2021"
-title: "prefer_ipv6_mxs"
-description: "prefer IPv6 over IPv4 at a given MX priority level"
----
-
-
-## Name
-
-prefer_ipv6_mxs — prefer IPv6 addresses over IPv4 addresses at a given MX priority level
-
-## Synopsis
-
-`prefer_ipv6_mxs = true`
-
-## Description
-
-The option will cause Momentum to prefer any IPv6 addresses at a given MX priority level. E.g.: if there is an IPv6 and an IPv4 address at MX priority 10, then it will prefer the IPv6 address.
-
-Momentum keeps track of whether hosts are up/down at a per binding level. This option does not override whether Momentum thinks a host is up or down. So, in this example, if the IPv6 address is considered to be down, then the system will use the IPv4 address.
-
-There may be multiple priority levels defined for an MX - e.g.: 10 and 20 (lower number = higher priority, i.e.: 10 being the higher priority here). The option only prefers IPv6 within a given priority level. If no IPv6 hosts are considered up at level 10, the system would try to use an IPv4 host that is up at priority level 10, before it would move on to trying the hosts at priority level 20.
-
-```
-prefer_ipv6_mxs = true
-```
-
-The default value is `false`.
-
-## Scope
-
-`prefer_ipv6_mxs` is valid only in the global scope.
diff --git a/content/momentum/4/config/ref-prohibited-hosts.md b/content/momentum/4/config/ref-prohibited-hosts.md
deleted file mode 100644
index 2eaa2052e..000000000
--- a/content/momentum/4/config/ref-prohibited-hosts.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "prohibited_hosts"
-description: "prohibited hosts prevent mail from being delivered to invalid destinations prohibited hosts 127 0 0 1 prohibited hosts 127 0 0 1 fe 80 a 00 1 Some providers use DNS tricks to deter systems they feel are abusing their resources One technique is to return a loopback or other..."
----
-
-
-## Name
-
-prohibited_hosts — prevent mail from being delivered to invalid destinations
-
-## Synopsis
-
-`prohibited_hosts = ("127.0.0.1")`
-
-`prohibited_hosts = ("127.0.0.1" "fe80::a00:1")`
-
-
-## Description
-
-Some providers use DNS tricks to deter systems they feel are abusing their resources. One technique is to return a loopback or other local address to you when you query their MX records.
-
-There are some addresses you may never want to deliver mail to. For example, when configured as an outbound e-mail relay you have no reason to deliver mail to your own ip, or any loopback addresses on your machine. To prevent delivery to loopback addresses (127.0.0.0/8) or the null route 0.0.0.0, you can use the following line:
-
-`prohibited_hosts = ( "127.0.0.0/8" "0.0.0.0" )`
-### Note
-
-Note: This setting does not in any way affect where you can receive mail from, only where you can deliver mail to.
-
-
-## Scope
-
-prohibited_hosts is valid in the global scope.
-
-
-## See Also
-
-[skip_hosts](/momentum/4/config/ref-skip-hosts)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-proxy-protocol-timeout.md b/content/momentum/4/config/ref-proxy-protocol-timeout.md
deleted file mode 100644
index 49a882e13..000000000
--- a/content/momentum/4/config/ref-proxy-protocol-timeout.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "08/03/2026"
-title: "Proxy_Protocol_Timeout"
-description: "proxy protocol timeout sets how long a listener with proxy protocol enabled waits for a complete PROXY protocol header before closing the connection."
----
-
-
-## Name
-
-Proxy_Protocol_Timeout — how long to wait for a complete PROXY protocol header.
-
-## Synopsis
-
-`Proxy_Protocol_Timeout = 60`
-
-
-## Description
-
-On a listener with [Proxy_Protocol](/momentum/4/config/ref-proxy-protocol) enabled, this is the number of seconds the listener waits for a complete header before closing the connection.
-
-The timeout covers the header only. Once the header has been read, the connection continues under the listener's normal timeouts, such as [Idle_Time](/momentum/4/config/ref-idle-time).
-
-The default value is `60`. A value of `0` disables the timeout, which is not recommended: a client that opens a connection and sends a partial header would then occupy a session slot indefinitely.
-
-A header is a few dozen bytes sent immediately on connection, so it should arrive within one round trip. The generous default exists to tolerate unusual networks; lowering it to a few seconds reclaims slots faster from clients that connect and then stall. Because a held slot counts against [Listener_Sessions](/momentum/4/config/ref-listener-sessions) and [Service_Sessions](/momentum/4/config/ref-service-sessions), a long timeout combined with a low session cap lets stalled connections crowd out real mail.
-
-## Example
-
-```
-ESMTP_Listener {
- Listen "10.0.0.5:25" {
- Proxy_Protocol = true
- Proxy_Protocol_Timeout = 10
- }
-}
-```
-
-## Scope
-
-Set on any listener with `Proxy_Protocol` enabled, or on an individual `Listen` endpoint. It has no effect where `Proxy_Protocol` is not enabled.
-
-## See Also
-
-[Proxy_Protocol](/momentum/4/config/ref-proxy-protocol), [Idle_Time](/momentum/4/config/ref-idle-time), [Listener_Sessions](/momentum/4/config/ref-listener-sessions)
diff --git a/content/momentum/4/config/ref-proxy-protocol.md b/content/momentum/4/config/ref-proxy-protocol.md
deleted file mode 100644
index 91b1cf90d..000000000
--- a/content/momentum/4/config/ref-proxy-protocol.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-lastUpdated: "08/03/2026"
-title: "Proxy_Protocol"
-description: "proxy protocol makes a listener read a PROXY protocol header from each incoming connection and use the client address it reports instead of the address of the proxy or load balancer that connected. The version 1 text format has been accepted since 4.2.11; the version 2 binary format is accepted since Momentum 5.4."
----
-
-
-## Name
-
-Proxy_Protocol — read the originating client address from a PROXY protocol header.
-
-## Synopsis
-
-`Proxy_Protocol = false`
-
-
-## Description
-
-> **NOTE: version 2 headers require Momentum 5.4.** The option itself dates from Momentum 4.2.11, but until 5.4 it accepted only the version 1 text header. Momentum 5.4 is the next on-prem release; on 5.3 and earlier, a version 2 header is rejected and the connection is closed. See “Versions and automatic detection” below.
-
-When a listener sits behind a proxy or load balancer, every connection appears to come from the proxy. `Proxy_Protocol` makes the listener read a [PROXY protocol](http://www.haproxy.org/download/1.5/doc/proxy-protocol.txt) header at the start of each connection and adopt the client address it reports.
-
-That address is then the one Momentum uses everywhere it refers to the connecting client, including:
-
-* policy decisions such as `Relay_Hosts` and `Peer` scope matching,
-* SPF evaluation,
-* the reception entry in the mainlog and the address reported to policy scripts,
-* inbound concurrency accounting.
-
-The default value is `false`.
-
-### Versions and automatic detection
-
-The protocol has two header formats, and support for them arrived at different times:
-
-* **Version 1** is a line of text, as sent by older load balancers and by AWS Classic Load Balancers. It has been accepted since the option was introduced in Momentum 4.2.11.
-* **Version 2** is a binary header, and is what current HAProxy (`send-proxy-v2`), AWS Network Load Balancers and Envoy send. It is accepted **since Momentum 5.4**. On earlier releases a version 2 header is not recognised, and such a connection is closed without a banner — the symptom of pointing a version 2 sender at a listener running 5.3 or earlier.
-
-From 5.4 on, both formats are accepted on the same endpoint and the listener tells them apart from the first byte of the connection. Nothing needs to be configured to select one, and no configuration change is needed when an upstream proxy is switched from version 1 to version 2.
-
-Version 2 headers may carry extra type-length-value fields after the addresses — for example the AWS VPC endpoint identifier. These are read and discarded; their contents are not available to policy.
-
-### The header is required
-
-Once `Proxy_Protocol` is enabled on a listener, every connection to it **must** begin with a valid header. A client that sends none, or sends a malformed one, is disconnected without a banner. Reserve the listener for traffic that arrives through the proxy, and give direct clients a separate `Listen` endpoint.
-
-Some headers deliberately carry no client address, and are accepted with the real connecting address left in place:
-
-* the version 2 `LOCAL` command, which proxies use for their own health checks,
-* a version 1 `PROXY UNKNOWN` line,
-* an address family the listener does not use for policy, such as UNIX sockets.
-
-### Trust
-
-There is no source-address allowlist. Any client that can reach a listener with `Proxy_Protocol` enabled can assert whatever client address it likes, which means it can present itself as a relay-permitted host or defeat an IP-based block.
-
-Trust is therefore scoped entirely by *which* endpoint has the option enabled. Only enable it on endpoints reachable from the proxy — bind them to an internal address, or restrict them with a firewall or security group.
-
-## Example
-
-```
-ESMTP_Listener {
- # behind the load balancer: adopt the client address it reports
- Listen "10.0.0.5:25" {
- Proxy_Protocol = true
- Proxy_Protocol_Timeout = 30
- }
-
- # direct submission, no header expected
- Listen "127.0.0.1:587" {}
-}
-```
-
-## Scope
-
-`Proxy_Protocol` is available on any listener, not only the `ESMTP_Listener`, and may be set on the listener itself or on an individual `Listen` endpoint. Setting it per `Listen` endpoint is usually what you want, so that proxied and direct traffic can be served side by side.
-
-## See Also
-
-[Proxy_Protocol_Timeout](/momentum/4/config/ref-proxy-protocol-timeout), [Configuring Inbound Mail Service Using SMTP](/momentum/4/esmtp-listener), [ha_proxy_client](/momentum/4/modules/ha-proxy-client) for sending a PROXY protocol header on outbound connections.
diff --git a/content/momentum/4/config/ref-rcptto-timeout.md b/content/momentum/4/config/ref-rcptto-timeout.md
deleted file mode 100644
index 0f8cf3722..000000000
--- a/content/momentum/4/config/ref-rcptto-timeout.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rcptto_timeout"
-description: "rcptto timeout timeout after RCPT TO rcptto timeout 300 The amount of time in seconds to wait for a response to the RCPT TO command The default value is 300 rcptto timeout is valid in the binding binding group domain and global scopes..."
----
-
-
-## Name
-
-rcptto_timeout — timeout after RCPT TO
-
-## Synopsis
-
-`rcptto_timeout = 300`
-
-
-## Description
-
-The amount of time in seconds to wait for a response to the `RCPT TO` command. The default value is `300`.
-
-
-## Scope
-
-rcptto_timeout is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-relay-domains.md b/content/momentum/4/config/ref-relay-domains.md
deleted file mode 100644
index 344a0d5ad..000000000
--- a/content/momentum/4/config/ref-relay-domains.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "relay_domains"
-description: "relay domains configure the list of domains for which Momentum relays mail relay domains example com example net When Momentum is configured as an inbound mail relay or gateway it is necessary to specify for which domains you are willing to accept mail Accepting mail from anyone for any destination..."
----
-
-
-## Name
-
-relay_domains — configure the list of domains for which Momentum relays mail
-
-## Synopsis
-
-`relay_domains = ( "*.example.com" "example.net" )`
-
-
-## Description
-
-When Momentum is configured as an inbound mail relay or gateway, it is necessary to specify for which domains you are willing to accept mail. Accepting mail from anyone for any destination would make you an open relay and vulnerable to abuse.
-
-With the `relay_domains` option, you may specify a list of domains and left-globbed domains for which the instance will relay mail (accept for delivery). Left-globbed domains are of the form `*fixed.ending`. For example, `*.example.com` would **not** match example.com (as the dot is required) but would match test.example.com, mail.example.com, foo.example.com, etc. `*example.com` would match example.com. However, it would also match badexample.com, which is usually undesirable, so in most cases the asterisk should be followed by a period.
-
-If a domain is specified as a relay domain any incoming message that has its `envelope to` set to that domain, will be relayed. This setting works independently of the `relay_hosts` setting.
-
-To accept mail for the domain `example.com` and all subdomains under it, specify:
-
-`relay_domains = ( example.com *.example.com )`
-### Note
-
-Any addresses set in the `addresses` option of the [“fbl - Feedback Loop”](/momentum/4/modules/fbl) must be set in the `relay_domains` option.
-
-
-## Scope
-
-`relay_domains` is valid in the global, pathway_group, and pathway scopes.
-
-
-## See Also
-
-[relay_hosts](/momentum/4/config/ref-relay-hosts), [only_use_best_mx_for_relay_domains](/momentum/4/config/ref-only-use-best-mx-for-relay-domains)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-relay-for-sending-domains.md b/content/momentum/4/config/ref-relay-for-sending-domains.md
deleted file mode 100644
index b45723fda..000000000
--- a/content/momentum/4/config/ref-relay-for-sending-domains.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "relay_for_sending_domains"
-description: "relay for sending domains domains that may use the MTA as a relay relay for sending domains example com Provides a mechanism for finer control over SMTP relaying If specified with no parameters it allows unrestricted use of the instance as an SMTP relay a k a open relay from..."
----
-
-
-## Name
-
-relay_for_sending_domains — domains that may use the MTA as a relay.
-
-## Synopsis
-
-relay_for_sending_domains = *`(“*.example.com”)`*
-
-
-## Description
-
-Provides a mechanism for finer control over SMTP relaying. If specified with no parameters, it allows unrestricted use of the instance as an SMTP relay (a.k.a., open relay) from the IP ACL that was matched.
-
-If parameters of the form `"domainname" "other_domainname"` are specified, relaying will be allowed from that IP ACL if the sender domain matches one of the specified domain names. You can also use wildcards to specify a series of domain names, for example, `"*.foo.com"`. The `relay_hosts` options will override any restrictions enacted by this option for the specified IP addresses.
-
-
-## Scope
-
-relay_for_sending_domains is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scopes.
-
-
-## See Also
-
-[relay_hosts](/momentum/4/config/ref-relay-hosts)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-relay-hosts.md b/content/momentum/4/config/ref-relay-hosts.md
deleted file mode 100644
index fc2fe6154..000000000
--- a/content/momentum/4/config/ref-relay-hosts.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "relay_hosts"
-description: "relay hosts configure the list of hosts for which Momentum relays mail relay hosts 10 0 0 1 Momentum is a powerful mail delivery system As an operator you can expose your system to abuse by allowing unauthorized machines to send e mail to domains for which the local instance..."
----
-
-
-## Name
-
-relay_hosts — configure the list of hosts for which Momentum relays mail
-
-## Synopsis
-
-`relay_hosts = ( "10.0.0.1" )`
-
-
-## Description
-
-Momentum is a powerful mail delivery system. As an operator, you can expose your system to abuse by allowing unauthorized machines to send e-mail to domains for which the local instance does not provide mail service. Doing so makes your system an "open relay."
-
-When configured to be an outbound e-mail relay, only trusted machines should be allowed to connect and inject messages. This is controlled by the `relay_hosts` option. This option takes a space-separated list of network blocks in Classless Inter-Domain Routing (CIDR) form. CIDR form consists of an IPv4 address followed by a number between 0 and 32 dictating the number of bits in the network portion of the address, as opposed to the host portion.
-
-For example, all addresses in the `loopback` space begin with 127\. The netmask on a loopback device is 255.0.0.0, which sets 8 network bits with the remaining 24 bits used for host addresses within the network. Therefore, the CIDR form of the loopback network is 127.0.0.0/8\. For a class C network (256 IP addresses, 254 hosts), the netmask is 255.255.255.0, which means 24 network bits. The CIDR form of the IP block representing addresses 192.168.10.0 through 192.168.10.255 is 192.168.10.0/24. Single hosts have netmask with all (32) bits set making a host address 10.1.2.3 have a CIDR form 10.1.2.3/32.
-
-### Note
-
-Hosts specified by this option are not subject to any SMTP authentication that you may have implemented. For more information, see [“ESMTP_Listener Authentication”](/momentum/4/inbound-smtp).
-
-The `relay_hosts` option has no effect on restricting access to an HTTP_Listener.
-
-If your private network (10.10.10.0/24) contains machines that you trust and you wish to also enable relaying from the local host, the following `relay_hosts` directive would be reasonable:
-
-`relay_hosts = ( "127.0.0.0/8" "10.10.10.0/24" )`
-
-Use the same syntax for IPv6 addresses:
-
-`relay_hosts = ("127.0.0.1/32" "::1" "10.79.0.0/16" "fd82:7796:815b:af9d::")`
-## Scope
-
-The `relay_hosts` option in the global scope follows the same semantics as the rest of the configuration options; if you specify it in both the global scope and in a listener, the listener setting overrides the global setting.
-
-`relay_hosts` is valid in the global, esmtp_listener, listen, pathway_group, and pathway scopes. While it is valid in the Peer scope, generally speaking, you would not use it in this scope. Use `open_relay` instead.
-
-
-## See Also
-
-[open_relay](/momentum/4/config/ref-open-relay)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-remote-smtp-port.md b/content/momentum/4/config/ref-remote-smtp-port.md
deleted file mode 100644
index 2f113bb79..000000000
--- a/content/momentum/4/config/ref-remote-smtp-port.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "remote_smtp_port"
-description: "remote smtp port set the port to be used for SMTP deliveries Remote SMTP Port 25 This will set the port to which outbound SMTP connections are attempted It can be set globally and overridden at the domain level The default value for this option is 25 remote smtp port..."
----
-
-
-## Name
-
-remote_smtp_port — set the port to be used for SMTP deliveries
-
-## Synopsis
-
-`Remote_SMTP_Port = "25"`
-
-
-## Description
-
-This will set the port to which outbound SMTP connections are attempted. It can be set globally and overridden at the domain level. The default value for this option is `25`.
-
-
-## Scope
-
-remote_smtp_port is valid in the binding, binding_group, domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-require-ehlo.md b/content/momentum/4/config/ref-require-ehlo.md
deleted file mode 100644
index 71d7dc199..000000000
--- a/content/momentum/4/config/ref-require-ehlo.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "require_ehlo"
-description: "require ehlo reject mail from clients that don't say HELO require ehlo false require ehlo true This directive instructs Momentum to force clients to initiate conversations with an EHLO or HELO command Early RF Cs defining the SMTP protocol did not require or even define the HELO command notably RFC..."
----
-
-
-## Name
-
-require_ehlo — reject mail from clients that don't say HELO
-
-## Synopsis
-
-`require_ehlo = false`
-
-`require_ehlo = true`
-
-
-## Description
-
-This directive instructs Momentum to force clients to initiate conversations with an EHLO or HELO command. Early RFCs defining the SMTP protocol did not require or even define the HELO command (notably RFC788). However, starting with RFC821 and currently in RFC2821, one of EHLO or HELO is required. As such, much older SMTP clients may not implement a version of SMTP newer than RFC788. Enable this setting if you wish to enforce RFC821 and later HELO/EHLO handling.
-
-Setting `require_ehlo` to `true` will cause Momentum to response with a 501 error to any commands issued before an EHLO or HELO command.
-
-The default value is `false`.
-
-
-## Scope
-
-require_ehlo is valid in the global, listener, listen, and peer scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-reserve-maintenance-interval.md b/content/momentum/4/config/ref-reserve-maintenance-interval.md
deleted file mode 100644
index c5960920c..000000000
--- a/content/momentum/4/config/ref-reserve-maintenance-interval.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "reserve_maintenance_interval"
-description: "reserve maintenance interval how often to perform mail queue maintenance reserve maintenance interval 15 This option specifies how often to perform mail queue maintenance to evaluate whether reserved connections should be established to get mail out of the system The system will usually limit the number of connections to server..."
----
-
-
-## Name
-
-reserve_maintenance_interval — how often to perform mail queue maintenance
-
-## Synopsis
-
-`reserve_maintenance_interval = 15`
-
-
-## Description
-
-This option specifies how often to perform mail queue maintenance to evaluate whether reserved connections should be established to get mail out of the system.
-
-The system will usually limit the number of connections to `server_max_outbound_connections`, but during the reserve sweep, will allow up to `server_max_outbound` plus `reserve_outbound connections` to be established.
-
-The system will respect any limits that have been defined, the reserve mechanism will not cause more connections to be established beyond a defined limit for a particular domain.
-
-The default value is `15`.
-
-
-## Scope
-
-reserve_maintenance_interval is valid in the global scope.
-
-
-## See Also
-
-[server_max_outbound_connections](/momentum/4/config/ref-server-max-outbound-connections)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-resolv-conf.md b/content/momentum/4/config/ref-resolv-conf.md
deleted file mode 100644
index d26c38c4c..000000000
--- a/content/momentum/4/config/ref-resolv-conf.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "resolv_conf"
-description: "resolv conf specify a custom resolv conf resolv conf my resolv conf This directive instructs Momentum to initialize its internal resolver with the configuration information located in the filename specified instead of etc resolv conf on Unix like platforms Momentum supports one option above what resolv conf 5 supports as..."
----
-
-
-## Name
-
-resolv_conf — specify a custom resolv.conf
-
-## Synopsis
-
-`resolv_conf = "/my/resolv.conf"`
-
-
-## Description
-
-This directive instructs Momentum to initialize its internal resolver with the configuration information located in the filename specified instead of `/etc/resolv.conf` on Unix-like platforms.
-
-
-## Configuration Options
-
-Momentum supports one option above what `resolv.conf(5)` supports, as well as a subset of the standard options. The list below constitutes all of the options that Momentum's library supports; details of the standard options can be found in the man page for `resolv.conf`.
-
-
-
-- `nameserver 1.2.3.4` , `search domain1.tld domain2.tld` , `domain localdomain.tld` , `sortlist 1.2.3.4/255.255.252.0`
-
--
-
-Identical to the resolv.conf(5) usage.
-
-
-
-- `lookup bf`
-
--
-
-Determines the order in which nameserver lookups are done. The default order is DNS then /etc/hosts, and corresponds to the string `bf`. You can reverse that order by using `lookup fb`.
-
-
-
-- `options ndots:1` , `options timeout:5` , `options attempts:2`
-
--
-
-Identical to the resolv.conf(5) usage.
-
-
-
-- `options retrans:5`
-
--
-
-Alias for `options timeout:5`
-
-
-
-- `options retry:2`
-
--
-
-Alias for `options attempts:2`
-
-
-
-
-
-## Note
-
-Momentum does not support the `rotate` option of `resolv.conf`. An upstream server supporting
- nameserver rotation can be used in `resolv.conf` to achieve the goal for Momentum to use the
- de facto rotated nameservers for DNS lookups.
-
-
-
-## Scope
-
-resolve_conf is valid in the global scope.
diff --git a/content/momentum/4/config/ref-response-transcode-pattern.md b/content/momentum/4/config/ref-response-transcode-pattern.md
deleted file mode 100644
index 2d1b0f81f..000000000
--- a/content/momentum/4/config/ref-response-transcode-pattern.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "response_transcode_pattern"
-description: "response transcode pattern the regex pattern for comparison to a server response response transcode pattern regex pattern This feature requires the Section 71 58 response transcode Module When the SMTP response from a remote sever indicates an error the response code falls in the range 400 to 599 then that..."
----
-
-
-## Name
-
-response_transcode_pattern — the regex pattern for comparison to a server response
-
-## Synopsis
-
-response_transcode_pattern = "*`regex_pattern`*"
-
-
-## Description
-
-### Note
-
-This feature requires the [“response_transcode – Module”](/momentum/4/modules/response-transcode).
-
-When the SMTP response from a remote sever indicates an error—the response code falls in the range 400 to 599—then that response is compared to the response_transcode_pattern regex. If it matches, the response is replaced with the string in response_transcode_replace; dollar variable expansion is performed, so the entire matching response can be substituted with $0 and the strings matched by grouping parentheses in the regex with $1, $2 and so on. The replacement response is used for deciding what to do with the message next, how it is logged and bounce processed.
-
-### Warning
-
-Since it is possible to rewrite permanent errors as temporary errors, use this module carefully. Resubmitting mail that a remote server has already rejected with a permanent error can be seen as a hostile action.
-
-This option is used in conjunction with `response_transcode_replace`. See below for an example pairing:
-
-```
-response_transcode_pattern = "454 no such user ('.*')"
-response_transcode_replace = "554 no such user $1"
-```
-
-In this case a 'soft' bounce is converted to a "hard' bounce so that there are no further deliver attempts.
-
-
-## Scope
-
-This option is valid in the binding, binding_group, domain, and global scopes.
-
-
-## See Also
-
-[“response_transcode – Module”](/momentum/4/modules/response-transcode)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-response-transcode-replace.md b/content/momentum/4/config/ref-response-transcode-replace.md
deleted file mode 100644
index b4f65839d..000000000
--- a/content/momentum/4/config/ref-response-transcode-replace.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "response_transcode_replace"
-description: "response transcode replace the replacement string for a server response response transcode replace replacement string This feature requires the Section 71 58 response transcode Module When the SMTP response from a remote sever indicates an error the response code falls in the range 400 to 599 then that response is..."
----
-
-
-## Name
-
-response_transcode_replace — the replacement string for a server response
-
-## Synopsis
-
-response_transcode_replace = "*`replacement_string`*"
-
-
-## Description
-
-### Note
-
-This feature requires the [“response_transcode – Module”](/momentum/4/modules/response-transcode).
-
-When the SMTP response from a remote sever indicates an error—the response code falls in the range 400 to 599—then that response is compared to the Response_Transcode_Pattern regex. If it matches, the response is replaced with the string in response_transcode_replace; dollar variable expansion is performed, so the entire matching response can be substituted with $0 and the strings matched by grouping parentheses in the regex with $1, $2 and so on. The replacement response is used for deciding what to do with the message next, how it is logged and bounce processed.
-
-### Warning
-
-Since it is possible to rewrite permanent errors as temporary errors, use this module carefully. Resubmitting mail that a remote server has already rejected with a permanent error can be seen as a hostile action.
-
-This option is used in conjunction with `response_transcode_pattern`. See below for an example pairing:
-
-```
-response_transcode_pattern = "454 no such user ('.*')"
-response_transcode_replace = "554 no such user $1"
-```
-
-In this case a 'soft' bounce is converted to a 'hard' bounce so that there are no further delivery attempts.
-
-
-## Scope
-
-This option is valid in the binding, binding_group, domain, and global scopes.
-
-
-## See Also
-
-[response_transcode_pattern](/momentum/4/config/ref-response-transcode-pattern)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-retry-interval.md b/content/momentum/4/config/ref-retry-interval.md
deleted file mode 100644
index 4dbbaab01..000000000
--- a/content/momentum/4/config/ref-retry-interval.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "retry_interval"
-description: "retry interval base retry interval Retry Interval 1200 The base retry period in seconds for a message which could not be delivered Momentum employs an exponential back off scheme for retrying messages On the first failure the message is retried Retry Interval seconds later On the second failure twice that..."
----
-
-
-## Name
-
-retry_interval — base retry interval
-
-## Synopsis
-
-`Retry_Interval = "1200"`
-
-
-## Description
-
-The base retry period in seconds for a message which could not be delivered. Momentum employs an exponential back-off scheme for retrying messages. On the first failure the message is retried `Retry_Interval` seconds later. On the second failure, twice that. On the third failure, four times that. On the fourth failure, eight times that. This process continues until the message is delivered, or the `Message_Expiration` timeout is reached, whichever comes first. The default value for this option is `1200` (20 minutes).
-
-You can disable Momentum's exponential back-off scheme so that a message is retried at a fixed interval. For more information see [max_retries](/momentum/4/config/ref-max-retries).
-
-
-## Scope
-
-retry_interval is valid in the binding, binding_group, domain and global scopes.
-
-
-## See Also
-
-[message_expiration](/momentum/4/config/ref-message-expiration)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope.md b/content/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope.md
deleted file mode 100644
index b759bc149..000000000
--- a/content/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rfc2821_allow_whitespace_in_envelope"
-description: "rfc 2821 allow whitespace in envelope permit trailing whitespace before the final CRLF rfc 2821 allow whitespace in envelope false In RFC 2821 in the interest of improved interoperability SMTP receivers are encouraged to tolerate trailing white space before the terminating CRLF When set to true this directive instructs Momentum..."
----
-
-
-## Name
-
-rfc2821_allow_whitespace_in_envelope — permit trailing whitespace before the final CRLF
-
-## Synopsis
-
-`rfc2821_allow_whitespace_in_envelope = false`
-
-
-## Description
-
-In RFC 2821, in the interest of improved interoperability, SMTP receivers are encouraged to tolerate trailing white space before the terminating CRLF. When set to true, this directive instructs Momentum to ignore such trailing white spaces.
-
-The default value for this option is `false`.
-
-
-## Scope
-
-`rfc2821_allow_whitespace_in_envelope` is valid in the global and pathway scopes.
-
-
-## See Also
-
-[rfc2822_lone_lf_in_body](/momentum/4/config/ref-rfc-2822-lone-lf-in-body), [rfc2822_lone_lf_in_headers](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers), [rfc2822_messageid_header](/momentum/4/config/ref-rfc-2822-messageid-header), [rfc2822_missing_headers](/momentum/4/config/ref-rfc-2822-missing-headers), [rfc2822_trace_headers](/momentum/4/config/ref-rfc-2822-trace-headers), [rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length), [rfc2822_date_header](/momentum/4/config/ref-rfc-2822-date-header), [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rfc-2821-pedantic-address-rules.md b/content/momentum/4/config/ref-rfc-2821-pedantic-address-rules.md
deleted file mode 100644
index 9c158c939..000000000
--- a/content/momentum/4/config/ref-rfc-2821-pedantic-address-rules.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rfc2821_pedantic_address_rules"
-description: "rfc 2821 pedantic address rules Allow relaxation of enforcement of the rfc 2821 address rules rfc 2821 pedantic address rules false rfc 2821 pedantic address rules true RFC 2821 has very strict guidelines about what address formats are allowable This option allows those guidelines to be relaxed If the option..."
----
-
-
-## Name
-
-rfc2821_pedantic_address_rules — Allow relaxation of enforcement of the rfc2821 address rules.
-
-## Synopsis
-
-`rfc2821_pedantic_address_rules = false`
-`rfc2821_pedantic_address_rules = true`
-
-
-## Description
-
-RFC2821 has very strict guidelines about what address formats are allowable. This option allows those guidelines to be relaxed. If the option is set to its default value of true, it will enforce the full gamut of rfc2821 rules. If it is set to false, it will allow addresses of the following formats: "a..b@xxx.com" "ab.@xxx.com"
-
-
-## Scope
-
-`rfc2821_pedantic_address_rules` is valid in the global and pathway scopes.
-
-
-## See Also
-
-[rfc2822_lone_lf_in_body](/momentum/4/config/ref-rfc-2822-lone-lf-in-body), [rfc2822_lone_lf_in_headers](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers), [rfc2822_messageid_header](/momentum/4/config/ref-rfc-2822-messageid-header), [rfc2822_missing_headers](/momentum/4/config/ref-rfc-2822-missing-headers), [rfc2822_trace_headers](/momentum/4/config/ref-rfc-2822-trace-headers), [rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length), [rfc2822_date_header](/momentum/4/config/ref-rfc-2822-date-header), [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules), [rfc2821_allow_whitespace_in_envelope](/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rfc-2822-date-header.md b/content/momentum/4/config/ref-rfc-2822-date-header.md
deleted file mode 100644
index 571c2d4b9..000000000
--- a/content/momentum/4/config/ref-rfc-2822-date-header.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rfc2822_date_header"
-description: "rfc 2822 date header rfc 2822 conformance rfc 2822 date header ignore rfc 2822 date header pedantic rfc 2822 date header ifneeded RFC 2822 requires that a Date header be present in all email messages This requirement can often pose problems with incompatible mail user agents that neglect to present..."
----
-
-
-## Name
-
-rfc2822_date_header — rfc2822 conformance
-
-## Synopsis
-
-`rfc2822_date_header = "ignore"`
-`rfc2822_date_header = "pedantic"`
-`rfc2822_date_header = "ifneeded"`
-
-
-## Description
-
-RFC 2822 requires that a Date header be present in all email messages. This requirement can often pose problems with incompatible mail user agents that neglect to present messages with Date fields.
-
-The default, "ifneeded," behavior is to add a Date header if one is not present upon receiving the message.
-
-If you would prefer to reject messages that do not contain a Date header, the "pedantic" option can be used.
-
-If you would prefer to accept messages without Date headers and have Momentum attempt delivery of those messages without adding a Date header, a value of "ignore" may be specified.
-
-
-## Scope
-
-`rfc2822_date_header` is valid in the global and the pathway scopes.
-
-
-## See Also
-
-[rfc2822_lone_lf_in_body](/momentum/4/config/ref-rfc-2822-lone-lf-in-body), [rfc2822_lone_lf_in_headers](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers), [rfc2822_messageid_header](/momentum/4/config/ref-rfc-2822-messageid-header), [rfc2822_missing_headers](/momentum/4/config/ref-rfc-2822-missing-headers), [rfc2822_trace_headers](/momentum/4/config/ref-rfc-2822-trace-headers), [rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length), [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules), [rfc2821_allow_whitespace_in_envelope](/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rfc-2822-lone-lf-in-body.md b/content/momentum/4/config/ref-rfc-2822-lone-lf-in-body.md
deleted file mode 100644
index ec4c34a6c..000000000
--- a/content/momentum/4/config/ref-rfc-2822-lone-lf-in-body.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rfc2822_lone_lf_in_body"
-description: "rfc 2822 lone lf in body rfc 2822 conformance rfc 2822 lone lf in body ignore rfc 2822 lone lf in body pedantic rfc 2822 lone lf in body fix RFC 2822 section 2 3 strictly forbids Internet email from containing a carriage return CR or a linefeed LF by..."
----
-
-
-## Name
-
-rfc2822_lone_lf_in_body — rfc2822 conformance
-
-## Synopsis
-
-`rfc2822_lone_lf_in_body = "ignore"`
-`rfc2822_lone_lf_in_body = "pedantic"`
-`rfc2822_lone_lf_in_body = "fix"`
-
-
-## Description
-
-RFC 2822 (section 2.3) strictly forbids Internet email from containing a carriage return (CR) or a linefeed (LF) by itself. If they do occur, they must appear in a CR LF sequence.
-
-However, a wide variety of Internet email messages are transmitted with lone CR or LF characters in them. To be pedantic would lead to the rejection of messages that may be of importance. By default, Momentum will accept messages with lone CR or LF characters in the body. If the value "pedantic" is given, Momentum will inspect the body for violations of this nature and reject the message during SMTP.
-
-To convert lone linefeeds into a canonical CRLF sequence, set `rfc2822_lone_lf_in_body` to `fix`.
-
-### Note
-
-This option is intended for use by sites that are injecting mail.
-
-Any MTA which modifies the body of a message is considered hostile, and Momentum will not act as a hostile MTA without being explicitly configured to do so. If you are considering setting this option to `fix`, think twice: message content modification in any MTA can invalidate digital signatures and imposes a performance overhead. It is generally better to ensure that the content you are injecting is appropriately formed, rather than leaving it for the MTA to correct. We recognize that this may not always be possible, so we offer the "fix" option as a convenience.
-
-When set to `fix`, this option also fixes lone CRs.
-
-
-## Scope
-
-`rfc2822_lone_lf_in_body` is valid in the global and the pathway scopes.
-
-
-## See Also
-
-[rfc2822_lone_lf_in_headers](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers), [rfc2822_messageid_header](/momentum/4/config/ref-rfc-2822-messageid-header), [rfc2822_missing_headers](/momentum/4/config/ref-rfc-2822-missing-headers), [rfc2822_trace_headers](/momentum/4/config/ref-rfc-2822-trace-headers), [rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length), [rfc2822_date_header](/momentum/4/config/ref-rfc-2822-date-header), [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules), [rfc2821_allow_whitespace_in_envelope](/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rfc-2822-lone-lf-in-headers.md b/content/momentum/4/config/ref-rfc-2822-lone-lf-in-headers.md
deleted file mode 100644
index 24095568e..000000000
--- a/content/momentum/4/config/ref-rfc-2822-lone-lf-in-headers.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rfc2822_lone_lf_in_headers"
-description: "rfc 2822 lone lf in headers rfc 2822 conformance rfc 2822 lone lf in headers fix rfc 2822 lone lf in headers pedantic RFC 2822 section 2 2 requires that all headers end with a carriage return CR and a linefeed LF Technically any MTA that accepts messages that do..."
----
-
-
-## Name
-
-rfc2822_lone_lf_in_headers — rfc2822 conformance
-
-## Synopsis
-
-`rfc2822_lone_lf_in_headers = "fix"`
-`rfc2822_lone_lf_in_headers = "pedantic"`
-
-
-## Description
-
-RFC 2822 (section 2.2) requires that all headers end with a carriage return (CR) and a linefeed (LF). Technically, any MTA that accepts messages that do not separate headers with a CR LF sequence is not compliant. Therefore, the default behavior is to reject those messages during the SMTP session.
-
-Many mail user agents do not comply to this standard and send messages with headers separated by lone LF. While non-compliant, you can have Momentum rectify these mistakes upon message reception by setting this option to "fix". *Note*: Setting this to "fix" will incur a slight performance penalty during reception. However, the performance impact is very small (almost negligible for a single message) and only applies to the messages that are badly formatted.
-
-When set to `fix`, this option also fixes lone CRs.
-
-
-## Scope
-
-`rfc2822_lone_lf_in_headers` is valid in global and pathway scopes.
-
-
-## See Also
-
-[rfc2822_lone_lf_in_body](/momentum/4/config/ref-rfc-2822-lone-lf-in-body), [rfc2822_messageid_header](/momentum/4/config/ref-rfc-2822-messageid-header), [rfc2822_missing_headers](/momentum/4/config/ref-rfc-2822-missing-headers), [rfc2822_trace_headers](/momentum/4/config/ref-rfc-2822-trace-headers), [rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length), [rfc2822_date_header](/momentum/4/config/ref-rfc-2822-date-header), [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules), [rfc2821_allow_whitespace_in_envelope](/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rfc-2822-max-line-length-policy.md b/content/momentum/4/config/ref-rfc-2822-max-line-length-policy.md
deleted file mode 100644
index ba4e1d2eb..000000000
--- a/content/momentum/4/config/ref-rfc-2822-max-line-length-policy.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rfc2822_max_line_length_policy"
-description: "rfc 2822 max line length policy determine how non RFC compliant line lengths are handled rfc 2822 max line length policy none This option defines how messages with non RFC compliant line lengths are handled When set to none messages are processed as usual When set to fix Momentum will..."
----
-
-
-## Name
-
-rfc2822_max_line_length_policy — determine how non-RFC-compliant line lengths are handled
-
-## Synopsis
-
-`rfc2822_max_line_length_policy = "none"`
-
-
-## Description
-
-This option defines how messages with non-RFC-compliant line lengths are handled. When set to `none`, messages are processed as usual. When set to `fix`, Momentum will attempt to fix the body of the message. When set to `reject`, messages with non-RFC-compliant line lengths are rejected.
-
-When `rfc2822_max_line_length_policy` is set to a value other than `none`, it is recommended that `rfc2822_max_line_length` be set to a *numeric* value greater than the RFC guideline. For example, `rfc2822_max_line_length = 2048`.
-
-The default value for this option is `none`.
-
-
-## Scope
-
-`rfc2822_max_line_length_policy` is valid in the global, pathway, and pathway_group scopes.
-
-
-## See Also
-
-[rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rfc-2822-max-line-length.md b/content/momentum/4/config/ref-rfc-2822-max-line-length.md
deleted file mode 100644
index a6e096b81..000000000
--- a/content/momentum/4/config/ref-rfc-2822-max-line-length.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rfc2822_max_line_length"
-description: "rfc 2822 max line length rfc 2822 conformance rfc 2822 max line length ignore pedantic fix rfc 2822 max line length 2048 RFC 2822 requires that the maximum length of a single line of a message be no longer than 998 characters The default ignore behavior is to ignore the..."
----
-
-
-## Name
-
-rfc2822_max_line_length — rfc2822 conformance
-
-## Synopsis
-
-`rfc2822_max_line_length =` [ "ignore" ] [ "pedantic" ] [ "fix" ]
-
-`rfc2822_max_line_length = 2048`
-
-
-## Description
-
-RFC2822 requires that the maximum length of a single line of a message be no longer than 998 characters.
-
-The default, "ignore," behavior is to ignore the length of the lines and process the email normally regardless.
-
-If you would prefer to reject messages that do contain a line with more than 998 characters, the "pedantic" option can be used.
-
-If you would prefer to accept messages with more than 998 characters on a line and have Momentum fix those messages by breaking up lines with more than 998 characters a value of "fix" may be specified.
-
-This option can be set to a numeric value. When `rfc2822_max_line_length_policy` is set to a value other than `none`, it is recommended that `rfc2822_max_line_length` be set to a *numeric* value greater than the RFC guideline. For example, `rfc2822_max_line_length = 2048`.
-
-
-## Scope
-
-`rfc2822_max_line_length` is valid in the global and the pathway scopes.
-
-
-## See Also
-
-[rfc2822_lone_lf_in_body](/momentum/4/config/ref-rfc-2822-lone-lf-in-body), [rfc2822_lone_lf_in_headers](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers), [rfc2822_messageid_header](/momentum/4/config/ref-rfc-2822-messageid-header), [rfc2822_missing_headers](/momentum/4/config/ref-rfc-2822-missing-headers), [rfc2822_trace_headers](/momentum/4/config/ref-rfc-2822-trace-headers), [rfc2822_date_header](/momentum/4/config/ref-rfc-2822-date-header), [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules), [rfc2821_allow_whitespace_in_envelope](/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope), [rfc2822_max_line_length_policy](/momentum/4/config/ref-rfc-2822-max-line-length-policy)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rfc-2822-messageid-header.md b/content/momentum/4/config/ref-rfc-2822-messageid-header.md
deleted file mode 100644
index 987c176f9..000000000
--- a/content/momentum/4/config/ref-rfc-2822-messageid-header.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rfc2822_messageid_header"
-description: "rfc 2822 messageid header rfc 2822 conformance rfc 2822 messageid header ignore rfc 2822 messageid header ifneeded If a message is missing the Message ID header and Message ID Header is set to ifneeded Momentum will generate a suitable header and insert it into the message rfc 2822 messageid header..."
----
-
-
-## Name
-
-rfc2822_messageid_header — rfc2822 conformance
-
-## Synopsis
-
-`rfc2822_messageid_header = "ignore"`
-`rfc2822_messageid_header = "ifneeded"`
-
-
-## Description
-
-If a message is missing the `Message-ID:` header and `MessageID_Header` is set to `ifneeded`, Momentum will generate a suitable header and insert it into the message.
-
-
-## Scope
-
-`rfc2822_messageid_header` is valid in the global and the pathway scopes.
-
-
-## See Also
-
-[rfc2822_lone_lf_in_body](/momentum/4/config/ref-rfc-2822-lone-lf-in-body), [rfc2822_lone_lf_in_headers](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers), [rfc2822_missing_headers](/momentum/4/config/ref-rfc-2822-missing-headers), [rfc2822_trace_headers](/momentum/4/config/ref-rfc-2822-trace-headers), [rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length), [rfc2822_date_header](/momentum/4/config/ref-rfc-2822-date-header), [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules), [rfc2821_allow_whitespace_in_envelope](/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rfc-2822-missing-headers.md b/content/momentum/4/config/ref-rfc-2822-missing-headers.md
deleted file mode 100644
index 04ba02c0f..000000000
--- a/content/momentum/4/config/ref-rfc-2822-missing-headers.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rfc2822_missing_headers"
-description: "rfc 2822 missing headers rfc 2822 conformance rfc 2822 missing headers reject rfc 2822 missing headers allow RFC 2822 requires that all messages consist of headers and a body separated by a blank line By default Momentum will reject messages that are missing their headers but by setting the Missing..."
----
-
-
-## Name
-
-rfc2822_missing_headers — rfc2822 conformance
-
-## Synopsis
-
-`rfc2822_missing_headers = "reject"`
-`rfc2822_missing_headers = "allow"`
-
-
-## Description
-
-RFC 2822 requires that all messages consist of headers and a body, separated by a blank line. By default, Momentum will reject messages that are missing their headers, but by setting the Missing_Headers option to "allow", it will accept those messages and treat them as header-less messages, prepend trace headers as normal.
-
-
-## Scope
-
-`rfc2822_missing_headers` is valid in the global and the pathway scopes.
-
-
-## See Also
-
-[rfc2822_lone_lf_in_body](/momentum/4/config/ref-rfc-2822-lone-lf-in-body), [rfc2822_lone_lf_in_headers](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers), [rfc2822_messageid_header](/momentum/4/config/ref-rfc-2822-messageid-header), [rfc2822_trace_headers](/momentum/4/config/ref-rfc-2822-trace-headers), [rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length), [rfc2822_date_header](/momentum/4/config/ref-rfc-2822-date-header), [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules), [rfc2821_allow_whitespace_in_envelope](/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rfc-2822-trace-headers.md b/content/momentum/4/config/ref-rfc-2822-trace-headers.md
deleted file mode 100644
index 98066c2ec..000000000
--- a/content/momentum/4/config/ref-rfc-2822-trace-headers.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rfc2822_trace_headers"
-description: "rfc 2822 trace headers rfc 2822 conformance rfc 2822 trace headers true rfc 2822 trace headers false Trace headers are headers added to the email message as it passes through the system to provide evidence of its transit through the MTA These are of the form Return path and Received..."
----
-
-
-## Name
-
-rfc2822_trace_headers — rfc2822 conformance
-
-## Synopsis
-
-`rfc2822_trace_headers = "true"`
-`rfc2822_trace_headers = "false"`
-
-
-## Description
-
-Trace headers are headers added to the email message as it passes through the system to provide evidence of its transit through the MTA. These are of the form "Return-path:" and "Received:". If this option is set to `true`, the following occurs:
-
-* If there is no Return-Path, Momentum will add one using the MAILFROM
-
-* If there is a Return-Path, Momentum will replace it with the MAILFROM
-
-* Momentum will add a Received header for this hop
-
-If this option is set to `false`, the following occurs:
-
-* If there is no Return-Path, Momentum will not add one
-
-* If there is a Return-Path, Momentum will ignore the existing header
-
-* Ecelerity will **not** add a Received header for this hop
-
-Trace headers are defined in RFC 822 and 2822 and recommended by RFC 821 and 2821\. It is recommended that they be enabled (per the default), but can be disabled under special circumstances by setting this option to `false`.
-
-Turning off trace headers can easily result in messages looking like direct-to-mx spam, especially if there are no additional hops through internal MTAs before leaving the network.
-
-Turning off trace headers may hamper mail loop detection methods, allowing malformed addresses to loop infinitely through the system.
-
-
-## Scope
-
-`rfc2822_trace_headers` is valid in the global and the pathway scopes.
-
-
-## See Also
-
-[rfc2822_lone_lf_in_body](/momentum/4/config/ref-rfc-2822-lone-lf-in-body), [rfc2822_lone_lf_in_headers](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers), [rfc2822_messageid_header](/momentum/4/config/ref-rfc-2822-messageid-header), [rfc2822_missing_headers](/momentum/4/config/ref-rfc-2822-missing-headers), [rfc2822_max_line_length](/momentum/4/config/ref-rfc-2822-max-line-length), [rfc2822_date_header](/momentum/4/config/ref-rfc-2822-date-header), [rfc2821_pedantic_address_rules](/momentum/4/config/ref-rfc-2821-pedantic-address-rules), [rfc2821_allow_whitespace_in_envelope](/momentum/4/config/ref-rfc-2821-allow-whitespace-in-envelope)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rollup-mx-name.md b/content/momentum/4/config/ref-rollup-mx-name.md
deleted file mode 100644
index 2d761b405..000000000
--- a/content/momentum/4/config/ref-rollup-mx-name.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-lastUpdated: "04/13/2020"
-title: "rollup_mx_name"
-description: "If the associated rollup_mx option is set to 'true', rollup_mx_name specifies the MX host domain to route the traffic to. Valid in host, binding, and binding_group scopes. Usable in Host stanzas, which can be included in global, binding or binding_group scopes."
----
-
-
-## Name
-
-rollup_mx_name — specifies the destination domain to route mail to when using the MX rollup feature
-
-## Synopsis
-
-`rollup_mx_name = "somedomain.com`
-
-## Description
-This option specifies the destination domain to route to when using the MX rollup feature for a destination host. A more complete description of MX rollup is given in the rollup_mx option entry.
-
-In the following example configuration, mail sent to either "node1.somedomain.com" or "mail.nobody.com" will be routed to "otherdomain.com", and any Adaptive Delivery settings for "otherdomain.com" will control the delivery.
-
-```
-Host "node1.somedomain.com" {
- rollup_mx = true
- rollup_mx_name = "otherdomain.com"
-}
-
-Host "mail.nobody.com" {
- rollup_mx = true
- rollup_mx_name = "otherdomain.com"
-}
-```
-
-### Note
-
-The rollup_mx_name option works in conjunction with the rollup_mx option to implement the MX Rollup functionality.
-
-## Scope
-
-rollup_mx_name is valid in Host scope. This can be specified in a Host stanza used in global, binding, or binding_group scopes.
-
-## See Also
-
-[rollup_mx](/momentum/4/ref-rollup-mx)
diff --git a/content/momentum/4/config/ref-rollup-mx.md b/content/momentum/4/config/ref-rollup-mx.md
deleted file mode 100644
index 8be1cda97..000000000
--- a/content/momentum/4/config/ref-rollup-mx.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-lastUpdated: "04/13/2020"
-title: "rollup_mx"
-description: "If set to 'true' traffic for the associated host domain will be routed to the MX host of the destination host domain specified by the argument of the related rollup_mx_name option. This enhances the ability of Adaptive Delivery to respond to feedback from receiving domains. Usable in host stanzas, which can be included in global, binding or binding_group scopes."
----
-
-
-## Name
-
-rollup_mx — If this option is set to `true`, traffic destined for the associated host will be routed to the destination domain specified by the argument of the related "rollup_mx_name" configuration option.
-
-## Synopsis
-
-`rollup_mx = true`
-
-## Description
-This option controls whether or not the MX rollup feature is active for a destination host. In some cases, multiple destination domains are, through their MX records, routed to a single receiving domain. If Adaptive Delivery treats them all as separate domains, any feedback received from one is applied only to the individual domain, but since all are routing via MX to a single destination, requests to limit sending should apply to all of them for Adaptive Delivery to respond most efficiently. MX rollup enables dealing with this problem and enhances the ability of Adaptive Delivery to manage sending.
-
-When a destination domain's MX host is resolved, the host name is checked against Host stanzas in the configuration. If there's a match, and rollup_mx is set to 'true' in the Host stanza, the mail is queued for the routing domain specified by the rollup_mx_name option value in the Host stanza. Connection limits, sending rates, etc. determined by Adaptive Delivery are applied based on the routing domain, rather than the original destination domain.
-
-In the following example configuration, mail sent to either "node1.somedomain.com" or "mail.nobody.com" will be routed to "otherdomain.com", and any Adaptive Delivery settings for "otherdomain.com" will control the delivery.
-
-```
-Host "node1.somedomain.com" {
- rollup_mx = true
- rollup_mx_name = "otherdomain.com"
-}
-
-Host "mail.nobody.com" {
- rollup_mx = true
- rollup_mx_name = "otherdomain.com"
-}
-```
-
-### Note
-
-The rollup_mx option works in conjunction with the rollup_mx_name option to implement the MX Rollup functionality.
-
-## Scope
-
-rollup_mx is valid in Host scope. This can be specified in a Host stanza used in global, binding, or binding_group scopes.
-
-## See Also
-
-[rollup_mx_name](/momentum/4/ref-rollup-mx-name)
diff --git a/content/momentum/4/config/ref-routes.md b/content/momentum/4/config/ref-routes.md
deleted file mode 100644
index 95e89c1f4..000000000
--- a/content/momentum/4/config/ref-routes.md
+++ /dev/null
@@ -1,106 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "routes"
-description: "routes configure message routing Routes smtp 1 2 3 4 pref 10 ttl 300 type mx Routes my local smart host Routes mx Routes smtp my local smart host pref 1 mx The routes option allows you to specify how you would like mail for a given domain to be..."
----
-
-
-## Name
-
-routes — configure message routing
-
-## Synopsis
-
-`Routes = ( "smtp://1.2.3.4?pref=10&ttl=300&type=mx" )`
-
-`Routes = ( "my.local.smart.host" )`
-
-`Routes = ( "__mx__" )`
-
-`Routes = ( "smtp://my.local.smart.host?pref=1" "__mx__" )`
-
-
-## Description
-
-The routes option allows you to specify how you would like mail for a given domain to be routed. If this option is specified at the global scope, all outbound connections will be made according to the route you specified, unless explicitly overridden by another routes option for a given domain.
-
-### Note
-
-When delivering mail via ecstream, do not use the `routes` option. Use the [gateway](/momentum/4/config/ref-gateway) option instead.
-
-After changing the routes array and issuing the **config reload** command, the new configuration will not take effect until the existing domain information has reached its TTL and the domain details need to be looked up again. If you need to change the routing information immediately, use the console command [refresh domain](/momentum/4/console-commands/refresh-domain).
-
-At the simplest level, you can implement what other MTAs call "smarthosting" by setting the route to the hostname or IP address of the local mail routing hub. You can specify more than just a single smart host using this configuration option, which allows for a much more flexible routing arrangement.
-
-Each item listed in the routes option is added to the routing table for the domain (or globally, if the routes option is not in a domain). By default, the routes are listed in preferential order, with the first listed item being attempted before any others, unless there is an explicit preference applied to the item. If the query string doesn't specify a preference or type and there is more than one domain or IP address listed, then the first item is used exclusively unless it's unavailable, in which case the second item is used and so on.
-
-### Warning
-
-Message throughput can be greatly reduced if a global route is set.
-
-Each item can be either a hostname or an IP address to indicate that a given host be added to the routing options. It may also be the literal string `__mx__` which expands to the default set of mail exchanges found in DNS for the domain.
-
-A fourth option is a protocol string of the form "smtp://ip?pref=P&ttl=T&port=O&type=Y" where:
-
-* `P` is a number indicating the MX preference (lower values having higher priority).
-
-* `T` is the effective time-to-live for the entry in seconds.
-
-* `O` is the port number to use for that host. The default port is configured with the `Remote_SMTP_Port` configuration option. See [remote_smtp_port](/momentum/4/config/ref-remote-smtp-port).
-
-* `Y` is the type of lookup. The value may be `mx` or `a`.
-
-When a new connection is opened several factors are considered when deciding which MX to connect to. Momentum never uses a higher preference MX if a lower preference MX is below its connection limit and is considered reachable. If there are several MXs of the same (lowest available) preference, Momentum attempts to open connections to all of them evenly, but when it hits a limit with a specific MX, it will stop opening connections to that MX. Momentum does not try to balance connections proportional to an MX's limit. Also, this does not guarantee that traffic will be equal through all equal preference MXs, since individual MX performance and network performance to each MX will affect how fast messages are able to go out to it. Given these caveats, load balancing can be achieved using a configuration such as the following:
-
-```
-Routes = (
- "smtp://10.0.11.7?pref=10" "smtp://10.0.11.8?pref=10"
- "smtp://10.0.11.10?pref=10" "smtp://10.0.11.13?pref=10"
- "smtp://10.0.11.56?pref=10"
- )
-```
-
-The `routes` option is also used when the [delivery_method](/momentum/4/config/ref-delivery-method) is:
-
-* `apn` – The Apple Push Notification protocol
-
-* `gcm` – The Google Cloud Messages protocol
-
-* `mm7` – Multimedia Messaging service protocol
-
-Use `routes` specifying the protocol, the server URL, and the port. The protocol should match the [delivery_method](/momentum/4/config/ref-delivery-method) as in the following examples:
-
-```
-domain "apn_example.com"{
- ...
- delivery_method = "apn"
- routes = ("apn://gateway.push.apple.com?port=2195")
-}
-domain "gcm.example.com" {
- ...
- delivery_method = "gcm"
- routes = ("gcm://android.google.apis.com?port=443")
-}
-```
-
-### Note
-
-Specifying the protocol as `mm7`, `apn` and `gcm` is optional. Instead, you can use `http`.
-
-Typically with push notifications, `routes` will be defined within a domain scope applicable to the Apple or Google application that is receiving the notifications. For a detailed description of configuring Momentum for push notifications see [Momentum for Mobile Push Notifications](/momentum/3/3-push).
-
-## IPv6
-
-IPv6 addresses are much more flexible than IPv4 addresses in terms of their formatting options. They also use a different delimiter character than IPv4 addresses (a colon instead of a period). This means that, in certain contexts, an IPv6 address can create parsing ambiguities.
-
-The accepted convention is to require (in circumstances where a configuration parameter can also contain something other than an IP address) that an IPv6 address must be enclosed in square brackets. In practical terms, this means that things like the `Gateway`, `Routes` and `Listen` options must have IPv6 addresses enclosed in brackets. Others, such as `Peer`, `Relay_Hosts` and `Prohibited_Hosts`, do not require the IPv6 address in brackets.
-
-
-## Scope
-
-`routes` is valid in the domain and global scopes.
-
-
-## See Also
-
-[gateway](/momentum/4/config/ref-gateway)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-rset-timeout.md b/content/momentum/4/config/ref-rset-timeout.md
deleted file mode 100644
index 38d04aa04..000000000
--- a/content/momentum/4/config/ref-rset-timeout.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rset_timeout"
-description: "rset timeout set the timeout after RSET rset timeout 30 The amount of time in seconds to wait for a response to a RSET command RSET commands are used to reset the state of an SMTP session in which a transaction has only partially succeeded It allows subsequent messages to..."
----
-
-
-## Name
-
-rset_timeout — set the timeout after RSET
-
-## Synopsis
-
-`rset_timeout = 30`
-
-
-## Description
-
-The amount of time in seconds to wait for a response to a `RSET` command. `RSET` commands are used to reset the state of an SMTP session in which a transaction has only partially succeeded. It allows subsequent messages to be delivered down a single SMTP session immediately following a transient or permanent failure response from the remote server before the complete and successful delivery of the prior message. The default value is `30`.
-
-
-## Scope
-
-rset_timeout is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-scheduler.md b/content/momentum/4/config/ref-scheduler.md
deleted file mode 100644
index 5a198f4a3..000000000
--- a/content/momentum/4/config/ref-scheduler.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "scheduler"
-description: "scheduler override the default IO scheduler scheduler scheduler name Momentum automatically selects the best available I O scheduling mechanism for the platform on which it is running You should not change this option unless advised by a Message Systems support engineer Changing the value of this option at runtime requires..."
----
-
-
-## Name
-
-scheduler — override the default IO scheduler
-
-## Synopsis
-
-`scheduler = "scheduler-name"`
-
-
-## Description
-
-Momentum automatically selects the best available I/O scheduling mechanism for the platform on which it is running. You should not change this option unless advised by a Message Systems support engineer.
-
-Changing the value of this option at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-
-## Scope
-
-`scheduler` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-scope-max-outbound-connections.md b/content/momentum/4/config/ref-scope-max-outbound-connections.md
deleted file mode 100644
index ea510c244..000000000
--- a/content/momentum/4/config/ref-scope-max-outbound-connections.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "scope_max_outbound_connections"
-description: "scope max outbound connections provide traffic shaping for outbound connections scope max outbound connections 20 scope max outbound connections provides for finer grained manipulation of the number of outbound connections than does server max outbound connections When used in different scopes its behavior is as follows In the global scope..."
----
-
-
-## Name
-
-scope_max_outbound_connections — provide traffic shaping for outbound connections
-
-## Synopsis
-
-`scope_max_outbound_connections = 20`
-
-
-## Description
-
-`scope_max_outbound_connections` provides for finer-grained manipulation of the number of outbound connections than does `server_max_outbound_connections`. When used in different scopes its behavior is as follows:
-
-* In the global scope, it behaves like `server_max_outbound_connections`
-
-* In a Global::Domain scope, it determines the maximum number of connections to the specified domain across all bindings
-
-* In a Binding_Group::Domain scope, it determines the maximum number of connections to the specified domain across all the bindings in that Binding Group
-
-* In a Binding::Domain scope, it behaves like `max_outbound_connections`
-
-* In a Global::Host scope it determines the maximum number of connections to the specified host across all bindings
-
-### Note
-
-`server_reserve_outbound_connections` must be set to `0` in order for `scope_max_outbound_connections` to work properly in the Global::Domain scope. However, when `server_reserve_outbound_connections` is set to `0` and the server is under load, low volume domains may be starved of connections.
-
-`scope_max_outbound_connections` is disabled by default. When it is not set then `max_outbound_connections` or `server_max_outbound_connections` is used, depending on the context.
-
-You might want to use this option in circumstances where two MX names resolve to a list of identical IP addresses. This is currently the case with `wanadoo.fr` and `orange.fr`. Any given sending host cannot have more than three simultaneous connections to any given host for **both** domains. To ensure that you are working within these parameters, use `scope_max_outbound_connections` in the following way:
-
-```
-domain "/^(wanadoo|orange)\.fr$/" {
- scope_max_outbound_connections = 3
-}
-```
-
-With this configuration both domains are considered as one for the sake of total outbound connections.
-
-To highlight how `scope_max_outbound_connections` differs from `max_outbound_connections` consider the following example:
-
-```
-domain "/^(aol|yahoo).com$/" {
- max_outbound_connections = 5
-}
-```
-
-The preceding example is identical to the following configuration:
-
-```
-domain "aol.com" {
- max_outbound_connections = 5
-}
-
-domain "yahoo.com" {
- max_outbound_connections = 5
-}
-```
-
-This gives a maximum of 5 outbound connections for *each* domain.
-
-
-## Scope
-
-scope_max_outbound_connections is valid in the global, binding, binding_group, domain, and host scopes.
-
-
-## See Also
-
-[max_outbound_connections](/momentum/4/config/ref-max-outbound-connections), [server_max_outbound_connections](/momentum/4/config/ref-server-max-outbound-connections), [server_reserve_outbound_connections](/momentum/4/config/ref-server-reserve-outbound-connections)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-security.md b/content/momentum/4/config/ref-security.md
deleted file mode 100644
index b3a4a76b1..000000000
--- a/content/momentum/4/config/ref-security.md
+++ /dev/null
@@ -1,78 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "security"
-description: "security Scope for defining which permissions are retained by which user security It is generally agreed that running with root privileges is dangerous for Internet servers As such Linux exposes a security system that allows a non privileged user to retain certain root privileges The following is an example of..."
----
-
-
-## Name
-
-security — Scope for defining which permissions are retained by which user
-
-## Synopsis
-
-`security { ... }`
-
-
-## Description
-
-It is generally agreed that running with "root privileges" is dangerous for Internet servers. As such, Linux exposes a "security" system that allows a non-privileged user to retain certain root privileges.
-
-The following is an example of using the Security scope in a single-node configuration:
-
-
-
-
-```
-Security {
- user = ecuser
- group = ecuser
- # Allow binding to privileged ports without requiring a process restart
- Capabilities = "cap_net_bind_service+ep"
-}
-```
-
-The following is an example of using the Security scope on a cluster node:
-
-
-
-
-```
-Security {
- user = ecuser
- group = ecuser
- Capabilities = "cap_net_admin+ep cap_net_bind_service+ep cap_net_raw+ep cap_sys_resource+ep"
-}
-```
-
-In a cluster configuration, when you accept the default configuration, the definition of the `Security` stanza in the `ecelerity-cluster.conf` file overrides the configuration defined in the `ecelerity.conf` file.
-
-### Warning
-
-We do not recommend that the user in a `Security` stanza be set to `root`. However, if you do set `user` to `root` you will encounter permissions problems because capabilities are exclusive and not cumulative. Specifically, the `dmllog.rt` jlog won't be consumed, because it is written by a process that runs as ecuser, and when you run as root and define `Capabilities`, you lose the "root access to all files" capability unless it's defined in the capabilities set. If you must run as root, comment out the `Capabilities` option.
-
-The following are the options valid in the `security` scope. For additional details about each option, follow the link:
-
-* [`capabilities`](/momentum/4/config/ref-capabilities)
-
-* [`group`](/momentum/4/config/ref-user)
-
-* [`user`](/momentum/4/config/ref-user)
-
-* [`chroot`](/momentum/4/config/ref-chroot)
-
-* [`supplemental_groups`](/momentum/4/config/ref-supplemental-groups)
-
-### Note
-
-Changing the value of options in the `security` scope at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-
-## Scope
-
-`security` is valid in the global scope.
-
-
-## See Also
-
-[capabilities](/momentum/4/config/ref-capabilities), [chroot](/momentum/4/config/ref-chroot), [supplemental_groups](/momentum/4/config/ref-supplemental-groups), [user](/momentum/4/config/ref-user), and [“`ecelerity-cluster.conf` File”](/momentum/4/config/ref-ecelerity-cluster-conf)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-send-8-bitmime.md b/content/momentum/4/config/ref-send-8-bitmime.md
deleted file mode 100644
index 684ff3c13..000000000
--- a/content/momentum/4/config/ref-send-8-bitmime.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "send_8bitmime"
-description: "send 8 bitmime Enable advertising of 8 BITMIME when sending mail send 8 bitmime no send 8 bitmime ifavailable When set to ifavailable if a message to be sent to a remote MTA contains 8 bit data and the remote MTA advertises support for 8 BITMIME then Momentum will add..."
----
-
-
-## Name
-
-send_8bitmime — Enable advertising of 8BITMIME when sending mail
-
-## Synopsis
-
-`send_8bitmime = "no"`
-
-`send_8bitmime = "ifavailable"`
-
-
-## Description
-
-When set to `ifavailable`, if a message to be sent to a remote MTA contains 8-bit data and the remote MTA advertises support for 8BITMIME, then Momentum will add `BODY=8BITMIME` to the MAIL FROM portion of the SMTP conversation. This has the effect of informing the remote MTA that 8-bit data will be forthcoming.
-
-When set to `no`, then Momentum will not add the parameter to the MAIL FROM.
-
-### Note
-
-This option has no effect on whether 7-bit or 8-bit data is actually sent, it only affects whether the remote MTA is informed about 8-bit data. Use the `Transform_8BitMime_Content` to control 7-bit downconversion.
-
-The default value is `no`.
-
-For RFC 1652 compliance you should set `Send_8BitMime` to `ifavailable` and `Transform_8BitMime_Content` to `ifneeded`.
-
-
-## Scope
-
-`send_8bitmime` is valid in the global, binding_group, binding, and domain scopes.
-
-
-## See Also
-
-[transform_8bitmime_content](/momentum/4/config/ref-transform-8-bitmime-content)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-server-max-file-descriptors.md b/content/momentum/4/config/ref-server-max-file-descriptors.md
deleted file mode 100644
index afad831bd..000000000
--- a/content/momentum/4/config/ref-server-max-file-descriptors.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "server_max_file_descriptors"
-description: "server max file descriptors sets the maximum number of file descriptors usable by the system Server Max File Descriptors 80000 This parameter sets the OS file descriptor limit for the Momentum Process It may require OS kernel parameters to be modified to support the value you configure There is no..."
----
-
-
-## Name
-
-server_max_file_descriptors — sets the maximum number of file descriptors usable by the system
-
-## Synopsis
-
-`Server_Max_File_Descriptors = 80000`
-
-
-## Description
-
-This parameter sets the OS file descriptor limit for the Momentum Process. It may require OS kernel parameters to be modified to support the value you configure. There is no system performance degradation by setting this number [much] higher than the typical process default value (which is often only 1024). The default value is `3000000`; however, the assigned value in the default configuration file is `80000`.
-
-Note that this parameter is intimately related to [server_max_outbound_connections](/momentum/4/config/ref-server-max-outbound-connections) since the number of available OS file descriptors will limit the number of messages that can be processed simultaneously. This option needs to be at least four times the value of `server_max_outbound_connections`.
-
-
-## Scope
-
-server_max_file_descriptors is valid in the global scope only.
-
-
-## See Also
-
-[server_reserve_outbound_connections](/momentum/4/config/ref-server-reserve-outbound-connections), [server_max_outbound_connections](/momentum/4/config/ref-server-max-outbound-connections)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-server-max-outbound-connections.md b/content/momentum/4/config/ref-server-max-outbound-connections.md
deleted file mode 100644
index 9fbf98971..000000000
--- a/content/momentum/4/config/ref-server-max-outbound-connections.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "server_max_outbound_connections"
-description: "server max outbound connections sets the maximum number of outbound connections Server Max Outbound Connections 20000 Limits the number of total connections that will be established concurrently within Momentum irrespective of bindings While 20 000 is the value assigned to this option in the configuration file it may be reasonable..."
----
-
-
-## Name
-
-server_max_outbound_connections — sets the maximum number of outbound connections
-
-## Synopsis
-
-`Server_Max_Outbound_Connections = 20000`
-
-
-## Description
-
-Limits the number of total connections that will be established concurrently within Momentum, irrespective of bindings. While 20,000 is the value assigned to this option in the configuration file, it may be reasonable to increase this value to 50,000 or 75,000 depending on the capabilities of the underlying hardware and operating system.
-
-The default value is `75000`; however, the assigned value in the default configuration file is `20000`.
-
-Note that this parameter is intimately related to [server_max_file_descriptors](/momentum/4/config/ref-server-max-file-descriptors) since the number of available OS file descriptors will limit the number of messages that can be queued simultaneously.
-
-Within a `Binding` stanza, this option will regulate the total number of connections through that particular binding.
-
-
-## Scope
-
-server_max_outbound_connections is valid in the binding, binding_group and global scopes.
-
-
-## See Also
-
-[server_reserve_outbound_connections](/momentum/4/config/ref-server-reserve-outbound-connections), [server_max_file_descriptors](/momentum/4/config/ref-server-max-file-descriptors)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-server-reserve-outbound-connections.md b/content/momentum/4/config/ref-server-reserve-outbound-connections.md
deleted file mode 100644
index a5e175ca2..000000000
--- a/content/momentum/4/config/ref-server-reserve-outbound-connections.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "server_reserve_outbound_connections"
-description: "server reserve outbound connections sets the server wide connection limit reserve Server Reserve Outbound Connections 200 Server Reserve Outbound Connections configures the server wide connection limit reserve The sum of Server Reserve Outbound Connections and Server Max Outbound Connections is used to set the ceiling on the total number of..."
----
-
-
-## Name
-
-server_reserve_outbound_connections — sets the server-wide connection limit reserve
-
-## Synopsis
-
-`Server_Reserve_Outbound_Connections = 200`
-
-
-## Description
-
-`Server_Reserve_Outbound_Connections` configures the server-wide connection limit reserve. The sum of `Server_Reserve_Outbound_Connections` and `Server_Max_Outbound_Connections` is used to set the ceiling on the total number of outbound connections that Momentum will establish. The default value for this option is `200`.
-
-### Note
-
-`server_reserve_outbound_connections` must be set to `0` in order for `scope_max_outbound_connections` to work properly in the Global::Domain scope. However, when `server_reserve_outbound_connections` is set to `0` and the server is under load, low volume domains may be starved of connections.
-
-It is recommended that you leave this value as is and alter `Server_Max_Outbound_Connections` at either the global scope or within a given binding instead.
-
-
-## Scope
-
-server_reserve_outbound_connections is valid in the global scope.
-
-
-## See Also
-
-[server_max_outbound_connections](/momentum/4/config/ref-server-max-outbound-connections)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-service-sessions.md b/content/momentum/4/config/ref-service-sessions.md
deleted file mode 100644
index 5929c0ba5..000000000
--- a/content/momentum/4/config/ref-service-sessions.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-lastUpdated: "06/24/2026"
-title: "Service_Sessions"
-description: "service sessions specifies the maximum number of concurrent inbound sessions that can be established to all listeners for a service such as ESMTP or ECStream When the cap is reached new connections receive a retryable 421 4 4 5 response and are closed Use Peer CIDR scopes to partition the cap per source block."
----
-
-
-## Name
-
-Service_Sessions — maximum number of concurrent inbound sessions across all listeners for a service.
-
-## Synopsis
-
-`Service_Sessions = 0`
-
-
-## Description
-
-`Service_Sessions` caps the number of concurrent inbound sessions that may be established across **all** listeners for a given service (for example, ESMTP or ECStream). This differs from [Listener_Sessions](/momentum/4/config/ref-listener-sessions), which limits a single listener: where several listeners serve the same service (for example, an `ESMTP_Listener` bound to ports 25, 587, and a Unix socket), `Service_Sessions` is the shared ceiling across all of them.
-
-A session slot is held for the entire life of a connection — including time spent idle or otherwise lingering — and is only released when the connection is fully closed. While the cap is reached, every new connection in the same scope is rejected, including legitimate mail, until a slot is freed.
-
-When the cap is reached, the connection is given a clean, retryable response and is closed:
-
-```
-421 4.4.5 Service unavailable, concurrency limit reached.
-```
-
-The default value is `0`, which means *no limit*.
-
-### Scope, fallback, and per-source caps
-
-`Service_Sessions` is a *per-scope aggregate*, not a per-IP limit. How the active sessions are counted depends on the scope in which the option is set:
-
-* When set **outside** a `Peer` scope, the cap is a single shared budget summed across **all** connecting sources for the service. A few noisy sources can consume the entire budget.
-
-* When set **inside** a `Peer` (CIDR) scope, sessions are counted **per matching CIDR block**, so each source block gets its own independent budget.
-
-Because `Peer` scopes use most-specific-match fallback, you can partition a broad cap into narrower per-source budgets, and apply tighter caps to known offenders. For more information about fallback, see [“Configuration Scopes and Fallback”](/momentum/4/4-ecelerity-conf-fallback).
-
-The following example sets a service-wide ceiling, a larger budget for a trusted subnet, and a tighter budget for everyone else:
-
-```
-ESMTP_Listener {
- Service_Sessions = 2000 # absolute ceiling across all ESMTP sockets
- Idle_Time = 60
-
- Peer "10.0.0.0/8" { # trusted senders: larger budget
- Service_Sessions = 1500
- Idle_Time = 300
- }
- Peer "0.0.0.0/0" { # everyone else: tighter cap, faster reaping
- Service_Sessions = 600
- Idle_Time = 30
- }
-}
-```
-
-### Caveats
-
-* **The cap counts lingering connections too.** A slot is held for the connection's whole life, including while it is stuck. If connections keep lingering, the cap fills with them and then rejects all new connections in that scope. It is a circuit-breaker, not a cure for connections that fail to close.
-
-* **It is a per-scope aggregate, not per-IP.** A broad cap is one shared budget that a few noisy sources can consume. Partition it with narrower `Peer` scopes, and use specific tight scopes (or upstream firewalling) for known offenders.
-
-To cap concurrency for a single listener rather than the whole service, see [Listener_Sessions](/momentum/4/config/ref-listener-sessions).
-
-
-## Scope
-
-`Service_Sessions` is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scopes.
-
-
-## See Also
-
-[Listener_Sessions](/momentum/4/config/ref-listener-sessions), [Idle_Time](/momentum/4/config/ref-idle-time), [Listeners](/momentum/4/listeners), [Configuring Inbound Mail Service Using SMTP](/momentum/4/esmtp-listener)
diff --git a/content/momentum/4/config/ref-signing-stats.md b/content/momentum/4/config/ref-signing-stats.md
deleted file mode 100644
index b1d5df9c3..000000000
--- a/content/momentum/4/config/ref-signing-stats.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "signing_stats"
-description: "signing stats control how signing statistics are recorded signing stats all signing stats global signing stats off This option is used to control whether signing statistics are recorded per binding as a global summary only or disabled entirely You might consider setting this option to global or off if you..."
----
-
-
-## Name
-
-signing_stats — control how signing statistics are recorded
-
-## Synopsis
-
-`signing_stats = "all"`
-
-`signing_stats = "global"`
-
-`signing_stats = "off"`
-
-
-## Description
-
-This option is used to control whether signing statistics are recorded per binding, as a global summary only, or disabled entirely. You might consider setting this option to `global` or `off` if you have a very large number of bindings and do not need to track message signing statistics such as DKIM on a per-binding basis.
-
-Default value is `all`.
-
-
-## Scope
-
-`signing_stats` is valid in the global scope.
-
-
-## See Also
-
-[signing_stats](/momentum/4/console-commands/signing-stats), [signing_stats reset](/momentum/4/console-commands/signing-stats-reset), [*Using Yahoo! DomainKeys*](/momentum/4/using-domainkeys) , and [Chapter 23, *Using DomainKeys Identified Mail (DKIM) Signatures*](using_dkim "Chapter 23. Using DomainKeys Identified Mail (DKIM) Signatures")
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-siv-throttle-cache-size.md b/content/momentum/4/config/ref-siv-throttle-cache-size.md
deleted file mode 100644
index 72035a0b8..000000000
--- a/content/momentum/4/config/ref-siv-throttle-cache-size.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "siv_throttle_cache_size"
-description: "siv throttle cache size set the maximum number of named throttles siv throttle cache size 1000 This option sets the maximum number of named throttles created by Lua scripts If you try to create more throttles than this value throttles created earlier will be destroyed The default value is 1000..."
----
-
-
-## Name
-
-siv_throttle_cache_size — set the maximum number of named throttles
-
-## Synopsis
-
-`siv_throttle_cache_size = 1000`
-
-
-## Description
-
-This option sets the maximum number of named throttles created by Lua scripts. If you try to create more throttles than this value, throttles created earlier will be destroyed.
-
-The default value is `1000` (because Adaptive Delivery makes heavy use of throttles).
-
-
-## Scope
-
-`siv_throttle_cache_size` is valid in the global scope.
-
-
-## See Also
-
-[“adaptive – Adaptive Delivery”](/momentum/4/modules/4-adaptive)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-skip-hosts.md b/content/momentum/4/config/ref-skip-hosts.md
deleted file mode 100644
index 7b7e1b008..000000000
--- a/content/momentum/4/config/ref-skip-hosts.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "skip_hosts"
-description: "skip hosts skip the specified host but consider other hosts in the domain skip hosts 127 0 0 1 skip hosts 127 0 0 1 fe 80 a 00 1 Unlike prohibited hosts Skip hosts does not permanently deny a domain Instead it enables you to skip the specified host..."
----
-
-
-## Name
-
-skip_hosts — skip the specified host, but consider other hosts in the domain
-
-## Synopsis
-
-`skip_hosts = ("127.0.0.1")`
-
-`skip_hosts = ("127.0.0.1" "fe80::a00:1")`
-
-
-## Description
-
-Unlike [prohibited_hosts](/momentum/4/config/ref-prohibited-hosts), `Skip_hosts` does not permanently deny a domain. Instead, it enables you to skip the specified host but still consider other hosts in the domain. For example, to prevent delivery to loopback addresses (127.0.0.0/8) or the null route 0.0.0.0, you can use the following line:
-
-`skip_hosts = ( "127.0.0.0/8" "0.0.0.0" )`
-### Note
-
-Note: This setting does not affect where you receive mail from, only where you can deliver mail to.
-
-
-## Scope
-
-skip_hosts is valid in the global scope.
-
-
-## See Also
-
-[prohibited_hosts](/momentum/4/config/ref-prohibited-hosts)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-snmp.md b/content/momentum/4/config/ref-snmp.md
deleted file mode 100644
index 8ec9aec4b..000000000
--- a/content/momentum/4/config/ref-snmp.md
+++ /dev/null
@@ -1,220 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "SNMP"
-description: "SNMP Simple Network Management Protocol Support Momentum contains an embedded SNM Pv 2 agent primarily used to provide statistical data to Momentum utilities such as ec stat watcher However the agent may be queried by third party SNMP Managers Momentum's SNMP agent supports and provides information for Mail Monitoring MIB..."
----
-
-
-## Name
-
-SNMP — Simple Network Management Protocol Support
-
-
-## Description
-
-Momentum contains an embedded SNMPv2 agent primarily used to provide statistical data to Momentum utilities such as **ec_stat_watcher**. However, the agent may be queried by third-party SNMP Managers. Momentum's SNMP agent supports and provides information for Mail Monitoring MIB (MTA-MIB) objects as specified in RFC 2789\. Additionally, the agent provides Momentum product information objects, several system level MIB objects and extends the MTA-MIB. Momentum product objects and MTA-MIB extensions are defined in OmniTI's enterprise MIB.
-
-Product information:
-
-* Product Name
-
-* Product Version
-
-* Product Build Date
-
-Additional per MTA-MIB group metrics
-
-* active queue size
-
-* delayed queue size
-
-* failed message count
-
-Per domain statistics
-
-* domain name
-
-* receptions
-
-* failures
-
-* deliveries
-
-* transient failures
-
-* outbound connections
-
-* active queue size
-
-* delayed queue size
-
-## SNMP Agent setup
-
-A configuration directive similar to the one shown below is used to configure the Momentum SNMP agent.
-
-```
-SNMP {
- State = enabled
- Address = 192.168.1.2:8162
- Community = "Public"
- SysContact = administrator
- SysLocation = columbia
- SysDescription = mta01
-}
-```
-
-### Note
-
-Changing the value of these options at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-The SNMP Agent option settings are:
-
-
-
-- Address
-
--
-
-This option specifies the IP address and UDP port number Momentum's SNMP Agent listens on for SNMP requests. The format for the value of this option is `ip_address:udp_port`. A `‘*’` character may be used for `ip_address` to cause the agent to listen on all IP addresses configured on the system. In order to avoid conflicts with other agents running on the system, an UDP port number of `8162` is suggested.
-
-
-
-- Community
-
--
-
-Set the Community option value to the desired SNMP community the agent is to join. `"Public"` is the default value for this option.
-
-### Note
-
-Be sure to use quotation marks when assigning a value to this option. Without them, this option will not work.
-
-
-
-- State
-
--
-
-Set the State option value to `Enabled` to enable the SNMP Agent. The SNMP Agent is enabled by default.
-
-
-
-- SysContact
-
--
-
-Set the SysContact option value to the desired text that the agent should return when queried for this system-level object. There is no default value for this option.
-
-
-
-- SysDescription
-
--
-
-Set the SysDescription option value to the desired text that the agent should return when queried for this system-level object. There is no default value for this option.
-
-
-
-- SysLocation
-
--
-
-Set the SysLocation option value to the desired text that the agent should return when queried for this system-level object. There is no default value for this option.
-
-
-
-
-
-Momentum supports the generation of SNMPv2 Traps for certain global conditions. Supported trap conditions are:
-
-* Momentum Start Up - generated when Momentum starts.
-
-* Momentum Shutdown - generated when Momentum shuts down.
-
-* Total Queued Messages - generated when the total messages in the system global queue exceeds the specified limit.
-
-* Total Active Messages - generated when the total messages on the system active queue exceeds the specified limit.
-
-* Total Delayed Messages - generated when the total messages on the system delayed queue exceeds the specified limit.
-
-* Total Failed Messages - generated when the total messages failed exceeds the specified limit.
-
-Momentum trap definitions are contained in the MIB file `OMNITI-SNMP-MIB.txt` found in the `/opt/msys/ecelerity/docs/` directory. This file is reproduced in [*MIB Files*](/momentum/4/4-snmp-mib) .
-
-A configuration directive similar to the one shown below is used to enable and configure generation of SNMP traps. The directive consists of the outer `SNMP_TRAPS` stanza which encloses several global option settings, one or more `Destination` stanzas and a single `Watch_Variable` stanza.
-
-
-
-
-```
-SNMP_TRAPS {
- State = enabled
- Watch_Interval = 10
- Trap_Interval = 60
- Destination "192.168.1.2:162" {
- Community = "Public"
- }
- Watch_Variables = [
- GlobalMailQueue = 20000
- ActiveQueue = 10000
- DelayedQueue = 10000
- FailedMessages = 5000
- ]
-}
-```
-
-Global option settings are:
-
-
-
-- State
-
--
-
-Set the State option value to `Enabled` to enable generation of SNMP traps. SNMP traps are disabled by default.
-
-
-
-- Trap_Interval
-
--
-
-Once a trap condition occurs, Momentum will continue to send traps as long as the condition persists. The value of this option, expressed as number of seconds, determines how frequently traps for a current condition are generated. By default a trap will be generated every 60 seconds for a persistent condition.
-
-
-
-- Watch_Interval
-
--
-
-Momentum trap processing periodically samples the value of watched system variables. The value of this option, expressed as number of seconds, determines how frequently the variables are checked. By default Momentum will sample every 10 seconds.
-
-
-
-
-
-A `Destination` stanza is required for each trap destination. The IP address, UDP port number, and SNMP Community name is specified in each stanza. The `Community` option value defaults to `"Public"`. If trap destination(s) are configured, then the traps will automatically be sent to each configured trap destination.
-
-```
-Destination "192.168.1.2:162" {
- Community = "Public"
-}
-```
-
- A single `Watch_Variable` stanza is required. At least one of `GlobalMailQueue`, `ActiveQueue`, `DelayedQueue` or `FailMessages` options must be specified. The value specified for each option is the queue size limit specified as number of messages on the queue. When the queue size reaches or exceeds the specified limit, Momentum will generate a trap to all specified trap destinations.
-
-```
-Watch_Variables = [
- GlobalMailQueue = 20000
- ActiveQueue = 10000
- DelayedQueue = 10000
- FailedMessages = 5000
-]
-```
-
-Changing the value of SNMP options at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-
-## Scope
-
-SNMP directives are valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-soft-bounce-drain-rate.md b/content/momentum/4/config/ref-soft-bounce-drain-rate.md
deleted file mode 100644
index 3d16e7617..000000000
--- a/content/momentum/4/config/ref-soft-bounce-drain-rate.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "soft_bounce_drain_rate"
-description: "soft bounce drain rate how many soft bounces to place into the mail queues in a single scheduler iteration soft bounce drain rate 100 When async bounce rendering is enabled soft bounces are queued internally This option defines how many are pulled from the internal queue and placed into the..."
----
-
-
-## Name
-
-soft_bounce_drain_rate — how many soft bounces to place into the mail queues in a single scheduler iteration
-
-## Synopsis
-
-`soft_bounce_drain_rate = 100`
-
-
-## Description
-
-When `async_bounce_rendering` is enabled, soft bounces are queued internally. This option defines how many are pulled from the internal queue and placed into the mail queues in a single scheduler iteration.
-
-The default value is `100`.
-
-
-## Scope
-
-`soft_bounce_drain_rate` is valid in the global scope.
-
-
-## See Also
-
-[async_bounce_rendering](/momentum/4/config/ref-async-bounce-rendering)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-spool-mode.md b/content/momentum/4/config/ref-spool-mode.md
deleted file mode 100644
index 0ac655d5f..000000000
--- a/content/momentum/4/config/ref-spool-mode.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "spool_mode"
-description: "spool mode set the file mode for newly created spool files spool mode 0640 spool mode allows you to set the mode for the open system call used to create spool files The value must be specified in octal format The default is 0640 Changing the value of this option..."
----
-
-
-## Name
-
-spool_mode — set the file mode for newly created spool files
-
-## Synopsis
-
-`spool_mode = 0640`
-
-
-## Description
-
-`spool_mode` allows you to set the *`mode`* for the `open` system call used to create spool files. The value must be specified in octal format. The default is `0640`.
-
-Changing the value of this option at runtime requires restarting the ecelerity process (issuing the ec_console command **`config reload`** will not suffice).
-
-
-## Scope
-
-`spool_mode` is valid in the global scope.
-
-
-## See Also
-
-[spoolbase](/momentum/4/config/ref-spoolbase)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-spoolbase.md b/content/momentum/4/config/ref-spoolbase.md
deleted file mode 100644
index 0fc829121..000000000
--- a/content/momentum/4/config/ref-spoolbase.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "spoolbase"
-description: "spoolbase set the base directory for the spool spoolbase var spool ecelerity spoolbase allows you to place your spool at an alternate location on the disk The default value is var spool ecelerity spoolbase is valid in the global scope spool mode..."
----
-
-
-## Name
-
-spoolbase — set the base directory for the spool
-
-## Synopsis
-
-`spoolbase = "/var/spool/ecelerity"`
-
-
-## Description
-
-`spoolbase` allows you to place your spool at an alternate location on the disk. The default value is `/var/spool/ecelerity`.
-
-
-## Scope
-
-`spoolbase` is valid in the global scope.
-
-
-## See Also
-
-[spool_mode](/momentum/4/config/ref-spool-mode)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-supplemental-groups.md b/content/momentum/4/config/ref-supplemental-groups.md
deleted file mode 100644
index bf44fc90d..000000000
--- a/content/momentum/4/config/ref-supplemental-groups.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "supplemental_groups"
-description: "supplemental groups security supplemental groups to assume after startup This security feature instructs Momentum to issue a setgroups system call to set the supplemental groups for the Momentum process This allows more flexibility for granting Momentum access to resources that are restricted based on group membership Example 72 10 supplemental..."
----
-
-
-## Name
-
-supplemental_groups — security: supplemental groups to assume after startup
-
-
-## Description
-
-This security feature instructs Momentum to issue a `setgroups` system call to set the supplemental groups for the Momentum process. This allows more flexibility for granting Momentum access to resources that are restricted based on group membership.
-
-
-
-
-Security {
- Supplemental_Groups = ( *`"list of group names or ids"`* )
- # Allow binding to privileged ports without requiring a process restart
- Capabilities = "cap_net_bind_service+ep"
-}
-
-### Note
-
-Changing the value of options in the `security` scope at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-
-## Scope
-
-Supplemental_Groups is valid in the security scope.
-
-
-## See Also
-
-[security](/momentum/4/config/ref-security), [capabilities](/momentum/4/config/ref-capabilities), [user](/momentum/4/config/ref-user), and [chroot](/momentum/4/config/ref-chroot)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-suspend-delivery.md b/content/momentum/4/config/ref-suspend-delivery.md
deleted file mode 100644
index d2d02a943..000000000
--- a/content/momentum/4/config/ref-suspend-delivery.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "suspend_delivery"
-description: "suspend delivery prevent outbound mail delivery Suspend Delivery false When set to true this directive forces Momentum not to attempt any deliveries in the scope it is configured Default value is false The following example suspends delivery for a specific binding within a binding group Within a binding group non..."
----
-
-
-## Name
-
-suspend_delivery — prevent outbound mail delivery
-
-## Synopsis
-
-`Suspend_Delivery = "false"`
-
-
-## Description
-
-When set to `true`, this directive forces Momentum not to attempt any deliveries in the scope it is configured. Default value is `false`.
-
-The following example suspends delivery for a specific binding within a binding_group:
-
-```
-Binding_Group "ExampleGroup" {
- Suspend_Delivery = "false"
- Binding "example1"
- {
- Bind_Address = "10.10.10.10"
- Suspend_Delivery = "true"
- }
- Binding "example2"
- {
- Bind_Address = "10.10.10.11"
- }
-
- ...
-}
-```
-
-Within a binding_group, non-suspended bindings are preferred over suspended bindings. In the example above, messages will not be queued for binding `example1`.
-
-You can suspend delivery from the system console by issuing the command: **config set [*`scope`* *`scope_name`*] Suspend_Delivery true** . This can be useful for temporarily suspending deliveries for a specific domain. Setting `Suspend_Delivery` to `false` will resume delivery for all queued messages.
-
-### Note
-
-Note that using this option in the global scope also suspends the `#mmove` function that transfers messages between nodes in a cluster configuration.
-
-You can also suspend delivery for the `default` binding by using configuration below:
-
-```
-binding "default" {
- suspend_delivery = true
-}
-```
-
-For more information on the default binding, see [the section called “`default` Binding”](/momentum/4/config/ref-binding#conf.ref.binding.default).
-
-
-## Scope
-
-`suspend_delivery` is valid in the binding, binding_group, domain, and global scopes.
-
-
-## See Also
-
-[binding](/momentum/4/config/ref-binding), [“`duravip_follow` and the #mmove Binding”](/momentum/4/cluster-config-mmove), [default_binding](/momentum/4/config/ref-default-binding)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-swap-out-meta-after-each-tempfail.md b/content/momentum/4/config/ref-swap-out-meta-after-each-tempfail.md
deleted file mode 100644
index d3d230434..000000000
--- a/content/momentum/4/config/ref-swap-out-meta-after-each-tempfail.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "07/27/2021"
-title: "swap_out_meta_after_each_tempfail"
-description: "controls whether or not Momentum will update metadata such as num_retries, next_attempt, and message context on disk after each tempfail"
----
-
-
-## Name
-
-swap_out_meta_after_each_tempfail — controls behavior for updating the startup failure related metadata on
-
-## Synopsis
-
-`swap_out_meta_after_each_tempfail = true`
-
-## Description
-
-Assuming `swap_out_meta_after_each_tempfail` is left at the default value of _true_, the `num_retries` and `next_attempt` values will always be updated on disk after each tempfail.
-
-If this is set to false, Momentum will only update metadata on disk after each tempfail if the message context is dirty. Also, if set to false, `num_retries`, `next_attempt` and message context may not be accurate if Momentum crashes.
-
-The default value is _true_.
-
-## Scope
-
-swap_out_meta_after_each_tempfail is valid in the global scope.
-
-## See Also
-
-[inline_transfail_processing](/momentum/4/config/ref-inline-transfail-processing)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-tcp-buffer-size.md b/content/momentum/4/config/ref-tcp-buffer-size.md
deleted file mode 100644
index 0a01b98f0..000000000
--- a/content/momentum/4/config/ref-tcp-buffer-size.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "09/14/2026"
-title: "tcp_buffer_size"
-description: "tcp buffer size maximum tcp buffer size for outbound connections tcp buffer size 32768 Momentum uses an auto scaling algorithm to ensure that the tcp buffer size is set optimally This option allows you to set an upper bound on the tcp buffer size selected The default is 32768 bytes..."
----
-
-
-## Name
-
-tcp_buffer_size — maximum tcp buffer size for outbound connections
-
-## Synopsis
-
-`tcp_buffer_size = 32768`
-
-
-## Description
-
-Momentum uses an auto-scaling algorithm to ensure that the tcp buffer size is set optimally. This option allows you to set an upper bound on the tcp buffer size selected.
-
-The default is 32768 bytes.
-
-This option applies to outbound connections only. The receive buffer of an inbound connection is governed by [tcp_recv_buffer_size](/momentum/4/config/ref-tcp-recv-buffer-size) on the listener.
-
-### Warning
-
-This is an advanced option. Setting the value too high can cause memory exhaustion. Thorough testing is recommended before deployment in a production environment.
-
-
-## Scope
-
-tcp_buffer_size is valid in the global scope.
-
-
-## See Also
-
-[tcp_recv_buffer_size](/momentum/4/config/ref-tcp-recv-buffer-size), [use_mmap](/momentum/4/config/ref-use-mmap)
diff --git a/content/momentum/4/config/ref-tcp-recv-buffer-size.md b/content/momentum/4/config/ref-tcp-recv-buffer-size.md
deleted file mode 100644
index f4fac2437..000000000
--- a/content/momentum/4/config/ref-tcp-recv-buffer-size.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-lastUpdated: "09/14/2026"
-title: "tcp_recv_buffer_size"
-description: "tcp recv buffer size sets the TCP receive buffer size for inbound connections tcp recv buffer size 4096 The receive buffer is applied to each inbound connection when it is accepted When set to 0 the operating system manages the buffer size and can grow the receive window automatically..."
----
-
-
-## Name
-
-tcp_recv_buffer_size — sets the TCP receive buffer size for inbound connections
-
-## Synopsis
-
-`tcp_recv_buffer_size = 4096`
-
-
-## Description
-
-The receive buffer size is applied with `SO_RCVBUF` to each inbound connection at the moment it is accepted, and stays in force for the whole connection. The default is 4096 bytes for the ESMTP_Listener and 32768 bytes for the HTTP_Listener.
-
-When set to `0`, no buffer size is imposed and the operating system manages it. On Linux this leaves receive window autotuning enabled, so the kernel grows the window to suit the connection.
-
-### Choosing a value
-
-The receive buffer bounds the TCP receive window, and the receive window bounds throughput on a single connection:
-
-```
-maximum throughput = receive window / round-trip time
-```
-
-The default of 4096 bytes is large enough to go unnoticed on a low-latency path: on a sub-millisecond LAN even a small window sustains a high transfer rate. On a long path it may become a limit, leading the sending MTA to abandon the transaction on its own [body_timeout](/momentum/4/config/ref-body-timeout) before Momentum can acknowledge it.
-
-Set `tcp_recv_buffer_size = 0` to let the operating system size the buffer, which is the best choice on paths whose latency varies or is not known in advance. Alternatively, size it from the bandwidth-delay product of the path — bandwidth multiplied by round-trip time.
-
-Note that setting a value explicitly (any non-zero value) disables receive window autotuning for the life of the connection, because the kernel treats the buffer as caller-managed. A value chosen for one path is therefore also the ceiling for every other client of that listener.
-
-### Operating system limits
-
-`SO_RCVBUF` is capped by the operating system, so a value larger than the kernel limit is silently reduced. On Linux, check `/etc/sysctl.conf` and if necessary raise:
-
-```
-net.core.rmem_max # hard cap for an explicitly requested buffer
-net.ipv4.tcp_rmem # min / default / max used by autotuning
-```
-
-Remember that Linux doubles the requested size internally to account for bookkeeping overhead, so a socket configured with 262144 reports a 524288-byte buffer.
-
-### Warning
-
-This is an advanced option. Setting the value too high across many concurrent connections can increase memory use significantly. Thorough testing is recommended before deployment in a production environment.
-
-
-## Scope
-
-`tcp_recv_buffer_size` is valid in the control_listener, eccluster_listener, ecstream_listener, esmtp_listener, http_listener, listen and xmpp_listener scopes.
-
-
-## See Also
-
-[tcp_buffer_size](/momentum/4/config/ref-tcp-buffer-size), [disable_nagle_algorithm](/momentum/4/config/ref-disable-nagle-algorithm), [Configuring Inbound Mail Service Using SMTP](/momentum/4/esmtp-listener), [Adjusting /etc/sysctl.conf](/momentum/4/byb-sysctl-conf)
diff --git a/content/momentum/4/config/ref-threadpool.md b/content/momentum/4/config/ref-threadpool.md
deleted file mode 100644
index ce9ed4798..000000000
--- a/content/momentum/4/config/ref-threadpool.md
+++ /dev/null
@@ -1,116 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "threadpool"
-description: "threadpool configure thread pool specific options Momentum uses a combination of asynchronous IO and thread pools to efficiently manage its workload There are a number of predefined thread pools for different classes of work It is not possible to prioritize work within a pool jobs are queued as FIFO but..."
----
-
-
-## Name
-
-threadpool — configure thread pool specific options
-
-
-## Description
-
-```
-ThreadPool "SwapOut" {
- Concurrency = 5
-}
-
-ThreadPool "SwapIn" {
- Concurrency = 5
-}
-
-ThreadPool "Unlink" {
- Backlog = 100
- Concurrency = 6
-}
-
-ThreadPool "Batch_Unlink" {
- Concurrency = 4
-}
-
-ThreadPool "Close" {
- Concurrency = 0
-}
-
-ThreadPool "CPU" {
- Concurrency = 4
-}
-
-ThreadPool "IO" {
- Concurrency = 50
-}
-
-ThreadPool "SpoolIn" {
- Concurrency = 1
-}
-```
-
-Momentum uses a combination of asynchronous IO and thread pools to efficiently manage its workload. There are a number of predefined thread pools for different classes of work. It is not possible to prioritize work within a pool (jobs are queued as FIFO), but it is possible to create a pool for jobs that have different relative priorities, so that long running jobs won't starve more important short-lived jobs.
-
-The `ThreadPool` stanza allows you to define or modify thread pool characteristics. The standard thread pools are listed above, along with their defaults, and you may also define new pools simply by specifying the name of the pool. Creating new pools isn't very useful unless you assign jobs to the pool; various modules allow you to specify alternate pools for their tasks so that you can more effectively prioritize the tasks in your environment.
-
-There are three basic attributes for a thread pool in Momentum:
-
-
-
-- `Concurrency`
-
--
-
-The concurrency defines the number of threads in the pool. Sizing a pool correctly is important to avoid torturing your system. If the pool is intended to be used for CPU intensive work, the ideal size is approximately the number of cores that you want to assign to the work. If you raise the concurrency of such a pool too high, you will cause increased context switching and degrade overall system performance.
-
-If the pool is intended to be used for blocking IO operations, where the threads are expected to be mostly sleeping, you will usually want to increase the number of threads to a magic number that gets the most throughput for your system. Setting this number too high can increase context switching, and with heavily IO bound tasks, can increase disk thrashing.
-
-You should also note that each thread requires its own stack space; creating too many threads can consume large portions of your address space, particularly on a 32-bit system. Some versions of Linux/glibc allocate 10MB per thread by default, which can quickly consume your entire address space. You can reduce the impact of this problem by setting the thread pool stack size (see below).
-
-### Note
-
-If you use the [“csapi – Symantec CSAPI Antivirus Support”](/momentum/4/modules/csapi), be sure to set the concurrency of the CPU threadpool to a value that is less than the max_concurrency of the csapi module.
-
-The concurrency of a pool can be changed at runtime. The values for `concurrency` shown in [the section called “Description”](/momentum/4/config/ref-threadpool#conf.ref.threadpool.description) are the default values.
-
-
-
-- `Stack_Size`
-
--
-
-As mentioned above, each thread in the system requires its own stack space. The default amount used is system dependent and is usually very much higher than the amount you will need per thread. If you find that you need to increase the number of threads, you may also want to define a smaller Stack_Size so that you don't use so much of your address space or RAM.
-
-The amount of stack space you need for a given pool varies depending on the usage patterns for that pool. Some jobs will need more stack space than others. You should exercise caution when adjusting the stack size, setting it too small can cause a stack overflow which can lead to memory corruption and ultimately a crash.
-
-The stack size can be changed at runtime, but only affects newly spawned threads.
-
-
-
-- `Backlog`
-
--
-
-The backlog setting affects the maximum number of jobs that can be queued up for a pool. Most pools will not have a limit, but some tasks require a braking effect if the system can't satisfy the workload in time.
-
-For instance, the transactional nature of SMTP requires that messages are unlinked from the spool "immediately" after the receipt of successful delivery so that duplicate delivery can not occur if the power were to fail. Since the unlink call is a blocking operation, it is pushed to the `Unlink` pool for processing. If the unlink pool backlog were to grow without bound, there is increasing risk of sending a great many duplicate deliveries when the server restarts after a power failure.
-
-To mitigate this risk, we put a limit on the maximum length of the queue; if pushing a job to the queue would exceed the length, then the caller will block until the queue is small enough.
-
-If you find that you need to change the Backlog size for the Unlink pool, you should investigate why your disks cannot keep up; make sure that you aren't logging to the same spindles as your spool, and examine the tuning options for those filesystems.
-
-When using the custom_logger module, it may be necessary to create a thread pool so you can explicitly define its backlog option. For more information, see [“custom_logger – User-defined Logging”](/momentum/4/modules/custom-logger).
-
-The backlog cannot be changed at runtime.
-
-
-
-
-
-
-## Scope
-
-ThreadPool is valid in the global scope.
-
-
-## See Also
-
-[domain](/momentum/4/config/ref-domain), [host](/momentum/4/config/ref-host), [threads](/momentum/4/console-commands/threads)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-timestampformat.md b/content/momentum/4/config/ref-timestampformat.md
deleted file mode 100644
index 4f86c3652..000000000
--- a/content/momentum/4/config/ref-timestampformat.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "timestampformat"
-description: "timestampformat set the timestamp format used when logging to stderr timestampformat a d b Y H M S Sets the timestamp format used by Momentum when logging to stderr This output is usually not seen unless you invoke ecelerity using the d option The default value is shown above timestampformat..."
----
-
-
-## Name
-
-timestampformat — set the timestamp format used when logging to stderr
-
-## Synopsis
-
-`timestampformat = "[%a %d %b %Y %H:%M:%S] "`
-
-
-## Description
-
-Sets the timestamp format used by Momentum when logging to `stderr`. This output is usually not seen unless you invoke **ecelerity** using the `-d` option. The default value is shown above.
-
-> **Note**
-> When [log_hires_timestamp](/momentum/4/config/ref-log-hires-timestamp) is enabled (Momentum 5.3 and later), every `%S` or `%T` conversion in the configured format is automatically followed by a `.NNNNNN` six-digit microsecond fraction, so the default value renders as `[Mon 20 May 2026 14:32:17.482915] `.
-
-
-## Scope
-
-`timestampformat` is valid in the global scope.
diff --git a/content/momentum/4/config/ref-tls-dhparams-file.md b/content/momentum/4/config/ref-tls-dhparams-file.md
deleted file mode 100644
index a0362ad99..000000000
--- a/content/momentum/4/config/ref-tls-dhparams-file.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_dhparams_file"
-description: "tls dhparams file specifies the file of Diffie Hellman DHE parameters that add per session randomness to the encryption Default parameters are built in the product if none are specified tls dhparams file path to dh pem The tls dhparams file option can be generated with the file openssl dhparam..."
----
-
-
-## Name
-
-tls_dhparams_file — specifies the file of Diffie Hellman (DHE) parameters that add per-session randomness to the encryption. Default parameters are built in the product if none are specified.
-
-## Synopsis
-
-`tls_dhparams_file = /path/to/dh.pem`
-
-
-## Description
-
-The tls_dhparams_file option can be generated with the file `openssl dhparam -out /path/to/dh512.pem 512`. It is recommended that you regularly (e.g., weekly) regenerate this file.
-
-This option has no default value; instead, it uses internally-specified DHE parameters.
-
-
-## Scope
-
-tls_dhparams_file is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-tls-enable-dhe-ciphers.md b/content/momentum/4/config/ref-tls-enable-dhe-ciphers.md
deleted file mode 100644
index e337f3345..000000000
--- a/content/momentum/4/config/ref-tls-enable-dhe-ciphers.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_enable_dhe_ciphers"
-description: "tls enable dhe ciphers controls whether or not Diffie Hellman DHE ciphers are available tls enable dhe ciphers true The default value is true tls enable dhe ciphers is valid in the global scope..."
----
-
-
-## Name
-
-tls_enable_dhe_ciphers — controls whether or not Diffie Hellman (DHE) ciphers are available
-
-## Synopsis
-
-`tls_enable_dhe_ciphers = "true"`
-
-
-## Description
-
-The default value is `true`.
-
-
-## Scope
-
-tls_enable_dhe_ciphers is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-tls.md b/content/momentum/4/config/ref-tls.md
deleted file mode 100644
index 7f6274b65..000000000
--- a/content/momentum/4/config/ref-tls.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls"
-description: "tls determine whether to use TLS connection for outbound mail TLS no ifavailable required Configuration Change Support for opportunistic TLS is available as of version 4 1 This option determines whether or not Transport Layer Security should be used when delivering email Note that this does not guarantee end to..."
----
-
-
-## Name
-
-tls — determine whether to use TLS connection for outbound mail
-
-## Synopsis
-
-`TLS = "no|ifavailable|required"`
-
-
-## Description
-
-**Configuration Change. ** Support for opportunistic TLS is available as of version 4.1.
-
-This option determines whether or not Transport Layer Security should be used when delivering email. Note that this does not guarantee end-to-end security but only that of the first hop from the MTA.
-
-This option can be set to the following:
-
-* `no` – Disables the negotiation of TLS for outbound deliveries regardless of whether it is available.
-
-* `ifavailable` – Enables opportunistic TLS. If the remote mail exchange supports TLS and the TLS negotiation succeeds, the mail will be delivered over TLS.
-
- * For version 4.0 – If the negotiation fails, the message is put back into the delayed queue and retried later.
-
- * For version 4.1 and later – If the negotiation fails, the value of the TLS_Ifavailable_fallback option determines the behavior, which defaults to Momentum immediately trying to send the message as plain-text.
-
-* `required` – Disables the sending of mail unless a successful TLS negotiation takes place with the remote mail exchange.
-
-The default value is `no`.
-
-
-## Scope
-
-`tls` is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-trace-smtp-mode.md b/content/momentum/4/config/ref-trace-smtp-mode.md
deleted file mode 100644
index 5443c1294..000000000
--- a/content/momentum/4/config/ref-trace-smtp-mode.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "trace_smtp_mode"
-description: "trace smtp mode set the default permissions of trace files trace smtp mode 0640 This option sets the default permissions of trace files created when using the console command trace smtp As always the permissions will be modified by the umask of the ecelerity process When running as user and..."
----
-
-
-## Name
-
-trace_smtp_mode — set the default permissions of trace files
-
-## Synopsis
-
-`trace_smtp_mode = 0640`
-
-
-## Description
-
-This option sets the default permissions of trace files created when using the console command **trace smtp** . As always, the permissions will be modified by the umask of the ecelerity process. When running as user and group `ecuser`, the default value will make the files readable and writable to the `ecuser` user, readable to members of the ecuser group, and not accessible to other users.
-
-Changing the value of this option at runtime requires restarting the ecelerity process (issuing the ec_console command **`config reload`** will not suffice).
-
-The default value is `0640`.
-
-
-## Scope
-
-`trace_smtp_mode` is valid in the global scope.
-
-
-## See Also
-
-[trace smtp](/momentum/4/console-commands/trace-smtp)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-transfail-drain-rate.md b/content/momentum/4/config/ref-transfail-drain-rate.md
deleted file mode 100644
index 72d1178c6..000000000
--- a/content/momentum/4/config/ref-transfail-drain-rate.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "transfail_drain_rate"
-description: "transfail drain rate the maximum number of messages to pop off the transient failure queue in a single scheduler iteration transfail drain rate 100 The maximum number of messages to pop off the transient failure queue in a single scheduler iteration mitigating the potential for watchdog timeout The default value..."
----
-
-
-## Name
-
-transfail_drain_rate — the maximum number of messages to pop off the transient failure queue in a single scheduler iteration
-
-## Synopsis
-
-`transfail_drain_rate = 100`
-
-
-## Description
-
-The maximum number of messages to pop off the transient failure queue in a single scheduler iteration, mitigating the potential for watchdog timeout.
-
-The default value is `100`.
-
-
-## Scope
-
-transfail_drain_rate is valid in the global scope.
-
-
-## See Also
-
-[inline_transfail_processing](/momentum/4/config/ref-inline-transfail-processing) and [max_resident_transfails](/momentum/4/config/ref-max-resident-transfails)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-transform-8-bitmime-content.md b/content/momentum/4/config/ref-transform-8-bitmime-content.md
deleted file mode 100644
index f1ff09869..000000000
--- a/content/momentum/4/config/ref-transform-8-bitmime-content.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "transform_8bitmime_content"
-description: "transform 8 bitmime content Enable 8 BITMIME downconversion when sending mail transform 8 bitmime content no transform 8 bitmime content ifneeded transform 8 bitmime content strict transform 8 bitmime content strip When set to ifneeded if a message to be sent to a remote MTA contains 8 bit data and..."
----
-
-
-## Name
-
-transform_8bitmime_content — Enable 8BITMIME downconversion when sending mail
-
-## Synopsis
-
-`transform_8bitmime_content = "no"`
-
-`transform_8bitmime_content = "ifneeded"`
-
-`transform_8bitmime_content = "strict"`
-
-`transform_8bitmime_content = "strip"`
-
-
-## Description
-
-When set to `ifneeded`, if a message to be sent to a remote MTA contains 8-bit data and the remote MTA did not advertise support for 8BITMIME, then Momentum will strip the 8th bit from the data, as per RFC 1652.
-
-When set to `no`, Momentum will send the data as is.
-
-Set to `strict` for strict compliance with RFC1652\. Do proper Quoted-Printable (QP) encoding of eight bit data, subsequently scanning the re-encoded message for leftover 8 bit characters. If any are found, the message is permanently failed. Setting this option to `strip` strips the high bit from all characters in the body, guaranteeing that the data is transferred as 7-bit content. This mode of operation is contrary to that permitted by RFC1652, and its use is discouraged.
-
-### Note
-
-This option has no effect on whether Momentum informs the remote MTA that 8BITMIME data is going to be sent, it simply downgrades to 7-bits. Use the `Send_8BitMime` to control 8BITMIME notification.
-
-The default value is `ifneeded`.
-
-For RFC 1652 compliance you should set `send_8bitmime` to `ifavailable` and `transform_8bitmime_content` to `ifneeded`.
-
-
-## Scope
-
-transform_8bitmime_content is valid in the global, binding_group, binding, and domain scopes.
-
-
-## See Also
-
-[send_8bitmime](/momentum/4/config/ref-send-8-bitmime)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-unlink-on-spool-in-failure.md b/content/momentum/4/config/ref-unlink-on-spool-in-failure.md
deleted file mode 100644
index 585cee6f1..000000000
--- a/content/momentum/4/config/ref-unlink-on-spool-in-failure.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "unlink_on_spool_in_failure"
-description: "unlink on spool in failure Whether or not to remove malformed messages unlink on spool in failure true When Momentum encounters a malformed message in the spool that cannot be read in if this option is true the message will be removed from the spool If it is false the..."
----
-
-
-## Name
-
-unlink_on_spool_in_failure — Whether or not to remove malformed messages
-
-## Synopsis
-
-`unlink_on_spool_in_failure = true`
-
-
-## Description
-
-When Momentum encounters a malformed message in the spool that cannot be read in, if this option is `true`, the message will be removed from the spool. If it is `false` the message will be ignored until the next Momentum restart. You would only want to set this to `false` if you encountered recurring spool in failures for different message IDs; this would allow the broken messages to be retained for analysis by Message Systems support.
-
-The default value is `true`.
-
-
-## Scope
-
-`unlink_on_spool_in_failure` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-unsafe-spool.md b/content/momentum/4/config/ref-unsafe-spool.md
deleted file mode 100644
index 883f0327e..000000000
--- a/content/momentum/4/config/ref-unsafe-spool.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "_unsafe_spool"
-description: "unsafe spool allow dangerous spool semantics to be used unsafe spool false Use of this option is not recommended unless you have complete control over the generation and delivery process See Section 71 70 suppress spool Deferred Message Spooling for more details on its use The default value is false..."
----
-
-
-## Name
-
-_unsafe_spool — allow dangerous spool semantics to be used
-
-## Synopsis
-
-`_unsafe_spool = false`
-
-
-## Description
-
-Use of this option is not recommended unless you have complete control over the generation and delivery process. See [“suppress_spool – Deferred Message Spooling”](/momentum/4/modules/suppress-spool) for more details on its use.
-
-The default value is `false`.
-
-
-## Scope
-
-`_unsafe_spool` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-use-iflist-cache.md b/content/momentum/4/config/ref-use-iflist-cache.md
deleted file mode 100644
index 9a23780d1..000000000
--- a/content/momentum/4/config/ref-use-iflist-cache.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "use_iflist_cache"
-description: "use iflist cache Whether or not to cache the list of network interfaces configured by the system use iflist cache 0 This option determines whether or not to use cached information about the state of the network interfaces namely which ones are in use and their state The default value..."
----
-
-
-## Name
-
-use_iflist_cache — Whether or not to cache the list of network interfaces configured by the system
-
-## Synopsis
-
-`use_iflist_cache = 0`
-
-
-## Description
-
-This option determines whether or not to use cached information about the state of the network interfaces; namely which ones are in use and their state.
-
-The default value is `0`. When this option is off and DuraVIP™ is in use, Momentum must traverse the entire list of interfaces. Enable this option if you are using a large number of DuraVIP™s.
-
-Changing the value of this options at runtime requires restarting the ecelerity process–issuing the ec_console command **config reload** will not suffice.
-
-
-## Scope
-
-`use_iflist_cache` is valid in the global scope.
-
-
-## See Also
-
-[*DuraVIP™: IP Fail over*](/momentum/4/4-cluster-config-duravip)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-use-ipv-6.md b/content/momentum/4/config/ref-use-ipv-6.md
deleted file mode 100644
index 68737edd2..000000000
--- a/content/momentum/4/config/ref-use-ipv-6.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "use_ipv6"
-description: "use ipv 6 Affects the selection of I Pv 6 hosts in the SMTP client use ipv 6 false use ipv 6 true When set to false Momentum will ignore AAAA records in the list of hosts resolved from MX lookups This will effectively prevent the use of outbound I..."
----
-
-
-## Name
-
-use_ipv6 — Affects the selection of IPv6 hosts in the SMTP client
-
-## Synopsis
-
-`use_ipv6 = false`
-
-`use_ipv6 = true`
-
-
-## Description
-
-When set to false, Momentum will ignore `AAAA` records in the list of hosts resolved from MX lookups. This will effectively prevent the use of outbound IPv6 SMTP connections. The AAAA records will not be visible in the output of the **dig** console command either.
-
-The default is `false`.
-
-For a discussion of using IPv6 addresses with listeners, see [“Listeners and IPv6 Addresses”](/momentum/4/listeners#listeners.ipv6).
-
-
-## Scope
-
-use_ipv6 is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-use-mmap.md b/content/momentum/4/config/ref-use-mmap.md
deleted file mode 100644
index cc4bfe51b..000000000
--- a/content/momentum/4/config/ref-use-mmap.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "use_mmap"
-description: "use mmap use mmap when spooling messages from disk use mmap false use mmap true When set to true Momentum will attempt to memory map message bodies via mmap rather than allocating memory from the heap and reading the file from disk The default is false This option should be..."
----
-
-
-## Name
-
-use_mmap — use mmap when spooling messages from disk
-
-## Synopsis
-
-`use_mmap = false`
-
-`use_mmap = true`
-
-
-## Description
-
-When set to true, Momentum will attempt to memory map message bodies (via `mmap`), rather than allocating memory from the heap and reading the file from disk.
-
-The default is `false`. This option should be set dependent on the performance and stability of `mmap` on your system.
-
-### Warning
-
-If you set `use_mmap` to `true` the `compress_spool` module will not load. For more information see [“compress_spool – Dynamic Spool Compression”](/momentum/4/modules/compress-spool)
-
-
-## Scope
-
-use_mmap is valid in the global scope.
-
-
-## See Also
-
-[malloc2mmap_threshold](/momentum/4/config/ref-malloc-2-mmap-threshold) and [use_sendfile](/momentum/4/config/ref-use-sendfile)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-use-sendfile.md b/content/momentum/4/config/ref-use-sendfile.md
deleted file mode 100644
index 8c3a9f0ef..000000000
--- a/content/momentum/4/config/ref-use-sendfile.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "use_sendfile"
-description: "use sendfile use sendfile when sending mail use sendfile false use sendfile true When set to true Momentum will attempt to use sendfile or other system dependent equivalent to efficiently send mail to a remote MTA This typically means that the system will either pull data directly from disk using..."
----
-
-
-## Name
-
-use_sendfile — use sendfile() when sending mail
-
-## Synopsis
-
-`use_sendfile = false`
-
-`use_sendfile = true`
-
-
-## Description
-
-When set to true, Momentum will attempt to use `sendfile` ), (or other system dependent equivalent) to efficiently send mail to a remote MTA. This typically means that the system will either pull data directly from disk using a form of memory mapped IO, or use a zero copy mechanism to reduce the number of user-space to kernel mode transitions and memory bus overhead that would otherwise be required to push the data through the system.
-
-The default for this option is `false`. This option should be set dependent on the performance and stability of `sendfile` on your system. Unix systems typically also require that `use_mmap` also be enabled for this to take effect.
-
-
-## Scope
-
-use_sendfile is valid in the global scope.
-
-
-## See Also
-
-[use_mmap](/momentum/4/config/ref-use-mmap)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-user.md b/content/momentum/4/config/ref-user.md
deleted file mode 100644
index 648142d1f..000000000
--- a/content/momentum/4/config/ref-user.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "user"
-description: "user group security user identity to assume after startup If you are using the user and group options in a Security stanza it may be necessary to retain some root privileges An example of such a need is a module that can stop and start listeners during operation On Unix..."
----
-
-
-## Name
-
-user, group — security: user identity to assume after startup
-
-
-## Description
-
-If you are using the `user` and `group` options in a Security stanza, it may be necessary to retain some root privileges. An example of such a need is a module that can stop and start listeners during operation. On Unix, starting a listener during operation would require that the process run as a user who has the ability to perform a `bind` system call to the SMTP port; the SMTP port is reserved and only root can do this.
-
-If Momentum is run as root, it will drop its superuser privileges before processing mail. By doing this, Momentum can limit the damage that could be caused by an attack that compromises the system.
-
-The following is an example of using the user and group options:
-
-
-
-
-```
-Security {
- user = ecuser
- group = ecuser
- Capabilities = "cap_net_bind_service+ep"
-}
-```
-
-The default value for both the `user` and the `group` option is `ecuser`.
-
-### Warning
-
-It is strongly recommended that you leave these options as their defaults. If you change these options to something else, you are responsible for maintaining the ownership and permissions of the files used by the Momentum components. This is of particular importance after running an upgrade; the packaging will try to respect existing permissions but there are limits to the level of intelligence that can applied to the installer.
-
-### Note
-
-Changing the value of options in the `security` scope at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-
-## Scope
-
-user and group are valid in the security scope.
-
-
-## See Also
-
-[security](/momentum/4/config/ref-security), [capabilities](/momentum/4/config/ref-capabilities), [chroot](/momentum/4/config/ref-chroot), and [supplemental_groups](/momentum/4/config/ref-supplemental-groups)
\ No newline at end of file
diff --git a/content/momentum/4/config/ref-xclient.md b/content/momentum/4/config/ref-xclient.md
deleted file mode 100644
index 294432f2b..000000000
--- a/content/momentum/4/config/ref-xclient.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "xclient"
-description: "xclient use the xclient extension to SMTP for outbound mail xclient no ifavailable required xclient allows information regarding the original sending host such as the connecting IP address to be communicated with the next hop and is useful when Momentum is deployed as a gateway device in a configuration where..."
----
-
-
-## Name
-
-xclient — use the xclient extension to SMTP for outbound mail
-
-## Synopsis
-
-`xclient = "no|ifavailable|required"`
-
-
-## Description
-
-`xclient` allows information regarding the original sending host (such as the connecting IP address) to be communicated with the next hop and is useful when Momentum is deployed as a gateway device in a configuration where the internal hosts will benefit from knowing the original connecting IP address. In order to use this feature, the next-hop MTA must support xclient. More information can be found at [http://www.postfix.org/XCLIENT_README.html](http://www.postfix.org/XCLIENT_README.html)
-
-```
-Binding customer-1 {
- xclient = "ifavailable"
- Domain relay.example.com {
- xclient = "required"
- }
-}
-```
-
-By enabling `xclient`, outbound messages will be preceded by an ESMTP XCLIENT negotiation. If it is required then outbound mail will be transiently failed if the remote mail exchange does not support and accept the `xclient` negotiation. If set to `ifavailable`, then Momentum will attempt to negotiate `xclient` with the remote end prior to each message in the stream if the remote mail exchange supports `xclient`. If that attempt fails, the message will be transmitted without `xclient` data.
-
-The default value is `no`.
-
-
-## Scope
-
-`xclient` is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/ssl-lock-method.md b/content/momentum/4/config/ssl-lock-method.md
deleted file mode 100644
index 7e170882c..000000000
--- a/content/momentum/4/config/ssl-lock-method.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-lastUpdated: "06/03/2026"
-title: "ssl_lock_method"
-description: "ssl lock method the SSL lock method SSL Lock Method mutex spinlock This option specifies the SSL lock method This option should be changed in consultation with Message Systems support only if SSL performance issues are encountered with the default method This option can be set to the following mutex..."
----
-
-
-## Name
-
-ssl_lock_method — the SSL lock method
-
-> **NOTE: This option is DEPRECATED as of Momentum 5.3.0 and has no effect.** OpenSSL 1.1.1 and later (the supported range, from 1.1.1 on RHEL 8 through the 3.x series) is internally thread-safe and no longer uses the application-supplied crypto locking callbacks that this option controlled. The option is still accepted so existing configurations continue to load, but it is ignored and logs a deprecation warning when set; remove it from `ecelerity.conf` to silence the warning. This page is retained for reference on releases prior to 5.3.0. See also [crypto_lock_method](/momentum/4/config/crypto-lock-method).
-
-## Synopsis
-
-`SSL_Lock_Method = "mutex|spinlock"`
-
-
-## Description
-
-This option specifies the SSL lock method. This option should be changed in consultation with Message Systems support only if SSL performance issues are encountered with the default method.
-
-This option can be set to the following:
-
-* `mutex`
-
-* `spinlock`
-
-* `default`
-
-Changing the value of this option at runtime requires restarting the ecelerity process—issuing the ec_console command **`config reload`** will not suffice.
-
-The default value for this option is `mutex`.
-
-
-## Scope
-
-`ssl_lock_method` is valid in the global scope.
diff --git a/content/momentum/4/config/starttls-injection-policy.md b/content/momentum/4/config/starttls-injection-policy.md
deleted file mode 100644
index 117812a1f..000000000
--- a/content/momentum/4/config/starttls-injection-policy.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "starttls_injection_policy"
-description: "starttls injection policy protect against SMTP injections prior to TLS Starttls Injection Policy allow ignore reject This option deals with the security issue described by CVE 2011 0411 namely that SMTP commands can be injected before the MTA switches to TLS Consequently a man in the middle could inject SMTP..."
----
-
-
-## Name
-
-starttls_injection_policy — protect against SMTP injections prior to TLS
-
-## Synopsis
-
-`Starttls_Injection_Policy = "allow|ignore|reject"`
-
-
-## Description
-
-This option deals with the security issue described by CVE-2011-0411, namely that SMTP commands can be injected before the MTA switches to TLS. Consequently, a "man in the middle" could inject SMTP commands that are not protected by TLS.
-
-This option can be set to the following:
-
-* `allow` – The ESMTP listener will process commands after STARTTLS and before successful SSL negotiation.
-
-* `ignore` – Any commands after STARTTLS are ignored, and commands after the successful TLS negotiation will be interpreted.
-
-* `reject` – If any commands are present in the buffer immediately after a STARTTLS command, the STARTTLS is rejected and the connection is dropped. This event will be logged in the rejectlog.
-
-The default value is `reject`.
-
-
-## Scope
-
-`starttls_injection_policy` is valid in the ESMTP_Listener, listen, pathway, pathway_group and peer scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-allow-renegotiation.md b/content/momentum/4/config/tls-allow-renegotiation.md
deleted file mode 100644
index ce39fd868..000000000
--- a/content/momentum/4/config/tls-allow-renegotiation.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_allow_renegotiation"
-description: "tls allow renegotiation determine whether to enable TLS renegotiation TLS Allow Renegotiation true false Configuration Change Support for GNUTLS is available as of version 4 1 for SMTP reception and SMTP deliveries only This option determines whether TLS renegotiation is enabled or disabled Open SSL When TLS Engine is set..."
----
-
-
-## Name
-
-tls_allow_renegotiation — determine whether to enable TLS renegotiation
-
-## Synopsis
-
-`TLS_Allow_Renegotiation = true|false`
-
-
-## Description
-
-**Configuration Change. ** Support for GNUTLS is available as of version 4.1 for SMTP reception and SMTP deliveries only.
-
-This option determines whether TLS renegotiation is enabled or disabled.
-
-**OpenSSL**
-
-When TLS_Engine is set to `openssl`, this option is supported by the ESMTP, HTTP, and ECStream listeners. SSL/TLS renegotiation has a known, inherent, vulnerability to DoS attacks that openSSL views as the responsibility of the higher level application to mitigate. TLS_Allow_Renegotiation addresses this issue by making it possible to deny renegotiation requests.
-
-### Note
-
-If you have C policy scripts that incorporate calls to `ec_ssl_renegotiate` please note this behavior. In some circumstances, setting this option to `false` may shut down valid attempts at renegotiation and needlessly drop connections.
-
-This option can be set to the following:
-
-* `true` – Renegotiations are allowed.
-
-* `false` – Renegotiations are not allowed at all. When renegotiation is disabled and a renegotiation is attempted from the peer, the openSSL session does not close immediately and waits for the SSL connection to timeout.
-
-**GNUTLS**
-
-When TLS_Engine is set to `gnutls`, this option is supported by the ESMTP listener only.
-
-This option can be set to the following:
-
-* `true` – Renegotiations are allowed when the Safe Renegotiation extension has been negotiated. For additional details about Safe Renegotiation, see [http://www.gnutls.org/manual/gnutls.html#Safe-renegotiation](http://www.gnutls.org/manual/gnutls.html#Safe-renegotiation).
-
-* `false` – Renegotiations are not allowed at all.
-
-The default value is `true`.
-
-
-## Scope
-
-`tls_allow_renegotiation` is valid in the ecstream_listener, esmtp_listener, http_listener, pathway, pathway_group and xmpp_listener scopes and the listen and peer scopes within those listeners.
-
-
-## See Also
-
-[tls](/momentum/4/config/ref-tls)
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-ca.md b/content/momentum/4/config/tls-ca.md
deleted file mode 100644
index cccf67073..000000000
--- a/content/momentum/4/config/tls-ca.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_ca"
-description: "tls ca certificate authority for outbound mail TLS Ca path to C Alist TLS Ca specifies a file containing a trusted certificate authority list These certificates should be in PEM format This CA list will be referenced if TLS Verify is set to either ca or host tls ca is..."
----
-
-
-## Name
-
-tls_ca — certificate authority for outbound mail
-
-## Synopsis
-
-`TLS_Ca = "/path/to/CAlist"`
-
-
-## Description
-
-TLS_Ca specifies a file containing a trusted certificate authority list. These certificates should be in PEM format. This CA list will be referenced if TLS_Verify is set to either `ca` or `host`.
-
-
-## Scope
-
-`tls_ca` is valid in the binding, binding_group, domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-certificate.md b/content/momentum/4/config/tls-certificate.md
deleted file mode 100644
index eb2967857..000000000
--- a/content/momentum/4/config/tls-certificate.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_certificate"
-description: "tls certificate certificate to use for inbound and outbound mail TLS Certificate path to cert Specifies the filename of a file containing a PEM encoded certificate that Momentum should present to remote mail exchanges it is a client certificate The file may contain both a certificate and a key The..."
----
-
-
-## Name
-
-tls_certificate — certificate to use for inbound and outbound mail
-
-## Synopsis
-
-`TLS_Certificate = "/path/to/cert"`
-
-
-## Description
-
-Specifies the filename of a file containing a PEM encoded certificate that Momentum should present to remote mail exchanges (it is a client certificate). The file may contain both a certificate and a key.
-
-The special value `none` can be used to indicate that no certificate file should be used. This is useful to explicitly avoid using a certificate when a parent scope defines one.
-
-
-## Scope
-
-`tls_certificate` is valid in the binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group and peer scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-ciphers.md b/content/momentum/4/config/tls-ciphers.md
deleted file mode 100644
index ac172ecf8..000000000
--- a/content/momentum/4/config/tls-ciphers.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-lastUpdated: "09/26/2023"
-title: "tls_ciphers"
-description: "tls ciphers specify allowable ciphers for TLS inbound and outbound sessions TLS Ciphers DEFAULT NORMAL Configuration Change Support for GNUTLS is available as of version 4 1 for SMTP reception and SMTP deliveries only This option specifies the allowable ciphers for a TLS session The allowable ciphers must be a..."
----
-
-
-## Name
-
-tls_ciphers — specify allowable ciphers for TLS inbound and outbound sessions
-
-## Synopsis
-
-`TLS_Ciphers = "DEFAULT"|"NORMAL"`
-
-
-## Description
-
-**Configuration Change. ** Support for GNUTLS is available as of version 4.1 for SMTP reception and SMTP deliveries only.
-
-This option specifies the allowable ciphers for a TLS session using TLSv1.2 or below. The allowable ciphers must be a subset of the available ciphers on the host system. For TLSv1.3, see [tlsv13_ciphersuites](/momentum/4/config/tls-v13_ciphersuites).
-
-**OpenSSL**
-
-When TLS_Engine is set to `openssl`, TLS_Ciphers specifies a "cipher list", which is a list of the supported algorithms, plus some special keywords that specify ciphers of a certain strength of type (e.g.: "MEDIUM"). A full list of ciphers can be obtained by running `openssl ciphers` from a command shell on the host machine. For more information about the available ciphers, see [http://www.openssl.org/docs/apps/ciphers.html](http://www.openssl.org/docs/apps/ciphers.html).
-
-This option can be set to the following:
-
-* `DEFAULT` – This setting is exactly the same as leaving it unset. If you do not explicitly set the ciphers, OpenSSL will use "DEFAULT". You can be more specific and disable "low" and "export" encryption cipher suites, using a string such as: `tls_ciphers = "DEFAULT:!LOW:!EXP"`.
-
- The meaning of "DEFAULT" depends upon how OpenSSL was built. On Red Hat Enterprise Linux and Red Hat clones, OpenSSL has certain ciphers disabled for patent reasons and other ciphers disabled because they are insecure. So the "DEFAULT" cipher list varies from one platform to another. To view documentation of ciphers on your system, run **`man ciphers`** .
-
-* *`Number of different ciphers`* – To specify a number of different ciphers, use the following syntax: `TLS_Ciphers = "DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA"`.
-
-**GNUTLS**
-
-When TLS_Engine is set to `gnutls`, TLS_Ciphers specifies a "priority string", which is quite different from OpenSSL's cipher list. Priority strings do not allow configuration of specific cipher suites. The priority string can indirectly set the cipher suite, by setting the allowed ciphers, key-exchange, MAC, compression, and signature algorithms; TLS versions; and elliptic curves. Priority strings also allow the enabling or disabling of specific TLS extensions. Note that GNUTLS uses a scheme to describe cryptographic algorithms that is different than OpenSSL. An ecelerity.conf with a specific TLS_Ciphers configuration for OpenSSL will most likely not work with GNUTLS.
-
-For a detailed description of GNUTLS priority strings, see [http://www.gnutls.org/manual/gnutls.html#Priority-Strings](http://www.gnutls.org/manual/gnutls.html#Priority-Strings).
-
-### Note
-
-Momentum 4.1 is using GNUTLS 3.1.x. The GNUTLS manual is for the latest version of GNUTLS, and there may be some priority string keywords that are not supported by GNUTLS in Momentum 4.1.
-
-This option can be set to `NORMAL`.
-
-
-## Scope
-
-`tls_ciphers` is valid in the binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group and peer scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-client-ca.md b/content/momentum/4/config/tls-client-ca.md
deleted file mode 100644
index 63a63e431..000000000
--- a/content/momentum/4/config/tls-client-ca.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_client_ca"
-description: "tls client ca certificate authority for inbound mail TLS Client Ca path to C Alist TLS Client Ca specifies a file containing a trusted certificate authority list These certificates should be in PEM format This CA list will be referenced if TLS Verify is set to either ca or host..."
----
-
-
-## Name
-
-tls_client_ca — certificate authority for inbound mail
-
-## Synopsis
-
-`TLS_Client_Ca = "/path/to/CAlist"`
-
-
-## Description
-
-TLS_Client_Ca specifies a file containing a trusted certificate authority list. These certificates should be in PEM format. This CA list will be referenced if TLS_Verify is set to either `ca` or `host`.
-
-
-## Scope
-
-`tls_client_ca` is valid in the ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group and peer scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-ec-curve-names.md b/content/momentum/4/config/tls-ec-curve-names.md
deleted file mode 100644
index 074f463e8..000000000
--- a/content/momentum/4/config/tls-ec-curve-names.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-lastUpdated: "05/21/2026"
-title: "tls_ec_curve_names"
-description: "tls_ec_curve_names selects the OpenSSL elliptic curves or TLS groups used for ECDHE key exchange in inbound and outbound TLS sessions. Specify a single curve short name (e.g. secp384r1) or, in newer versions of Momentum 5.3 and later, a colon-separated list in preference order (e.g. secp384r1:prime256v1)."
----
-
-
-## Name
-
-tls_ec_curve_names — select the elliptic curves or TLS groups used for ECDHE key exchange in inbound and outbound TLS sessions
-
-## Synopsis
-
-`TLS_EC_Curve_Names = "[:]"`
-
-## Description
-
-This option selects the elliptic curves (or TLS groups, in TLS 1.3 terminology) advertised and used during ECDHE key exchange for TLS sessions established by Momentum. The value is a curve short name as accepted by OpenSSL, for example `secp384r1` or `prime256v1`. A full list of curve short names available on the host can be obtained by running `openssl ecparam -list_curves` on the host machine.
-
-This option has no default value; when unset, Momentum lets OpenSSL pick the curve from its built-in defaults.
-
-**Configuration Change.** As of version 5.3, the value may also be a colon-separated list of curve or TLS group short names, in preference order. For example:
-
-`TLS_EC_Curve_Names = "secp384r1:prime256v1"`
-
-In earlier versions, only a single curve short name is accepted; setting a colon-separated list is rejected.
-
-The list must be normalized: no leading or trailing whitespace, no spaces around the `:` delimiters, and no empty segments (e.g. `"a::b"` or `":a"` are rejected). Each token must be a curve or group name accepted by OpenSSL; if any token is unknown, the whole value is rejected at `config set` time with an `invalid curve or group list` error.
-
-This option has no meaning for GNUTLS.
-
-### FIPS considerations
-
-When Momentum is built or deployed against a *FIPS-validated cryptographic library* (for example OpenSSL with the FIPS provider, or a drop-in FIPS-validated replacement like SafeLogic), the set of curves the library will actually use is restricted to those approved by the active FIPS module — typically a subset of the NIST P-curves, with `prime256v1`, `secp384r1`, and `secp521r1` being the safe baseline across modules. Curves outside that subset are likely to be rejected by OpenSSL at config-set time with the `invalid curve or group list` error, even if `openssl ecparam -list_curves` shows them as known to the binary.
-
-The exact accepted set varies by OpenSSL version, FIPS module version, and (on Linux distributions that ship one, like Red Hat Enterprise Linux) the system-wide crypto policy, which layers on top of the FIPS module's own restrictions. FIPS 140 itself — currently FIPS 140-3, with FIPS 140-2 modules still common in production through the transition — governs the *module*: its cryptographic boundary, self-tests, and key handling. *Which* curves that module is permitted to expose is defined separately, by NIST Special Publications: SP 800-186 (finalized February 2023) for ECDH curves, and FIPS 186-5 (also 2023) for ECDSA. A module certified against earlier revisions of those publications will reject curves added later — for example, `x25519` is recognized by OpenSSL 3 and listed by `openssl ecparam -list_curves`, but FIPS modules certified before SP 800-186 (including most FIPS 140-2 modules) refuse it, so setting `tls_ec_curve_names = "x25519"` against such a module fails validation. Non-certified FIPS-style libraries add yet another axis of variation: they may approximate the restrictions of a certified module but do not necessarily track the latest Special Publication updates.
-
-**Operators targeting a FIPS-enabled environment should validate their `tls_ec_curve_names` value** against the curves enabled on the host before relying on it. As a practical safeguard, prefer building the list around the universally-FIPS-approved baseline (`prime256v1`, `secp384r1`, `secp521r1`); when targeting a host whose FIPS module's accepted set is unknown or heterogeneous across a fleet, a baseline-only value such as `TLS_EC_Curve_Names = "secp384r1:prime256v1"` is accepted across all FIPS modules and avoids the risk that the whole list is rejected because of a single curve the active provider does not register.
-
-### Post-quantum key exchange
-
-OpenSSL 3.5 (April 2025) accepts the TLS 1.3 *group* identifiers registered for post-quantum key encapsulation, so they are valid tokens in `tls_ec_curve_names`. The names recognized by OpenSSL 3.5+ are:
-
-- **Standalone ML-KEM**: `MLKEM512`, `MLKEM768`, `MLKEM1024`.
-- **Hybrid ECDHE + ML-KEM**: `X25519MLKEM768`, `X448MLKEM1024`, `SecP256r1MLKEM768`, `SecP384r1MLKEM1024`.
-
-#### FIPS status
-
-ML-KEM became FIPS-approved when FIPS 203 was published in August 2024. The practical consequences for `tls_ec_curve_names`:
-
-- FIPS 140-2 modules — and, more generally, any module certified before late 2024 — do not include ML-KEM and will reject every name listed above. Deployments that need post-quantum key exchange under FIPS must use a FIPS 140-3 module whose scope explicitly includes ML-KEM.
-- For hybrids, both halves must be in the module's certified scope. `SecP256r1MLKEM768` and `SecP384r1MLKEM1024` are the safest choices for FIPS portability, because their classical halves draw on the universally-FIPS-approved NIST P-curve baseline. Hybrids that include `x25519` or `x448` carry the same module-vintage caveat as standalone `x25519` / `x448` — they were added to the approved curve list only with NIST SP 800-186 in February 2023, and older FIPS 140-3 modules may not register them.
-
-A reasonable PQC-preferred configuration that still negotiates cleanly with peers that have not yet adopted ML-KEM is `TLS_EC_Curve_Names = "SecP384r1MLKEM1024:SecP256r1MLKEM768:secp384r1:prime256v1"`. As with any multi-token value, every name in the list must be registered by the active provider on the host or the whole value is rejected at `config set` time, so validate against the target OpenSSL build and FIPS module before deploying.
-
-## Scope
-
-`tls_ec_curve_names` is valid in the global scope.
diff --git a/content/momentum/4/config/tls-engine.md b/content/momentum/4/config/tls-engine.md
deleted file mode 100644
index f670ac006..000000000
--- a/content/momentum/4/config/tls-engine.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_engine"
-description: "tls engine specify the TLS library to use TLS Engine openssl gnutls Configuration Change Support for GNUTLS is available as of version 4 1 for SMTP reception and SMTP deliveries only If TLS is set to required or ifavailable this option specifies whether to use Open SSL or GNUTLS This..."
----
-
-
-## Name
-
-tls_engine — specify the TLS library to use
-
-## Synopsis
-
-`TLS_Engine = "openssl|gnutls"`
-
-
-## Description
-
-**Configuration Change. ** Support for GNUTLS is available as of version 4.1 for SMTP reception and SMTP deliveries only.
-
-If TLS is set to `required` or `ifavailable`, this option specifies whether to use OpenSSL or GNUTLS. This option cannot be changed at runtime. The ecelerity service must be restarted.
-
-This option can be set to the following:
-
-* `openssl` – OpenSSL is used. The following components support OpenSSL:
-
- * HTTP listener (including REST APIs)
-
- * XMPP listener
-
-* `gnutls` – GNU Transport Layer Security is used. The following components support GNUTLS:
-
- * ESMTP listener (SMTP reception)
-
- * SMTP deliveries
-
-The default value is `openssl`.
-
-
-## Scope
-
-`tls_engine` is valid in the global scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-ifavailable-fallback.md b/content/momentum/4/config/tls-ifavailable-fallback.md
deleted file mode 100644
index 245583698..000000000
--- a/content/momentum/4/config/tls-ifavailable-fallback.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_ifavailable_fallback"
-description: "tls ifavailable fallback determine the behavior if TLS negotiation fails TLS Ifavailable fallback true false Configuration Change This option is available as of version 4 1 When opportunistic TLS is enabled this option determines the behavior if the TLS negotiation fails This option can be set to the following true..."
----
-
-
-## Name
-
-tls_ifavailable_fallback — determine the behavior if TLS negotiation fails
-
-## Synopsis
-
-`TLS_Ifavailable_fallback = "true|false"`
-
-
-## Description
-
-**Configuration Change. ** This option is available as of version 4.1.
-
-When opportunistic TLS is enabled, this option determines the behavior if the TLS negotiation fails.
-
-This option can be set to the following:
-
-* `true` – Momentum will immediately try to send the message as plain-text if the remote mail exchange supports TLS but the negotiation fails.
-
-* `false` – The message is put back into the delayed queue and retried later. The retries will also be attempted with TLS. This behavior is the same as in prior Momentum versions.
-
-The default value is `true`.
-
-
-## Scope
-
-`tls_ifavailable_fallback` is valid in the binding, binding_group, domain, and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-key.md b/content/momentum/4/config/tls-key.md
deleted file mode 100644
index 563698bc9..000000000
--- a/content/momentum/4/config/tls-key.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_key"
-description: "tls key TLS key to use for outbound or inbound mail TLS Key path to key TLS Key specifies the location of the PEM encoded key associated with the certificate if the key is not contained within the certificate file Both TLS Certificate and TLS Key are optional and the..."
----
-
-
-## Name
-
-tls_key — TLS key to use for outbound or inbound mail
-
-## Synopsis
-
-`TLS_Key = "/path/to/key"`
-
-
-## Description
-
-TLS_Key specifies the location of the PEM encoded key associated with the certificate if the key is not contained within the certificate file. Both TLS_Certificate and TLS_Key are optional and the default behavior is to not present a client certificate to the remote mail exchange at all.
-
-
-## Scope
-
-`tls_key` is valid in the ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group and peer scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-protocols.md b/content/momentum/4/config/tls-protocols.md
deleted file mode 100644
index 3215cc432..000000000
--- a/content/momentum/4/config/tls-protocols.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-lastUpdated: "06/03/2026"
-title: "tls_protocols"
-description: "tls protocols allowable ciphers for TLS inbound and outbound sessions tls protocols baseprotocol additional protocols Configuration Change This option is available as of version 4 1 0 2 tls protocols specifies the allowable protocols for an Open SSL TLS session The available protocols are ALL SS Lv 2 SS Lv..."
----
-
-
-## Name
-
-tls_protocols — allowable ciphers for TLS inbound and outbound sessions
-
-## Synopsis
-
-`tls_protocols = "+[:[+|-]
-## Description
-
-`tls_protocols` specifies the allowable protocols for an OpenSSL TLS session. Momentum parses the
-tokens `ALL`, `SSLv2`, `SSLv3`, `TLSv1.0`, `TLSv1.1`, `TLSv1.2` and `TLSv1.3` (the last since Momentum
-4.6). Each is enabled or disabled by prefixing its name with a “+” or “-“ respectively. The following example disables the older protocols, leaving TLS 1.2 and TLS 1.3:
-
-`TLS_Protocols = "+ALL:-SSLv3:-TLSv1.0:-TLSv1.1"`
-
-This option has no meaning for GNUTLS.
-
-The default value is “+ALL”.
-
-### Note
-
-The tokens above are still accepted for backward compatibility, but which protocols can **actually** be negotiated is determined by the OpenSSL build (1.1.1, as on RHEL 8, through the 3.x series) and — on distributions that ship one — the system-wide crypto policy:
-
-* **SSLv2** — removed from OpenSSL as of 1.1.0 and never negotiated. Momentum builds its contexts with `TLS_method()`, so the `SSLv2` token has no effect.
-
-* **SSLv3** — insecure and disabled by default; platform OpenSSL packages (including RHEL 8) typically compile it out or block it via the crypto policy. Treat it as unavailable.
-
-* **TLSv1.0 / TLSv1.1** — deprecated; still implemented by OpenSSL but commonly disabled by the OS crypto policy. For example, the RHEL 8 DEFAULT policy permits only TLS 1.2 and TLS 1.3, so enabling these tokens has no effect there.
-
-* **TLSv1.2 / TLSv1.3** — the protocols in normal use.
-
-As a result, `+ALL` no longer implies SSLv2 or SSLv3, and on a typical RHEL 8 deployment it resolves to TLS 1.2 and TLS 1.3 only.
-
-
-## Scope
-
-`tls_protocols` is valid in the binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group and peer scopes.
diff --git a/content/momentum/4/config/tls-verified-peer-is-authorized.md b/content/momentum/4/config/tls-verified-peer-is-authorized.md
deleted file mode 100644
index 92f396e48..000000000
--- a/content/momentum/4/config/tls-verified-peer-is-authorized.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_verified_peer_is_authorized"
-description: "tls verified peer is authorized Marks requests that use a verified SSL Client certificate as being authorized TLS Verified Peer Is Authorized true false This option marks requests that use a verified SSL Client certificate as being authorized The default value is false tls verified peer is authorized is valid..."
----
-
-
-## Name
-
-tls_verified_peer_is_authorized — Marks requests that use a verified SSL Client certificate as being authorized
-
-## Synopsis
-
-`TLS_Verified_Peer_Is_Authorized = "true|false"`
-
-
-## Description
-
-This option marks requests that use a verified SSL Client certificate as being authorized.
-
-The default value is `false`.
-
-
-## Scope
-
-`tls_verified_peer_is_authorized` is valid in the http_listener, listen, pathway, and peer scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-verify-mode.md b/content/momentum/4/config/tls-verify-mode.md
deleted file mode 100644
index 6ae6f4fe6..000000000
--- a/content/momentum/4/config/tls-verify-mode.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_verify_mode"
-description: "tls verify mode determine whether a TLS certificate is required TLS Verify Mode none require This option determines whether a TLS certificate is required for inbound mail if TLS is started It is not a means for requiring TLS Momentum does have an authentication hook core validate auth hook for..."
----
-
-
-## Name
-
-tls_verify_mode — determine whether a TLS certificate is required
-
-## Synopsis
-
-`TLS_Verify_Mode = "none|require"`
-
-
-## Description
-
-This option determines whether a TLS certificate is required for inbound mail, *if* TLS is started. *It is not a means for requiring TLS* .
-
-Momentum does have an authentication hook (core_validate_auth_hook) for Lua scripts to handle authentication results. Additionally, if the connection has been upgraded to TLS, the vctx will contain the key `tls` with a value of `on`. Using these two methods, you should be able to require successful authentication and a TLS connection.
-
-This option can be set to the following:
-
-* `none` – No client certificate is required, and any certificate presented is ignored. If an invalid certificate is presented, no action is taken.
-
-* `require` – A client certificate is required, and it will be verified. If an invalid certificate is presented, the policy scripts determine the action taken.
-
-* *not specified* – A client certificate is optional, and any certificate presented will be verifed. However, there is no built-in action based on whether the certificate passes or fails verification. The policy scripts determine the action taken.
-
-By default, this option is not specified.
-
-
-## Scope
-
-`tls_verify_mode` is valid in the listener, listen, peer and pathway scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/tls-verify.md b/content/momentum/4/config/tls-verify.md
deleted file mode 100644
index 67f36e3e9..000000000
--- a/content/momentum/4/config/tls-verify.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tls_verify"
-description: "tls verify specify how to handle the remote presented certificate TLS Verify no ca host optional Configuration Change Support for GNUTLS is available as of version 4 1 for SMTP reception and SMTP deliveries only If TLS is set to required or ifavailable and TLS is negotiated with the remote..."
----
-
-
-## Name
-
-tls_verify — specify how to handle the remote presented certificate
-
-## Synopsis
-
-`TLS_Verify = "no|ca|host|optional"`
-
-
-## Description
-
-**Configuration Change. ** Support for GNUTLS is available as of version 4.1 for SMTP reception and SMTP deliveries only.
-
-If TLS is set to `required` or `ifavailable` and TLS is negotiated with the remote mail exchange, this option specifies how the remote presented certificate should be handled.
-
-This option can be set to the following:
-
-* `no` – The certificate will not be checked. Given the number of self-signed certificates used on mail hosts, this setting is probably the most useful.
-
-* `ca` – The connection will only proceed if the certificate presented is signed by a valid certificate authority listed in the CA list specified by TLS_Ca.
-
-* `host` – In addition to requiring that the certificate be signed by a valid certificate authority, the common name presented in the certificate must either exactly match the domain or mail exchange to which we are connected. If this verification fails, delivery fails.
-
-* `optional` – Performs the same verification as the `host` setting but allows delivery if the verification fails.
-
-### Note
-
-For custom behavior create a C module that uses the [outbound_smtp_tls_verify_callback](/momentum/3/3-api/hooks-core-outbound-smtp-tls-verify-callback) and [inbound_smtp_tls_verify_callback](/momentum/3/3-api/hooks-core-inbound-smtp-tls-verify-callback) hooks.
-
-The default value is `no`.
-
-
-## Scope
-
-`tls_verify` is valid in the binding, binding_group, domain and global scopes.
\ No newline at end of file
diff --git a/content/momentum/4/config/tlsa-expire-interval.md b/content/momentum/4/config/tlsa-expire-interval.md
deleted file mode 100644
index 08652e728..000000000
--- a/content/momentum/4/config/tlsa-expire-interval.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-lastUpdated: "06/01/2024"
-title: "tlsa_expire_interval"
-description: "tlsa expire interval how often to check for expired TLSA DNS records"
----
-
-## Name
-
-tlsa_expire_interval — how often to check for expired TLSA records.
-
-## Synopsis
-
-`tlsa_expire_interval = 3600`
-
-## Description
-
-How often the garbage collector should check for expired TLSA records. During email delivery,
- a related TLSA record will be checked for expiration and removed from memory if expired.
- The purpose of garbage collection controlled by this configuration option is to retire
- the stale TLSA records which are not actively in use.
-
-The default is `3600` seconds.
-
-## Scope
-
-`tlsa_expire_interval` is valid in the global scope.
diff --git a/content/momentum/4/config/tlsv13-ciphersuites.md b/content/momentum/4/config/tlsv13-ciphersuites.md
deleted file mode 100644
index 0482f121a..000000000
--- a/content/momentum/4/config/tlsv13-ciphersuites.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-lastUpdated: "06/03/2026"
-title: "tlsv13_ciphersuites"
-description: "specify allowable ciphersuites for TLS inbound and outbound sessions when TLSv1.3 protocol is negotiated and used"
----
-
-
-## Name
-
-tlsv13_ciphersuites — specify allowable TLSv1.3 ciphersuites for TLS inbound and outbound sessions
-
-## Synopsis
-
-`TLSv13_Ciphersuites = "[:]"`
-
-## Description
-
-**Configuration Change. ** This option is available as of version 4.6, for SMTP reception, HTTP reception, and SMTP deliveries only.
-
-This option specifies the allowable ciphersuites for a TLS session using TLSv1.3 protocol. The
-allowable ciphersuites must be a subset of the available TLSv1.3 ciphersuites on the host system.
-
-**OpenSSL**
-
-When TLS_Engine is set to `openssl`, `TLSv13_Ciphersuites` specifies a "ciphersuite list", which is a
-colon (":") separated list of the supported TLSv1.3 ciphersuite names in order of preference.
-There are 5 valid TLSv1.3 ciphersuites, supported across the full OpenSSL range used by Momentum (1.1.1 — as on RHEL 8 — through the 3.x series):
-```
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_GCM_SHA256
- TLS_AES_128_CCM_8_SHA256
- TLS_AES_128_CCM_SHA256
-```
-By default (if not explicitly specified through this configuration option), only the first three are enabled.
-On the host machine, `openssl ciphers -s -tls1_3` can show the default TLSv1.3 ciphersuites;
-`openssl ciphers -tls1_3 -v -s -ciphersuites TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256` can
-check whether the last two ciphersuites are supported if enabled.
-For more information about the TLSv1.3 ciphersuites, see
-[https://wiki.openssl.org/index.php/TLS1.3#Ciphersuites](https://wiki.openssl.org/index.php/TLS1.3#Ciphersuites).
-
-
-* To set the option to all 5 supported TLSv1.3 ciphersuites:
-
-```
-TLSv13_Ciphersuites = "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256"
-```
-
-The default value (when this option is left unset) is
-`"TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"`.
-
-**GNUTLS**
-
-This option has no meaning for GNUTLS.
-
-
-### Note
-This option is new in Momentum 4.6.
-
-## Scope
-
-`tlsv13_ciphersuites` is valid in the binding, binding_group, domain, esmtp_listener, global, http_listener, listen, pathway, pathway_group and peer scopes.
diff --git a/content/momentum/4/config/tracking-domain.md b/content/momentum/4/config/tracking-domain.md
deleted file mode 100644
index 00d6b1602..000000000
--- a/content/momentum/4/config/tracking-domain.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tracking_domain"
-description: "tracking domain set the tracking domain to use for engagement tracking in SMTP injections tracking domain localhost 8080 Configuration Change This option is available as of version 4 1 HF 4 If open or click tracking is enabled this option sets the tracking domain to use in the hyperlink for..."
----
-
-
-## Name
-
-tracking_domain — set the tracking domain to use for engagement tracking in SMTP injections
-
-## Synopsis
-
-`tracking_domain = "localhost:8080"`
-
-
-## Description
-
-**Configuration Change. ** This option is available as of version 4.1-HF4.
-
-If open or click tracking is enabled, this option sets the tracking domain to use in the hyperlink for engagement tracking in SMTP-injected messages.
-
-The default value is `localhost:8080`.
-
-The corresponding context variable is `smtpapi_tracking_domain`. There is no corresponding X-MSYS-API header field.
-
-
-## Scope
-
-`tracking_domain` is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/tracking-link-expiry.md b/content/momentum/4/config/tracking-link-expiry.md
deleted file mode 100644
index 6344f0b8b..000000000
--- a/content/momentum/4/config/tracking-link-expiry.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "tracking_link_expiry"
-description: "tracking link expiry set the expiration time for engagement tracking for SMTP injections Tracking Link Expiry 31536000 Configuration Change This option is available as of version 4 1 HF 4 If open or click tracking is enabled this option determines the amount of time in seconds that Momentum will wait..."
----
-
-
-## Name
-
-tracking_link_expiry — set the expiration time for engagement tracking for SMTP injections
-
-## Synopsis
-
-`Tracking_Link_Expiry = 31536000`
-
-
-## Description
-
-**Configuration Change. ** This option is available as of version 4.1-HF4.
-
-If open or click tracking is enabled, this option determines the amount of time, in seconds, that Momentum will wait for an engagement event in SMTP-injected messages.
-
-This option can be set to any integer value.
-
-The default value is `31536000` seconds (365 days).
-
-The corresponding context variable is `smtpapi_tracking_link_expiry`. There is no corresponding X-MSYS-API header field.
-
-
-## Scope
-
-`tracking_link_expiry` is valid in the esmtp_listener, listen, pathway, pathway_group, and peer scope.
\ No newline at end of file
diff --git a/content/momentum/4/config/use-dane.md b/content/momentum/4/config/use-dane.md
deleted file mode 100644
index de88605ac..000000000
--- a/content/momentum/4/config/use-dane.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "06/01/2024"
-title: "use_dane"
-description: "config option to enable DANE TLSA DNS lookup for a domain"
----
-
-
-## Name
-
-use_dane — specify whether Momentum should check DNS record DNSSEC status and look up TLSA
- records if applicable.
-
-## Synopsis
-
-`use_dane = "true|false"`
-
-## Description
-
-This option is only effective when [dane module](/momentum/4/modules/dane) is configured.
-
-This option specifies whether Momentum shall check the DNSSEC status of a domain's MX and A record,
- and if both pass DNSSEC validation, corresponding TLSA record will be fetched and DNSSEC status
- checked.
-
-The default value is `false`.
-
-
-## Scope
-
-`use_dane` is valid in the domain and global scopes.
diff --git a/content/momentum/4/console-commands/4-mailq.md b/content/momentum/4/console-commands/4-mailq.md
deleted file mode 100644
index bebc1fb29..000000000
--- a/content/momentum/4/console-commands/4-mailq.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "05/08/2023"
-title: "mailq"
-description: "mailq show the status of the mail queues mailq domain d domain name binding b binding name limit l number When issued with no arguments this command shows counts for the active queue and the delayed queues sorted by binding groups and bindings Sample output is shown below The Group..."
----
-
-
-## Name
-
-mailq — show the status of the mail queues
-
-## Synopsis
-
-`mailq` [ --domain | -d *`domain_name`* ... ] [ --binding | -b *`binding_name`* ... ] [ --limit | -l *`number`* ]
-
-
-## Description
-
-When issued with no arguments this command shows counts for the active queue and the delayed queues sorted by binding groups and bindings. Sample output is shown below:
-
-```
-Group/Binding Domain AQ DQ
---------------------------------------------------------------------------
-default/default yahoo.com 11 0
-default/gmail gmail.com 25 5
-default/#mmove gmail.com 0 0
-```
-
-The `Group/Binding` column shows the group and the binding that a domain belongs to. The `default/#move` entry under the `Group/Binding` column is the cluster message movement binding in the `default` binding. This is a virtual binding for moving messages between nodes. `AQ` shows the items in the active queue and `DQ` shows the items in the delayed queue.
-
-Use this command with the `--domain` *`domain_name`* argument to show the statistics for a specific domain. Any number of domains may be specified. The `--binding` option is used in the same way. Limit the output by using the --limit *`number`* option. The default value for `--limit` is `20`.
-
-## Attention
-
-On a busy system, if this command is run frequently, it may result in a Momentum watchdog restart. If `mailq` data is needed multiple times per hour then it is recommended to use the [mailq HTTP endpoint](/momentum/4/http-api-stats/queues-mailq.md) instead.
diff --git a/content/momentum/4/console-commands/4-memory.md b/content/momentum/4/console-commands/4-memory.md
deleted file mode 100644
index c4dd146c3..000000000
--- a/content/momentum/4/console-commands/4-memory.md
+++ /dev/null
@@ -1,155 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "memory"
-description: "memory report detailed memory usage memory memory type The memory command provides a detailed overview of the type count and size of the various memory objects that Momentum uses internally Sample output is displayed below The output of this command can be used to diagnose memory growth issues and help..."
----
-
-
-## Name
-
-memory — report detailed memory usage
-
-## Synopsis
-
-`memory` [ *`memory_type`* ]
-
-
-## Description
-
-The **memory** command provides a detailed overview of the type, count and size of the various memory objects that Momentum uses internally. Sample output is displayed below:
-
-```
-10:47:35 /tmp/2025> memory
- memory buf active peak allocd current
- type size objects objects objects bytes
------------------------------- ------ ------- ------- ------- ---------
- Event 36 15 16 101 4096
- Skiplist 28 75 75 127 4096
- domain_record 76 1 1 50 4096
- mx_record 12 1 1 254 4096
- host_record 44 1 1 84 4096
- email_message 136 1 1 29 4096
- RSplayTree 20 7 7 169 4096
- cidrnode_ipv4 32 6 6 127 4096
- time_series 24 1 1 169 4096
- skiplistnode(1) 28 53 56 127 4096
- skiplistnode(2) 36 12 15 101 4096
- skiplistnode(3) 44 5 8 84 4096
- skiplistnode(4) 52 2 2 72 4096
- binding_domain_stats 120 1 1 33 4096
- int32 4 62 62 508 4096
- ec_hash_table 24 25 25 169 4096
- ec_hash_bucket 16 889 889 1016 16384
- message_list 20 0 1 169 4096
- _dq_list 8 0 1 508 4096
- ip_acl 44 14 14 84 4096
- accept_construct 132 5 5 29 4096
------------------------------- ------ ------- ------- ------- ---------
- 98304
-
- memory current peak mmap
- type bytes bytes count/peak/current %
------------------------------- ----------- ----------- ---------------------
- buf_storage 16384 16384
- message_body 17 17
- sieve 113 113
- string 8802 8802
- snmp 32768 32768
- ec_cache_key 42 42
- ec_interface 72 72
- ecdict 53503 53503
- ec_fc_fifo 6576128 6576128
- ds_core:datasource 3276 3276
- statp:vsize 429 429
- scriptlet 14957 14957
- scriptlet:lua 221427 221427
------------------------------- ----------- ----------- ---------------------
- 6927918
-
-RSS: 8658726 8,658,726 1.66%
-System RSS: 115417088 115,417,088 22.08%
-```
-
-The output of this command can be used to diagnose memory growth issues and help determine whether custom modules are leaking memory. The output consists of three parts: memory usage of objects whose size is fixed, memory usage of objects whose size is not fixed, and RSS (resident set size).
-
-You can provide output in XML format using the **xml memory** command. You can also pass a memory type as an argument by issuing the **memory** command Valid memory types are those listed under the "memory type" column.
-
-The column names used in the first part for fixed-size objects are:
-
-
-
-- memory type
-
--
-
-The name of active objects. Any values shown in this column are valid memory types when the memory command is issued with a parameter.
-
-
-
-- buf size
-
--
-
-The size of a memory type.
-
-
-
-- active objects
-
--
-
-Number of active objects for a memory type.
-
-
-
-- peak objects
-
--
-
-Peak number of active objects ever used for a memory type.
-
-
-
-- allocd objects
-
--
-
-Number of objects pre-allocated for a memory type.
-
-
-
-- current bytes
-
--
-
-Total memory allocated for a memory type.
-
-
-
-
-
-Additional column names used for objects whose allocations are not of fixed size are:
-
-
-
-- peak bytes
-
--
-
-The peak bytes ever allocated to a memory type.
-
-
-
-- mmap count/peak/current %
-
--
-
-Percentage of memory allocations that were satisfied using mmap, when system allocators are in use.
-
-
-
-
-
-The System RSS represents the current resident set size as seen by the underlying operating system. Note that Momentum tracks its own RSS which can grow and shrink based on usage. On most Unix systems, memory is appropriated by extending a programs heap space using the sbrk() call and as such will never decrease in size.
-
-For more information about memory as it relates to the C API see [Memory Functions](/momentum/3/3-api/3-api-memory).
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/4-module.md b/content/momentum/4/console-commands/4-module.md
deleted file mode 100644
index cf5d09abd..000000000
--- a/content/momentum/4/console-commands/4-module.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "module"
-description: "module manage loaded modules online module hooks module list The module list command displays a full list of all loaded modules as illustrated below In addition to supplying information about your configuration the scope name and the instance name shown by the module list command are required when issuing module..."
----
-
-
-## Name
-
-module — manage loaded modules online
-
-## Synopsis
-
-`module hooks`
-
-`module list`
-
-
-## Description
-
-The **module list** command displays a full list of all loaded modules, as illustrated below:
-
-```
-16:48:23 /tmp/2025> module list
-Module: ec_logger:ec_logger
- Scope_Name: ec_logger
- Instance_Name: ec_logger
- Enabled: enabled
- API: Logger
- Name: ec_logger.c
- Description: Momentum minimalistic logging module
-Module: bounce_logger:bounce_logger
- Scope_Name: bounce_logger
- Instance_Name: bounce_logger
- Enabled: enabled
- API: Logger
- Name: $RCSfile: bounce_logger.c,v $
- Description: Eclerity minimalistic logging module $Revision: 1.51 $
-Module: ds_core
- Scope_Name: ds_core
- Enabled: enabled
- API: Singleton
- Name: ds_core.c
- Description: generic datasource module
-...
-```
-
-In addition to supplying information about your configuration, the scope name and the instance name shown by the **module list** command are required when issuing module-specific commands. For more information, see [“Using Module-Specific Console Commands”](/momentum/4/4-module-specific-console-commands-using).
-
-The **module hooks** command displays all the dynamic hooks in the system, along with each hook's prototype. The output should be similar to the following:
-
-```
-core_config_get_domain_bounces_inline_original_data
- int(generic_module_infrastructure*,int*,constchar*,void**)
-core_config_get_reserve_maintenance_interval_data
- int(generic_module_infrastructure*,int*,void**)
-...
-```
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/active.md b/content/momentum/4/console-commands/active.md
deleted file mode 100644
index b9fa19b7a..000000000
--- a/content/momentum/4/console-commands/active.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "active"
-description: "active show domains with active queue size bigger than threshold active threshold The active command presents information concerning the domains with a large number of active messages in queue The command takes a single positive integer as an argument which specifies the threshold of interest The output will include all..."
----
-
-
-## Name
-
-active — show domains with active queue size bigger than threshold
-
-## Synopsis
-
-`active` { *`threshold`* }
-
-
-## Description
-
-The **active** command presents information concerning the domains with a large number of active messages in queue. The command takes a single positive integer as an argument which specifies the threshold of interest. The output will include all domains whose active queues exceed the integer specified.
-
-```
-10:57:39 ecelerity> active 100
-Domain: c4.com C: 0 A: 104 D: 0 S: 47
-Domain: dellnet.com C: 0 A: 102 D: 460 S: 1540
-Domain: earthlink.com C: 60 A: 315 D: 192 S: 1957
-Domain: iopener.net C: 0 A: 124 D: 200 S: 860
-Domain: jps.net C: 29 A: 114 D: 471 S: 2561
-Domain: pa.net C: 30 A: 119 D: 31 S: 274
-Domain: peoplepc.com C: 0 A: 473 D: 1262 S: 7758
-Domain: sprintmail.com C: 32 A: 120 D: 71 S: 898
-Domain: xoommail.com C: 0 A: 102 D: 0 S: 55
-Domain: yesic.com C: 0 A: 124 D: 0 S: 56
- Total: C: 616 A: 22965 D: 34427 S:1954767
-```
-
-
-
-- C
-
--
-
-current number of connections
-
-
-
-- A
-
--
-
-current size of the active queue
-
-
-
-- D
-
--
-
-current size of the delayed queue
-
-
-
-- S
-
--
-
-total messages sent during the life of the domain record
-
-
-
-
-
-The row detailing the totals represents the totals across *all* domains, not just those listed.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/authz-id.md b/content/momentum/4/console-commands/authz-id.md
deleted file mode 100644
index 48af251ff..000000000
--- a/content/momentum/4/console-commands/authz-id.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "authz id"
-description: "authz id display the id of the current user authz id This command displays the id of the current system console user in XML format any roles associated with that user are also displayed If you are logged in as a user named tom who belongs to the group users..."
----
-
-
-## Name
-
-authz id — display the id of the current user
-
-## Synopsis
-
-`authz id`
-
-
-## Description
-
-This command displays the id of the current system console user in XML format; any roles associated with that user are also displayed.
-
-If you are logged in as a user named `tom` who belongs to the group `users`, you should see the following output:
-
-```
-
-
-
-
-
-```
-
-## See Also
-
-[authz roles list](/momentum/4/console-commands/authz-roles-list)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/authz-roles-list.md b/content/momentum/4/console-commands/authz-roles-list.md
deleted file mode 100644
index de8602ff9..000000000
--- a/content/momentum/4/console-commands/authz-roles-list.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "authz roles list"
-description: "authz roles list display the currently defined roles authz roles list This command displays all the defined roles in XML format Execute this command and you should see output similar to the following authz id..."
----
-
-
-## Name
-
-authz roles list — display the currently defined roles
-
-## Synopsis
-
-`authz roles list`
-
-
-## Description
-
-This command displays all the defined roles in XML format.
-
-Execute this command and you should see output similar to the following:
-
-```
-
-
-
-
-
-
-```
-
-## See Also
-
-[authz id](/momentum/4/console-commands/authz-id)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/binding-active.md b/content/momentum/4/console-commands/binding-active.md
deleted file mode 100644
index d9c94ce28..000000000
--- a/content/momentum/4/console-commands/binding-active.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "binding active"
-description: "binding active show domains with active queue size bigger than threshold on a specified binding binding active binding name threshold The binding active command presents information concerning the domains on a given binding with a large number of active messages in queue The command takes a binding name and a..."
----
-
-
-## Name
-
-binding active — show domains with active queue size bigger than threshold on a specified binding
-
-## Synopsis
-
-`binding active` { *`binding_name`* } { *`threshold`* }
-
-
-## Description
-
-The **binding active** command presents information concerning the domains on a given binding with a large number of active messages in queue. The command takes a binding name and a single positive integer as an argument which specifies the threshold of interest. The output will include all domains on the given binding whose active queues exceed the integer specified.
-
-```
-10:47:35 /tmp/2025> binding active BINDING1 100
-Domain: c4.com C: 0 A: 104 D: 0 S: 47
-Domain: dellnet.com C: 0 A: 102 D: 460 S: 1540
-Domain: earthlink.com C: 60 A: 315 D: 192 S: 1957
-Domain: iopener.net C: 0 A: 124 D: 200 S: 860
-Domain: jps.net C: 29 A: 114 D: 471 S: 2561
-Domain: pa.net C: 30 A: 119 D: 31 S: 274
-Domain: peoplepc.com C: 0 A: 473 D: 1262 S: 7758
-Domain: sprintmail.com C: 32 A: 120 D: 71 S: 898
-Domain: xoommail.com C: 0 A: 102 D: 0 S: 55
-Domain: yesic.com C: 0 A: 124 D: 0 S: 56
- Total: C: 616 A: 22965 D: 34427 S:1954767
-```
-
-
-
-- C
-
--
-
-current number of connections
-
-
-
-- A
-
--
-
-current size of the active queue
-
-
-
-- D
-
--
-
-current size of the delayed queue
-
-
-
-- S
-
--
-
-total messages sent during the life of the domain record
-
-
-
-
-
-The row detailing the totals represents the totals across *all* domains on the given binding, not just those listed.
-
-
-## See Also
-
-[binding delayed](/momentum/4/console-commands/binding-delayed)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/binding-delayed.md b/content/momentum/4/console-commands/binding-delayed.md
deleted file mode 100644
index 35180aa57..000000000
--- a/content/momentum/4/console-commands/binding-delayed.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "binding delayed"
-description: "binding delayed show domains with delayed queue size bigger than threshold on a specified binding binding delayed binding name threshold The binding delayed command presents information concerning the domains on a particular binding with a large number of delayed messages in queue The command takes a binding name and a..."
----
-
-
-## Name
-
-binding delayed — show domains with delayed queue size bigger than threshold on a specified binding
-
-## Synopsis
-
-`binding delayed` { *`binding_name`* } { *`threshold`* }
-
-
-## Description
-
-The **binding delayed** command presents information concerning the domains on a particular binding with a large number of delayed messages in queue. The command takes a binding name and a single positive integer as an argument which specifies the threshold of interest. The output will include all domains on the given binding whose delayed queues exceed the integer specified.
-
-```
-10:47:35 /tmp/2025> binding delayed BINDING1 1000
-Domain: mailcity.com C: 0 A: 9 D: 1169 S: 16838
-Domain: peoplepc.com C: 0 A: 575 D: 1180 S: 7735
-Domain: sina.com C: 3 A: 1 D: 1232 S: 1069
- Total: C: 532 A: 22692 D: 34915 S:1953716
-```
-
-
-
-- C
-
--
-
-current number of connections
-
-
-
-- A
-
--
-
-current size of the active queue
-
-
-
-- D
-
--
-
-current size of the delayed queue
-
-
-
-- S
-
--
-
-total messages sent during the life of the domain record
-
-
-
-
-
-The row detailing the totals represents the totals across *all* domains on the given binding, not just those listed.
-
-
-## See Also
-
-[binding active](/momentum/4/console-commands/binding-active)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/binding-fail-domain-quiet.md b/content/momentum/4/console-commands/binding-fail-domain-quiet.md
deleted file mode 100644
index 217a85a6a..000000000
--- a/content/momentum/4/console-commands/binding-fail-domain-quiet.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-lastUpdated: "06/24/2026"
-title: "binding fail domain quiet"
-description: "binding fail domain quiet ec_console selective purge --meta --header filter by binding --dry-run preview"
----
-
-
-## Name
-
-binding fail domain quiet — fail messages for a domain on a binding without generating bounces
-
-## Synopsis
-
-`binding fail domain quiet` [ `--dry-run` ] [ `--meta` *`key`* *`value`* | `--header` *`header_name`* *`header_line`* ] { *`binding_name`* } { *`domain_name`* | `all` } [ *`note`* … ]
-
-
-## Description
-
-The **binding fail domain quiet** command allows the administrative failure of all messages bound for the specified domain on the specified binding in such a way that no bounce is sent, even if Generate_Bounces is set in the server configuration. Its usage is similar to **binding fail domain** :
-
-```
-ecelerity> binding fail domain quiet BINDING1 unresolvableproblems.com
-unresolvableproblems.com purged, 62415 messages failed.
-```
-
-You may substitute `all` for the domain name to apply to all domains.
-
-```
-ecelerity> binding fail domain quiet BINDING1 all
-All domains purged. 62415 messages failed.
-```
-
-
-### Selective purge (optional filter)
-
-Optional **`--meta`** / **`--header`** clauses use the same matching rules as [**fail domain quiet**](/momentum/4/console-commands/fail-domain-quiet#fail_domain_quiet_selective). **`--header`** uses [**physical-line matching**](/momentum/4/console-commands/fail-domain-quiet#header_filter_physical_lines). Place **at most one** clause immediately after `binding fail domain quiet` and **before** the binding name. Only messages on that binding that match the filter (and domain / `all`) are failed.
-
-For a binding-agnostic global purge by filter only, see [**fail all quiet**](/momentum/4/console-commands/fail-all-quiet).
-
-```
-ecelerity> binding fail domain quiet --header X-Priority high BINDING1 unresolvableproblems.com
-unresolvableproblems.com purged. 3 messages failed.
-```
-
-
-### Preview without failing (`--dry-run`)
-
-Add **`--dry-run`** to preview the command **without failing any messages**. The queue is left untouched; the messages that would be failed are listed (capped) and followed by a summary count:
-
-```
-ecelerity> binding fail domain quiet --dry-run BINDING1 unresolvableproblems.com
- 3A/0F-04217-1A3F9C2B domain=unresolvableproblems.com from= to=
- 7C/1B-04217-2B4E0D8A domain=unresolvableproblems.com from= to=
- ...
-[dry-run] unresolvableproblems.com: 62415 messages would be failed. (Showing first 25; 62390 more not listed.)
-```
-
-When the domain is `all`, the summary reports `[dry-run] all domains: …`. See [**fail domain quiet** → preview](/momentum/4/console-commands/fail-domain-quiet#fail_domain_quiet_dry_run) for the full description of the listing, the 25-message cap, and placement. **`--dry-run`** combines with the optional `--meta` / `--header` filter and is never consumed as part of the *note*.
-
-
-## See Also
-
-[binding fail domain](/momentum/4/console-commands/binding-fail-domain) · [fail all quiet](/momentum/4/console-commands/fail-all-quiet)
diff --git a/content/momentum/4/console-commands/binding-fail-domain.md b/content/momentum/4/console-commands/binding-fail-domain.md
deleted file mode 100644
index e996ec00e..000000000
--- a/content/momentum/4/console-commands/binding-fail-domain.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-lastUpdated: "06/24/2026"
-title: "binding fail domain"
-description: "binding fail domain ec_console selective purge --meta --header filter custom bounce message --dry-run preview"
----
-
-
-## Name
-
-binding fail domain — fail messages for a domain on a binding with a bounce message
-
-## Synopsis
-
-`binding fail domain` [ `--dry-run` ] [ `--meta` *`key`* *`value`* | `--header` *`header_name`* *`header_line`* ] { *`binding_name`* } { *`domain_name`* | `all` } [ *`message`* … ]
-
-
-## Description
-
-The **binding fail domain** command allows the administrative failure of all messages bound for the specified domain on the specified binding. If political issues arise that cannot be resolved or if the domain has been discontinued, it may be necessary to fail all of the messages to that domain. Unless an optional message is passed, all failed messages will be assigned the following administrative failure message: "554 Message manually purged."
-
-For example, the following command could be used to fail all messages for the domain unresolvableproblems.com on the binding BINDING1.
-
-```
-10:47:35 /tmp/2025> binding fail domain BINDING1 unresolvableproblems.com
-unresolvableproblems.com purged, 62415 messages failed.
-```
-
-You may substitute `all` for the domain name to apply to all domains.
-
-```
-10:47:35 /tmp/2025> binding fail domain BINDING1 all
-All domains purged. 62415 messages failed.
-```
-
-To pass in a custom failure message, you can append it to your command line, for instance:
-
-```
-10:47:35 /tmp/2025> binding fail domain BINDING1 unresolvableproblems.com 554 Administratively failed by Bob
-unresolvableproblems.com purged. 62415 messages failed.
-```
-
-
-### Selective purge (optional filter)
-
-Optional **`--meta`** / **`--header`** filtering matches [**fail domain quiet**](/momentum/4/console-commands/fail-domain-quiet#fail_domain_quiet_selective); **`--header`** respects [**physical-line matching**](/momentum/4/console-commands/fail-domain-quiet#header_filter_physical_lines). Place **at most one** clause after `binding fail domain` and before the binding name. Remaining tokens after the domain (or `all`) are still treated as the optional custom failure message when present.
-
-To fail messages by the same filter **without** naming a binding or domain, use [**fail all**](/momentum/4/console-commands/fail-all) or [**fail all quiet**](/momentum/4/console-commands/fail-all-quiet) instead (filter **required**).
-
-```
-10:47:35 /tmp/2025> binding fail domain --meta mo_campaign_id promo BINDING1 unresolvableproblems.com 554 Purged campaign
-unresolvableproblems.com purged. 5 messages failed.
-```
-
-
-### Preview without failing (`--dry-run`)
-
-Add **`--dry-run`** to preview the command **without failing any messages**. The queue is left untouched; the messages that would be failed are listed (capped) and followed by a summary count:
-
-```
-10:47:35 /tmp/2025> binding fail domain --dry-run BINDING1 unresolvableproblems.com
- 3A/0F-04217-1A3F9C2B domain=unresolvableproblems.com from= to=
- 7C/1B-04217-2B4E0D8A domain=unresolvableproblems.com from= to=
- ...
-[dry-run] unresolvableproblems.com: 62415 messages would be failed. (Showing first 25; 62390 more not listed.)
-```
-
-When the domain is `all`, the summary reports `[dry-run] all domains: …`. See [**fail domain quiet** → preview](/momentum/4/console-commands/fail-domain-quiet#fail_domain_quiet_dry_run) for the full description of the listing, the 25-message cap, and placement. **`--dry-run`** combines with the optional `--meta` / `--header` filter and is never consumed as part of the custom failure message.
-
-
-## See Also
-
-[binding fail domain quiet](/momentum/4/console-commands/binding-fail-domain-quiet) · [fail all](/momentum/4/console-commands/fail-all)
diff --git a/content/momentum/4/console-commands/binding-flush-domain.md b/content/momentum/4/console-commands/binding-flush-domain.md
deleted file mode 100644
index 68e30a339..000000000
--- a/content/momentum/4/console-commands/binding-flush-domain.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "binding flush domain"
-description: "binding flush domain perform delivery attempt on delayed queue of a domain on a binding binding flush domain binding name domain name The binding flush domain command takes a domain name and a binding name as arguments and immediately performs a delivery attempt for each message in the delayed queue..."
----
-
-
-## Name
-
-binding flush domain — perform delivery attempt on delayed queue of a domain on a binding
-
-## Synopsis
-
-`binding flush domain` { *`binding_name`* } { *`domain_name`* }
-
-
-## Description
-
-The **binding flush domain** command takes a domain name and a binding name as arguments and immediately performs a delivery attempt for each message in the delayed queue for that domain/binding pair.
-
-Momentum has its own reattempt schedule based on the the number of previous attempts and the retry_interval configuration parameter (see [retry_interval](/momentum/4/config/ref-retry-interval) for details). Issuing this command will cause Momentum to disregard its internally calculated time of next attempt for each message in the delayed queue and set it to "now."
-
-If a remote domain (just-revived.com) has had delivery problems and has just come "back online," all messages to that domain on the binding BINDING1 could be immediately attempted by performing the following command:
-
-```
-10:47:35 /tmp/2025> binding flush domain BINDING1 just-revived.com
-just-revived.com flushed. 12521 messages requeued.
-```
-
-You may substitute `all` for the domain name to apply to all domains.
-
-
-## See Also
-
-[message_expiration](/momentum/4/config/ref-message-expiration)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/binding-summary.md b/content/momentum/4/console-commands/binding-summary.md
deleted file mode 100644
index b562be731..000000000
--- a/content/momentum/4/console-commands/binding-summary.md
+++ /dev/null
@@ -1,188 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "binding summary"
-description: "binding summary show binding statistics binding summary binding name binding slot group binding group binding summary will produce metrics such as queue sizes message counts and throughput rates since startup over all the bindings If a specific binding name binding slot or binding group name is given the metrics will..."
----
-
-
-## Name
-
-binding summary — show binding statistics
-
-## Synopsis
-
-`binding summary` [ *``* | *``* | group:*``* ]
-
-
-## Description
-
-**binding summary** will produce metrics such as queue sizes, message counts and throughput rates since startup over all the bindings. If a specific binding name, binding slot or binding group name is given, the metrics will be for the specified binding or binding group.
-
-```
-10:47:35 /tmp/2025> binding summary
-Summary Statistics For Binding default
- Open Connections: 0
- Active Queue Size: 0
- Total Queue Size: 12
- Successfully Delivered Messages: 0
- Failed Messages: 0
- Received Messages: 0
- Resident Messages: 0
- Delivery Rate: 0.00 messages/second
- Reception Rate: 0.00 messages/second
- Uptime: 590 seconds
-Summary Statistics For Binding example
- Open Connections: 0
- Active Queue Size: 0
- Total Queue Size: 0
- Successfully Delivered Messages: 506
- Failed Messages: 0
- Received Messages: 506
- Resident Messages: 0
- Delivery Rate: 0.86 messages/second
- Reception Rate: 0.86 messages/second
- Uptime: 590 seconds
-Summary Statistics For Binding example2
- Open Connections: 0
- Active Queue Size: 0
- Total Queue Size: 0
- Successfully Delivered Messages: 494
- Failed Messages: 0
- Received Messages: 494
- Resident Messages: 0
- Delivery Rate: 0.84 messages/second
- Reception Rate: 0.84 messages/second
- Uptime: 590 seconds
-
-09:37:38 ecelerity(/tmp/2025)> binding summary example
-Summary Statistics For Binding example
- Open Connections: 0
- Active Queue Size: 0
- Total Queue Size: 0
- Successfully Delivered Messages: 506
- Failed Messages: 0
- Received Messages: 506
- Resident Messages: 0
- Delivery Rate: 0.85 messages/second
- Reception Rate: 0.85 messages/second
- Uptime: 596 seconds
-
-09:37:44 ecelerity(/tmp/2025)> binding summary group:group1
-Summary Statistics For Binding example in Binding Group group1
- Open Connections: 0
- Active Queue Size: 0
- Total Queue Size: 0
- Successfully Delivered Messages: 506
- Failed Messages: 0
- Received Messages: 506
- Resident Messages: 0
- Delivery Rate: 0.84 messages/second
- Reception Rate: 0.84 messages/second
- Uptime: 602 seconds
-Summary Statistics For Binding example2 in Binding Group group1
- Open Connections: 0
- Active Queue Size: 0
- Total Queue Size: 0
- Successfully Delivered Messages: 494
- Failed Messages: 0
- Received Messages: 494
- Resident Messages: 0
- Delivery Rate: 0.82 messages/second
- Reception Rate: 0.82 messages/second
- Uptime: 602 seconds
-
-********************************************
-Summary Statistics For Binding Group group1
- Open Connections: 0
- Active Queue Size: 0
- Total Queue Size: 0
- Successfully Delivered Messages: 1000
- Failed Messages: 0
- Received Messages: 1000
- Incore Messages: 0
- Delivery Rate: 1.66 messages/second
- Reception Rate: 1.66 messages/second
- Uptime: 602 seconds
-
-09:37:50 ecelerity(/tmp/2025)>
-```
-
-
-
-- Open Connections
-
--
-
-The current number of established outbound sessions.
-
-
-
-- Active Queue Size
-
--
-
-The number of messages in the system that require immediate delivery attempts.
-
-
-
-- Total Queue Size
-
--
-
-The sum of all queues.
-
-
-
-- Successfully Delivered Messages
-
--
-
-The number of messages successfully delivered by Momentum since it was started or since the last summary reset.
-
-
-
-- Failed Messages
-
--
-
-The number of outbound messages permanently failed since it was started or since the last summary reset.
-
-
-
-- Received Messages
-
--
-
-The number of message received by Momentum for deliver since it was started or since the last summary reset.
-
-
-
-- Delivery Rate
-
--
-
-The average number of messages/second delivered (successful and unsuccessful) since Momentum was started or since the last summary reset.
-
-
-
-- Reception Rate
-
--
-
-The avergage number of messages/second received for delivery since Momentum was started or since the last summary reset.
-
-
-
-- Uptime
-
--
-
-The number of seconds that Momentum has been running continuously.
-
-
-
-
-
-### Note
-
-If the name you provide is a binding group, then the output will show a listing of all the bindings that are part of that group, followed by a summary for the group.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/cache-list.md b/content/momentum/4/console-commands/cache-list.md
deleted file mode 100644
index ebb5a51de..000000000
--- a/content/momentum/4/console-commands/cache-list.md
+++ /dev/null
@@ -1,175 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "cache list"
-description: "cache list list all caches along with their associated attributes cache list attribute This command lists caches and related statistics When specific parameters such as the query rate are passed in this command displays usage by cache The cache list command is useful for determining the cache names to use..."
----
-
-
-## Name
-
-cache list — list all caches along with their associated attributes
-
-## Synopsis
-
-`cache list` [ *`attribute`* ...]
-
-
-## Description
-
-This command lists caches and related statistics. When specific parameters such as the query rate are passed in, this command displays usage by cache.
-
-```
-20:02:48 /tmp/2025> cache list
- alerting_data
- scpt_root
- core:bounce_classify
- core:pcre
- config:match
-
- 5 caches listed.
-20:02:49 /tmp/2025> cache stat core:bounce_classify
-Name : core:bounce_classify
-Capacity : 16384
-Entries : 10238
-Utilization : 62.49%
-Query Rate : 1271 q/s
-Loads : 20476
- Hits : 1527
- Misses : 18949
- Pending : 0
-Stores : 18949
-Invalidations : 8711
- Forced : 0
- Expired : 0
- Capacity : 8711
-Hit Rate : 7.46%
-Workload (R/W): 51.94%
- Reads : 20476
- Writes : 18949
-20:03:17 /tmp/2025> cache list entries workload
- 10179 80.45% alerting_data
- 22 99.97% scpt_root
- 10238 51.94% core:bounce_classify
- 0 0.00% core:pcre
- 0 0.00% config:match
-
- 5 caches listed.
-20:03:20 /tmp/2025> cache list query-rate
- 501 alerting_data
- 792 scpt_root
- 379 core:bounce_classify
- 0 core:pcre
- 0 config:match
-
- 5 caches listed.
-20:03:29 /tmp/2025> cache list xxx
-Valid attributes are [capacity,entries,utilization,loads,stores,hits,misses,
- forced,expired,lru,hit-rate,workload,query-rate]
-```
-
-The **cache list** command is useful for determining the cache names to use with the [cache stat](/momentum/4/console-commands/cache-stat) command.
-
-The optional cache attribute parameters are:
-
-* capacity
-
-* entries
-
-* utilization
-
-* loads
-
-* stores
-
-* hits
-
-* misses
-
-* forced
-
-* expired
-
-* lru (least recently used)
-
-* hit-rate
-
-* workload
-
-* query-rate
-
-Optional cache attribute parameters are:
-
-* all
-
-* summary
-
-* capacity
-
-* entries
-
-* used
-
-* loads
-
-* stores
-
-* hits
-
-* misses
-
-* forced
-
-* expired
-
-* lru (least recently used)
-
-* replaced
-
-* hitratio
-
-* workload
-
-* queryrate
-
-The `all` parameter shows all attributes. The `summary` parameter displays the following output:
-
-```
-07:07:00 /tmp/2025> cache list summary
-CAPACITY ENTRIES USED HT/TL RD/WR CACHE
-1048576 3507 0.33% 93.72% 57.82% core:named_throttles
-1024 1 0.10% 99.75% 99.75% ds_core:ecdb
-1024 0 0.00% 0.00% 0.00% ds_core:adaptivedb
-16 0 0.00% 0.00% 0.00% 0x2aaabb19f858
-16384 312 1.90% 99.96% 99.98% adaptive_lookup:retry_fuzz
-16384 16384 100.00% 96.53% 98.30% adaptive_lookup:blackhole
-16384 16384 100.00% 99.34% 99.67% adaptive_lookup:max_retry_interval
-16384 16384 100.00% 97.62% 98.82% adaptive_lookup:idle_timeout
-16384 16384 100.00% 95.67% 97.88% adaptive_lookup:max_resident_active_queue
-16384 16384 100.00% 88.47% 94.55% adaptive_lookup:mailfrom_timeout
-16384 16384 100.00% 88.47% 94.55% adaptive_lookup:max_recipients_per_batch
-16384 16384 100.00% 92.33% 96.31% adaptive_lookup:max_recipients_per_connection
-16384 16384 100.00% 96.77% 98.41% adaptive_lookup:outbound_throttle_messages
-16384 16384 100.00% 86.54% 93.69% adaptive_lookup:ehlo_timeout
-16384 16384 100.00% 98.64% 99.32% adaptive_lookup:max_retries
-16384 16384 100.00% 96.96% 98.50% adaptive_lookup:max_outbound_connections
-16384 16384 100.00% 97.01% 98.53% adaptive_lookup:suspend_delivery
-16384 16384 100.00% 98.63% 99.32% adaptive_lookup:retry_interval
-16384 16384 100.00% 87.58% 94.15% adaptive_lookup:body_timeout
-16384 16384 100.00% 87.13% 93.95% adaptive_lookup:max_deliveries_per_connection
-16384 16384 100.00% 86.27% 93.58% adaptive_lookup:rcptto_timeout
-16384 2761 16.85% 95.82% 97.95% adaptive_lookup:rset_timeout
-262144 65179 24.86% 98.33% 70.61% alerting_data
-2048 653 31.88% 99.96% 99.96% 0x2b59ee386588
-4294967295 17 0.00% 100.00% 100.00% scpt_root
-256 2 0.78% 100.00% 100.00% core:sieve_scripts
-16384 16384 100.00% 15.89% 54.32% core:bounce_classify
-128 0 0.00% 0.00% 0.00% core:pcre
-4294967295 390289 0.01% 99.93% 99.93% config:match
-65536 374 0.57% 99.99% 99.99% retry_state
-
- 30 caches listed.
-```
-
-## See Also
-
-[cache stat](/momentum/4/console-commands/cache-stat), [cache stats](/momentum/4/console-commands/cache-stats), [match_cache_life](/momentum/4/config/ref-match-cache-life)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/cache-stat.md b/content/momentum/4/console-commands/cache-stat.md
deleted file mode 100644
index fbff86b39..000000000
--- a/content/momentum/4/console-commands/cache-stat.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "cache stat"
-description: "cache stat show detailed cache statistics for the specified cache cache stat cache name This command shows statistics for the specified cache Use the cache list command to determine the available caches Find sample output below This command shows much more detail than the cache stats command cache list cache..."
----
-
-
-## Name
-
-cache stat — show detailed cache statistics for the specified cache
-
-## Synopsis
-
-`cache stat` { *`cache_name`* }
-
-
-## Description
-
-This command shows statistics for the specified cache. Use the [cache list](/momentum/4/console-commands/cache-list) command to determine the available caches.
-
-Find sample output below:
-
-```
-20:02:49 /tmp/2025> cache stat core:bounce_classify
-Name : core:bounce_classify
-Capacity : 16384
-Entries : 10238
-Utilization : 62.49%
-Query Rate : 1271 q/s
-Loads : 20476
- Hits : 1527
- Misses : 18949
- Pending : 0
-Stores : 18949
-Invalidations : 8711
- Forced : 0
- Expired : 0
- Capacity : 8711
-Hit Rate : 7.46%
-Workload (R/W): 51.94%
- Reads : 20476
- Writes : 18949
-```
-
-This command shows much more detail than the [cache stats](/momentum/4/console-commands/cache-stats) command.
-
-
-## See Also
-
-[cache list](/momentum/4/console-commands/cache-list), [cache stats](/momentum/4/console-commands/cache-stats), [match_cache_life](/momentum/4/config/ref-match-cache-life)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/cache-stats.md b/content/momentum/4/console-commands/cache-stats.md
deleted file mode 100644
index 3138f9611..000000000
--- a/content/momentum/4/console-commands/cache-stats.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "cache stats"
-description: "cache stats show cache statistics cache stats cache name This command shows statistics for all caches if no parameter is passed in Otherwise it shows the statistics for the specified cache or caches For example cache stats ds core ecdb will produce metrics such as For each cache this command..."
----
-
-
-## Name
-
-cache stats — show cache statistics
-
-## Synopsis
-
-`cache stats` [ *`cache_name`* ...]
-
-
-## Description
-
-This command shows statistics for all caches if no parameter is passed in. Otherwise it shows the statistics for the specified cache or caches. For example, **cache stats *`ds_core:ecdb`*** will produce metrics such as:
-
-```
-cache name lookups % deletions %
- elts hit miss pend total inserts man ttl lru total
----------------------- ----- -------------------- -------- ------------------
-
-ds_core:ecdb 2 52 48 0 83 2 0 0 0 0
-```
-
-For each cache, this command prints statistics including the number of elements in the cache (elts), hit rate, number of cache hits and misses during lookups, number of inserts, and number of deletions. The deletions are broken down into entries explicitly (manually) deleted, those deleted due to time-to-live (ttl) expiration as configured via the `match_cache_life` option, and least-recently-used (lru) items deleted due to the cache_size being reached.
-
-
-## See Also
-
-[match_cache_life](/momentum/4/config/ref-match-cache-life)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/config.md b/content/momentum/4/console-commands/config.md
deleted file mode 100644
index 9c45d6159..000000000
--- a/content/momentum/4/console-commands/config.md
+++ /dev/null
@@ -1,361 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "config"
-description: "config online configuration tuning for Momentum config begin config begin from scratch config commit config locate scope name regex config reload alternate path config get eval unset scope name optname config replay config rollback config set scope name optname value config show scope name option name config showrecurse scope name..."
----
-
-
-## Name
-
-config — online configuration tuning for Momentum
-
-## Synopsis
-
-`config` begin
-
-`config` begin from scratch
-
-`config` commit
-
-`config` locate { *`scope_name`* } [ *`regex`* ]
-
-`config` reload [ *`/alternate/path`* ]
-
-`config` { get | eval | unset } [ *`scope_name`* ...] { *`optname`* }
-
-`config` replay
-
-`config` rollback
-
-`config` set [ *`scope_name`* ...] { *`optname`* } { *`value`* }
-
-`config` show [ *`scope_name`* ...] [ *`option_name`* ]
-
-`config` showrecurse [ *`scope_name`* ...]
-
-`config` writeback [ *`/alternate/path`* ]
-
-
-## Description
-
-The **config** command enables online configuration tuning for Momentum. It has three forms:
-
-* **config { get | eval | unset } [ scope_name ...] { optname }**
-
- The first form takes a `get`, `eval` or `unset` mode, zero or more scope specifiers, and an option name as arguments. It gets, evaluates, or clears the value of the specified option in the specified scope, depending on the command given.
-
- The scope may be a named scope or an anonymous scope. The following examples illustrate this:
-
- ```
- 10:47:35 /tmp/2025> config set ESMTP_Listener Pathway foo
- 10:47:35 /tmp/2025> config set ESMTP_Listener Peer 127.0.0.1 Pathway foo
- ```
-
- In these examples, `ESMTP_Listener` is an anonymous scope name and `Peer` is a named scope where `127.0.0.1` is its instance name. Note that you are allowed to have named scopes inside anonymous scopes (as in the second example) or anonymous scopes inside named scopes. It is also legal to have an optional equals sign between the option name and the assigned value; this facilitates copying and pasting from the `ecelerity.conf` file into the console. When setting options to values that contain characters such as ‘`#`’, you must use quotation marks.
-
- Both `get` and `eval` display the current value of an option, the difference being that `eval` will fall back to more generic scopes (and eventually to the option's default value). On the other hand, `get` only looks in the scope specified. So if an option is not specified within that scope, no value is returned. For example, if `blackhole` is not set in your configuration file, the following output shows how the result of using `get` or `eval` differs:
-
- ```
- 10:47:35 /tmp/2025> config get blackhole
- Option 'Blackhole' is not set in scope ''.
- 10:47:35 /tmp/2025> config eval blackhole
- Blackhole = 0
- ```
-
- Using `unset`, the value of the specified option in the specified scope is cleared; when evaluating the value, an unset option will cause the evaluation to fall back to a more generic scope or the option's default value. Thus, unsetting an option is not the same as setting it to 0, an empty string, or that option's default value.
-
-* **config set [ scope_name ...] { optname } { value }**
-
- The second form takes `set` as the mode, zero or more scope specifiers, an option name, and an option value as arguments. It sets a new value for the specified option in the specified scope.
-
- You can set any configuration option in any scope (except settings inside legacy modules) using the **config set** command.
-
-* **config unset [ scope_name ...] [ option_name ]**
-
- The third form takes `unset` as the mode and one or more scope specifiers, and an option name as arguments. When this command is used without specifying an option, *it unsets all the options in the scope and that scope's subscopes, so use it carefully* . To prevent completely deconfiguring a running server by accident, unsetting the global scope is not supported.
-
-For a complete list of available configuration options, see [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-
-### Setting Boolean Options
-
-Booleans are parsed using `ec_atobool`, which accepts `on` or `off`, `true` or `false`, `enabled` or `disabled` and `0` or `1`. From the console, you can set a boolean to any one of these values. For example:
-
-```
-07:50:47 /tmp/2025> config set suspend_delivery true
-Suspend_Delivery = true
-08:02:16 /tmp/2025> config set suspend_delivery 1
-Suspend_Delivery = 1
-08:02:19 /tmp/2025> config set suspend_delivery enabled
-Suspend_Delivery = enabled
-08:02:22 /tmp/2025> config set suspend_delivery on
-Suspend_Delivery = on
-```
-
-Any one of the above commands suspends delivery in the global scope.
-
-
-### Batching config Commands
-
-You may batch configuration changes by initiating a transaction on the console, as shown in the following example:
-
-```
-10:47:35 /tmp/2025> config begin
-10:47:35 /tmp/2025> config set esmtp_listener listen :587 concurrency 5
-10:47:35 /tmp/2025> config set esmtp_listener listen :587 pool_name accept
-10:47:35 /tmp/2025> config set threadpool accept concurrency 5
-10:47:35 /tmp/2025> config commit
-```
-
-Use **config begin** to begin a transaction. The **config commit** command ends a transaction and activates any options set during the transaction. It changes the live configuration only and has *no* effect on the configuration file.
-
-Transactions are isolated from each other; the transaction you initiate in your control session is yours alone. If multiple transactions are initiated in concurrent sessions, the first to commit wins; the losers commit attempt will fail.
-
-You may **config rollback** to cancel a set of changes and rollback a transaction.
-
-You may alternatively **config reload** to attempt a configuration reload and undo options set from the system console. This must happen outside of a transaction (it will indicate an error if you have begun a transaction).
-
-
-### Available Modes
-
-The following are the available modes for the **config** command:
-
-
-
-- config begin
-
--
-
-Begin a transaction.
-
-
-
-- config begin from scratch
-
--
-
-Begin a transaction from scratch.
-
-This command starts an entirely new configuration. However, if you issue the command **`config begin from scratch`** and then the command **`config showrecurse`** , you will see that some options are already set. This is not a bug; these settings are the implicit settings you get when you load an empty configuration file. You can override them with **config set** , but you cannot unset them because these settings are necessary for proper operation. The options that are already set are the `ThreadPool` stanzas, the `DebugFlags` and the `TimestampFormat` option.
-
-
-
-- config commit
-
--
-
-Commit a transaction.
-
-
-
-- config locate
-
--
-
-Locate a particular scope.
-
-Use this command to locate specific scopes. The following is an example of the output resulting from issuing the command **config locate listen** :
-
-```
-Listen ":25"
- is at Esmtp_Listener::Listen:\:25:
-Listen ":587"
- is at Esmtp_Listener::Listen:\:587:
-Listen "127.0.0.1:2025"
- is at Control_Listener::Listen:127.0.0.1\:2025:
-Listen "/tmp/2025"
- is at Control_Listener::Listen:/tmp/2025:
-```
-
-Where a scope has an instance name, that instance name may also be specified. For example, the command, **config locate listen 127.0.0.1** is also legal.
-
-This command is particularly useful for showing the exact location of a scope. For example:
-
-```
-10:47:35 /tmp/2025> config locate QueryGroups
-QueryGroups
- is at auth_ds::Scheme:ecauth:QueryGroups::
-```
-
-You can then examine the particulars of this scope by issuing the command **config show auth_ds Scheme ecauth QueryGroups** .
-
-You can also use this command specifying a regular expression as an optional argument, for example:
-
-```
-12:00:12 /tmp/2025> config locate Scheme ec.+
-Scheme "ecauth"
- is at auth_ds::Scheme:ecauth:
-```
-
-The regex argument need not be quoted unless it contains spaces; specifically, enclosing it in forward slashes is not necessary and will not work. Note that the use of this command with a scope and a regular expression is different from regex scopes such as regex domains. In the case of a regex domain, (see [Regex Domains](/momentum/4/config/ref-domain#conf.ref.domain.regex)) the regular expression denoted by *`pattern`* in the command **config locate Domain *`pattern`*** will be matched against the regex domain treated as an ordinary string. For example, the command **config locate Domain ex.+** would locate a regex domain defined as:
-
-```
-Domain "/(?:^|[.])example[.](/momentum/4/com-co-uk)$/" {
- ...
-}
-```
-
-
-- config reload
-
--
-
-Reload configuration options.
-
-If no file is specified, **config reload** reloads configuration options from the `ecelerity.conf` file. You may specify an alternate configuration file. Options changed in the configuration file come into effect immediately. Momentum does not need to be restarted. You may also use **config reload** to attempt a configuration reload to cancel any changes made from the console. This must happen outside of a transaction, otherwise an error message will be displayed. If you make manual changes to your configuration file, issue this command to ensure that your changes are put into effect immediately.
-
-Issuing the **config reload** command while receiving email will trigger the `Reconfig_Message`. For more information see [“`Reconfig_Message` Option”](/momentum/4/esmtp-listener-reconfig-message).
-
-### Warning
-
-Not all options can be changed at runtime. To confirm that an option is "dynamic", check the default column of the table at [*Configuration Options Summary*](/momentum/4/config-options-summary) . Options that cannot be changed without restarting the ecelerity process are marked as `non-dynamic`.
-
-
-
-- config replay
-
--
-
-Show changes in a transaction prior to a commit or rollback.
-
-This command can be used in an active transaction; when you have issued the command **config begin** or **config begin from scratch** but have not yet done a **config commit** or a **config rollback** . It prints out all the **config set** and **config unset** commands you have given since the start of the transaction. **config eval** or **config show** commands are not displayed.
-
-This command is especially useful if you find that a conflict causes your commit to fail. Using **config replay** , you can determine exactly what changes you attempted before rolling back your transaction.
-
-
-
-- config rollback
-
--
-
-Rollback a transaction.
-
-
-
-- config show
-
--
-
-View a specific scope.
-
-**config show** and **config showrecurse** are similar. As with **config get** or **config eval** , you supply a path into the configuration tree, but without specifying an option name. You can then view the whole scope. **config showrecurse** also shows child scopes.
-
-Given the following mail_loop configuration:
-
-```
-mail_loop "mail_loop1"
-{
- Use_IP = false
-}
-```
-
-Issuing the command **`config show mail_loop mail_loop`** yields the output:
-
-`Use_IP = false`
-
-The difference between **config show *`scope`*** and **config showrecurse *`scope`*** is illustrated using the following ESMTP listener configuration:
-
-```
-Esmtp_Listener {
- Listen ":25" {
- }
- Listen ":587" {
- Enable = false
- SMTP_Extensions = (
- "ENHANCEDSTATUSCODES"
- "STARTTLS"
- "AUTH LOGIN"
- )
- TLS_Key = "cert.key"
- TLS_Certificate = "cert.pem"
- TLS_Client_CA = "ca-bundle.crt"
- TLS_Ciphers = "DEFAULT"
- }
- Idle_Time = 300
- SMTP_Extensions = (
- "ENHANCEDSTATUSCODES"
- )
-}
-```
-
-Issuing the command **`config showrecurse ESMTP_Listener`** reproduces the entire configuration as shown above. On the other hand, issuing the command, **`config show ESMTP_Listener`** , outputs only the following:
-
-```
-Listen ":25" { ... }
-Listen ":587" { ... }
-Idle_Time = 300
-SMTP_Extensions = (
- "ENHANCEDSTATUSCODES"
-)
-```
-
-
-- config showrecurse
-
--
-
-View a specific scope and its child scopes.
-
-
-
-- config writeback [*`/optional/alternate/path`*]
-
--
-
-Write configuration changes to your `ecelerity.conf` file or an alternate file.
-
-The **config writeback** command writes any changes you have made to the live configuration back to the configuration file or files that the configuration was read from originally. If you do not want to overwrite the main configuration file, you can provide an alternate path. If your configuration has "include" files, edits go to the most appropriate place. For example, suppose that you have a binding configuration that came from an included file, changes to that binding are written back to the included file.
-
-
-
-
-
-
-### Example config Commands
-
-Suppose you have the following part in your `ecelerity.conf` file:
-
-```
-Message_Expiration = 86400
-
-Domain earthlink.net {
- Message_Expiration = 900
-}
-
-Binding smtp-01 {
- EHLO_Hostname = "smtp-01.com"
- Domain relay.com {
- EHLO_Hostname = "relay.com"
- }
-}
-```
-
-The following are examples using the **config** command with outputs:
-
-```
-10:47:35 /tmp/2025> config get message_expiration
-Message_Expiration = 86400
-
-10:47:35 /tmp/2025> config get domain earthlink.net message_expiration
- Message_Expiration = 900
-
-10:47:35 /tmp/2025> config unset domain earthlink.net message_expiration
-"Message_Expiration" has been unset. Effective value is now:
- Message_Expiration = 86400
-
-10:47:35 /tmp/2025> config get binding smtp-01 ehlo_hostname
- EHLO_Hostname = "smtp-01.com"
-
-10:47:35 /tmp/2025> config get binding smtp-01 domain relay.com ehlo_hostname
- EHLO_Hostname = "relay.com"
-
-10:47:35 /tmp/2025> config unset binding smtp-01 domain relay.com ehlo_hostname
-"EHLO_Hostname" has been unset. Effective value is now:
- EHLO_Hostname = "smtp-01.com"
-
-10:47:35 /tmp/2025> config set Relay_Hosts ( 10.0.0.1 10.0.0.2 )
-Relay_Hosts = (
- 10.0.0.1
- 10.0.0.2
- )
-```
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/count.md b/content/momentum/4/console-commands/count.md
deleted file mode 100644
index 5c340410c..000000000
--- a/content/momentum/4/console-commands/count.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "count"
-description: "count count open connections count connection type CIDR The count counts open connections grouped by IP addresses It needs two arguments The first argument specifies the type of the connection It could be outbound outbound binding name for outbound connections over all bindings or outbound connections of a specified binding..."
----
-
-
-## Name
-
-count — count open connections
-
-## Synopsis
-
-`count` { *`connection_type`* } { *`CIDR`* }
-
-
-## Description
-
-The **count** counts open connections grouped by IP addresses. It needs two arguments. The first argument specifies the type of the connection. It could be `outbound`, `outbound/binding-name` for outbound connections over all bindings or outbound connections of a specified binding respectively. It could also be a connection type to count inbound connections, for example "SMTP". The second argument is an IP address, a CIDR IP address, a CIDR mask or a range of CIDR mask separated by "-", for example, 8-32\. Number of connections will be shown grouped by the IP addresses. CIDR masks give you flexibility to choose the level of granularity of the report.
-
-```
-15:30:30 ecelerity(/tmp/2025)> count outbound 16-32
- 1 216.200.0.0/16
- 1 216.200.145.35/32
- 1 216.220.0.0/16
- 1 216.220.128.9/32
- 1 216.237.0.0/16
- 1 216.237.12.147/32
- 5 217.117.0.0/16
- 5 217.117.146.233/32
-
-15:30:39 ecelerity(/tmp/2025)> count outbound 217.117.146.233/32
-5 sessions
-15:30:48 ecelerity(/tmp/2025)> count SMTP 32
-Displaying 'SMTP' from /32 to /32
- 1 127.0.0.1/32
-```
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/counter.md b/content/momentum/4/console-commands/counter.md
deleted file mode 100644
index eefadc3b1..000000000
--- a/content/momentum/4/console-commands/counter.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "counter"
-description: "counter add counter help counter increment counter list counter reset counter unlink manage counters counter add counter name delta counter help counter increment counter name counter list counter reset counter name counter unlink counter name Lua makes use of generic counters These commands display and manipulate counters counter add Increments..."
----
-
-
-## Name
-
-counter add, counter help, counter increment, counter list, counter reset, counter unlink — manage counters
-
-## Synopsis
-
-`counter add` { *`counter_name`* } { *`delta`* }
-
-`counter help`
-
-`counter increment` { *`counter_name`* }
-
-`counter list`
-
-`counter reset` { *`counter_name`* }
-
-`counter unlink` { *`counter_name`* }
-
-
-## Description
-
-Lua makes use of generic counters. These commands display and manipulate counters.
-
-
-
-- counter add
-
--
-
-Increments the specified counter by the value of the second parameter.
-
-
-
-- counter help
-
--
-
-Displays a brief description of each command.
-
-
-
-- counter list
-
--
-
-Displays the statistics for all counters. See below for sample output:
-
-
-
-
-```
-07:21:07 /tmp/2025> counter list
-VALUE RESET_TIME SEMANTICS COUNTER
-
-1024 2010-12-02@07:20:58 relaxed /vendor/sample
-
-2 counters listed.
-```
-
-All content scanning modules record statistics on scanned virus and spam volume metrics. These metrics are exposed via the counters subsystem and can be viewed using the **counter list** command.
-
-The **counter increment** command increments the specified counter by one. For example, you can increment the `/vendor/sample` counter shown in [“counter list”](/momentum/4/console-commands/counter#console_commands.counter.list.example) by issuing the command **counter increment /vendor/sample** .
-
-
-
-- counter unlink
-
--
-
-Deletes a counter and the **counter reset** sets a counter to `0`.
-
-
-
-
-
-You can also display and manipulate counters through the following Lua functions:
-
-* [msys.counter.add](/momentum/4/lua/ref-msys-counter-add)
-
-* [msys.counter.inc](/momentum/4/lua/ref-msys-counter-inc)
-
-* [msys.counter.open](/momentum/4/lua/ref-msys-counter-open)
-
-* [msys.counter.read](/momentum/4/lua/ref-msys-counter-read)
-
-* [msys.counter.reset](/momentum/4/lua/ref-msys-counter-reset)
-
-* [msys.counter.unlink](/momentum/4/lua/ref-msys-counter-unlink)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/delay.md b/content/momentum/4/console-commands/delay.md
deleted file mode 100644
index 1a5f14c14..000000000
--- a/content/momentum/4/console-commands/delay.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-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/delayed.md b/content/momentum/4/console-commands/delayed.md
deleted file mode 100644
index 360fcbd0e..000000000
--- a/content/momentum/4/console-commands/delayed.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "delayed"
-description: "delayed show domains with delayed queue size bigger than threshold delayed threshold The delayed command presents information concerning the domains with a large number of delayed messages in queue The command takes a single positive integer as an argument which specifies the threshold of interest The output will include all..."
----
-
-
-## Name
-
-delayed — show domains with delayed queue size bigger than threshold
-
-## Synopsis
-
-`delayed` { *`threshold`* }
-
-
-## Description
-
-The **delayed** command presents information concerning the domains with a large number of delayed messages in queue. The command takes a single positive integer as an argument which specifies the threshold of interest. The output will include all domains whose delayed queues exceed the integer specified.
-
-```
-10:47:35 /tmp/2025> delayed 1000
-Domain: mailcity.com C: 0 A: 9 D: 1169 S: 16838
-Domain: peoplepc.com C: 0 A: 575 D: 1180 S: 7735
-Domain: sina.com C: 3 A: 1 D: 1232 S: 1069
- Total: C: 532 A: 22692 D: 34915 S:1953716
-```
-
-
-
-- C
-
--
-
-current number of connections
-
-
-
-- A
-
--
-
-current size of the active queue
-
-
-
-- D
-
--
-
-current size of the delayed queue
-
-
-
-- S
-
--
-
-total messages sent during the life of the domain record
-
-
-
-
-
-The row detailing the totals represents the totals across *all* domains, not just those listed.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/dig.md b/content/momentum/4/console-commands/dig.md
deleted file mode 100644
index 892875ea4..000000000
--- a/content/momentum/4/console-commands/dig.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "dig"
-description: "dig submit a domain for DNS MX query dig domain This command submits a domain for DNS MX query This console command manipulates the route cache and likewise with the domain and refresh domain commands The DNS cache as manipulated by the dns cache series of console commands..."
----
-
-
-## Name
-
-dig — submit a domain for DNS MX query
-
-## Synopsis
-
-`dig` [ *`domain`* ]
-
-
-## Description
-
-This command submits a domain for DNS MX query.
-
-```
-10:47:35 /tmp/2025> dig mail.omniti.com
-submitted
-```
-
-### Note
-
-This console command manipulates the *route cache* , and likewise with the [domain](/momentum/4/console-commands/domain) and [refresh domain](/momentum/4/console-commands/refresh-domain) commands. The *DNS cache* , as manipulated by the [dns_cache](/momentum/4/console-commands/dns-cache) series of console commands.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/dns-cache.md b/content/momentum/4/console-commands/dns-cache.md
deleted file mode 100644
index 7b6f592e2..000000000
--- a/content/momentum/4/console-commands/dns-cache.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "dns_cache"
-description: "dns cache stats dns cache refcnts dns cache submit dns cache lookup manage Momentum's DNS cache dns cache lookup record type dns cache refcnts dns cache stats dns cache submit record type The following commands help you to collect information on Momentum's dns cache dns cache stats shows summary statistics..."
----
-
-
-## Name
-
-dns_cache stats, dns_cache refcnts, dns_cache submit, dns_cache lookup — manage Momentum's DNS cache
-
-## Synopsis
-
-`dns_cache lookup` { *`record`* } { *`type`* }
-
-`dns_cache refcnts`
-
-`dns_cache stats`
-
-`dns_cache submit` { *`record`* } { *`type`* }
-
-
-## Description
-
-The following commands help you to collect information on Momentum's dns cache.
-
-**dns_cache stats** shows summary statistics about the MTA's dns cache.
-
-**dns_cache refcnts** shows the count of references of each entry in the MTA's dns cache. A cache entry can only be purged when its reference count becomes zero.
-
-**dns_cache submit record type** submits a dns query, whose result will be stored in cache if not already.
-
-**dns_cache lookup record type** looks up a dns query in the cache.
-
-record type can be `A`, `MX`, `PTR`, `X`, `X_AAAA`, `TXT`, `AAAA`, or `CNAME`.
-
-```
-10:47:35 /tmp/2025> dns_cache lookup mail.yahoo.com A
-Cached result not found, try a submit.
-16:59:26 ecelerity(/tmp/2025)> dns_cache submit mail.yahoo.com A
-Submitted
-16:59:32 ecelerity(/tmp/2025)> dns_cache lookup mail.yahoo.com A
-;; QUESTION SECTION:
-;mail.yahoo.com IN A
-
-;; ANSWER SECTION:
-mail.yahoo.com 299 IN A 209.73.177.115
-
-16:59:33 ecelerity(/tmp/2025)> dns_cache stats
-DNS Queries:
- TXT: 1
- PTR: 1
- MX: 1
- A: 2
- arpa IPv4: 0
- arpa IPv6: 0
-
-DNS responses:
- Total: 5
- Bad: 0
-
-DNS cache:
- Lookups: 14
- Hit Rate: 35.7143%
-
-16:59:41 ecelerity(/tmp/2025)> dns_cache refcnts
-[ 3] mail.omniti.com [213s]
- (null)
-[ 3] mail.yahoo.com [282s]
- (null)
-[ 3] mail.yahoo.com [248s]
- (null)
-[ 3] mail.yahoo.com [272s]
- (null)
-```
-
-### Note
-
-These console commands manipulate the *DNS cache* . The [dig](/momentum/4/console-commands/dig), [refresh domain](/momentum/4/console-commands/refresh-domain) and [domain](/momentum/4/console-commands/domain) commands manipulate the *route cache* .
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/domain-all.md b/content/momentum/4/console-commands/domain-all.md
deleted file mode 100644
index 239dc364f..000000000
--- a/content/momentum/4/console-commands/domain-all.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "domain all"
-description: "domain all show statistics for all domains domain all The domain all command shows statistics for all domains Sample output is shown below The output shows a summary for each domain stanza defined in your configuration file and totals for all domains The name of the domain is followed by..."
----
-
-
-## Name
-
-domain all — show statistics for all domains
-
-## Synopsis
-
-`domain all`
-
-
-## Description
-
-The **domain all** command shows statistics for all domains. Sample output is shown below:
-
-```
-04:59:52 /tmp/2025> domain all
-Domain summary:
-Domain: macbook.lan C: 0 A: 0 D: 8 S: 0
-Domain: yahoo.com C: 1 A: 1 D: 0 S: 1
-Totals: C: 1 A: 1 D: 8 S: 1
-```
-
-The output shows a summary for each domain stanza defined in your configuration file and totals for all domains. The name of the domain is followed by the number of connections, the items in the active and the delayed queues and the successful deliveries.
-
-You can use the command **domains** as an alias for **domain all** . See also [domain](/momentum/4/console-commands/domain).
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/domain.md b/content/momentum/4/console-commands/domain.md
deleted file mode 100644
index ffb1d8d1c..000000000
--- a/content/momentum/4/console-commands/domain.md
+++ /dev/null
@@ -1,128 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "domain"
-description: "domain show domain statistics domain domain name The domain command takes a single argument specifying a domain to inspect The DNS cache is searched and if the domain is current in the cache detailed information about its DNS records queues and connections are displayed It is important to note the..."
----
-
-
-## Name
-
-domain — show domain statistics
-
-## Synopsis
-
-`domain` { *`domain_name`* }
-
-
-## Description
-
-The **domain** command takes a single argument specifying a domain to inspect. The DNS cache is searched and if the domain is current in the cache, detailed information about its DNS records, queues, and connections are displayed.
-
-It is important to note the metrics displayed are for the life of the domain in the DNS cache. It is possible for the system to display zero deliveries for a domain to which Momentum has delivered messages if the domain record has been removed and subsequently reinserted into the DNS cache.
-
-```
-10:47:35 /tmp/2025> domain hotmail.com
-Domain hotmail.com {
- max_outbound_connections = 20
-}
-Domain 'hotmail.com' has 4 MXs and a TTL of 1902 seconds
- [5 mx1.hotmail.com TTL:1902]
- * [65.54.254.129] IPv4 (0.00ms con 10259.03ms dlv) 54.27s since failure
- [65.54.252.99] IPv4 (743.66ms con 11976.77ms dlv)
- [65.54.166.99] IPv4 (77.25ms con 11726.36ms dlv)
- (also used by email.msn.com pref 5)
- (also used by msn.com pref 5)
- [5 mx2.hotmail.com TTL:1902]
- [65.54.252.230] IPv4 (77.13ms con 9427.74ms dlv)
- [65.54.166.230] IPv4 (78.02ms con 10526.13ms dlv)
- => [65.54.254.145] IPv4 (77.34ms con 9957.49ms dlv)
- (also used by email.msn.com pref 5)
- (also used by msn.com pref 5)
- [5 mx3.hotmail.com TTL:1902]
- [65.54.167.5] IPv4 (77.30ms con 9198.22ms dlv)
- * [65.54.254.140] IPv4 (0.00ms con 10567.53ms dlv) 89.27s since failure
- [65.54.253.99] IPv4 (78.24ms con 9187.18ms dlv)
- (also used by email.msn.com pref 5)
- (also used by msn.com pref 5)
- [5 mx4.hotmail.com TTL:1902]
- [65.54.254.151] IPv4 (6827.57ms con 10014.24ms dlv)
- [65.54.253.230] IPv4 (153.76ms con 10711.45ms dlv)
- [65.54.167.230] IPv4 (77.91ms con 9482.38ms dlv)
- (also used by email.msn.com pref 5)
- (also used by msn.com pref 5)
-Domain has had 1 consecutive connection failures
-Queue:
- Active: 212
- Delayed: 190
-Deliveries: 10715
-Failures: 612
-Active Connections: 12
-[ 1] FD: 174 IP: 65.54.252.99 State: reading confirmation (4615.39ms)
-[ 2] FD: 270 IP: 65.54.252.99 State: reading confirmation (4605.68ms)
-[ 3] FD: 171 IP: 65.54.254.129 State: reading confirmation (332.74ms)
-[ 4] FD: 307 IP: 65.54.252.99 State: reading confirmation (3612.59ms)
-[ 5] FD: 176 IP: 65.54.252.230 State: reading confirmation (6076.36ms)
-[ 6] FD: 163 IP: 65.54.166.230 State: reading confirmation (4025.86ms)
-[ 7] FD: 96 IP: 65.54.254.145 State: reading confirmation (5355.87ms)
-[ 8] FD: 226 IP: 65.54.166.230 State: reading confirmation (2799.31ms)
-[ 9] FD: 209 IP: 65.54.252.230 State: reading confirmation (4293.11ms)
-[10] FD: 133 IP: 65.54.254.140 State: after RCPT TO (308.59ms)
-[11] FD: 142 IP: 65.54.167.5 State: reading confirmation (3678.08ms)
-[12] FD: 118 IP: 65.54.254.151 State: reading confirmation (960.39ms)
-```
-
-### Note
-
-This console command manipulates the *route cache* , and likewise with the [dig](/momentum/4/console-commands/dig) and [refresh domain](/momentum/4/console-commands/refresh-domain) commands. The *DNS cache* , as manipulated by the [dns_cache](/momentum/4/console-commands/dns-cache) series of console commands.
-
-## Domain Configuration
-
-The configuration will only appear if the domain in question has explicit per-domain configuration options set.
-
-```
-Domain hotmail.com {
- max_outbound_connections = 20
-}
-```
-
-## DNS Information
-
-The name of the domain is displayed as well as the number of seconds it will continue to be valid in the cache (time-to-live, TTL).
-
-`'hotmail.com' has 4 MXs and a TTL of 1902 seconds`
-
-shows the domain name (hotmail.com), number of MXs and the number of seconds remaining before this record is refreshed.
-
-`[5 mx1.hotmail.com TTL:1902]`
-
-displays combined MX and Host information. 5 denotes the MX prefrence, mx1.hotmail.com is the MX's hostname and 1902 is the DNS TTL.
-
-`[65.54.254.145] IPv4 (77.34ms con 9957.49ms dlv)`
-
-displays information representing one of the address records A/AAAA (A in this case) for a host. 77.34ms denotes the average (decayed) length of time required to establish a connection to that IP address. 9957.49ms denotes the average (decayed) amount of time spent delivering a single email message (from MAIL FROM to receipt of confirmation) to that IP address.
-
-A '`=>`' preceding an IP address indicates that it would be chosen for the next connection to this domain if a connection were to be opened at this moment.
-
-A '`*`' preceding an IP address indicates that the IP address has failed due to a `connect()` call that could not be completed. Reasons for `connect()` failures include refused connections or connections that timed out during one of the SMTP phases. If the address has failed, the age of that failure will be displayed at the end of the line as above: "89.27s since failure." This indicates how long ago the failure occurred.
-
-## Active Queue Size
-
-The number of messages in the system that require immediate delivery attempts.
-
-## Delayed Queue Size
-
-The number of messages in the system that have been delayed. A message is delayed due to transient delivery failures (4*`xx`* SMTP codes) and a retry time is calculated for the message. When that retry time is reached, the message will be moved from the delayed queue to the active queue.
-
-## Deliveries
-
-The total number of messages delivered to this domain since insertion into the DNS cache.
-
-## Failures
-
-The total number of permanently failed delivery attempts to this domain since insertion into the DNS cache.
-
-## Active Connections
-
-The current number of established outbound SMTP sessions.
-
-Below the count is a list that details the system file descriptor and IP address that each SMTP session is using. The state reflects the current point in the SMTP transaction and the length of time since entering that state.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/fail-all-quiet.md b/content/momentum/4/console-commands/fail-all-quiet.md
deleted file mode 100644
index d50f2fc5e..000000000
--- a/content/momentum/4/console-commands/fail-all-quiet.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-lastUpdated: "06/24/2026"
-title: "fail all quiet"
-description: "fail all quiet ec_console fail queued messages globally by meta or RFC822 header match without bounces --meta --header required filter --dry-run preview"
----
-
-
-
-## Name
-
-fail all quiet — fail matching messages everywhere without generating bounces
-
-## Synopsis
-
-`fail all quiet` [ `--dry-run` ] `--meta` *`key`* *`value`* \| `--header` *`header_name`* *`header_line`* [ *`note`* … ]
-
-## Description
-
-The **fail all quiet** command administratively fails queued messages **across every domain** (every active and delayed queue in the mail system) according to **filter** criteria. Unlike **fail domain quiet**, there is **no domain argument**—only messages matching the mandatory filter are failed.
-
-**`--meta`** / **`--header`** matching follows the same rules as [**fail domain quiet** selective purge](/momentum/4/console-commands/fail-domain-quiet#fail_domain_quiet_selective). You must specify **exactly one** clause: either **`--meta`** or **`--header`**, never both.
-
-Any tokens **after** the `--meta` / `--header` clause become the optional administrative failure *note*, joined like other purge commands.
-
-Output reports how many matching messages were failed:
-
-```
-All domains purged. 742 messages failed.
-```
-
-
-
-**Important:** **`--meta`** / **`--header`** filter is **required**. Running `fail all quiet` without a filter is rejected. Global header matching has the **same folded-header limitation** documented under [**physical header lines**](/momentum/4/console-commands/fail-domain-quiet#header_filter_physical_lines).
-
-### Examples
-
-```
-ecelerity> fail all quiet --meta mo_campaign_id end-of-sale
-```
-
-```
-ecelerity> fail all quiet --header List-Unsubscribe mailto:list@example.com Purged obsolete campaign mail
-```
-
-
-### Preview without failing (`--dry-run`)
-
-Because **fail all quiet** acts across **every** domain, add **`--dry-run`** to preview its reach **without failing any messages**. The matching messages are listed (capped) and followed by a global summary count:
-
-```
-ecelerity> fail all quiet --dry-run --meta mo_campaign_id end-of-sale
- 3A/0F-04217-1A3F9C2B domain=relay.com from= to=
- 7C/1B-04217-2B4E0D8A domain=mail.example.net from= to=
- ...
-[dry-run] all domains: 742 messages would be failed. (Showing first 25; 717 more not listed.)
-```
-
-See [**fail domain quiet** → preview](/momentum/4/console-commands/fail-domain-quiet#fail_domain_quiet_dry_run) for the full description of the listing, the 25-message cap, and placement. The required `--meta` / `--header` filter still applies in dry-run mode.
-
-## See Also
-
-[fail all](/momentum/4/console-commands/fail-all) · [fail domain quiet](/momentum/4/console-commands/fail-domain-quiet) · [binding fail domain quiet](/momentum/4/console-commands/binding-fail-domain-quiet)
diff --git a/content/momentum/4/console-commands/fail-all.md b/content/momentum/4/console-commands/fail-all.md
deleted file mode 100644
index 5ae10ceac..000000000
--- a/content/momentum/4/console-commands/fail-all.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-lastUpdated: "06/24/2026"
-title: "fail all"
-description: "fail all ec_console globally fail queued messages matching --meta or --header filter bounce optional note --dry-run preview"
----
-
-
-
-## Name
-
-fail all — fail matching messages everywhere with bounce behavior
-
-## Synopsis
-
-`fail all` [ `--dry-run` ] `--meta` *`key`* *`value`* \| `--header` *`header_name`* *`header_line`* [ *`note`* … ]
-
-## Description
-
-The **fail all** command administratively fails queued messages **across every domain** (every active and delayed queue) according to **filter** criteria. Unlike **fail domain**, there is **no domain argument**—only messages matching the mandatory filter are failed.
-
-Matching uses the same **`--meta`** / **`--header`** rules as [**fail domain quiet**](/momentum/4/console-commands/fail-domain-quiet#fail_domain_quiet_selective): **exactly one** clause, either **`--meta`** or **`--header`**.
-
-When **fail all** is used (**not** **fail all quiet**), failed messages follow normal permanent-failure disposition (including bounce generation when Generate_Bounces is enabled), analogous to **fail domain** versus **fail domain quiet**.
-
-Tokens after the filter clause are joined into an optional administrative failure *note*, same as other purge commands.
-
-```
-All domains purged. 742 messages failed.
-```
-
-
-
-**Important:** **`--meta`** / **`--header`** filter is **required**. Header matching observes the **physical-line** limitation described under [**folded headers**](/momentum/4/console-commands/fail-domain-quiet#header_filter_physical_lines).
-
-### Examples
-
-```
-ecelerity> fail all --header X-Ecconsole-Purge yes
-```
-
-```
-ecelerity> fail all --meta tenant_id churned 554 Tenant removed — mail purged
-```
-
-
-### Preview without failing (`--dry-run`)
-
-Because **fail all** acts across **every** domain, add **`--dry-run`** to preview its reach **without failing any messages**. The matching messages are listed (capped) and followed by a global summary count:
-
-```
-ecelerity> fail all --dry-run --meta tenant_id churned
- 3A/0F-04217-1A3F9C2B domain=relay.com from= to=
- 7C/1B-04217-2B4E0D8A domain=mail.example.net from= to=
- ...
-[dry-run] all domains: 742 messages would be failed. (Showing first 25; 717 more not listed.)
-```
-
-See [**fail domain quiet** → preview](/momentum/4/console-commands/fail-domain-quiet#fail_domain_quiet_dry_run) for the full description of the listing, the 25-message cap, and placement. The required `--meta` / `--header` filter still applies in dry-run mode.
-
-## See Also
-
-[fail all quiet](/momentum/4/console-commands/fail-all-quiet) · [fail domain](/momentum/4/console-commands/fail-domain) · [binding fail domain](/momentum/4/console-commands/binding-fail-domain)
diff --git a/content/momentum/4/console-commands/fail-domain-quiet.md b/content/momentum/4/console-commands/fail-domain-quiet.md
deleted file mode 100644
index 155b03a54..000000000
--- a/content/momentum/4/console-commands/fail-domain-quiet.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-lastUpdated: "06/24/2026"
-title: "fail domain quiet"
-description: "fail domain quiet ec_console selectively fail messages by metadata or RFC822 header match without bounces optional --meta --header filter --dry-run preview"
----
-
-
-## Name
-
-fail domain quiet — fail messages for a domain without generating bounces
-
-## Synopsis
-
-`fail domain quiet` [ `--dry-run` ] [ `--meta` *`key`* *`value`* | `--header` *`header_name`* *`header_line`* ] { *`domain_name`* } [ *`note`* … ]
-
-
-## Description
-
-The **fail domain quiet** command allows the administrative failure of all messages bound for the specified domain without sending a bounce message, even if Generate_Bounces is set in the configuration file. Its usage is similar to fail domain:
-
-```
-10:47:35 /tmp/2025> fail domain quiet unresolvableproblems.com
-unresolvableproblems.com purged, 62415 messages failed.
-```
-
-
-### Selective purge (optional filter)
-
-You may restrict which messages are failed by adding **at most one** optional clause **before** the domain name:
-
-| Clause | Meaning |
-| --- | --- |
-| `--meta` *key* *value* | Fail only messages whose message **or** connection validation context has *key* with exactly *value*. Message context is checked first; connection context is used when the key is not set on the message (for example variables provided through **XSETCONTEXT** during injection). |
-| `--header` *name* *line* | Fail only messages where the first MIME part has header *name* and **one physical line** of that header’s value equals *line* (useful when a header is folded across lines). |
-
-
-**Folded headers / multi-line values:** Matching uses **physical** RFC822 header lines only. Each continuation line created by folding is tested separately against the single *line* operand. There is **no** match against the unfolded header body as one multi-line string. The *line* you pass on the ec_console command is **one** token string; it must equal **exactly one** stored physical line of that header’s value (including typical leading whitespace on folded continuation lines). If your selection logic needs to treat the whole logical header value as one unit, prefer **`--meta`** or external tooling.
-
-You cannot combine `--meta` and `--header` in the same command. With no filter, every queued message for the domain is failed (original behavior).
-
-Any tokens after the domain name are joined into an optional administrative failure note (same as without a filter).
-
-```
-10:47:35 /tmp/2025> fail domain quiet --meta mo_campaign_id summer-sale unresolvableproblems.com
-unresolvableproblems.com purged. 12 messages failed.
-```
-
-
-### Preview without failing (`--dry-run`)
-
-Add **`--dry-run`** to see what the command *would* do **without failing any messages**. The queue is left untouched; instead, each message that would be failed is listed on its own line, followed by a summary count. Each line shows the message's **spool id**, **domain**, and **envelope** sender and recipient:
-
-```
-10:47:35 /tmp/2025> fail domain quiet --dry-run unresolvableproblems.com
- 3A/0F-04217-1A3F9C2B domain=unresolvableproblems.com from= to=
- 7C/1B-04217-2B4E0D8A domain=unresolvableproblems.com from= to=
- ...
-[dry-run] unresolvableproblems.com: 62415 messages would be failed. (Showing first 25; 62390 more not listed.)
-```
-
-Key points:
-
-- **Nothing is failed.** The command only reports what a real run would touch, so it is safe to run first to confirm scope.
-- **The listing is capped at the first 25 matching messages.** When more match, the trailing `[dry-run]` summary reports the total count and how many were not listed. When 25 or fewer match, the parenthetical is omitted and every match is shown.
-- **`--dry-run` may be placed anywhere in the command** — before or after the `--meta` / `--header` clause, or after the domain. It is stripped wherever it appears and is **never** consumed as part of the *note*, so a preview can never accidentally become a real purge.
-- **It combines with the optional filter**, so you can confirm exactly which messages a selective purge would remove before running it for real.
-
-
-## See Also
-
-[fail domain](/momentum/4/console-commands/fail-domain) · [fail all quiet](/momentum/4/console-commands/fail-all-quiet)
diff --git a/content/momentum/4/console-commands/fail-domain.md b/content/momentum/4/console-commands/fail-domain.md
deleted file mode 100644
index 3e5a604b1..000000000
--- a/content/momentum/4/console-commands/fail-domain.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-lastUpdated: "06/24/2026"
-title: "fail domain"
-description: "fail domain ec_console selectively fail messages by metadata or RFC822 header match optional --meta --header filter bounce --dry-run preview"
----
-
-
-## Name
-
-fail domain — fail messages for a domain with a bounce message
-
-## Synopsis
-
-`fail domain` [ `--dry-run` ] [ `--meta` *`key`* *`value`* | `--header` *`header_name`* *`header_line`* ] { *`domain_name`* } [ *`note`* … ]
-
-
-## Description
-
-The **fail domain** command allows the administrative failure of all messages bound for the specified domain. If political issues arise that cannot be resolved or if the domain has been discontinued, it may be necessary to fail all of the messages to that domain. All failed messages will be assigned the following administrative failure message: "554 Message manually purged."
-
-For example, the following command could be used to fail all message for the domain unresolvableproblems.com.
-
-```
-10:47:35 /tmp/2025> fail domain unresolvableproblems.com
-unresolvableproblems.com purged. 62415 messages failed.
-```
-
-Usually, the command is immediately preceded or followed by "blackholing" the domain by issuing a command such as:
-
-`10:47:35 /tmp/2025> config set domain unresolvableproblems.com blackhole inline`
-
-
-### Selective purge (optional filter)
-
-Optional **`--meta`** / **`--header`** filtering uses the same rules as [**fail domain quiet**](/momentum/4/console-commands/fail-domain-quiet#fail_domain_quiet_selective). **`--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 failed; without a filter, all messages for the domain are failed.
-
-
-### Preview without failing (`--dry-run`)
-
-Add **`--dry-run`** to preview the command **without failing any messages**. The queue is left untouched; the messages that would be failed are listed (capped) and followed by a summary count:
-
-```
-10:47:35 /tmp/2025> fail domain --dry-run unresolvableproblems.com
- 3A/0F-04217-1A3F9C2B domain=unresolvableproblems.com from= to=
- 7C/1B-04217-2B4E0D8A domain=unresolvableproblems.com from= to=
- ...
-[dry-run] unresolvableproblems.com: 62415 messages would be failed. (Showing first 25; 62390 more not listed.)
-```
-
-See [**fail domain quiet** → preview](/momentum/4/console-commands/fail-domain-quiet#fail_domain_quiet_dry_run) for the full description of the listing, the 25-message cap, and placement. **`--dry-run`** combines with the optional `--meta` / `--header` filter.
-
-## See Also
-
-[fail domain quiet](/momentum/4/console-commands/fail-domain-quiet) · [fail all](/momentum/4/console-commands/fail-all)
diff --git a/content/momentum/4/console-commands/fingerprint-cache-summary.md b/content/momentum/4/console-commands/fingerprint-cache-summary.md
deleted file mode 100644
index 8d58326db..000000000
--- a/content/momentum/4/console-commands/fingerprint-cache-summary.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "fingerprint cache summary"
-description: "fingerprint cache summary display the current cache size fingerprint cache summary In order to use this command you must have the Policy Tools suite installed Passive OS fingerprinting is installed as part of the Policy Tools suite This functionality yields information about inbound connections For more information about installing the..."
----
-
-
-## Name
-
-fingerprint cache summary — display the current cache size
-
-## Synopsis
-
-`fingerprint cache summary`
-
-
-## Description
-
-In order to use this command, you must have the Policy Tools suite installed. Passive OS fingerprinting is installed as part of the Policy Tools suite. This functionality yields information about inbound connections. For more information about installing the Policy Tools suite see [“Installing Partner Modules”](/momentum/4/post-installation#install.additional.packages).
-
-This console command displays the current fingerprint cache usage.
-
-Passive operating system fingerprinting runs as a daemon that Momentum communicates with over a socket, `/tmp/p0fd`. This daemon is started using the command: **/etc/init.d/ecp0f start** . The fingerprints are all included in the ecp0f package and are located here: `/opt/msys/ecelerity/3rdParty/etc/p0f/`. These fingerprints do not need to be modified.
-
-
-## See Also
-
-[fingerprint rejection summary](/momentum/4/console-commands/fingerprint-rejection-summary)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/fingerprint-rejection-summary.md b/content/momentum/4/console-commands/fingerprint-rejection-summary.md
deleted file mode 100644
index bff439464..000000000
--- a/content/momentum/4/console-commands/fingerprint-rejection-summary.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "fingerprint rejection summary"
-description: "fingerprint rejection summary display details related to the current inbound connection fingerprint rejection summary In order to use this command you must have the Policy Tools suite installed Passive OS fingerprinting is installed as part of the Policy Tools suite This functionality yields information about inbound connections For more information..."
----
-
-
-## Name
-
-fingerprint rejection summary — display details related to the current inbound connection
-
-## Synopsis
-
-`fingerprint rejection summary`
-
-
-## Description
-
-In order to use this command, you must have the Policy Tools suite installed. Passive OS fingerprinting is installed as part of the Policy Tools suite. This functionality yields information about inbound connections. For more information about installing the Policy Tools suite see [“Installing Partner Modules”](/momentum/4/post-installation#install.additional.packages).
-
-This command displays the genre, detail, receptions and rejections related to the current inbound connection.
-
-Passive operating system fingerprinting runs as a daemon that Momentum communicates with over a socket, `/tmp/p0fd`. This daemon is started using the command: **/etc/init.d/ecp0f start** . The fingerprints are all included in the ecp0f package and are located here: `/opt/msys/ecelerity/3rdParty/etc/p0f/`. These fingerprints do not need to be modified.
-
-
-## See Also
-
-[fingerprint cache summary](/momentum/4/console-commands/fingerprint-cache-summary)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/flush-domain.md b/content/momentum/4/console-commands/flush-domain.md
deleted file mode 100644
index 8c0783d80..000000000
--- a/content/momentum/4/console-commands/flush-domain.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "flush domain"
-description: "flush domain perform delivery attempt on delayed queue of a domain flush domain domain name The flush domain command takes a domain name as an argument and immediately performs a delivery attempt for each message in the delayed queue Momentum has its own retry schedule based on the the number..."
----
-
-
-## Name
-
-flush domain — perform delivery attempt on delayed queue of a domain
-
-## Synopsis
-
-`flush domain` { *`domain_name`* }
-
-
-## Description
-
-The **flush domain** command takes a domain name as an argument and immediately performs a delivery attempt for each message in the delayed queue.
-
-Momentum has its own retry schedule based on the the number of previous attempts and the retry_interval configuration parameter (see Configuration section for details). Issuing this command will cause Momentum to disregard its internally calculated time to next retry for each message in the delayed queue and set it to "now."
-
-If a remote domain (just-revived.com) has had delivery problems and has just come "back online," all messages to that domain could be immediately attempted by performing the following command:
-
-```
-10:47:35 /tmp/2025> flush domain just-revived.com
-just-revived.com flushed. 12521 messages requeued.
-```
-
-You may substitute `all` for the domain name to apply to all domains.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/help.md b/content/momentum/4/console-commands/help.md
deleted file mode 100644
index ec5722035..000000000
--- a/content/momentum/4/console-commands/help.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "help"
-description: "help show help information for console commands help command This command shows help information for available console commands If a command name is specified help message for that particular command will be displayed..."
----
-
-
-## Name
-
-help — show help information for console commands
-
-## Synopsis
-
-`help` [ *`command`* ]
-
-
-## Description
-
-This command shows help information for available console commands. If a command name is specified, help message for that particular command will be displayed.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/hot-domains-list-json.md b/content/momentum/4/console-commands/hot-domains-list-json.md
deleted file mode 100644
index 829978975..000000000
--- a/content/momentum/4/console-commands/hot-domains-list-json.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-lastUpdated: "02/25/2021"
-title: "hot_domains list json"
-description: "The hot_domains list json command shows how the configured hot domains are spread across the maintainer threads, along with with thread ID (Linux process ID) for each of the event loops."
----
-
-
-## Name
-
-hot_domains list json — list details of all hot domains, in JSON format
-
-## Synopsis
-
-`hot_domains list json`
-
-Since Momentum 4.3.1.66
-
-
-## Description
-
-The hot domains subsystem is intended to spread highly-trafficked domains across multiple maintainer threads. The maintainer threads are responsible for managing the mail queues for all the domains and bindings in the system.
-
-The `hot_domains list json` command shows how the configured hot domains are spread across the maintainer threads, along with with thread ID (Linux process ID) for each of the event loops.
-
-```
-09:52:41 /tmp/2025> hot_domains list json
-[
- { "domain": "gmail.com", "tid": 36880, "event_loop": "0x7f5f6cc9a200" },
- { "domain": "hotmail.com", "tid": 36881, "event_loop": "0x7f5f6cc9a300" },
- { "domain": "yahoo.com", "tid": 36882, "event_loop": "0x7f5f6cc9a400" },
- { "domain": "google.com", "tid": 36883, "event_loop": "0x7f5f6cc9a500" },
- { "domain": "aol.com", "tid": 36884, "event_loop": "0x7f5f6cc9a600" },
- { "domain": "mac.com", "tid": 36885, "event_loop": "0x7f5f6cc9a700" },
- { "domain": "att.net", "tid": 36886, "event_loop": "0x7f5f6cc9a800" },
- { "domain": "comcast.net", "tid": 36887, "event_loop": "0x7f5f6cc9a900" },
- { "domain": "naver.com", "tid": 36888, "event_loop": "0x7f5f6cc9aa00" },
- { "domain": "seznam.cz", "tid": 36889, "event_loop": "0x7f5f6cc9ab00" },
- { "domain": "mail.ru", "tid": 36890, "event_loop": "0x7f5f6cc9ac00" },
- { "domain": "web.de", "tid": 36891, "event_loop": "0x7f5f6cc9ad00" },
- { "domain": "gmx.de", "tid": 36880, "event_loop": "0x7f5f6cc9a200" },
- { "domain": "verizon.net", "tid": 36881, "event_loop": "0x7f5f6cc9a300" },
- { "domain": "googlemail.com", "tid": 36882, "event_loop": "0x7f5f6cc9a400" },
- { "domain": "cox.net", "tid": 36883, "event_loop": "0x7f5f6cc9a500" },
- { "domain": "yahoo.co.uk", "tid": 36884, "event_loop": "0x7f5f6cc9a600" },
- { "domain": "yahoo.fr", "tid": 36885, "event_loop": "0x7f5f6cc9a700" },
- { "domain": "qq.com", "tid": 36886, "event_loop": "0x7f5f6cc9a800" },
- { "domain": "yahoo.co.jp", "tid": 36887, "event_loop": "0x7f5f6cc9a900" }
-]
-```
-
-[hot_domains list](/momentum/4/console-commands/hot-domains-list) is an alternative version of this command that outputs in a more human-readable format.
-
-### See Also
-
-[hot_domains](/momentum/4/config/ref-hot-domains) configuration option,
-[maintainer_pool](/momentum/4/config/ref-maintainer-pool) configuration option,
-[hot_domains list](/momentum/4/console-commands/hot-domains-list) command
diff --git a/content/momentum/4/console-commands/hot-domains-list.md b/content/momentum/4/console-commands/hot-domains-list.md
deleted file mode 100644
index e07b15124..000000000
--- a/content/momentum/4/console-commands/hot-domains-list.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-lastUpdated: "02/09/2021"
-title: "hot_domains list"
-description: "The hot_domains list command shows how the configured hot domains are spread across the maintainer threads, along with with thread ID (Linux process ID) for each of the event loops."
----
-
-
-## Name
-
-hot_domains list — list details of all hot domains
-
-## Synopsis
-
-`hot_domains list`
-
-Since Momentum 4.3.1.66
-
-
-## Description
-
-The hot domains subsystem is intended to spread highly-trafficked domains across multiple maintainer threads. The maintainer threads are responsible for managing the mail queues for all the domains and bindings in the system.
-
-The `hot_domains list` command shows how the configured hot domains are spread across the maintainer threads, along with with thread ID (Linux process ID) for each of the event loops.
-
-```
-09:41:21 /tmp/2025> hot_domains list
-Hot domain: gmail.com
- Event loop instance pointer: 0x7f5f6cc9a200
- Thread ID (TID/PID): 36880
-
-Hot domain: hotmail.com
- Event loop instance pointer: 0x7f5f6cc9a300
- Thread ID (TID/PID): 36881
-
-Hot domain: yahoo.com
- Event loop instance pointer: 0x7f5f6cc9a400
- Thread ID (TID/PID): 36882
-
-Hot domain: google.com
- Event loop instance pointer: 0x7f5f6cc9a500
- Thread ID (TID/PID): 36883
-
-Hot domain: aol.com
- Event loop instance pointer: 0x7f5f6cc9a600
- Thread ID (TID/PID): 36884
-
-...
-```
-
-[hot_domains list json](/momentum/4/console-commands/hot-domains-list-json) is an alternative version of this command that outputs JSON.
-
-A use-case for this command is to understand which of the maintainer event loops is using a lot of CPU. It may be that the hot domains configuration needs modifying to spread the domains out better across the maintainer event loops.
-
-E.g.: with this configuration (from ec_console):
-
-```
-09:44:43 /tmp/2025> config eval maintainer_pool
-Maintainer_pool = "mpool"
-
-09:44:54 /tmp/2025> config showrecurse eventloop mpool
-concurrency = 12
-```
-
-you can see the CPU usage for the maintainer threads using this command from the shell:
-
-```
-$ top -b -n 1 -H -p $(cat /var/run/ecelerity.pid.instance ) | sort -n | grep evt-mpool
-36880 ecuser 20 0 598g 28g 260m S 3.9 31.0 895:33.75 evt-mpool
-36881 ecuser 20 0 598g 28g 260m S 0.0 31.0 265:36.02 evt-mpool
-36882 ecuser 20 0 598g 28g 260m S 0.0 31.0 441:03.08 evt-mpool
-36883 ecuser 20 0 598g 28g 260m S 0.0 31.0 242:12.17 evt-mpool
-36884 ecuser 20 0 598g 28g 260m S 3.9 31.0 371:17.59 evt-mpool
-36885 ecuser 20 0 598g 28g 260m S 2.0 31.0 236:30.89 evt-mpool
-36886 ecuser 20 0 598g 28g 260m S 0.0 31.0 242:02.16 evt-mpool
-36887 ecuser 20 0 598g 28g 260m S 0.0 31.0 247:28.92 evt-mpool
-36888 ecuser 20 0 598g 28g 260m S 0.0 31.0 236:43.63 evt-mpool
-36889 ecuser 20 0 598g 28g 260m S 0.0 31.0 240:08.36 evt-mpool
-36890 ecuser 20 0 598g 28g 260m S 0.0 31.0 239:55.99 evt-mpool
-36891 ecuser 20 0 598g 28g 260m S 0.0 31.0 236:51.27 evt-mpool
-```
-
-### See Also
-
-[hot_domains](/momentum/4/config/ref-hot-domains) configuration option,
-[maintainer_pool](/momentum/4/config/ref-maintainer-pool) configuration option,
-[hot_domains list json](/momentum/4/console-commands/hot-domains-list-json) command
diff --git a/content/momentum/4/console-commands/index.md b/content/momentum/4/console-commands/index.md
deleted file mode 100644
index 5c9677207..000000000
--- a/content/momentum/4/console-commands/index.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-lastUpdated: "04/15/2026"
-title: "Category File"
-type: "custom"
-name: "Non-Module-Specific Console Commands"
-description: "This section documents all the non module specific console commands Module specific console commands are documented with their module See Chapter 71 Modules Reference Preceding a command with xml will output the results in XML format..."
----
-
-
-| Name | Description |
-|-------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
-| [active](/momentum/4/console-commands/active) | show domains with active queue size bigger than threshold |
-| [authz id](/momentum/4/console-commands/authz-id) | display the id of the current user |
-| [authz roles list](/momentum/4/console-commands/authz-roles-list) | display the currently defined roles |
-| [binding active](/momentum/4/console-commands/binding-active) | show domains with active queue size bigger than threshold on a specified binding |
-| [binding delayed](/momentum/4/console-commands/binding-delayed) | show domains with delayed queue size bigger than threshold on a specified binding |
-| [binding fail domain](/momentum/4/console-commands/binding-fail-domain) | fail messages for a domain on a binding with a bounce message |
-| [binding fail domain quiet](/momentum/4/console-commands/binding-fail-domain-quiet) | fail messages for a domain on a binding without generating bounces |
-| [binding flush domain](/momentum/4/console-commands/binding-flush-domain) | perform delivery attempt on delayed queue of a domain on a binding |
-| [binding summary](/momentum/4/console-commands/binding-summary) | show binding statistics |
-| [cache list](/momentum/4/console-commands/cache-list) | list all caches along with their associated attributes |
-| [cache stat](/momentum/4/console-commands/cache-stat) | show detailed cache statistics for the specified cache |
-| [cache stats](/momentum/4/console-commands/cache-stats) | show cache statistics |
-| [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 |
-| [domain](/momentum/4/console-commands/domain) | show domain statistics |
-| [domain all](/momentum/4/console-commands/domain-all) | show statistics for all domains |
-| [fail all](/momentum/4/console-commands/fail-all) | fail matching queued messages globally (filter required) with a bounce message |
-| [fail all quiet](/momentum/4/console-commands/fail-all-quiet) | fail matching queued messages globally (filter required) without generating bounces |
-| [fail domain](/momentum/4/console-commands/fail-domain) | fail messages for a domain with a bounce message |
-| [fail domain quiet](/momentum/4/console-commands/fail-domain-quiet) | fail messages for a domain without generating bounces |
-| [fingerprint cache summary](/momentum/4/console-commands/fingerprint-cache-summary) | display the current cache size |
-| [fingerprint rejection summary](/momentum/4/console-commands/fingerprint-rejection-summary) | display details related to the current inbound connection |
-| [flush domain](/momentum/4/console-commands/flush-domain) | perform delivery attempt on delayed queue of a domain |
-| [help](/momentum/4/console-commands/help) | show help information for console commands |
-| [hot_domains list](/momentum/4/console-commands/hot-domains-list) | show how hot domains are spread across maintainer threads |
-| [hot_domains list json](/momentum/4/console-commands/hot-domains-list-json) | show how hot domains are spread across maintainer threads (JSON format) |
-| [mailq](/momentum/4/console-commands/4-mailq) | show the status of the mail queues |
-| [memory](/momentum/4/console-commands/4-memory) | report detailed memory usage |
-| [message details](/momentum/4/console-commands/message-details) | show detailed message information |
-| [message fail](/momentum/4/console-commands/message-fail) | fail a message |
-| [message fail quiet](/momentum/4/console-commands/message-fail-quiet) | fail a message and do not create a non-delivery receipt (NDR) |
-| [message retry](/momentum/4/console-commands/message-retry) | perform an immediate delivery attempt on a message |
-| [module](/momentum/4/console-commands/4-module) | manage loaded modules online |
-| [mta_sts](/momentum/4/console-commands/mta_sts) | commands to display and manage MTA-STS policy for a domain |
-| [\pager](/momentum/4/console-commands/pager) | Page output of long console commands in the console. |
-| [paniclog](/momentum/4/console-commands/paniclog) | show last several entries written to paniclog |
-| [pid](/momentum/4/console-commands/pid) | show process id of Momentum |
-| [rebind](/momentum/4/console-commands/rebind) | rebind the messages in a binding or domain |
-| [refresh domain](/momentum/4/console-commands/refresh-domain) | refresh the DNS information for a domain |
-| [reopen logs](/momentum/4/console-commands/reopen-logs) | close and open log files |
-| [reroute queue](/momentum/4/console-commands/reroute-queue) | move messages from queues of one domain to queues of the other |
-| [show inbound](/momentum/4/console-commands/show-inbound) | show all inbound connections |
-| [show outbound](/momentum/4/console-commands/show-outbound) | show all outbound connections |
-| [showqueue](/momentum/4/console-commands/showqueue) | show queue information |
-| [shutdown](/momentum/4/console-commands/shutdown) | shutdown Momentum |
-| [signing_stats](/momentum/4/console-commands/signing-stats) | show DK/DKIM signing stats |
-| [signing_stats reset](/momentum/4/console-commands/signing-stats-reset) | reset signing stats |
-| [sp_async](/momentum/4/console-commands/sp-async) | Access the asynchronous I/O subsystem |
-| [spool import](/momentum/4/console-commands/spool-import) | import an alternative spool |
-| [spool import_poll](/momentum/4/console-commands/spool-import-poll) | check the status of a spool that is being imported |
-| [spool_in](/momentum/4/console-commands/spool-in) | read a message from the spool to the mail queue |
-| [summary](/momentum/4/console-commands/summary) | show global metrics |
-| [summary reset](/momentum/4/console-commands/summary-reset) | reset summary statistics |
-| [sysinfo](/momentum/4/console-commands/sysinfo) | show system information |
-| [threads](/momentum/4/console-commands/threads) | Display summary statistics for thread pools |
-| [tls](/momentum/4/console-commands/tls) | manage TLS cache used by Momentum |
-| [trace smtp](/momentum/4/console-commands/trace-smtp) | trace smtp transactions |
-| [unlink stats](/momentum/4/console-commands/unlink-stats) | show statistics of removing messages from the disk |
-| [version](/momentum/4/console-commands/version) | show version information of Momentum |
-| [write config](/momentum/4/console-commands/write-config) | display current running configuration |
-
-This section documents all the non-module-specific console commands. Module-specific console commands are documented with their module. See [*Modules Reference*](/momentum/4/modules/) .
-
-Preceding a command with `xml` will output the results in XML format.
diff --git a/content/momentum/4/console-commands/message-details.md b/content/momentum/4/console-commands/message-details.md
deleted file mode 100644
index 18515b047..000000000
--- a/content/momentum/4/console-commands/message-details.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "message details"
-description: "message details show detailed message information message details full body message id While all messages are stored on disk in the spool and can be manually inspected there Momentum also provides a mechanism to view message details from within the console Given a message id you can request the metadata..."
----
-
-
-## Name
-
-message details — show detailed message information
-
-## Synopsis
-
-`message details` [ *`full | body`* ] { *`message_id`* }
-
-
-## Description
-
-While all messages are stored on disk in the spool and can be manually inspected there, Momentum also provides a mechanism to view message details from within the console.
-
-Given a message id, you can request the metadata details on that message, the body of the message (including headers) or the metadata concatenated with the body (including headers).
-
-To show just the metadata, issue the command with the message id as a single parameter.
-
-```
-10:47:35 /tmp/2025> message details 53/6B-18426-1AAEACF3
-Message: 53/6B-18426-1AAEACF3
-Message Type: full message
- Created: 2003-12-01 02:15:45
- Next Attempt: 2003-12-01 18:11:25
- Retries: 5
- Received Via: SMTP 10.0.0.103 (IPv4)
- Sender: sender-849629@senderdomain.com
- Recipient: someaddress@example.com
- Code: 451 No valid hosts (too many connection failures)
- Size: 11317
-```
-
-If only the body is desired, then the command should take the form:
-
-`message details body 53/6B-18426-1AAEACF3`
-
-If both the metadata and the body are desired, the "full" option should be used:
-
-`message details full 53/6B-18426-1AAEACF3`
-### Note
-
-`message details` cannot show details for a message that is in the process of being delivered.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/message-fail-quiet.md b/content/momentum/4/console-commands/message-fail-quiet.md
deleted file mode 100644
index 93e942903..000000000
--- a/content/momentum/4/console-commands/message-fail-quiet.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "message fail quiet"
-description: "message fail quiet fail a message and do not create a non delivery receipt NDR message fail quiet message id This command takes a single argument in the form of a message id and will immediately fail the delivery of the message suppressing the creation of an NDR message fail..."
----
-
-
-## Name
-
-message fail quiet — fail a message and do not create a non-delivery receipt (NDR)
-
-## Synopsis
-
-`message fail quiet` { *`message_id`* }
-
-
-## Description
-
-This command takes a single argument in the form of a message id and will immediately fail the delivery of the message suppressing the creation of an NDR.
-
-
-## See Also
-
-[message fail](/momentum/4/console-commands/message-fail)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/message-fail.md b/content/momentum/4/console-commands/message-fail.md
deleted file mode 100644
index 72aa7a0db..000000000
--- a/content/momentum/4/console-commands/message-fail.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "message fail"
-description: "message fail fail a message message fail message id This command takes a single argument in the form of a message id and will permanently fail the delivery of the message with the error 554 manually failed message fail quiet..."
----
-
-
-## Name
-
-message fail — fail a message
-
-## Synopsis
-
-`message fail` { *`message_id`* }
-
-
-## Description
-
-This command takes a single argument in the form of a message id and will permanently fail the delivery of the message with the error: "554 manually failed."
-
-
-## See Also
-
-[message fail quiet](/momentum/4/console-commands/message-fail-quiet)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/message-retry.md b/content/momentum/4/console-commands/message-retry.md
deleted file mode 100644
index cf6473ca8..000000000
--- a/content/momentum/4/console-commands/message-retry.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "message retry"
-description: "message retry perform an immediate delivery attempt on a message message retry message id This command takes a message ID as an argument and forces an immediate delivery attempt by placing it in the active queue for the appropriate domain..."
----
-
-
-## Name
-
-message retry — perform an immediate delivery attempt on a message
-
-## Synopsis
-
-`message retry` { *`message_id`* }
-
-
-## Description
-
-This command takes a message ID as an argument and forces an immediate delivery attempt by placing it in the active queue for the appropriate domain.
-
-```
-10:47:35 /tmp/2025> message retry 53/6B-18426-1AAEACF3
-Message requeued for delivery
-```
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/mta-sts.md b/content/momentum/4/console-commands/mta-sts.md
deleted file mode 100644
index ea7bd0516..000000000
--- a/content/momentum/4/console-commands/mta-sts.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-lastUpdated: "06/01/2024"
-title: "mta_sts"
-description: "mta_sts ec_console commands"
----
-
-
-## Name
-
-mta_sts - commands for MTA-STS related data.
-
-## Synopsis
-
-`mta_sts list all`
-
-`mta_sts show domain {domain name}`
-
-`mta_sts refresh policy {domain name}`
-
-## Description
-
-**mta_sts list all** - lists all the active domains which have MTA-STS policies
-
-```
-15:42:38 /tmp/2025> mta_sts list all
-gmail.com
-Total domains: 1
-```
-
-**mta_sts show domain { domain name }** - shows MTA-STS TXT record and policy details of a given domain.
- The same content will be shown in [domain](/momentum/4/console-commands/domain) command output also, if
- available.
-
-
-```
-18:13:43 /tmp/2025> mta_sts show domain gmail.com
-Domain 'gmail.com' has MTA-STS TXT and a TTL of 185 seconds
- id: 20190429T010101
- max_age: 86400 seconds; refresh in 86375 seconds
- mode: enforce
- mxlist:
- gmail-smtp-in.l.google.com
- *.gmail-smtp-in.l.google.com
-```
-
-**mta_sts refresh policy {domain name}** - forces MTA-STS policy refresh by fetching the policy
- from the HTTPS endpoint for a given domain.
-
-
-```
-18:14:41 /tmp/2025> mta_sts refresh policy gmail.com
-MTA-STS policy for gmail.com refreshed.
-```
diff --git a/content/momentum/4/console-commands/pager.md b/content/momentum/4/console-commands/pager.md
deleted file mode 100644
index ba83acf6d..000000000
--- a/content/momentum/4/console-commands/pager.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "\\pager"
-description: "pager Page output of long console commands in the console pager pager turns the pager on and off Frequently the output from console commands may span more than the size of a window If the pager is on it uses the pager specified in PAGER to page the output of..."
----
-
-
-## Name
-
-\pager — Page output of long console commands in the console.
-
-## Synopsis
-
-`\pager`
-
-
-## Description
-
-\pager turns the pager on and off. Frequently the output from console commands may span more than the size of a window, If the pager is on, it uses the pager specified in $PAGER to page the output of any console command with more lines of output than the height of its terminal window.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/paniclog.md b/content/momentum/4/console-commands/paniclog.md
deleted file mode 100644
index 09a5379ee..000000000
--- a/content/momentum/4/console-commands/paniclog.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "paniclog"
-description: "paniclog show last several entries written to paniclog paniclog Momentum maintains in memory the last several messages that were written to the paniclog This command will display the last 10 messages seen on each log level see the debug flags for details..."
----
-
-
-## Name
-
-paniclog — show last several entries written to paniclog
-
-## Synopsis
-
-`paniclog`
-
-
-## Description
-
-Momentum maintains, in memory, the last several messages that were written to the paniclog. This command will display the last 10 messages seen on each log level (see the [debug_flags](/momentum/4/config/ref-debug-flags) for details).
-
-```
-10:47:35 /tmp/2025> paniclog
-[Sun 30 Nov 2003 10:31:37] [serious] Validating software license.
-[Sun 30 Nov 2003 10:31:37] [serious] Validated MAC address 00:01:02:34:4b:b3
-[Sun 30 Nov 2003 10:31:37] [serious] Licensed unlimited MultiVIP bindings.
-[Sun 30 Nov 2003 10:31:37] [serious] Valid license.
-[Sun 30 Nov 2003 10:31:37] [serious] ndbm_cache initialized
-```
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/pid.md b/content/momentum/4/console-commands/pid.md
deleted file mode 100644
index b68a50705..000000000
--- a/content/momentum/4/console-commands/pid.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "pid"
-description: "pid show process id of Momentum pid This command shows the process id of the running Momentum instance..."
----
-
-
-## Name
-
-pid — show process id of Momentum
-
-## Synopsis
-
-`pid`
-
-
-## Description
-
-This command shows the process id of the running Momentum instance.
-
-```
-10:47:35 /tmp/2025> pid
-481
-```
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/rebind.md b/content/momentum/4/console-commands/rebind.md
deleted file mode 100644
index b3dba65b3..000000000
--- a/content/momentum/4/console-commands/rebind.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "rebind"
-description: "rebind rebind the messages in a binding or domain rebind binding name domain name The rebind command directs Momentum to re evaluate the binding assignment of the messages in the specified binding or domain Typically this is performed when an online change to binding assignments has been made and the..."
----
-
-
-## Name
-
-rebind — rebind the messages in a binding or domain
-
-## Synopsis
-
-`rebind` { *`binding_name`* } [ *`domain_name`* ]
-
-
-## Description
-
-The **rebind** command directs Momentum to re-evaluate the binding assignment of the messages in the specified binding or domain. Typically this is performed when an online change to binding assignments has been made and the administrator wishes to have it apply retroactively to messages already in the system without a reboot.
-
-For example, the following command could be used to rebind all the messages currently in the TEST binding.
-
-```
-10:47:35 /tmp/2025> rebind TEST
-Rebound 62415 messages.
-```
-
-You could also rebind all messages across all bindings:
-
-```
-10:47:35 /tmp/2025> rebind all
-Rebound 69497 messages.
-```
-
-Or messages on a particular domain/binding combination:
-
-```
-10:47:35 /tmp/2025> rebind TEST aol.com
-Rebound 952 messages.
-```
-
-This command can take a long time to complete if you have a large number of messages eligible for rebinding. Please use with prudence on production systems.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/refresh-domain.md b/content/momentum/4/console-commands/refresh-domain.md
deleted file mode 100644
index 80329e0ec..000000000
--- a/content/momentum/4/console-commands/refresh-domain.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "refresh domain"
-description: "refresh domain refresh the DNS information for a domain refresh domain domain This command takes a single argument in the form of a domain name and refreshes the DNS information for the specified domain Instead of specifying a domain name you may specify all to view all domains This console..."
----
-
-
-## Name
-
-refresh domain — refresh the DNS information for a domain
-
-## Synopsis
-
-`refresh domain` { *`domain`* }
-
-
-## Description
-
-This command takes a single argument in the form of a domain name and refreshes the DNS information for the specified domain. Instead of specifying a domain name you may specify `all` to view all domains.
-
-### Note
-
-This console command manipulates the *route cache* , and likewise with the [dig](/momentum/4/console-commands/dig) and [domain](/momentum/4/console-commands/domain) commands. The *DNS cache* , is manipulated by the [dns_cache](/momentum/4/console-commands/dns-cache) series of console commands.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/reopen-logs.md b/content/momentum/4/console-commands/reopen-logs.md
deleted file mode 100644
index a81ed9e5d..000000000
--- a/content/momentum/4/console-commands/reopen-logs.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "reopen logs"
-description: "reopen logs close and open log files reopen logs This command requests that all logging modules close and reopen their log files It is up to the specific module implementation to do what is necessary to fulfill the request This is instrumental in log rotation as the logs are moved..."
----
-
-
-## Name
-
-reopen logs — close and open log files
-
-## Synopsis
-
-`reopen logs`
-
-
-## Description
-
-This command requests that all logging modules close and reopen their log files. It is up to the specific module implementation to do what is necessary to fulfill the request. This is instrumental in log rotation as the logs are moved to the side and Momentum must close and reopen its file handles to start using new resources.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/reroute-queue.md b/content/momentum/4/console-commands/reroute-queue.md
deleted file mode 100644
index 82513b6f9..000000000
--- a/content/momentum/4/console-commands/reroute-queue.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-lastUpdated: "06/24/2026"
-title: "reroute queue"
-description: "reroute queue ec_console move messages between domain queues selectively by metadata or RFC822 header match optional --meta --header filter --dry-run preview"
----
-
-
-## Name
-
-reroute queue — move messages from queues of one domain to queues of the other
-
-## Synopsis
-
-`reroute queue` [ `--dry-run` ] [ `--meta` *`key`* *`value`* | `--header` *`header_name`* *`header_line`* ] { *`domain_name1`* | `all` } { *`domain_name2`* }
-
-
-## Description
-
-The **reroute queue** command requires two domain names as its arguments. It will move messages from queues of the first domain to the queues of the second domain.
-
-```
-10:47:35 /tmp/2025> reroute queue relay.com newrelay.com
-Moved 100 messages from 'relay.com' to 'newrelay.com'
-```
-
-You may substitute `all` for *`domain_name1`* to move messages out of **every** source domain's queues into *`domain_name2`*.
-
-
-### Selective reroute (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). Place **at most one** clause immediately after `reroute queue` and **before** the source domain. With a filter, only matching messages are moved; non-matching messages stay in the source domain's queues. Without a filter, every queued message for the source domain is moved (original behavior).
-
-You cannot combine `--meta` and `--header` in the same command.
-
-```
-10:47:35 /tmp/2025> reroute queue --meta mo_campaign_id summer-sale relay.com newrelay.com
-Moved 12 messages from 'relay.com' to 'newrelay.com'
-```
-
-```
-10:47:35 /tmp/2025> reroute queue --header X-Reroute-Pick alpha all newrelay.com
-Moved 4 messages from 'all' to 'newrelay.com'
-```
-
-
-### Preview without moving (`--dry-run`)
-
-Add **`--dry-run`** to see what the command *would* do **without moving any messages**. The queues are left untouched; each message that would be rerouted is listed on its own line—spool id, source domain, and envelope sender and recipient—followed by a summary count:
-
-```
-10:47:35 /tmp/2025> reroute queue --dry-run relay.com newrelay.com
- 3A/0F-04217-1A3F9C2B domain=relay.com from= to=
- 7C/1B-04217-2B4E0D8A domain=relay.com from= to=
- ...
-[dry-run] relay.com -> newrelay.com: 100 messages would be moved. (Showing first 25; 75 more not listed.)
-```
-
-At most the first 25 matching messages are listed; when more match, the trailing summary reports the total and how many were not listed. **`--dry-run`** may appear anywhere in the command and combines with the optional `--meta` / `--header` filter, so you can confirm exactly which messages a selective reroute would move before running it for real.
-
-When `reroute queue` is invoked over the XML/HTTP control channel, the per-message lines are omitted (they would corrupt the response envelope); the response instead reports `1` and a `` count in place of ``.
-
-## See Also
-
-The same `--meta` / `--header` filtering clause and the `--dry-run` preview are accepted by 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/show-inbound.md b/content/momentum/4/console-commands/show-inbound.md
deleted file mode 100644
index 4c996e372..000000000
--- a/content/momentum/4/console-commands/show-inbound.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "show inbound"
-description: "show inbound show all inbound connections show inbound This command shows all inbound connections In the following example the output has been wrapped for display purpose 23 is the file descriptor of the related event async body response for 0 264 s shows the last state of the messages coming..."
----
-
-
-## Name
-
-show inbound — show all inbound connections
-
-## Synopsis
-
-`show inbound`
-
-
-## Description
-
-This command shows all inbound connections. In the following example, the output has been wrapped for display purpose. "23" is the file descriptor of the related event. "async body response (for 0.264s)" shows the last state of the messages coming in via this connection and the time spent in that state. "[floating]" means the messages coming in via this connection are not handled by the main scheduler right now. -->
-
-```
-10:47:35 /tmp/2025> show inbound
-23: [inbound/esmtp_message_factory] IPv4 127.0.0.1:47741 async body response
-(for 0.264s) [floating]
-```
-
-## See Also
-
-[show outbound](/momentum/4/console-commands/show-outbound)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/show-outbound.md b/content/momentum/4/console-commands/show-outbound.md
deleted file mode 100644
index 0ae6829fe..000000000
--- a/content/momentum/4/console-commands/show-outbound.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "show outbound"
-description: "show outbound show all outbound connections show outbound This command shows all outbound connections The number at the beginning of each line in the output is the file descriptor of that event HTTP Clients This command will also display Google Push notification connections as http handleconnect connections All modules that..."
----
-
-
-## Name
-
-show outbound — show all outbound connections
-
-## Synopsis
-
-`show outbound`
-
-
-## Description
-
-This command shows all outbound connections. The number at the beginning of each line in the output is the file descriptor of that event.
-
-```
-17:34:28 ecelerity(/tmp/2025)> show outbound
-36: [outbound/connection_handleconnect] exchange.opf.com IPv4 207.77.20.65
-58: [outbound/connection_handleconnect] pe.net IPv4 64.38.64.3
-61: [outbound/connection_handleconnect] mail.nctimes.net IPv4 206.171.125.194
-70: [outbound/connection_handleconnect] powersurfr.com IPv4 66.116.109.60
-71: [outbound/connection_handleconnect] peace.alpha.linkserve.com IPv4 195.166.237.7
-72: [outbound/connection_handleconnect] lcc.net IPv4 207.70.175.16
-73: [outbound/connection_handleconnect] metallica.com IPv4 64.236.242.239
-74: [outbound/connection_handleconnect] ussurg.com IPv4 216.75.208.236
-75: [outbound/connection_handleconnect] ttc.com IPv4 157.234.254.51
-76: [outbound/connection_handleconnect] md.prestige.net IPv4 72.32.79.195
-77: [outbound/connection_handleconnect] mx1.990.net IPv4 202.102.13.148
-```
-
-**HTTP Clients**
-
-This command will also display Google Push notification connections as "http_handleconnect" connections. All modules that use the generic HTTP client will have their connections show up under this generic category.
-
-
-## See Also
-
-[show inbound](/momentum/4/console-commands/show-inbound) and [Momentum for Mobile Push Notifications](/momentum/3/3-push)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/showqueue.md b/content/momentum/4/console-commands/showqueue.md
deleted file mode 100644
index 079e523e5..000000000
--- a/content/momentum/4/console-commands/showqueue.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "showqueue"
-description: "showqueue show queue information showqueue binding binding name domain name limit offset The showqueue command is used to list the messages in the queue for a particular domain The first optional argument is the binding name If no binding is specified the default binding will be used A domain name..."
----
-
-
-## Name
-
-showqueue — show queue information
-
-## Synopsis
-
-`showqueue` [ binding *`binding_name`* ] { *`domain_name`* } [ *`limit,offset`* ]
-
-
-## Description
-
-The **showqueue** command is used to list the messages in the queue for a particular domain. The first optional argument is the binding name. If no binding is specified, the default binding will be used. A domain name must be specified. The final optional argument is a "maximum" to show and an "offset" at which to start displaying. This argument defaults to "100,0" if omitted.
-
-To display all the bindings on a domain execute the command **showqueue binding all *`example.com`*** .
-
-The output from the domain example.com which has one message in the active queue and one in the delayed queue, both destined to leave via the default binding, might look as follows:
-
-```
-10:47:35 /tmp/2025> showqueue example.com
-[active/default] B3/1D-18426-471AACF3 Created: 1070244212
- From: To:
-[delayed/default] B3/79-18426-4A4BACF3 Created: 1070244212
- From: To:
-```
-
-you can also list the messages in the queue for a particular domain on a particular binding by specifying a binding name as shown in the following example:
-
-```
-10:47:35 /tmp/2025> showqueue binding smtp-01 example.com
-[active/smtp-01] 00/00-21047-B5581944 Created: 1150387547
- From: To:
-[delayed/smtp-01] 10/00-21047-B5581944 Created: 1150387547
- From: To:
-```
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/shutdown.md b/content/momentum/4/console-commands/shutdown.md
deleted file mode 100644
index dc48ae830..000000000
--- a/content/momentum/4/console-commands/shutdown.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "shutdown"
-description: "shutdown shutdown Momentum shutdown This command immediately causes Momentum to shutdown Momentum must close its sockets and file descriptors cleanly so this may not happen instantaneously After this command is issued no further connections will be allowed..."
----
-
-
-## Name
-
-shutdown — shutdown Momentum
-
-## Synopsis
-
-`shutdown`
-
-
-## Description
-
-This command immediately causes Momentum to shutdown. Momentum must close its sockets and file descriptors cleanly, so this may not happen instantaneously. After this command is issued, no further connections will be allowed.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/signing-stats-reset.md b/content/momentum/4/console-commands/signing-stats-reset.md
deleted file mode 100644
index aa68f9ba6..000000000
--- a/content/momentum/4/console-commands/signing-stats-reset.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "signing_stats reset"
-description: "signing stats reset reset signing stats signing stats reset This command resets all DKIM and Domainkeys signing statistics Section 71 28 domainkeys Yahoo Domain Keys Section 71 50 opendkim Open Source DKIM signing stats and signing stats..."
----
-
-
-## Name
-
-signing_stats reset — reset signing stats
-
-## Synopsis
-
-`signing_stats reset`
-
-
-## Description
-
-This command resets all DKIM and Domainkeys signing statistics.
-
-```
-10:56:11 ecelerity(/tmp/2025)> signing_stats reset
-Signing Statistics are reset
-```
-
-## See Also
-
-[“domainkeys – Yahoo! DomainKeys”](/momentum/4/modules/domainkeys), [“opendkim – Open Source DKIM”](/momentum/4/modules/opendkim), [signing_stats](/momentum/4/config/ref-signing-stats), and [signing_stats](/momentum/4/console-commands/signing-stats)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/signing-stats.md b/content/momentum/4/console-commands/signing-stats.md
deleted file mode 100644
index 6eea268dc..000000000
--- a/content/momentum/4/console-commands/signing-stats.md
+++ /dev/null
@@ -1,153 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "signing_stats"
-description: "signing stats show DK DKIM signing stats signing stats This command shows DKIM and Domainkeys signing statistics since startup or the last reset of statistics Global and Per Binding statistics are persistent across Momentum shutdown and startup Per Domain and Per Binding Per Domain statistics are not persistent Global The..."
----
-
-
-## Name
-
-signing_stats — show DK/DKIM signing stats
-
-## Synopsis
-
-`signing_stats`
-
-
-## Description
-
-This command shows DKIM and Domainkeys signing statistics since startup or the last reset of statistics. Global and Per Binding statistics are persistent across Momentum shutdown and startup. Per Domain and Per Binding-Per Domain statistics are not persistent.
-
-```
-10:47:35 /tmp/2025> signing_stats
-Signing Statistics
-
-Global
- DomainKeys
- AccumulatedSigningTime 0.0494
- TotalMessagesSigned 1
- FailedSigningAttempts 0
- TotalMessagesProcessed 1
- DKIM
- AccumulatedSigningTime 0.0187
- TotalMessagesSigned 1
- FailedSigningAttempts 0
- TotalMessagesProcessed 1
-Per Domain
- DomainName omniti.com
- DomainKeys
- AccumulatedSigningTime 0.0494
- TotalMessagesSigned 1
- FailedSigningAttempts 0
- TotalMessagesProcessed 1
- DKIM
- AccumulatedSigningTime 0.0187
- TotalMessagesSigned 1
- FailedSigningAttempts 0
- TotalMessagesProcessed 1
-Per Binding
- binding_name example
- DomainKeys
- AccumulatedSigningTime 0.0494
- TotalMessagesSigned 1
- FailedSigningAttempts 0
- TotalMessagesProcessed 1
- DKIM
- AccumulatedSigningTime 0.0187
- TotalMessagesSigned 1
- FailedSigningAttempts 0
- TotalMessagesProcessed 1
- Per Binding Per Domain
- DomainName omniti.com
- DomainKeys
- AccumulatedSigningTime 0.0494
- TotalMessagesSigned 1
- FailedSigningAttempts 0
- TotalMessagesProcessed 1
- DKIM
- AccumulatedSigningTime 0.0187
- TotalMessagesSigned 1
- FailedSigningAttempts 0
- TotalMessagesProcessed 1
-```
-
-
-
-- Global
-
--
-
-The statistics in this section are accumulated across all domains and bindings.
-
-
-
-- Per Domain
-
--
-
-The statistics in this section are grouped by domain and identified by the domain name. The statistics under each domain name are accumulated for that domain only.
-
-
-
-- Per Binding
-
--
-
-The statistics in this section are grouped by binding, headed by the binding name, and by domain within the binding. The statistics under each binding name are accumulated for all domains within that binding. Statistics headed by domain name are accumulated for that domain within the binding only.
-
-
-
-- DomainKeys
-
--
-
-This term labels signing statistics accumulated by Domainkeys signing.
-
-
-
-- DKIM
-
--
-
-This term labels statistics accumulated by DKIM signing.
-
-
-
-- AccumulatedSigningTime
-
--
-
-The total amount of time (in seconds) spent processing messages.
-
-
-
-- TotalMessagesSigned
-
--
-
-The total number of Messages successfully signed.
-
-
-
-- FailedSigningAttempts
-
--
-
-The total number of failed attempts at signing.
-
-
-
-- TotalMessagesProcessed
-
--
-
-The total number of messages processed including messages that the signing algorithm determines are not to be signed.
-
-
-
-
-
-
-## See Also
-
-[“domainkeys – Yahoo! DomainKeys”](/momentum/4/modules/domainkeys), [“opendkim – Open Source DKIM”](/momentum/4/modules/opendkim), and [signing_stats reset](/momentum/4/console-commands/signing-stats-reset)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/sp-async.md b/content/momentum/4/console-commands/sp-async.md
deleted file mode 100644
index 04144bd30..000000000
--- a/content/momentum/4/console-commands/sp-async.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "sp_async"
-description: "sp async Access the asynchronous I O subsystem sp async stats Display summary statistics for asynchronous I O..."
----
-
-
-## Name
-
-sp_async — Access the asynchronous I/O subsystem
-
-## Synopsis
-
-`sp_async` { stats }
-
-
-## Description
-
-Display summary statistics for asynchronous I/O.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/spool-import-poll.md b/content/momentum/4/console-commands/spool-import-poll.md
deleted file mode 100644
index 928f00daf..000000000
--- a/content/momentum/4/console-commands/spool-import-poll.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "spool import_poll"
-description: "spool import poll check the status of a spool that is being imported spool import poll path to spool This command takes a single argument in the form of the path to the spool being imported and reports on the status of the spool migration Use this command in conjunction..."
----
-
-
-## Name
-
-spool import_poll — check the status of a spool that is being imported
-
-## Synopsis
-
-`spool import_poll` { *`/path/to/spool`* }
-
-
-## Description
-
-This command takes a single argument in the form of the path to the spool being imported and reports on the status of the spool migration. Use this command in conjunction with the [spool import](/momentum/4/console-commands/spool-import) command.
-
-
-## See Also
-
-[spool import](/momentum/4/console-commands/spool-import)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/spool-import.md b/content/momentum/4/console-commands/spool-import.md
deleted file mode 100644
index 2caeb668f..000000000
--- a/content/momentum/4/console-commands/spool-import.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "spool import"
-description: "spool import import an alternative spool spool import path to spoolbase concurrency suppress trace headers This command instructs Momentum to scan the specified directory as an Momentum spool directory and to migrate the messages within into its active Spool Base This command is useful for disaster recovery actions where a..."
----
-
-
-## Name
-
-spool import — import an alternative spool
-
-## Synopsis
-
-spool import *`/path/to/spoolbase [concurrency] [suppress_trace_headers]`*
-
-
-## Description
-
-This command instructs Momentum to scan the specified directory as an Momentum spool directory, and to migrate the messages within into its active SpoolBase. This command is useful for disaster-recovery actions where a spool needs to be imported via an archive from another install.
-
-The `suppress_trace_headers` suppresses the addition of trace headers on import. When performing a spool import, you may optionally specify the number of threads in the pool. The default value is `1`. When using the `suppress_trace_headers` option, you must specify a concurrency value
-
-Messages imported with spool import will be assigned new message id's only if their existing id's would collide with messages currently in the system. Old messages will be deleted as they are imported.
-
-### Warning
-
-Importing a spool window subdirectory, for example, `/var/spool/ecelerity/59A3B`, may unexpectedly stop the ecelerity process. Importing the parent directory is strongly advised. For example, **`spool import /var/spool/ecelerity`** .
-
-If you import a spool and delete the folder after importation, ecelerity will eventually crash. If you wish to delete the folder associated with an imported spool, do this only after restarting ecelerity.
-
-You can configure the ec_logger module to log import events as described in [“EC_logger – Momentum-Style Logging”](/momentum/4/modules/ec-logger). Alternatively, you can implement a hook to record these events as you see fit.
-
-
-## See Also
-
-[spool import_poll](/momentum/4/console-commands/spool-import-poll)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/spool-in.md b/content/momentum/4/console-commands/spool-in.md
deleted file mode 100644
index b4a8539ef..000000000
--- a/content/momentum/4/console-commands/spool-in.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "spool_in"
-description: "spool in read a message from the spool to the mail queue spool in mid This command takes a message id and tries to read the message specified by the mid from the spool to the mail queue If the message is already in queue it will do nothing except..."
----
-
-
-## Name
-
-spool_in — read a message from the spool to the mail queue
-
-## Synopsis
-
-`spool_in` { *`mid`* }
-
-
-## Description
-
-This command takes a message id and tries to read the message specified by the mid from the spool to the mail queue. If the message is already in queue, it will do nothing except printing a notice.
-
-### Warning
-
-This is an advanced command. Please consult with our support team before making use of this command in a production enviroment.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/summary-reset.md b/content/momentum/4/console-commands/summary-reset.md
deleted file mode 100644
index 42ef074ae..000000000
--- a/content/momentum/4/console-commands/summary-reset.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "summary reset"
-description: "summary reset reset summary statistics summary reset The summary reset command resets the statistics counters of the running instance It is useful for determining the current performance levels of a long running Momentum instance particularly with respect to metrics that are averages such as Delivery Rate and Reception Rate binding..."
----
-
-
-## Name
-
-summary reset — reset summary statistics
-
-## Synopsis
-
-`summary reset`
-
-
-## Description
-
-```
-10:47:35 /tmp/2025> summary reset
-statistics cleared.
-```
-
-The **summary reset** command resets the statistics counters of the running instance. It is useful for determining the current performance levels of a long-running Momentum instance, particularly with respect to metrics that are averages, such as Delivery Rate and Reception Rate.
-
-**NOTE:** Since Momentum 5.2, reset of statistics is available through the HTTP API as well. See the [summary](/momentum/4/http-api-stats/summary) documentation for details.
-
-
-## See Also
-
-[binding summary](/momentum/4/console-commands/binding-summary), [summary](/momentum/4/console-commands/summary)
diff --git a/content/momentum/4/console-commands/summary.md b/content/momentum/4/console-commands/summary.md
deleted file mode 100644
index ca644e200..000000000
--- a/content/momentum/4/console-commands/summary.md
+++ /dev/null
@@ -1,320 +0,0 @@
----
-lastUpdated: "11/05/2024"
-title: "summary"
-description: "summary show global metrics summary with mobile Perhaps the most common and useful command for the console summary will produce global metrics such as queue sizes message counts and throughput rates since startup or the last reset of statistics If you have configured your control listener to listen on the..."
----
-
-
-## Name
-
-summary — show global metrics
-
-## Synopsis
-
-`summary` [ with-mobile ]
-
-
-## Description
-
-Perhaps the most common and useful command for the console, **summary** will produce global metrics such as queue sizes, message counts and throughput rates since startup or the last reset of statistics.
-
-```
-10:47:35 /tmp/2025> summary
-Summary Statistics
- Outbound Concurrency: 2248
- Inbound Concurrency: 90
- Active Domains: 35711
- Active Queue Size: 8793
- Delayed Queue Size: 263175
- Total Queue Size: 272334
- DNS Resolver: ares
- DNS A Queries: 565284
- DNS A Timeouts: 11
- DNS AAAA Queries: 0
- DNS AAAA Timeouts: 0
- DNS MX Queries: 243281
- DNS MX Timeouts: 6
- DNS TXT Queries: 39841
- DNS TXT Timeouts: 0
- Pending DNS Queries: 116
- Query Rate: 9.08 queries/second
- DNS Response Time Peak: 469 ms
- DNS Response Time Average: 0.302 ms
- DNS Rate Limiter: disabled
- Successfully Delivered Messages: 2102439
- Failed Messages: 2508439
- Rejected Messages: 1
- Received Messages: 4883262
- Delivery Rate: 51.76 messages/second
- Reception Rate: 54.82 messages/second
- Statistics Last Reset: 89081 seconds
- Uptime: 89083 seconds
-```
-
-If you have configured your control listener to listen on the default Unix socket, you can invoke the summary command without opening the system console by issuing the command, **`ec_console /tmp/2025 summary`** .
-
-The report fields are as follows:
-
-
-
-- Outbound Concurrency
-
--
-
-The current number of established outbound sessions.
-
-
-
-- Inbound Concurrency
-
--
-
-The current number of established inbound sessions.
-
-
-
-- Active Domains
-
--
-
-The number of domains in the DNS cache.
-
-
-
-- Active Queue Size
-
--
-
-The number of messages in the system that require immediate delivery attempts.
-
-
-
-- Delayed Queue Size
-
--
-
-The number of messages in the system that have been delayed. A message is delayed due to transient delivery failures (4xx SMTP codes) and a retry time is calculated for the message. When that retry time is reached, the message will be moved from the delayed queue to the active queue.
-
-
-
-- Total Queue Size
-
--
-
-The sum of all queues.
-
-
-
-- DNS Resolver
-
--
-
-The library used to resolve DNS queries.
-
-
-
-- DNS A Queries
-
--
-
-The total number of A type queries issued since startup or last summary reset.
-
-
-
-- DNS A Timeouts
-
--
-
-_Introduced in Momentum 4.8._
-
-The total number of A type queries that resulted expired since startup or last summary reset.
-
-
-
-- DNS AAAA Queries
-
--
-
-The total number of AAAA type queries issued since startup or last summary reset.
-
-
-
-- DNS AAAA Timeouts
-
--
-
-_Introduced in Momentum 4.8._
-
-The total number of AAAA type queries that resulted expired since startup or last summary reset.
-
-
-
-- DNS MX Queries
-
--
-
-The total number of MX type queries issued since startup or last summary reset.
-
-
-
-- DNS MX Timeouts
-
--
-
-_Introduced in Momentum 4.8._
-
-The total number of MX type queries that resulted expired since startup or last summary reset.
-
-
- DNS TXT Queries
-
--
-
-_Introduced in Momentum 4.8._
-
-The total number of TXT type queries issued since startup or last summary reset.
-
-
-
-- DNS TXT Timeouts
-
--
-
-_Introduced in Momentum 4.8._
-
-The total number of TXT type queries that resulted expired since startup or last summary reset.
-
-
-
-- Pending DNS Queries
-
--
-
-The total number of DNS queries that are not completed yet.
-
-
-
-- Query Rate
-
--
-
-The average number of DNS queries/second performed since startup or last summary reset.
-
-
-
-- DNS Response Time Peak
-
--
-
-_Introduced in Momentum 4.8._
-
-The peak of all answers response times since startup or last summary reset, in milliseconds.
-
-
-
-- DNS Response Time Average
-
--
-
-_Introduced in Momentum 4.8._
-
-The average of all answers response times since startup or last summary reset, in milliseconds.
-
-
-
-- DNS Rate Limiter
-
--
-
-_Introduced in Momentum 5.3._
-
-Whether the [DNS rate limiter](/momentum/4/config/ref-dns-rate-limit) is `enabled` or `disabled`. When the console session is in debug mode and the rate limiter is enabled, additional fields are reported:
-
-```
- DNS Rate Limit: 500 MX queries per 1 seconds
- DNS Rate Limiter Queue: 42 / 50000
- DNS Rate Limiter Immediate: 18340
- DNS Rate Limiter Queued: 4120
- DNS Rate Limiter Drained: 4078
- DNS Rate Limiter Overflow: 0
-```
-
-`Immediate` counts MX lookups dispatched without queueing (within the per-period budget); `Queued` counts lookups that had to wait in the queue; `Drained` counts lookups dispatched from the queue; `Overflow` counts lookups that bypassed the rate limiter because the queue was full.
-
-
-
-- Successfully Delivered Messages
-
--
-
-The number of messages successfully delivered by Momentum since it was started or since the last summary reset.
-
-
-
-- Failed Messages
-
--
-
-The number of outbound messages permanently failed since it was started or since the last summary reset.
-
-
-
-- Rejected Messages
-
--
-
-The number of messages rejected by Momentum since it was started or since the last summary reset.
-
-
-
-- Received Messages
-
--
-
-The number of messages received by Momentum for deliver since it was started or since the last summary reset.
-
-
-
-- Delivery Rate
-
--
-
-The average number of messages/second delivered (successful and unsuccessful) since Momentum was started or since the last summary reset.
-
-
-
-- Reception Rate
-
--
-
-The average number of messages/second received for delivery since Momentum was started or since the last summary reset.
-
-
-
-- Statistics Last Reset
-
--
-
-The number of seconds since statistics were reset using the "summary reset" command (see below).
-
-
-
-- Uptime
-
--
-
-The number of seconds that Momentum has been running continuously.
-
-
-
-
-
-Use the `with-mobile` option to display the status of SMPP and MM7 message queues.
-
-
-## See Also
-
-[binding summary](/momentum/4/console-commands/binding-summary), [summary reset](/momentum/4/console-commands/summary-reset)
-
-## Attention
-
-On a busy system, if this command is run frequently, it may result in a Momentum watchdog restart. If `summary` data is needed multiple times per hour then it is recommended to use the [summary HTTP endpoint](/momentum/4/http-api-stats/summary.md) instead.
diff --git a/content/momentum/4/console-commands/sysinfo.md b/content/momentum/4/console-commands/sysinfo.md
deleted file mode 100644
index 912d0a643..000000000
--- a/content/momentum/4/console-commands/sysinfo.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "sysinfo"
-description: "sysinfo show system information sysinfo This command shows Momentum version information and the information of the operating system as shown in the following example This command also displays the OS release as shown in the following examples..."
----
-
-
-## Name
-
-sysinfo — show system information
-
-## Synopsis
-
-`sysinfo`
-
-
-## Description
-
-This command shows Momentum version information and the information of the operating system, as shown in the following example:
-
-```
-Momentum Version: HEAD r(12527/12532M) (32-bit)
-build date: Aug 15 2006 (RELEASE)
-product name: Momentum
-Linux battleaxe 2.6.10-1.737_FC3smp #1 SMP Mon Jan 10 14:04:45 EST 2005 i686
-```
-
-This command also displays the OS release, as shown in the following examples:
-
-```
-Ecelerity Version: 3.0.0.36220 r(36220) (64-bit)
-build date: Mar 23 2010 (RELEASE)
-product name: Ecelerity Momentum Sending
-CentOS release 5 (Final)
-Linux rh5bare 2.6.18-8.el5 #1 SMP Thu Mar 15 19:46:53 EDT 2007 x86_64
-```
-
-```
-Ecelerity Version: 3.0.0.36220 r(36220) (64-bit)
-build date: Mar 23 2010 (RELEASE)
-product name: Ecelerity Momentum Sending
-SUSE Linux Enterprise Server 10 (x86_64)
-Linux sel10bare 2.6.16.21-0.8-default #1 Mon Jul 3 18:25:39 UTC 2006 x86_64
-```
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/threads.md b/content/momentum/4/console-commands/threads.md
deleted file mode 100644
index 85a0ea488..000000000
--- a/content/momentum/4/console-commands/threads.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "threads"
-description: "threads stats threads io queue threads cpu queue Display summary statistics for thread pools threads cpu queue threads io queue threads stats threads stats shows summary information of thread pools This command displays statistics for any of the built in thread pools and also any thread pools that you have..."
----
-
-
-## Name
-
-threads stats, threads io queue, threads cpu queue — Display summary statistics for thread pools
-
-## Synopsis
-
-`threads cpu queue`
-
-`threads io queue`
-
-`threads stats`
-
-
-## Description
-
-**threads stats** shows summary information of thread pools.
-
-```
-10:47:35 /tmp/2025> threads stats
-CPU thread pool: concurrency 4
-IO thread pool: concurrency 5
- Total invocations: 46010
- Observed average concurrency: 1.00
- Thread pool saturation: 0.01%
- Average wallclock time per op: 0.11ms
- Current thread count: 0
- [inactive threads]
- Current thread count: 5
-SWAPOUT thread pool: concurrency 5
- Total invocations: 46668
- Observed average concurrency: 3.94
- Thread pool saturation: 49.54%
- Average wallclock time per op: 780.56ms
- Current thread count: 0
- [inactive threads]
- Current thread count: 5
-SWAPIN thread pool: concurrency 5
-CLOSE thread pool: concurrency 0
-```
-
-This command displays statistics for any of the "built-in" thread pools and also any thread pools that you have created.
-
-**threads io queue** shows the queued IO jobs.
-
-```
-10:47:35 /tmp/2025> threads io queue
-Jobs in the IO pool
-0 jobs
-```
-
-**threads cpu queue** shows the queued CPU jobs.
-
-```
-10:47:35 /tmp/2025> threads cpu queue
-Jobs in the CPU pool
-0 jobs
-```
-
-## See Also
-
-[threadpool](/momentum/4/config/ref-threadpool)
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/tls.md b/content/momentum/4/console-commands/tls.md
deleted file mode 100644
index 54fb815d2..000000000
--- a/content/momentum/4/console-commands/tls.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-lastUpdated: "06/03/2026"
-title: "tls"
-description: "tls show cache tls flush cache tls rekey manage TLS cache used by Momentum tls flush cache tls rekey tls show cache tls show cache shows information of the TLS cache used by the server tls flush cache flushes TLS cache tls rekey removes the temporary RSA key Next use..."
----
-
-
-## Name
-
-tls show cache, tls flush cache, tls rekey — manage TLS cache used by Momentum
-
-> **NOTE: The `tls rekey` subcommand was REMOVED in Momentum 5.3.0 and is no longer a valid command.** It managed a temporary RSA key used for export-grade cipher suites; that mechanism was retired from OpenSSL (the `SSL_CTX_set_tmp_rsa_callback()` API) and from Momentum as part of the OpenSSL 1.1.1+/3.x modernization. On 5.3.0 and later, `tls show cache` no longer prints a "Temp RSA key" line. The `tls rekey` description below is retained for reference on releases prior to 5.3.0.
-
-## Synopsis
-
-`tls flush cache`
-
-`tls rekey`
-
-`tls show cache`
-
-
-## Description
-
-**tls show cache** shows information of the TLS cache used by the server.
-
-```
-10:47:35 /tmp/2025> tls show cache
- 1) server context
- age: 28404 seconds old
- in use by: 0 sessions
- certificate: /opt/msys/ecelerity/etc/mail.omniti.com.cert
- ca list: /etc/ssl/ca.cert
- ciphers: default
- 2) server context
- age: 25681 seconds old
- in use by: 0 sessions
- certificate: /opt/msys/ecelerity/etc/mail.omniti.com.cert
- ca list: /opt/msys/ecelerity/etc/ca-bundle.crt
- ciphers: default
-Temp RSA key is uncached.
-```
-
-**tls flush cache** flushes TLS cache.
-
-```
-10:47:35 /tmp/2025> tls flush cache
-Cache flush request submitted.
-```
-
-**tls rekey** removes the temporary RSA key. Next use will force the generation and caching of a new key.
-
-```
-13:34:55 ecelerity(/tmp/2025)> tls rekey
-Rekey request submitted.
-```
diff --git a/content/momentum/4/console-commands/trace-smtp.md b/content/momentum/4/console-commands/trace-smtp.md
deleted file mode 100644
index 43fd94723..000000000
--- a/content/momentum/4/console-commands/trace-smtp.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "trace smtp"
-description: "trace smtp trace smtp transactions trace smtp add binding name domain name file name trace smtp list trace smtp remove tracer id The trace smtp command allows fine grained SMTP transaction level logging to a specified file It can be enabled by binding and domain combination If is specified for..."
----
-
-
-## Name
-
-trace smtp — trace smtp transactions
-
-## Synopsis
-
-`trace smtp add` [ *`binding_name`* ] [ *`domain_name`* ] [ *`file_name`* ]
-
-`trace smtp list`
-
-`trace smtp remove` [ *`tracer_id`* ]
-
-
-## Description
-
-```
-10:47:35 /tmp/2025> trace smtp add
-10:47:35 /tmp/2025> trace smtp remove
-10:47:35 /tmp/2025> trace smtp list
-```
-
-The **trace smtp** command allows fine-grained SMTP transaction-level logging to a specified file. It can be enabled by binding and domain combination. If `*` is specified for binding or domain it will match all bindings or domains, respectively.
-
-### Note
-
-The **trace smtp** command traces **outbound** SMTP connections only.
-
-In order to debug SMTP transaction to problematic-domain.com, one would:
-
-```
-10:47:35 /tmp/2025> trace smtp add * problematic-domain.com /var/tmp/smtp.log
-Registered smtp tracer #1
-
-10:47:35 /tmp/2025> trace smtp list
-[ 1] binding: *
- domain: problematic-domain.com
- file: /var/tmp/smtp.log @ 29
-```
-
-Once sufficient debugging information has been collected, the debugging can be disabled as follows:
-
-```
-10:47:35 /tmp/2025> trace smtp remove 1
-Removed smtp tracer #1
-```
-
-To set the permissions of smtp trace files see [trace_smtp_mode](/momentum/4/config/ref-trace-smtp-mode).
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/unlink-stats.md b/content/momentum/4/console-commands/unlink-stats.md
deleted file mode 100644
index d5ca35565..000000000
--- a/content/momentum/4/console-commands/unlink-stats.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "unlink stats"
-description: "unlink stats show statistics of removing messages from the disk unlink stats This command shows statistics of unlinking messages on the disk..."
----
-
-
-## Name
-
-unlink stats — show statistics of removing messages from the disk
-
-## Synopsis
-
-`unlink stats`
-
-
-## Description
-
-This command shows statistics of unlinking messages on the disk.
-
-```
-10:47:35 /tmp/2025> unlink stats
- Messages Headers Bodies
-Submissions : 6000 6000 6000
-Attempts : 6000 6000 6000
- Failures : 0 0 0
- Successes : 6000 6000 6000
- Success Rate : 100.00% 100.00% 100.00%
-Current Backlog: 0
-Batch Backlog : 0
-```
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/version.md b/content/momentum/4/console-commands/version.md
deleted file mode 100644
index e7a616026..000000000
--- a/content/momentum/4/console-commands/version.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "version"
-description: "version show version information of Momentum version This command displays version information and the product type of the running Momentum instance..."
----
-
-
-## Name
-
-version — show version information of Momentum
-
-## Synopsis
-
-`version`
-
-
-## Description
-
-This command displays version information and the product type of the running Momentum instance.
\ No newline at end of file
diff --git a/content/momentum/4/console-commands/write-config.md b/content/momentum/4/console-commands/write-config.md
deleted file mode 100644
index 514402d75..000000000
--- a/content/momentum/4/console-commands/write-config.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "write config"
-description: "write config display current running configuration write config path to file Instruct Momentum to display the current running configuration over the console If a file name is passed as a parameter Momentum will open and write the configuration to that file on the server running Momentum not necessarily the machine..."
----
-
-
-## Name
-
-write config — display current running configuration
-
-## Synopsis
-
-write config *`/path/to/file`*
-
-
-## Description
-
-Instruct Momentum to display the current running configuration over the console. If a file name is passed as a parameter, Momentum will open and write the configuration to that file on the server running Momentum, **not necessarily the machine from which you are running ec_console** .
-
-To write the current settings to file, issue the command **write config `/var/tmp/ecelerity.new.config`** being sure to choose a directory where you have write permission.
-
-### Warning
-
-Overwriting your existing `ecelerity.conf` file is not recommended. Note that files "included" in your configuration file will **not** be copied. If you wish to make permanent changes to your configuration file, edit the file directly.
-
-If you are in the middle of a transaction (begun with **config begin** ) **write config** will not show any changes you have made. Use **config showrecurse** or **config show** instead. For more information see [config](/momentum/4/console-commands/config).
\ No newline at end of file
diff --git a/content/momentum/4/control-acct.md b/content/momentum/4/control-acct.md
deleted file mode 100644
index 945fb66cd..000000000
--- a/content/momentum/4/control-acct.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Control_Listener Accounting"
-description: "Momentum contains an extensible authorization and accounting subsystem that can be configured to restrict access to console commands based on role while recording an audit trail Accounting is enabled by default for Unix socket connections However if you are connecting via TCP IP then accounting for the Control Listener will..."
----
-
-Momentum contains an extensible authorization and accounting subsystem that can be configured to restrict access to console commands based on role while recording an audit trail. Accounting is enabled by default for Unix socket connections. However, if you are connecting via TCP/IP then accounting for the Control_Listener will not be enabled unless you explicitly turn it on. To employ an authentication scheme such as `DIGEST-MD5` and to log authentication events use the following syntax:
-
-```
-Control_Listener {
- Listen "/tmp/2025" {
- File_Mode = 0666
- }
- Listen ":2025" {
- AuthDigestMD5Parameters = [
- uri = digest:///opt/msys/ecelerity/etc/console_passwd
- log_authentication = "true"
- ]
- }
-}
-```
-
-Logging of authentication events is enabled by turning on `log_authentication` in the Control_Listener configuration *and* configuring an accounting log in the [“EC_logger – Momentum-Style Logging”](/momentum/4/modules/ec-logger) module. You may also develop your own accounting modules by implementing a hook.
-
-More information about authentication modules can be found at [“auth_ds – Datasource based SMTP Authentication”](/momentum/4/modules/auth-ds).
\ No newline at end of file
diff --git a/content/momentum/4/control-auth.md b/content/momentum/4/control-auth.md
deleted file mode 100644
index 3de06b4b0..000000000
--- a/content/momentum/4/control-auth.md
+++ /dev/null
@@ -1,105 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Control_Listener Authentication"
-description: "Momentum can be configured to perform authentication on Control connections by using the authentication modules The following is an example Control Listener stanza Example 17 1 Control Listener Stanza The usual fallback semantics apply to the Enable Authentication option In the example access to the control listener via TCP requires..."
----
-
-Momentum can be configured to perform authentication on Control connections by using the authentication modules.
-
-The following is an example `Control_Listener` stanza:
-
-
-
-
-```
-Control_Listener {
- AuthDigestMD5Parameters = [
- uri = "ecauth://"
- ]
- Enable_Authentication = "true"
-
- Enable_Authorization = "false"
- AuthorizationParameters = [
- uri = "ecauth://"
- ]
-
- Listen "/tmp/2025" {
- Enable_Authentication = "false"
- }
- Listen "127.0.0.1:2025" {
- }
-}
-```
-
-The usual fallback semantics apply to the `Enable_Authentication` option. In the example, access to the control listener via TCP requires authentication because the fallback value of "Enable_Authentication" is "true". On the other hand, authentication is disabled for access via a Unix domain socket because `Enable_Authentication` is set to `false` in the scope defined by `Listen "/tmp/2025"`. The `Enable_Authorization` option is used in the same way as the `Enable_Authentication` option.
-
-The `uri = "ecauth://"` inside both `AuthDigestMD5Parameters` and `AuthorizationParameters` references an authentication scheme named "`ecauth`" defined in an auth_ds module. This scheme is created during installation. For more information on the `ecauth` scheme, see [“Authorization Using the `ecauth` Scheme”](/momentum/4/control-authz#control_authz.ecauth).
-
-### DIGEST-MD5 Authentication
-
-In the following example, `DIGEST-MD5` is used to authenticate users who try to connect to the console over TCP/IP rather than by using a Unix socket.
-
-```
-Control_Listener {
- Listen /tmp/2025 {}
- Listen ":2025" {
- AuthDigestMD5Parameters = [
- uri = digest:///opt/msys/ecelerity/etc/console_passwd
- ]
- }
-}
-```
-
-The digest file, referenced by the `uri` parameter, can be created and updated using the [ec_md5passwd](/momentum/4/executable/ec-md-5-passwd) tool.
-
-The `digest://` auth storage scheme references the path to an htdigest compatible password file. Lines starting with a ‘`#`’ are treated as comments and are ignored. The lines are divided into three fields separated by ‘`:`’ characters; e.g. `user:realm:password`.
-
-### Clear Text LOGIN Authentication
-
-The LOGIN mechanism stores passwords in clear text locally and transmits the username and password credentials in clear text over the network. Configuration is similar to DIGEST-MD5:
-
-```
-Control_Listener {
- Listen "/tmp/2025" {
- AuthLoginParameters = [
- uri = "file:///opt/msys/ecelerity/etc/unsafe_passwd"
- ]
- }
-}
-```
-
-Currently there's no TLS/SSL support for control listeners, so the use of clear text LOGIN with anything other than Unix domain sockets is discouraged.
-
-### Operating System Authentication
-
-On Unix systems, the control listener will implicitly authenticate connections made over Unix domain sockets using the system level username of the user connecting to the socket.
-
-By default, the control listener creates Unix domain sockets so that they are only accessible to the user identity you have configured for ecelerity. To enable connections from other users you may specify the file mode using the following syntax:
-
-```
-Control_Listener {
- Listen "/tmp/2025" {
- File_Mode = 0666
- }
-}
-```
-
-With the socket file permission set to `0666`, every user who can log in to the system can use **ec_console** to connect to the server. When using system level authentication on a Unix domain socket, all authentication and authorization events on that connection will be logged to the accounting subsystem. Note that you need to configure a location to log accounting information; you can find more details on the configuration of the accounting log in [“EC_logger – Momentum-Style Logging”](/momentum/4/modules/ec-logger).
-
-### Overriding Authentication
-
-You can override the results of authentication using the `always_allow` and the `always_deny` options. Consider the following code snippet:
-
-```
-Control_Listener {
- Listen "127.0.0.1:2025" {
- Enable_Authentication = true
- Peer "127.0.0.1" {
- Always_Allow = true
- }
- }
- ...
-}
-```
-
-In this case, access to `Peer "127.0.0.1"` is always allowed regardless of the results of authentication.
\ No newline at end of file
diff --git a/content/momentum/4/control-authz.md b/content/momentum/4/control-authz.md
deleted file mode 100644
index a5b3ceddd..000000000
--- a/content/momentum/4/control-authz.md
+++ /dev/null
@@ -1,159 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Control_Listener Authorization"
-description: "The authorization subsystem allows you to restrict the ability to run console commands based on the role of the user The role membership of the user is determined based on the authenticated username Pluggable authorization modules provide the means to map the username to a number of roles or groups..."
----
-
-The authorization subsystem allows you to restrict the ability to run console commands based on the role of the user. The role membership of the user is determined based on the authenticated username. Pluggable authorization modules provide the means to map the username to a number of roles (or groups) that can then be matched against the rules defined in the Authorization stanza. The Authorization stanza is only in effect in the scope where the `enable_authorization` is set to `true`. For more information about the Authorization stanza, see [authorization](/momentum/4/config/ref-authorization).
-
-Logging of authorization events is controlled by the `Enable_Authorization` option. If it is enabled, authorization is turned on, triggering the authorization logging hook. To capture the information, you must configure an account log logging module. Set the `acctlog` option in an [ec_logger](/momentum/4/modules/ec-logger) module in your configuration or build your own custom accounting logger. For `acctlog` format, see [“`acctlog`”](/momentum/4/4-log-formats#log_formats.acctlog).
-
-The following is an example configuration with authorization enabled:
-
-```
-Control_Listener {
- Listen "/tmp/2025" {
- File_Mode = 0666
- AuthorizationParameters = [
- uri = "groups:///opt/msys/ecelerity/etc/console_roles"
- ]
- }
-
- Listen ":2025" {
- AuthDigestMD5Parameters [
- uri = "digest:///opt/msys/ecelerity/etc/console_passwd"
- log_authentication = "true"
- ]
- Enable_Authorization = "true"
- AuthorizationParameters = [
- uri = "groups:///opt/msys/ecelerity/etc/console_roles"
- ]
- }
-}
-
-Authorization {
- Role "root" {
- allow = ( ".*" )
- }
- Role "admin" {
- allow = ( "^config" "^summary$" )
- }
- Role "ec" {
- allow = ( "^flush" )
- }
-}
-```
-
-This configuration enables the `groups` authorization module that provides Unix style `/etc/group` and Apache style `htgroup` flat file database of role membership.
-
-In this example, `/opt/msys/ecelerity/etc/console_roles` is being used to hold the group membership information.
-
-The contents of the groups file can be one of the following two formats:
-
-`group:user1[,user2,user3, ...]``group:unusedpasswd:user1[,user2,user3, ...]`
-
-The following file asserts that the role `root` applies to users with the username `root` and that the role `admin` applies to users names `serv` and `ec`.
-
-```
-root:root
-admin:serv,ec
-```
-
-In this example, authorization is enabled for all connections over TCP as well as over the Unix domain socket. Note that connections over a Unix domain socket are mapped as loopback addresses when applying the listener ACL to determine which authentication and authorization rulesets to select.
-
-The `Authorization` stanza is used at the global level of `ecelerity.conf` and details the rules for Authorization. The syntax is:
-
-```
-Authorization {
- Role "name" {
- allow = ( "list" "of" "patterns" )
- }
- Role "othername" {
- allow = ( "list" "of" "patterns" )
- }
-}
-```
-
-The authorization system will prevent console commands from being run unless an allow entry is explicitly configured. The authorization process first enumerates the roles/group membership of the user by querying the authorization module. Then the username and each role for the user are compared against the authorization rules. If the username or rolename matches, the `allow` rules are processed in the order that they are defined.
-
-Each `allow` rule is a Perl compatible regular expression that will be matched against the command being executed. If the regular expression matches, processing of authorization rules stops and the console command is allowed to execute.
-
-If no rules matched, the command is not allowed to execute.
-
-### Authorization Using the `ecauth` Scheme
-
-Proper use of an authorization stanza requires that a number of different elements be present. This example shows how using the `ecdb` datasource. The steps are as follows:
-
-1. Identify a role for the target user within the Authorization stanza. In the following example, the user, `john`, is allowed to execute **config** commands.
-
-2. Ensure that the user associated with the defined role exists.
-
-3. Define the `AuthorizationParameters` option within the scope of the Control_Listener or within a Listen scope within the Control_Listener. In this example, the `ecauth` authentication scheme is used.
-
-4. Enable authorization. In this case, it is enabled within the scope of the TCP/IP Listen stanza.
-
-```
-Datasource "ecdb" {
- uri = ( "pgsql:host=192.168.0.50;dbname=ecelerity;user=ecuser;password=admin" )
-}
-
-auth_ds {
- Scheme "ecauth" {
- Authenticate {
- query = "SELECT password from webconsole.users where username = :user"
- cache = "ecdb"
- map = [
- user = "%{username}"
- ]
- type = "md5"
- returns_password = "true"
- password_column = "password"
- }
- ...
-}
-Authorization {
- Role "john" {
- allow = ("^config")
- }
- Role "admin" {
- allow = ( "^config" "^summary$" )
- }
- Role "root" {
- allow = ( ".*" )
- }
-}
-Control_Listener {
- ...
- AuthorizationParameters = [
- uri = "ecauth://"
- ]
-
- Listen "127.0.0.1:2025" {
- Enable_Authorization = "true"
- }
- ...
-}
-```
-
-Given this Control_Listener configuration, the user `john` can log in to the Control_Listener at 127.0.0.1:2025 using TCP/IP in the following way:
-
-```
-shell> /opt/msys/ecelerity/bin/ec_console john@127.0.0.1:2025
-Authorization required for console session
-Password:
-```
-
-If a password is not supplied when issuing the **ec_console** command, the user will be prompted for one as shown in the preceding example.
-
-Given that this user is allowed commands with the regex pattern `^config`, he can successfully execute any of the **config** commands. The default action for authorization is to deny. When deciding whether a user is allowed to execute a command, the command is matched against the regular expressions for all the roles given to that user. For this reason, an attempt by john to execute the **summary** command results in the following error message:
-
-```
-09:05:45 john@127.0.0.1:2025> summary
-Not Authorized for this command
-```
-
-If account logging is configured, an attempt to execute an unauthorized command will create an `acctlog.ec` entry such as the following:
-
-`1242133558@Z@127.0.0.1:2025@127.0.0.1:49440@john@0@summary`
-
-The last three fields indicate a failed execution of the summary command by the user `john`. For a description of the meaning of all the fields, see [“`acctlog`”](/momentum/4/4-log-formats#log_formats.acctlog).
\ No newline at end of file
diff --git a/content/momentum/4/control-listener.md b/content/momentum/4/control-listener.md
deleted file mode 100644
index b44fc7b55..000000000
--- a/content/momentum/4/control-listener.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Configuring Momentum's System Console"
-description: "Momentum's online administration management and analysis is through the Momentum System Console program ec console henceforth referred to as the console The Control Listener is Momentum's listener for incoming control connections made via this console It is configured in the ecelerity conf file for connection to the nodes and in..."
----
-
-
-Momentum's online administration, management, and analysis is through the Momentum System Console program `ec_console`, henceforth referred to as the console. The Control_Listener is Momentum's listener for incoming control connections made via this console. It is configured in the `ecelerity.conf` file for connection to the nodes and in the `eccluster.conf` file for connection to `eccmgr`.
-
-## Control_Listener Configuration
-
-The Control_Listener specifies the end-point(s) on which Momentum's `ec_console` should listen for incoming control connections. The `ec_console` can connect to a Momentum instance via a Unix domain socket or a TCP/IP socket (with an optional user@ prefix) depending upon how the Control_Listener is configured. For local-only configurations, a Unix domain socket may be appropriate. If your network is reasonably secure, you can specify an IPv6 address and port for TCP/IP services.
-
-The following is an example configuration for a Unix domain socket:
-
-```
-Control_Listener {
- Listen "/tmp/2025" {
- file_mode = 0666
- }
-}
-```
-
-In this example, the Unix domain socket is located in `tmp`, and the endpoint for the control listener is `/tmp/2025`. The `file_mode` option is set to `0666`. With the socket file permission set to 0666, every user who can log in to the system can use `ec_console` to connect to the server.
-
-In addition, the Control_Listener supports a `Timeout` option that specifies a timeout for idle control connections. Default value is `60` seconds.
-
-For details about the non-module specific configuration options that are valid in the Control_Listener and its nested scopes, refer to [*Configuration Options Summary*](/momentum/4/config-options-summary) .
-
-Modules and their configuration options are discussed in the [*Modules Reference*](/momentum/4/modules/) .
-
-For general information regarding listeners, see [“Listeners”](/momentum/4/listeners).
-
-The Control_Listener supports a number of extended properties including `ALWAYS-ALLOW`, `LOGIN` and `DIGEST-MD5`. For more information, see [“Control_Listener Authentication”](/momentum/4/control-auth).
\ No newline at end of file
diff --git a/content/momentum/4/create-apikey.md b/content/momentum/4/create-apikey.md
deleted file mode 100644
index 1e6dd28ba..000000000
--- a/content/momentum/4/create-apikey.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-lastUpdated: "03/26/2020"
-title: "Creating an API Key"
-description: "Configuration Change As of version 4 1 API authentication is enabled by default For instructions to disable it see Chapter 21 Enforcing REST API UI User Authentication When disabled an apikey and Authorization header is no longer required Introduction Momentum offers a set of REST API enabling client applications to..."
----
-
-**Configuration Change. ** As of version 4.1, API authentication is enabled by default. For instructions to disable it, see [*Enforcing REST API/UI User Authentication*](/momentum/4/auth) . When disabled, an apikey and `Authorization` header is no longer required.
-
-**Introduction**
-
-Momentum offers a set of REST API enabling client applications to integrate with Momentum and perform actions associated with generating messages and reporting analytics data. To ensure security for your application, Momentum enforces API authentication by default. All REST APIs require that you authenticate with every request by specifying an `Authorization` header. The value of the `Authorization` header must be a valid API key with the appropriate permissions to use the API. For examples of supplying the `Authorization` header, refer to the cURL examples in the following sections or any of the individual REST API request examples in the [Momentum 4 REST API](https://support.messagesystems.com/docs/web-rest/v1_index.html) documentation.
-
-If you are the system administrator, you can generate an API key using the web-based UI.
-
-**Creating an API Key**
-
-This section provides instructions to create an API key in the UI. Take care to record and safeguard your API keys at all times. You cannot retrieve an API key after it has been created.
-
-### Note
-
-For this tutorial, you will need a web browser to access the UI. The UI supports Firefox and Internet Explorer, version 9 and 10. All browsers must have cookies and JavaScript enabled.
-
-You must also have system administration privileges.
-
-Follow these steps to create an API key:
-
-1. Open the UI by pointing your web browser at the appropriate IP address and log in using your administrator credentials.
-
-2. Click *`admin`* in the upper-right corner, as shown in [“Login”](/momentum/4/create-apikey#figure_admin_icon), to open the Settings section.
-
-
-
-
- 
-
-3. In the Settings section, click the New API Key icon in the upper-right corner to open the Create New API Key form, as shown in [“Create New API Key”](/momentum/4/create-apikey#figure_create_api_key).
-
-
-
-
- 
-
-4. Enter the following information:
-
- * Label - User-friendly label for the API key
-
- * Account Password - Password for account to verify access
-
- Your password is required to securely authorize this addition to your account.
-
-5. Select the grant types that you want from the list displayed. It is always best practice to ONLY select the permissions that are necessary. To complete the examples in the following sections, you will need all grant types. For an explanation of the permissions, see [“Viewing Your API Keys”](/momentum/4/web-ui-apikeys#web-ui.apikeys.viewing).
-
-6. When complete, click Create to create your new API key. If the API key is successfully created, a message will display upon return to the Settings section showing the value of the API key.
-
-7. Record the value of your API key to use in the following tutorials.
-
- ### Note
-
- Be sure to copy and paste the API key when it is displayed. Following the creation of an API key, you can modify its grants and associated label, but the UI will no longer expose the original value. Please take care to record and safeguard your API keys at all times.
-
-Congratulations! You have successfully created an API key using Momentum's UI. In addition to the creating an API key, you can manage your existing API keys using the UI. For more information, see [*Managing Your API Keys*](/momentum/4/web-ui-apikeys) .
\ No newline at end of file
diff --git a/content/momentum/4/dkim2.md b/content/momentum/4/dkim2.md
deleted file mode 100644
index fd6e2eb6e..000000000
--- a/content/momentum/4/dkim2.md
+++ /dev/null
@@ -1,362 +0,0 @@
----
-lastUpdated: "08/16/2026"
-title: "Using DKIM2 — Overview"
-description: "DKIM2 is the successor to DKIM that adds replay protection (per-message envelope binding), an explicit chain of custody across forwarders, and a structured way for modifying hops to record what they changed. Momentum implements DKIM2 targeting draft-ietf-dkim-dkim2-spec-04."
----
-
-## On This Page
-
-- [What DKIM2 is, and why](#what-dkim2-is-and-why)
-- [How it differs from DKIM1 at a glance](#how-it-differs-from-dkim1-at-a-glance)
-- [Enabling the module](#enabling-the-module)
-- [Key management](#key-management)
-- [Known limitations](#known-limitations)
-
-## Reference
-
-- [DKIM2 Signing — sign()](/momentum/4/dkim2/sign)
-- [DKIM2 Verifying — verify()](/momentum/4/dkim2/verify)
-- [DKIM2 Authentication-Results — ar_clauses()](/momentum/4/dkim2/ar-clauses)
-- [DKIM2 Debugging Reference](/momentum/4/dkim2/debug)
-
----
-
-### Warning
-
-DKIM2 targets the in-progress IETF draft
-[`draft-ietf-dkim-dkim2-spec-04`](https://datatracker.ietf.org/doc/html/draft-ietf-dkim-dkim2-spec-04)
-(5 July 2026). The wire format is **not yet final** — the working group may revise
-it before publication. Do not enable DKIM2 on production outbound traffic
-without staging it first. If the spec changes, a future Momentum release may
-not verify messages signed by an earlier release.
-
-> **What this means in practice:** Stage DKIM2 on a limited outbound mail
-> stream first. If you later upgrade Momentum and the spec has changed, messages
-> signed by the old release will fail verification at receivers that have also
-> upgraded. Messages signed by DKIM1 are unaffected.
-
-
-## What DKIM2 is, and why
-
-[DKIM1](/momentum/4/using-dkim) (RFC 6376) lets a sending domain attach a
-cryptographic signature that lets a receiver confirm "this message came from
-that domain, and the body + signed headers haven't been altered since
-signing". It is widely deployed, but it has two known limitations:
-
-1. **Replay.** DKIM1 can sign the `To:` header field, but nothing in a
- DKIM1 signature is bound to the *SMTP envelope RCPT TO* — the address
- that controls actual delivery. An attacker who captures a DKIM1-signed
- message can change the envelope recipient and re-inject it; the `To:`
- header and the signature remain intact and valid. Receivers have no way
- to tell, from the signature alone, that the message was delivered to
- someone other than the originally intended recipient.
-
-2. **Indirect mail flows.** Forwarders and mailing lists routinely modify
- messages — rewriting the Subject, adding a footer, expanding the
- recipient list — and DKIM1 has no native way for them to attest to
- those modifications. The upstream signature breaks, and the receiver
- has to fall back on ARC or on heuristics.
-
-DKIM2 addresses both:
-
-* Each signature **binds the envelope** to the signed bytes (per-signature
- `mf=` for MAIL FROM and `rt=` for RCPT TO). A replay to a different
- recipient mismatches `rt=`; a replay from a different sender mismatches
- `mf=`.
-
-* The chain of signatures forms an explicit **chain of custody**: each
- hop's `mf=` must match the previous hop's `rt=` list (which may encode
- more than one recipient, comma-separated), so the verifier can confirm
- the path was a real forward, not a detour. This inter-signature match is
- **relaxed and domain-only** (§9.4) — the local part is ignored and a
- bounce subdomain (`bounce@mail.example.com`) links to a prior
- `rt=user@example.com` — so a bridge is only needed on a real domain
- change. (The separate **delivery binding** of the most-recent signature
- against the live envelope, §11.4, stays exact and local-part-aware.)
-
-* Modifying hops **record their modifications** as a JSON "recipe" on a
- new `Message-Instance:` header. The verifier can reverse-apply the
- recipe to reconstruct the previous instance's bytes and confirm the
- upstream hashes still hold.
-
-This page covers everything an operator needs to enable, observe, and
-debug DKIM2 signing and verification on Momentum. The wire-format
-specifics live in the [IETF
-draft](https://datatracker.ietf.org/doc/html/draft-ietf-dkim-dkim2-spec-04);
-the operationally-relevant signal codes (per-signature reasons, overall
-verdicts, paniclog lines) are inventoried in the
-[Debugging](/momentum/4/dkim2/debug) reference page.
-
-
-## How it differs from DKIM1 at a glance
-
-| Concern | DKIM1 (RFC 6376) | DKIM2 (draft `-04`) |
-|---|---|---|
-| Header name | `DKIM-Signature:` | `DKIM2-Signature:` |
-| Hashes carried in | The signature header itself (`bh=` + `b=`) | A separate `Message-Instance:` header (`h=sha256::`) referenced via `m=` |
-| Envelope binding | None | `mf=` / `rt=`, base64-encoded |
-| Chain | Implicit (multiple sigs, no required ordering) | Explicit (`i=N` 1..N, `i=N`'s `mf=` domain relaxed-matches an `i=N-1` `rt=` domain, §9.4) |
-| Modifications | Break the upstream signature | Recorded as a JSON recipe on the modifier's MI; reverse-applicable |
-| Key record | DNS TXT at `._domainkey.` | Same — DKIM2 reuses the DKIM1 key-publishing format |
-| Algorithm | `rsa-sha256`, `ed25519-sha256` | `rsa-sha256`, `ed25519-sha256` |
-
-Sending domains keep their existing DKIM1 keys: DKIM2 uses the same
-`._domainkey.` TXT-record format. There is no extra DNS
-provisioning step to start signing DKIM2.
-
-
-## Enabling the module
-
-**Step 1 — Configuration**: Add the following stanza to your Momentum
-configuration before using any DKIM2 Lua API:
-
-```
-dkim2 {}
-```
-
-The `debug_level` option is documented in the
-[Debugging](/momentum/4/dkim2/debug) reference page.
-
-**Step 2 — Policy hook**: DKIM2 signing and verification are driven
-entirely from Lua policy. The module does nothing automatically — you
-must call the APIs explicitly from a validation hook. For **signing**,
-the recommended hook is `core_final_validation2`: it runs once per
-recipient (giving `sign()` the per-recipient envelope address for `rt=`
-binding) and fires on **every injection path** — SMTP *and*
-HTTP/transmissions. For **verification** (inbound), use a per-recipient
-validate hook such as `validate_data_spool_each_rcpt`, which runs before
-the message is spooled so policy can act on the result. See
-[Signing](/momentum/4/dkim2/sign) for the full hook comparison
-and the important caveat that the `validate_data_spool*` hooks do **not**
-fire on the transmissions path.
-
-Signing and verification are separate concerns — typically signing is done
-on outbound messages and verification on inbound. The examples below show
-each in isolation.
-
-**Outbound signing:**
-
-```lua
-require("msys.core")
-require("msys.validate.dkim2")
-
-local mod = {}
-
-function mod:core_final_validation2(msg, ac, vctx)
- local ok, err = msys.validate.dkim2.sign(msg, vctx, {
- domain = "example.com",
- selector = "dkim2-2026",
- keyfile = "/etc/dkim2/example.com/dkim2-2026.key",
- })
- if not ok then
- msys.log(msys.core.LOG_WARNING,
- "dkim2 sign failed: " .. (err or "unknown"))
- -- message continues unsigned; adjust policy as needed
- end
- return msys.core.EC_HOOK_CONT
-end
-
-msys.registerModule("my_dkim2_signer", mod)
-```
-
-**Inbound verification:**
-
-```lua
-require("msys.core")
-require("msys.validate.dkim2")
-
-local mod = {}
-
-function mod:validate_data_spool_each_rcpt(msg, ac, vctx)
- local result, err = msys.validate.dkim2.verify(msg, vctx, {
- authservid = "mta.example.com",
- })
- if not result then
- -- internal error; treat as temperror
- msys.log(msys.core.LOG_WARNING,
- "dkim2 verify error: " .. (err or "unknown"))
- vctx:set_code(451, "4.7.5 DKIM2 verification error; please retry")
- return msys.core.VALIDATE_DONE
- end
- -- Apply local policy based on result.overall.
- -- See /momentum/4/dkim2/verify for the full skeleton with all cases.
- if result.overall == "temperror" then
- vctx:set_code(451, "4.7.5 DKIM2 key lookup failed; please retry")
- return msys.core.VALIDATE_DONE
- end
- if result.overall == "fail" or result.overall == "permerror" then
- vctx:set_code(550, "5.7.1 DKIM2 verification failed")
- return msys.core.VALIDATE_DONE
- end
- -- "pass" or "none": accept per local policy
- return msys.core.VALIDATE_CONT
-end
-
-msys.registerModule("my_dkim2_verifier", mod)
-```
-
-See [DKIM2 Signing](/momentum/4/dkim2/sign) and
-[DKIM2 Verifying](/momentum/4/dkim2/verify) for the full option
-reference and more complete policy examples.
-
-## Key management
-
-DKIM2 reuses the DKIM1 key infrastructure. Keys are PEM-encoded RSA or
-Ed25519 private keys, supplied either as a file path (`keyfile`) or as
-raw PEM bytes in memory (`keybuf`). The matching public key is
-published in DNS at `._domainkey.` as a TXT record —
-`v=DKIM1; k=rsa; p=` for RSA, `v=DKIM1; k=ed25519;
-p=` for Ed25519. The two `p=` encodings are not
-interchangeable; see
-[Publishing the public key](/momentum/4/dkim2/sign#publishing-the-public-key).
-
-If you already publish DKIM1 keys at a selector, you can reuse the same
-selector for DKIM2 without any DNS change. To generate a fresh RSA key
-pair, follow the recipe in
-[Generating DKIM Keys](/momentum/4/using-dkim#generating-dkim-keys) —
-it predates DKIM2's Ed25519 support and does not cover that case. For
-Ed25519, generate the key pair with `openssl genpkey -algorithm ED25519
--out /etc/dkim2/ed25519.key`, then publish the public half following
-[Publishing the public key](/momentum/4/dkim2/sign#publishing-the-public-key).
-
-### Note
-
-DKIM2 signatures and DKIM1 signatures **coexist on the wire**: they are
-distinct headers (`DKIM2-Signature:` vs. `DKIM-Signature:`) and use
-separate verifier paths. A message can carry both and either or both can
-pass independently. If you enable DKIM2 signing for a domain that
-already does DKIM1 signing, downstream verifiers that don't know about
-DKIM2 will simply ignore the new header — they will continue to verify
-the DKIM1 signature normally.
-
-ARC also coexists with DKIM2 without conflict: ARC uses its own header
-set (`ARC-Seal:`, `ARC-Message-Signature:`, `ARC-Authentication-Results:`)
-and an independent chain model. A message can carry DKIM1, DKIM2, and ARC
-headers simultaneously. Momentum's ARC module (`msys.validate.openarc`)
-and the DKIM2 module operate independently — enabling one does not affect
-the other. Receivers that support both will evaluate each chain separately.
-
-
-## Known limitations
-
-The following are known gaps or operational considerations to be aware of:
-
-* **Inbound verification breaks if the receiving MTA adds a header outside the §4 "unsigned" set (notably `Received-SPF`)**: DKIM2's Message-Instance header hash covers *every* header except the §4 unsigned set — the exact trace names `Received` / `Return-Path` / `Delivered-To`, plus `Authentication-Results`, `DKIM-Signature`, and any `ARC-*` or `X-*` field. The trace-header exclusion is the exact name `Received`, **not** a `Received-*` prefix, and `Received-SPF` (RFC 7208) is not listed anywhere in §4 — so it *is* covered by the header hash. A receiving MTA that stamps `Received-SPF` on delivery (**Google / Gmail does this**) therefore changes the hashed header set and DKIM2 verification **fails on otherwise-valid mail**. This is behaviour mandated by draft-04 §4 (the §4.1 summary set), not a Momentum-specific choice — Momentum's exclusion set matches the DKIM2 reference implementations exactly (the Perl and Python signers/verifiers in the IETF interop project use the same list and likewise do not exempt `Received-SPF`), so a reference verifier fails the same message. The [dkim2.com](https://dkim2.com/validate) validator will report a *pass* for such a message, but only as a flagged, non-strict diagnostic — it detects the trace header, removes it, and notes that it did so; its strict verdict is the same failure. Until a future draft widens §4 (e.g. to a `Received-*` prefix), expect DKIM2 verification failures for mail delivered through such receivers, and prefer testing verification on a path that does not rewrite the header set.
-
-* **Lower-hop signatures not cryptographically verified (§10.1 / §9.2 / §11.5–11.6)**:
- Momentum runs the full cryptographic procedure — key fetch (§11.5) and
- EVP signature verification (§11.6) — only on the highest-`i` signature,
- which §10.1 makes a SHOULD. Earlier hops (`i < max_i`) get no key lookup
- and no crypto (`status="chain_verified"`); their integrity rests on the
- §9.2/§9.4 chain-of-custody check and the §10.2 recipe reconstruction,
- which reverse-applies each hop's recipe to rebuild the original message
- and confirms the reconstructed instance-1 hashes match MI[1]'s `h=`. This
- proves end-to-end content integrity but does not authenticate each lower
- hop's signing key, so earlier-hop signer identities should not be used
- for Reviser reputation. §10.3 ("Checking the DKIM2-Signature Header
- Fields") names exactly the use cases that need more — assessing whether a
- message was exploded, honoring `feedback` requests, and assigning
- reputation to Revisers — and says that for those, *all* of the
- DKIM2-Signature header fields "will have to be checked for validity." It
- frames this as a functional necessity for those uses, not a MUST, and the
- spec-correct **acceptance** decision (§10.1) needs only the most-recent
- hop. Momentum exposes every hop's `d=`/`s=`/`mf=`/`rt=`/`f=` in
- `result.signatures` so policy can inspect the chain, but offers **no
- option today to cryptographically verify each lower hop** — that full
- per-hop verification (fetch each hop's key and EVP-verify its hop-relative
- signed input; the recipe chain already confirms each hop's hashes) is
- deferred to a future release.
-
-* **§10.1 / §12 DSN**: Per §10.1, after a failed DKIM2 verification the
- MTA MUST NOT generate a DSN; the spec recommends rejecting with a 5xx
- during the SMTP conversation as the best alternative. This is not
- automatically enforced — `verify()` only reports a verdict, so policy
- must explicitly reject rather than bounce on verify failure. On the
- generation side (§12), Momentum **exposes the DSN target** — the `mf=`
- of the highest-numbered DKIM2-Signature, and a `<>` (null-sender)
- indicator — as `result.highest_mf` and the `dkim2_highest_mf` message-
- context variable, so a generation hook can address the DSN or suppress it
- when the value is `<>`. What is not yet built is the automatic wiring in
- the bounce-generation path to consume it. Inbound DSN
- authentication (§12.1.2, a SHOULD) is also not implemented: the
- reject/propagate decision is scriptable via the inbound hooks, but
- verifying the embedded returned message's signatures — and checking
- signing-domain alignment against its highest-`i=` `rt=` — has no exposed
- API, since `verify()` operates only on the live message. *(Draft-04
- clarified §12.1.2: the embedded `message/rfc822` part is authenticated by
- checking its header hashes — and body hash, if the body is present —
- against the highest-numbered `Message-Instance` header field; that is the
- piece Momentum does not yet expose.)* Note also the §12.1.1 rule: a DSN
- always contains the message headers up to the point at which the DSN
- creator saw the message on the outward journey, and the DSN is rebuilt
- to reflect the state the message was in when it was forwarded.
-
-* **§9.2 Forwarder auto-detection**: When Momentum acts as a forwarder
- or mailing list (changing the envelope MAIL FROM and re-delivering),
- the policy hook must explicitly call `sign()` to add the forwarder's
- own DKIM2 signature. Momentum does not automatically detect that a
- forward is happening and call `sign()` on its own. Without this
- explicit call, the receiver only sees the original sender's signature —
- it has no way to verify that the forwarder handled the message
- correctly. See the [Forwarder and modifier signing](/momentum/4/dkim2/sign#forwarder-and-modifier-signing)
- section for how to do this.
-
-* **§8.6 BCC privacy is a signer policy obligation**: §8.6 requires that a
- signer MUST NOT reveal `bcc:` recipients to any other recipient. Because
- `rt=` lives in the `DKIM2-Signature:` header that every recipient of a
- copy can read, a single `rt=` listing a blind-copied address would leak
- it. Momentum's per-recipient signing (`core_final_validation2`, or
- `validate_data_spool_each_rcpt` on the SMTP path) satisfies §8.6 by
- construction — each delivery's `rt=` carries only that recipient's address.
- Momentum does **not** attempt to auto-detect BCC at sign time (there is
- no envelope-level BCC marker — a BCC recipient is simply an envelope RCPT TO
- absent from `To:`/`Cc:`, which is only a heuristic), so when a policy writer
- instead signs once with an explicit multi-recipient `rcptto`/`rt=` in the
- shared hook, excluding BCC recipients is the policy writer's responsibility.
- Prefer per-recipient signing (or separate copies) for any mail that may
- carry blind copies. See [Signing hook](/momentum/4/dkim2/sign#signing-hook).
-
-* **Content modifier recipe composition**: When an upstream-signed
- message passes through a Momentum stage that modifies it — the
- engagement tracker rewriting URLs, a footer filter, a list processor
- changing headers — `sign()` automatically detects the change (its
- freshly computed header/body hashes no longer match the prior
- Message-Instance) and requires a `recipe=` describing how to reverse
- the hop; without one the sign call fails. Header changes MUST be
- reversible: a recipe MUST be provided for any changed header
- field, and there is no null-header form. To remove all instances of a
- header field, give that field name an empty step array (`[]`). When
- the full body diff isn't available, a null **body** recipe declaring
- the change irreversible is permitted: `recipe='{"b":null}'` for a body
- change. This lets signing succeed and this hop's signature verifies
- downstream — but earlier signatures' content can no longer be
- reconstructed past this hop, so the inner chain is broken for that
- field and acceptance depends on the verifier's policy toward a broken
- chain. (Originated mail needs no recipe — there's no prior instance to
- diff against.) See the [Forwarder and modifier signing](/momentum/4/dkim2/sign#forwarder-and-modifier-signing) section for
- examples. Automatic change-recording by pipeline stages is not yet
- built; a planned Recipe Accumulator API would let `sign()` assemble
- the recipe without operator involvement.
-
- Both this limitation and the forwarder auto-detection above are blocked
- on the same Recipe Accumulator API (planned; not yet available).
-
-* **§11.1 AR reason strings use simplified form**: The spec defines
- error string templates with interpolated values, e.g.
- `"FAIL: Message Instance m= body hash mismatch"`. Momentum
- emits simplified strings without the ordinals or hash values, e.g.
- `reason="body hash mismatch"`. The full detail is always available
- from the message itself — ordinals and key values are in the
- `DKIM2-Signature:` and `Message-Instance:` headers, and the structured
- AR property tokens (`header.i=`, `header.m=`, `header.d=`,
- `header.s=`) repeat them in the AR clause. This is a §11.1 SHOULD —
- not a MUST — so verification behaviour is unaffected.
-
-* **§13 Bare CR/LF normalization**: The spec (§13) requires signing the
- message with all line endings in CRLF form. **Set
- [`rfc2822_lone_lf_in_body`](/momentum/4/config/ref-rfc-2822-lone-lf-in-body)
- and
- [`rfc2822_lone_lf_in_headers`](/momentum/4/config/ref-rfc-2822-lone-lf-in-headers)
- to `fix` when DKIM2 signing is in use** — `ignore` causes DKIM2 to
- sign non-CRLF content as-is, breaking the signature at any downstream
- hop that normalizes line endings.
diff --git a/content/momentum/4/dkim2/ar-clauses.md b/content/momentum/4/dkim2/ar-clauses.md
deleted file mode 100644
index 2f251d72a..000000000
--- a/content/momentum/4/dkim2/ar-clauses.md
+++ /dev/null
@@ -1,156 +0,0 @@
----
-lastUpdated: "06/29/2026"
-title: "DKIM2 Authentication-Results — ar_clauses()"
-description: "Reference for the msys.validate.dkim2.ar_clauses() Lua API: usage examples and Authentication-Results output format."
----
-
-## Authentication-Results Output
-
-When `authservid` is supplied to `verify()`, Momentum automatically builds
-and prepends a fresh `Authentication-Results:` header (RFC 8601 §5 — an MTA
-MUST NOT add to an existing AR header):
-
-```lua
-msys.validate.dkim2.verify(msg, vctx, {
- authservid = "mta-1.example.com",
-})
-```
-
-For full control — or to merge DKIM2 results with other authentication methods
-(SPF, DKIM1, ARC) into a single combined header — use
-`msys.validate.dkim2.ar_clauses(result)`.
-
-`ar_clauses()` returns an array of DKIM2 `Authentication-Results:` clause
-strings for the given verify result. It returns `nil` when `result` is `nil`, or `result.signatures` is absent or
-empty. It also returns `nil` when all per-signature entries are non-actionable
-(`status="chain_verified"` or `status="none"`) and `result.overall` is `"none"`.
-
-Each entry is a complete clause string (e.g.
-`"dkim2=pass header.d=example.com header.s=sel-1:rsa-sha256 ..."`).
-The array contains one entry per actionable signature — signatures with
-`status="chain_verified"` (lower-hop: public-key verification not
-performed, so no `dkim2=pass` claim can be asserted for them) and
-`status="none"` (unsupported algorithm, §3.4 — no `dkim2=none` token exists)
-are excluded. Extra overall clauses for chain failures or policy downgrades
-are appended when applicable.
-
-### Usage examples
-
-```lua
-require("msys.core")
-require("msys.validate.dkim2")
-
-local mod = {}
-
-function mod:validate_data_spool_each_rcpt(msg, ac, vctx)
- -- Pass an empty options table (no authservid) so verify() does not
- -- auto-prepend a DKIM2-only AR header; build the combined header below.
- local result, err = msys.validate.dkim2.verify(msg, vctx, {})
- if not result then
- msys.log(msys.core.LOG_WARNING, "dkim2 verify error: " .. (err or "unknown"))
- vctx:set_code(451, "4.7.5 DKIM2 verification unavailable; please retry")
- return msys.core.VALIDATE_DONE
- end
-
- local dkim2_clauses = msys.validate.dkim2.ar_clauses(result) or {}
- local spf_clause = build_spf_clause() -- caller-supplied; returns nil when absent
- local all_clauses = {}
- if spf_clause then all_clauses[#all_clauses + 1] = spf_clause end
- for _, c in ipairs(dkim2_clauses) do all_clauses[#all_clauses + 1] = c end
- if #all_clauses > 0 then
- msg:header("Authentication-Results",
- "mta-1.example.com; " .. table.concat(all_clauses, "; "),
- "prepend")
- end
-
- -- NOTE: This example only shows AR header construction.
- -- You must still enforce SMTP policy based on result.overall —
- -- see the full skeleton in /momentum/4/dkim2/verify for the
- -- set_code / VALIDATE_DONE pattern for fail, permerror, and temperror.
- return msys.core.VALIDATE_CONT
-end
-
-msys.registerModule("my_combined_ar_policy", mod)
-```
-
-### Output format
-
-> **Note on `header.s=`:** In DKIM1, `header.s=` carries just the selector name.
-> In DKIM2 the `s=` wire tag encodes selector, algorithm, and signature together;
-> Momentum emits only the selector and algorithm (e.g. `sel-1:rsa-sha256`) in
-> `header.s=`, omitting the bulk base64 signature bytes.
-
-Normal pass:
-
-```
-Authentication-Results: mta-1.example.com;
- dkim2=pass header.d=example.com header.s=sel-1:rsa-sha256 header.i=1 header.m=1
- header.mf=sender@example.com header.rt=rcpt@a.com
-```
-
-Partial sig-set failure (§11.6) — a signature carries multiple sig-sets in
-`s=` (algorithm agility); one verifies so the signature passes, but another
-failed. The pass clause carries a `reason=` noting the partial failure:
-
-```
-Authentication-Results: mta-1.example.com;
- dkim2=pass reason="rsa-sha256 signature passed; 1 other sig-set(s) failed"
- header.d=example.com header.s=sel-1:rsa-sha256 header.i=1 header.m=1
- header.mf=sender@example.com header.rt=rcpt@a.com
-```
-
-Transient DNS failure (`key_unavailable` → `dkim2=temperror`):
-
-```
-Authentication-Results: mta-1.example.com;
- dkim2=temperror reason="public key could not be fetched" header.d=example.com header.s=sel-1:rsa-sha256 header.i=1 header.m=1
- header.mf=sender@example.com header.rt=rcpt@a.com
-```
-
-Permanent error — key does not exist in DNS (`no_key` → `dkim2=permerror`):
-
-```
-Authentication-Results: mta-1.example.com;
- dkim2=permerror reason="public key does not exist" header.d=example.com header.s=sel-1:rsa-sha256 header.i=1 header.m=1
- header.mf=sender@example.com header.rt=rcpt@a.com
-```
-
-Failure with reason (simplified string per §11.1 — ordinals come from `header.i=` / `header.m=`):
-
-```
-Authentication-Results: mta-1.example.com;
- dkim2=fail reason="body hash mismatch" header.d=example.com header.s=sel-1:rsa-sha256 header.i=1 header.m=1
- header.mf=sender@example.com header.rt=rcpt@a.com
-```
-
-When the overall verdict is worse than the per-sig result — chain failure or
-policy downgrade after a crypto pass — an extra overall clause is appended:
-
-Chain-broken example (2-hop message: crypto passed but recipe-chain check failed):
-
-```
-Authentication-Results: mta-1.example.com;
- dkim2=pass header.d=example.com header.s=sel-2:rsa-sha256 header.i=2 header.m=2
- header.mf=bounce@forwarder.example.net header.rt=rcpt@a.com;
- dkim2=permerror reason="recipe chain hash mismatch"
-```
-
-The `reason=` string names the specific chain failure rather than a single
-blanket message. Possible chain reasons: `"recipe chain hash mismatch"`,
-`"chain of custody broken"` (a §9.2 `mf=`/`rt=` link or `nd=` bridge break),
-`"signature i= sequence broken"`, `"Message-Instance syntax error"`,
-`"Message-Instance missing a required tag"`, `"Message-Instance revision
-sequence broken"`, `"Message-Instance revision ahead of signatures"`, and
-`"signature references a missing Message-Instance"`. A body/header hash
-mismatch against a non-default Message-Instance hash algorithm names that
-algorithm, e.g. `reason="body hash mismatch (sha512)"`.
-
-Policy-downgrade example (`d=` does not match the `mf=` domain — §11.4
-enumerates this as a PERMERROR output state):
-
-```
-Authentication-Results: mta-1.example.com;
- dkim2=pass header.d=example.com header.s=sel-1:rsa-sha256 header.i=1 header.m=1
- header.mf=sender@example.com header.rt=rcpt@a.com;
- dkim2=permerror reason="MAIL FROM and d= do not match"
-```
diff --git a/content/momentum/4/dkim2/debug.md b/content/momentum/4/dkim2/debug.md
deleted file mode 100644
index 2271fb01b..000000000
--- a/content/momentum/4/dkim2/debug.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-lastUpdated: "08/16/2026"
-title: "DKIM2 Debugging Reference"
-description: "Per-signature reason codes, recipe_chain detail strings, and ec_message context fields for DKIM2 sign and verify operations."
----
-
-## Debugging
-
-Setting `debug_level` on the `dkim2` configuration stanza routes sign and
-verify activity to `paniclog`:
-
-```
-dkim2 {
- debug_level = "info"
-}
-```
-
-| Level | What surfaces |
-|---|---|
-| `error` | Failures and resolver problems only. **Default.** |
-| `warning` | Adds DNS issues (including non-conformant key records Momentum tolerates for compatibility) and SHOULD-violation warnings. |
-| `info` | Adds one DNS resolution line per verified signature plus verification failures with their cause (`bh_mismatch` with expected vs. actual hash; `sig_invalid` with selector, algorithm, signed-input length, and OpenSSL detail). |
-| `debug` | Adds raw TXT-record bytes from the resolver, a per-crypto-check trace line, and the raw signed-input bytes on failure. Too noisy for steady-state production; useful when chasing a specific sign/verify mismatch. |
diff --git a/content/momentum/4/dkim2/sign.md b/content/momentum/4/dkim2/sign.md
deleted file mode 100644
index 78a1a4ca9..000000000
--- a/content/momentum/4/dkim2/sign.md
+++ /dev/null
@@ -1,432 +0,0 @@
----
-lastUpdated: "08/16/2026"
-title: "DKIM2 Signing — sign()"
-description: "Reference for the msys.validate.dkim2.sign() Lua API: hook selection, sign options, forwarder and modifier signing."
----
-
-## DKIM2 Signing
-
-DKIM2 signing in Momentum is driven from Lua policy via
-`msys.validate.dkim2.sign`; enabling DKIM2 signing means calling `sign()` from
-your validation hook.
-
-### Signing hook
-
-Call `sign()` from **`core_final_validation2`** — the recommended hook for DKIM2
-signing. It fires **once per recipient** (per cowref on the SMTP/relay swap-out
-path; once per generated message on the HTTP/`msg_gen` transmissions path, where
-each recipient is already generated as its own message), so `rt=` auto-populates
-to a single address and the signature is **BCC-safe by construction**. Crucially
-it fires on **every injection path** — SMTP *and* HTTP/transmissions — unlike the
-`validate_data_spool*` hooks (see the warning below).
-
-`core_final_validation2` returns a status: return `msys.core.EC_HOOK_CONT` to
-continue — including after a signing failure you choose to tolerate, in which
-case the message is delivered unsigned — or `EC_HOOK_DONE` / `EC_HOOK_RETRY` to
-reject or defer the message on a signing error. See the
-[final_validation / final_validation2](/momentum/3/3-api/hooks-core-final-validation)
-hook reference.
-
-> **⚠️ The `validate_data_spool*` hooks do not fire on transmissions.**
-> `validate_data_spool` and `validate_data_spool_each_rcpt` are driven only by
-> the SMTP swap-out engine. They fire on SMTP/relay injection but **never on the
-> HTTP/`msg_gen` (transmissions) path** — a signer registered on them leaves
-> transmission-injected messages **unsigned**. Use `core_final_validation2`
-> unless you are certain all traffic is SMTP-injected.
-
-The three hooks compared:
-
-| | `core_final_validation2` (recommended) | `validate_data_spool_each_rcpt` | `validate_data_spool` |
-|---|---|---|---|
-| **Injection paths** | SMTP **and** HTTP/transmissions | SMTP only | SMTP only |
-| **Fires** | Once per recipient | Once per recipient (cowref) | Once on the shared parent message |
-| **`rt=` auto-populate** | Single recipient | Single cowref recipient | Primary recipient only (`msg:rcptto()`) — extra recipients inaccessible |
-| **Multi-recipient `rt=`** | Each recipient signs for its own address automatically | Each cowref signs for its own single address automatically | Must pass explicit `rcptto = {r1, r2, ...}` — collect the full list in an earlier hook (e.g. `validate_rcptto`) |
-| **BCC privacy (§8.6)** | ✅ Satisfied by construction | ✅ Satisfied by construction | ⚠️ Operator MUST exclude BCC from the explicit `rcptto` list |
-| **Return** | `EC_HOOK_CONT` / `EC_HOOK_DONE` / `EC_HOOK_RETRY` | `VALIDATE_CONT` / `VALIDATE_DONE` / `VALIDATE_AGAIN` | `VALIDATE_CONT` / `VALIDATE_DONE` / `VALIDATE_AGAIN` |
-
-All three hooks return similar statuses so a signer on any of them can let the message
-through unsigned (`…CONT`), reject it (`…DONE`), or tempfail it (`…AGAIN`/`…RETRY`)
-on a signing error.
-
-Per **§8.6 the signer MUST NOT reveal `bcc:` recipients to any other recipient**
-(RFC 5322 §3.6.3): since `rt=` is carried in the `DKIM2-Signature:` header that
-every recipient of a copy can read, the `rt=` of a copy delivered to one
-recipient must not list another recipient who was blind-copied. The
-per-recipient hooks (`core_final_validation2`, `validate_data_spool_each_rcpt`)
-satisfy this by construction — each copy's `rt=` is bound to its own single
-address. Only `validate_data_spool` puts this obligation on you: Momentum cannot
-detect which envelope recipients are blind copies (there is no envelope-level BCC
-marker), so when you pass an explicit multi-recipient `rcptto` the §8.6 MUST NOT
-is **your** obligation — exclude any BCC address, or fall back to per-recipient
-signing / separate copies. Note that this shared single-signature mode is in any
-case unavailable on the HTTP/transmissions path, which never presents a shared
-multi-recipient message to a signing hook.
-
-Passing an explicit `rcptto` option overrides the auto-populated recipient.
-Accepts a string (single address) or a Lua table of bare addresses.
-
-### Signing order: DKIM2, DKIM v1, and ARC
-
-When more than one signing scheme is active they run in a fixed order at the
-final validation steps, because each later stage must sign or seal over the
-output of the earlier ones:
-
-1. **DKIM2** (`core_final_validation2`) runs first.
-2. **DKIM v1** / OpenDKIM (`core_final_validation`) runs next — `core_final_validation2`
- is always invoked before `core_final_validation` at this point.
-3. **ARC** sealing runs last, in
- [`post_final_validation`](/momentum/4/hooks/core-post-final-validation), so the
- ARC seal covers the completed DKIM2 and DKIM v1 signatures.
-
-### Minimum signer
-
-```lua
-require("msys.core")
-require("msys.validate.dkim2")
-
-local mod = {}
-
-function mod:core_final_validation2(msg, ac, vctx)
- local ok, err = msys.validate.dkim2.sign(msg, vctx, {
- domain = "example.com",
- selector = "dkim2048",
- keyfile = "/opt/msys/ecelerity/etc/conf/dkim/example.com/dkim2048.key",
- })
- if not ok then
- -- err is a static-literal string describing the failure. See
- -- /momentum/4/dkim2/debug for the full set.
- msys.log(msys.core.LOG_WARNING, "dkim2 sign failed: " .. (err or "unknown"))
- end
- -- Return EC_HOOK_CONT to continue even on a sign failure (message is
- -- delivered unsigned). Return EC_HOOK_DONE / EC_HOOK_RETRY instead to
- -- reject / defer the message when signing must not be skipped.
- return msys.core.EC_HOOK_CONT
-end
-
-msys.registerModule("my_dkim2_signer", mod)
-```
-
-`mf=` defaults to the message's envelope MAIL FROM and `rt=` defaults to its
-RCPT TO; both can be overridden in the options table for forwarder
-scenarios (see *Forwarder / modifier signing* below).
-
-### Sign options
-
-`sign()` accepts either a single options table or a multi-algorithm
-form using an explicit `sig_sets` key (§8.9 algorithm agility):
-
-```lua
--- Single sig-set (most common):
-msys.validate.dkim2.sign(msg, vctx, {
- domain = "example.com",
- selector = "sel-2048",
- keyfile = "/etc/dkim2/rsa.key",
-})
-
--- Multi-algorithm (RSA + Ed25519 in one DKIM2-Signature):
-msys.validate.dkim2.sign(msg, vctx, {
- domain = "example.com",
- sig_sets = {
- { selector = "sel-rsa", keyfile = "/etc/dkim2/rsa.key" },
- { selector = "sel-ed25519", keyfile = "/etc/dkim2/ed25519.key",
- algorithm = "ed25519-sha256" },
- },
-})
-```
-
-When `sig_sets` is present, all entries sign the same canonical
-signed-input and are combined into a single
-`s=sel1:alg1:sig1,sel2:alg2:sig2` value on one `DKIM2-Signature`
-header. Per §11.6 the verifier checks
-every sig-set; Momentum's overall verdict passes if any one validates,
-so a receiver that only supports RSA will still verify cleanly. On the
-verifier side, any sig-set that fails alongside a passing one is
-reported as a DWARNING in paniclog (partial-sig-failure condition,
-§11.6).
-
-**If any sig-set fails**, the entire `sign()` call returns
-`(nil, error_string)` — no partial signature is produced.
-
-The `selector`, `keyfile`, and `algorithm` fields belong to each sig-set
-entry; all other options below are header-level and go at the top level
-of the options table.
-
-| Option | Required? | Meaning |
-|---|---|---|
-| `domain` | yes | `d=` tag — the signing domain. |
-| `selector` | yes (single) | Selector component of `s=::`. When `sig_sets` is used, set per entry inside `sig_sets` instead. |
-| `keyfile` | yes (single) | Path to the PEM-encoded private key on disk. Mutually exclusive with `keybuf`; one of the two is required. When `sig_sets` is used, set per entry inside `sig_sets` instead. |
-| `keybuf` | yes (single) | PEM-encoded private key as a string in memory. Alternative to `keyfile` for cases where the key is held in a secrets manager or generated at runtime. When `sig_sets` is used, set per entry inside `sig_sets` instead. |
-| `algorithm` | no | `"rsa-sha256"` (default) or `"ed25519-sha256"`. When `sig_sets` is used, set per entry inside `sig_sets` instead. |
-| `sig_sets` | no | Array of `{selector, keyfile, keybuf, algorithm}` tables for multi-algorithm signing (§8.9). When `sig_sets` is used, `selector`/`keyfile`/`keybuf`/`algorithm` are set per entry inside `sig_sets` — do not set them at the top level. All other options (`domain`, `mailfrom`, `rcptto`, `flags`, `recipe`, etc.) remain at the top level and apply to all entries. |
-| `mailfrom` | no | **Normally omitted** — Momentum reads the live envelope MAIL FROM automatically. Production exception: null-sender DSN/bounce messages where `mailfrom=""` is required since the envelope API returns nil for `MAIL FROM:<>`. Otherwise testing/simulation of specific envelope conditions without real SMTP transit. An explicit value may be given bare (`user@example.com`) or envelope-decorated (``, `MAIL FROM: