---
name: "extsmail.externals"
section: "5"
platform: "linux"
package: "extsmail"
version: "2.5-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/extsmail.externals"
---

# extsmail.externals(5)

configure which external commands to robustly send e-mail via

## NAME

**extsmail.externals** – configure which external commands to robustly send e-mail via

## DESCRIPTION

**extsmail.externals** is used to configure [extsmaild(1)](/extsmaild/1.md). It consists of one or more  *group* declarations. Each group consists of zero or more *match* / *reject* clauses followed by one or more *external* declarations. An external consists of one or more assignments of *key* *=* *value* pairs.

When sending messages [extsmaild(1)](/extsmaild/1.md) first searches through the externals file, in order, for a group whose match / reject clauses match the message in question. If a group does not contain any such clauses it automatically matches all messages. Match / reject clauses currently match only against headers, and use standard POSiX extended regular expressions (see [re\_format(7)](/re_format/7.md) for more details). [extsmaild(1)](/extsmaild/1.md) then tries each external in the group, in order, to send the message successfully.

The grammar for this file is as follows:

```
group    ::= { matches* external+ }
matches  ::= match
           | reject
match    ::= MATCH HEADER string
reject   ::= REJECT HEADER string
external ::= EXTERNAL ID { defn+ }
defn     ::= ID = STRING
           | ID = TIME
TIME     ::= [0-9]+[dhms]
```

Valid assignments within an external are:

- sendmail

  Defines the external shell command used to send e-mail.

- timeout

  If  [extsmaild(1)](/extsmaild/1.md) is executed in daemon mode, this value defines the length of time that [extsmaild(1)](/extsmaild/1.md) will retry this external before giving up and trying the next external in the group. Times are specified as a number followed by *d* (days),  *h* (hours), *m* (minutes), or  *s* (seconds). If [extsmaild(1)](/extsmaild/1.md) is executed in batch mode, the  *timeout* value is ignored.

## FILES

The *extsmail* configuration file is searched for, in order, in the following locations:

- \~/.extsmail/externals

  Per-user configuration.

- /etc/extsmail/externals

  System-wide configuration.

## EXAMPLES

The simplest externals file sending e-mail via [ssh(1)](/ssh/1.md) looks as follows:

```
group {
    external mymachine {
        sendmail = "/usr/bin/ssh -q -C -l user mymachine.net /usr/sbin/sendmail -t"
    }
}
```

where *mymachine* is a human-friendly name given to an external (it does not effect processing), and *user* is the username on the remote machine *mymachine.net*.

A more complex example using multiple groups, message matching, and multiple external commands looks as follows:

```
group {
    match header "^To:.*@foo.com"
    external foo {
        sendmail = "/usr/bin/ssh -q -C -l user shell.foo.com /usr/sbin/sendmail -t"
    }
}
group {
    external mymachine {
        sendmail = "/usr/bin/ssh -q -C -l user mymachine.net /usr/sbin/sendmail -t"
    }
    external bk {
        sendmail = "/usr/bin/ssh -q -C -l user bk.mymachine.net /usr/sbin/sendmail -t"
    }
}
```

## SEE ALSO

[extsmail(1)](/extsmail/1.md), [extsmail.conf(5)](/extsmail.conf/5.md), [extsmaild(1)](/extsmaild/1.md)

## AUTHORS

Laurence Tratt ⟨http://tratt.net/laurie/⟩
