SPAWN(8) System Manager's Manual SPAWN(8)

# [NAME](#NAME)

spawn - Postfix external command spawner

# [SYNOPSIS](#SYNOPSIS)

```
spawn [generic Postfix daemon options] command_attributes...
```

# [DESCRIPTION](#DESCRIPTION)

The [**spawn**(8)](/man/os/postfix/spawn.8) daemon monitors a TCP or UNIX-domain stream socket, configured in **master.cf** with a service type **inet** or **unix**.

This daemon spawns an external command whenever a connection is established, with the standard input, output and error file descriptors connected to the remote client.

The command process is subject to the time limit specified with the parameter *transport*\_time\_limit (default: command\_time\_limit) where *transport* equals the service name field in master.cf. A process that exceeds the time limit will receive a SIGKILL signal.

The [**spawn**(8)](/man/os/postfix/spawn.8) daemon service typically has a process limit &gt; 1 in its **master.cf** service definition, so that the number of processes can scale with demand.

# [COMMAND ATTRIBUTE SYNTAX](#COMMAND_ATTRIBUTE_SYNTAX)

```

```

The external command attributes are given in the **master.cf** file at the end of a service definition. The syntax is as follows:

[**user**=*username* (required)](#user)

[**user**=*username*:*groupname*](#user~2)

The external command is executed with the rights of the specified *username*. The software refuses to execute commands with root privileges, or with the privileges of the mail system owner. If *groupname* is specified, the corresponding group ID is used instead of the group ID of *username*.

[**argv**=*command*... (required)](#argv)

The command to be executed. This must be specified as the last command attribute. The command is executed directly, i.e. without interpretation of shell meta characters by a shell command interpreter.

If a command argument must contain whitespace, or if a command argument must begin with "{", enclose the argument with "{" and "}". This form will ignore whitespace after the outer "{" and before the outer "}". Example:

argv=/bin/sh -c { shell syntax here }

# [DIAGNOSTICS](#DIAGNOSTICS)

The [**spawn**(8)](/man/os/postfix/spawn.8) daemon reports abnormal child exits. Problems are logged to [**syslogd**(8)](/man/os/postfix/syslogd.8) or [**postlogd**(8)](/man/os/postfix/postlogd.8).

# [SECURITY](#SECURITY)

```

```

The [**spawn**(8)](/man/os/postfix/spawn.8) daemon needs root privilege in order to execute external commands as the specified user. It is therefore security sensitive.

However, the [**spawn**(8)](/man/os/postfix/spawn.8) daemon does not receive data from or about service clients or external commands, and thus is not vulnerable to data-driven attacks.

# [CONFIGURATION PARAMETERS](#CONFIGURATION_PARAMETERS)

```

```

Changes to **main.cf** are picked up automatically as [**spawn**(8)](/man/os/postfix/spawn.8) processes run for only a limited amount of time. Use the command "**postfix reload**" to speed up a change.

The text below provides only a parameter summary. See [**postconf**(5)](/man/os/postfix/postconf.5) for more details including examples.

In the text below, *transport* is the first field of the entry in the **master.cf** file.

# [RESOURCE AND RATE CONTROL](#RESOURCE_AND_RATE_CONTROL)

```

```

[**transport\_time\_limit ($command\_time\_limit)**](#transport_time_limit)

A transport-specific override for the command\_time\_limit parameter value, where *transport* is the master.cf name of the message delivery transport.

# [MISCELLANEOUS](#MISCELLANEOUS)

```

```

[**config\_directory (see 'postconf -d' output)**](#config_directory)

The default location of the Postfix main.cf and master.cf configuration files.

[**daemon\_timeout (18000s)**](#daemon_timeout)

How much time a Postfix daemon process may take to handle a request before it is terminated by a built-in watchdog timer.

[**export\_environment (see 'postconf -d' output)**](#export_environment)

The list of environment variables that a Postfix process will export to non-Postfix processes.

[**ipc\_timeout (3600s)**](#ipc_timeout)

The time limit for sending or receiving information over an internal communication channel.

[**mail\_owner (postfix)**](#mail_owner)

The UNIX system account that owns the Postfix queue and most Postfix daemon processes.

[**max\_idle (100s)**](#max_idle)

The maximum amount of time that an idle Postfix daemon process waits for an incoming connection before terminating voluntarily.

[**max\_use (100)**](#max_use)

The maximal number of incoming connections that a Postfix daemon process will service before terminating voluntarily.

[**process\_id (read-only)**](#process_id)

The process ID of a Postfix command or daemon process.

[**process\_name (read-only)**](#process_name)

The process name of a Postfix command or daemon process.

[**queue\_directory (see 'postconf -d' output)**](#queue_directory)

The location of the Postfix top-level queue directory.

[**syslog\_facility (mail)**](#syslog_facility)

The syslog facility of Postfix logging.

[**syslog\_name (see 'postconf -d' output)**](#syslog_name)

A prefix that is prepended to the process name in syslog records, so that, for example, "smtpd" becomes "prefix/smtpd".

Available in Postfix 3.3 and later:

[**service\_name (read-only)**](#service_name)

The master.cf service name of a Postfix daemon process.

# [SEE ALSO](#SEE_ALSO)

```
postconf(5), configuration parameters
master(8), process manager
postlogd(8), Postfix logging
syslogd(8), system logging
```

# [LICENSE](#LICENSE)

```

```

The Secure Mailer license must be distributed with this software.

# [AUTHOR(S)](#AUTHOR%28S%29)

```
Wietse Venema
IBM T.J. Watson Research
P.O. Box 704
Yorktown Heights, NY 10598, USA
Wietse Venema
Google, Inc.
111 8th Avenue
New York, NY 10011, USA
```

---

Document: spawn(8) from postfix 3.11.7-r1 (Chainguard OS)
Source: https://github.com/vdukhovni/postfix
