Skip to content

kumo.on('smtp_server_ehlo', function(domain, conn_meta))

Called by the ESMTP server in response to the client issuing either a "HELO" or "EHLO" command. The event handler is passed the domain parameter from the HELO/EHLO command.

Since: Version 2023.08.22-4d895015

The functionality described in this outlined box requires version 2023.08.22-4d895015 of KumoMTA, or a more recent version.


The conn_meta parameter represents the connection metadata and can be used to share state between the various SMTP listener event handlers. See Connection Metadata for more information.

You may choose to reject the connection via kumo.reject.

-- Called to validate the helo and/or ehlo domain
kumo.on('smtp_server_ehlo', function(domain, conn_meta)
  -- Use kumo.reject to return an error to the EHLO command
  if domain == 'bad.actor' then
    kumo.reject(420, 'go away')
  end
end)
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.

The signature of the call has been extended to receive the list of SMTP extensions that will be reported by the EHLO command. You can optionally return a list of extensions to replace that list.

This example shows how to advertise support for a hypothetical "X-SOMETHING" extension:

kumo.on('smtp_server_ehlo', function(domain, conn_meta, extensions)
  table.insert(extensions, 'X-SOMETHING')
  return extensions
end)

If you return nil or otherwise omit to return anything, the standard set of extensions will be returned.

You can filter out or add whatever strings you wish from the extensions parameter, but it is worth noting that what you add/remove from this list has no impact on what kumomta actually supports, and does not otherwise change its behavior.