Exim Specification - 26. The smartuser director

Go to the first, previous, next, last section, table of contents.

# 26. The smartuser director

The smartuser director matches any local part, so it can be used to handle local addresses that all other directors have declined. It is, of course, subject to the generic director options, so specific instances can be used for all addresses in certain domains, or all local parts with certain prefixes or suffixes, or specific local parts, or any other generic condition.

If a transport is specified, smartuser directs the message to that transport, either using the original address, or, if new_address is set, using a new envelope address. No checking for duplication takes place. The original address is available to the transport via the expansion variables $original_local_part and $original_domain.

If no transport is specified, new_address must be set, and smartuser treats its value as if it were a line from an alias file. It must consist of a comma-separated list of items as defined in section 23.3. The special values :blackhole:, :defer:, and :fail: (but not :include:) may be used, and file or pipe items may also appear. If any new address is a duplicate of any other address in the message, it is discarded.

### directory_transport (smartuser)

Type: string, expanded
Default: unset

A smartuser director sets up a direct delivery to a directory when a path name ending with a slash is specified as a new `address'. The transport used is specified by this option, which, after expansion, must be the name of a configured transport.

### directory2_transport (smartuser)

Type: string, expanded
Default: unset

A smartuser director sets up an alternative direct delivery to a directory when a path name ending with two slashes is specified as a new `address'. The transport used is specified by this option, which, after expansion, must be the name of a configured transport.

### file_transport (smartuser)

Type: string, expanded
Default: unset

A smartuser director sets up a direct delivery to a file when a path name not ending in a slash is specified as a new `address'. The transport used is specified by this option, which, after expansion, must be the name of a configured transport.

### forbid_file (smartuser)

Type: boolean
Default: false

If this option is true, this director may not generate a new address which specifies delivery to a local file or directory. If it attempts to do so, a delivery failure occurs.

### forbid_pipe (smartuser)

Type: boolean
Default: false

If this option is true, this director may not generate a new address which specifies delivery to a pipe. If it attempts to do so, a delivery failure occurs.

### hide_child_in_errmsg (smartuser)

Type: boolean
Default: false

If this option is set true, it prevents Exim from quoting a child address if it generates a bounce or delay message for it. Instead it says `an address generated from <the top level address>'. Of course, this applies only to bounces generated locally. If a message is forwarded to another host, its bounce may well quote the generated address.

### new_address (smartuser)

Type: string, expanded
Default: unset

When transport is not set, this option is treated like a line from an alias file. Any unqualified addresses it contains are qualified using the value of qualify_recipient. This is the most common configuration for smartuser.

When transport is set, new_address specifies a single new address, to replace the current one in the message's envelope when it is transported. The address must be qualified (that is, contain an @ character).

In both cases, new addresses are rewritten by Exim's normal rewriting rules (see chapter 34) unless the rewrite option is turned off.

The value of new_address is expanded, so settings such as

    new_address = $local_part@some.new.host

can be used, or a file lookup on the local part can be done. If the expansion fails as a result of an explicit `fail' item in an expansion sub-expression, the director just declines to handle the address. Otherwise, an expansion failure is treated as a serious configuration error, and causes a panic, unless panic_expansion_fail is set false, in which case the same action is taken as for `fail'.

### panic_expansion_fail (smartuser)

Type: boolean
Default: true

See new_address above.

### pipe_transport (smartuser)

Type: string, expanded
Default: unset

A smartuser director sets up a direct delivery to a pipe when a string starting with a vertical bar character is specified as a new `address'. The transport used is specified by this option, which, after expansion, must be the name of a configured transport.

### qualify_preserve_domain (smartuser)

Type: boolean
Default: false

If this is set and an unqualified address (one without a domain) is present in new_address, it is qualified with the domain of the incoming address instead of the global setting in qualify_recipient.

### rewrite (smartuser)

Type: boolean
Default: true

If this option is set false, addresses specified by new_address are not subject to rewriting.

Go to the first, previous, next, last section, table of contents.