Skip to content

meta

Since: Dev Builds Only

The functionality described in this section requires a dev build of KumoMTA. You can obtain a dev build by following the instructions in the Installation section.

Pre-define connection metadata values.

The value of this option is a mapping of metadata key strings to corresponding metadata values. Each of these will be set in the connection metadata object.

In this example, the key hello is assigned the value there when the connection is opened:

kumo.start_esmtp_listener {
  listen = '0.0.0.0:25',
  meta = {
    hello = 'there',
  },
}

meta can be combined with via and peer to adjust the metadata based on the local or remote address associated with the session, respectively. In the following example the trusted metadata key is assigned to true for connections from loopback or a lan address, but false otherwise:

kumo.start_esmtp_listener {
  listen = '0.0.0.0:25',
  meta = {
    -- default is to assume untrusted
    trusted = false,
  },
  peer = {
    ['127.0.0.0/24'] = {
      meta = {
        trusted = true,
      },
    },
    ['192.168.1.0/24'] = {
      meta = {
        trusted = true,
      },
    },
  },
}

When meta is processed and applied to the effective listener configuration, its values are overlaid and merged into the configuration, so in the example above, the trusted value is applied to the metadata first, then the matching peer block will replace the trusted key with the values it defines, preserving any other keys that might already be defined in the connection metadata.

The implication of this merging scheme, coupled with the lua language, is that you cannot unset a metadata key using this syntax, because trying to explicitly assign a value of nil is equivalent to not specifying a value. You can replace the value with some other non-nil value though.