Table chaining

The table.chain module allows chaining together multiple table modules by using value returned by a previous table as an input for the second table.

Example:

table.chain {
    step regexp "(.+)(\\+[^+"@]+)?@example.org" "$1@example.org"
    step file /etc/maddy/emails
}

This will strip +prefix from mailbox before looking it up in /etc/maddy/emails list.

Configuration directives

step table

Adds a table module to the chain. If input value is not in the table (e.g. file) - return "not exists" error.


optional_step table

Same as step but if input value is not in the table - it is passed to the next step without changes.

Example: Something like this can be used to map emails to usernames after translating them via aliases map:

table.chain {
    optional_step file /etc/maddy/aliases
    step regexp "(.+)@(.+)" "$1"
}