alias_schemes

March 26, 2020 Contributors

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”