outbound_smtp_auth – Module

March 26, 2020 Contributors

This module enables users to specify authentication parameters for a given set of messages so that Momentum will authenticate against the peer server when it sends outbound mail. It currently supports the ‘AUTH LOGIN’ and ‘AUTH PLAIN’ methods of authentication. You can specify the parameters in configuration or in lua, or use a combination of both.


This module makes heavy use of message contexts to facilitate authentication. If it is enabled, you risk having extra I/O unless keep_message_dicts_in_memory is on.

**Configuration Change. ** This feature is available starting from Momentum 3.6.12.


Configuration variables are listed below. These values can all be changed and overridden by setting context variables with the same name as the options in lua. All variables are valid in the binding group, binding, domain, and global scopes.


A unique key that can be used in lua to look up authorization details in a database. It enables you to easily trigger custom behavior based on a configuration scope. The default value is false.


The password that will be passed to the remote server. The default value is false.


Setting the password in configuration will leave it as plaintext. To set the password more securely, dynamically retrieve it from a data store in lua and set it in the context variable that corresponds to this option.


Determines what authentication protocol should be used. The only supported values are ‘PLAIN’ and ‘LOGIN’. The default value is false.


The username that will be passed to the remote server. The default value is false.


Basic examples of usage are provided below.

The following example shows how you can extend the new hook and set the username and password in lua.

function mod:outbound_smtp_auth_config(msg, ac, vctx)
  print('NOTICE: outbound_smtp_auth_config Lua hook called');
  print('NOTICE: msg:['.. tostring(msg) ..']')
  msg:context_set(VCTX_MESS, 'outbound_smtp_auth_user', 'foo')
  msg:context_set(VCTX_MESS, 'outbound_smtp_auth_pass', 'bar')

The following example shows how to use the new configuration variables to set distinct authorization parameters for two different domains.

outbound_smtp_auth { }

Keep_Message_Dicts_In_Memory = true

Domain "messagesystems.com" {
  Outbound_SMTP_AUTH_Type = "LOGIN"
  Outbound_SMTP_AUTH_User = "msys"
  Outbound_SMTP_AUTH_Pass = "msys"
  Outbound_SMTP_AUTH_Key = "somestring"

Domain "sparkpost.com" {
  Outbound_SMTP_AUTH_Type = "PLAIN"
  Outbound_SMTP_AUTH_user = "sparkpost"
  Outbound_SMTP_AUTH_pass = "sparkpost"
  Outbound_SMTP_AUTH_Key = "someotherstring"