---
name: "spawn"
section: "8"
platform: "linux"
package: "postfix"
version: "3.11.7-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/spawn"
---

# spawn(8)

Postfix external command spawner

## NAME

spawn - Postfix external command spawner

## SYNOPSIS

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

## DESCRIPTION

The [**spawn**(8)](/spawn/8.md) 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)](/spawn/8.md) daemon service typically has a process limit \> 1 in its **master.cf** service definition, so that the number of processes can scale with demand.

## 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**=*username*:*groupname*

  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)

  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

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

## SECURITY

```

```

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

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

## CONFIGURATION PARAMETERS

```

```

Changes to **main.cf** are picked up automatically as [**spawn**(8)](/spawn/8.md) 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)](/postconf/5.md) 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

```

```

- **transport\_time\_limit ($command\_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

```

```

- **config\_directory (see 'postconf -d' output)**

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

- **daemon\_timeout (18000s)**

  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)**

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

- **ipc\_timeout (3600s)**

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

- **mail\_owner (postfix)**

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

- **max\_idle (100s)**

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

- **max\_use (100)**

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

- **process\_id (read-only)**

  The process ID of a Postfix command or daemon process.

- **process\_name (read-only)**

  The process name of a Postfix command or daemon process.

- **queue\_directory (see 'postconf -d' output)**

  The location of the Postfix top-level queue directory.

- **syslog\_facility (mail)**

  The syslog facility of Postfix logging.

- **syslog\_name (see 'postconf -d' output)**

  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)**

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

## SEE ALSO

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

## LICENSE

```

```

The Secure Mailer license must be distributed with this software.

## AUTHOR(S)

```
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
```
