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

# smtp-source(1)

parallelized SMTP/LMTP test generator

## NAME

smtp-source - parallelized SMTP/LMTP test generator

## SYNOPSIS

```

```

**smtp-source** \[*options*\] \[**inet:**\]*host*\[:*port*\]

**smtp-source** \[*options*\] **unix:***pathname*

## DESCRIPTION

**smtp-source** connects to the named *host* and TCP *port* (default: port 25) and sends one or more messages to it, either sequentially or in parallel. The program speaks either SMTP (default) or LMTP. Connections can be made to UNIX-domain and IPv4 or IPv6 servers. IPv4 and IPv6 are the default.

Note: this is an unsupported test program. No attempt is made to maintain compatibility between successive versions.

Arguments:

- **-4**

  Connect to the server with IPv4. This option has no effect when Postfix is built without IPv6 support.

- **-6**

  Connect to the server with IPv6. This option is not available when Postfix is built without IPv6 support.

- **-A**

  Don't abort when the server sends something other than the expected positive reply code.

- **-c**

  Display a running counter that is incremented each time an SMTP DATA command completes.

- **-C** *count*

  When a host sends RESET instead of SYN\|ACK, try *count* times before giving up. The default count is 1. Specify a larger count in order to work around a problem with TCP/IP stacks that send RESET when the listen queue is full.

- **-d**

  Don't disconnect after sending a message; send the next message over the same connection.

- **-f** *from*

  Use the specified sender address (default: \<foo@my-hostname\>).

- **-F** *file*

  Send the pre-formatted message header and body in the specified *file*, while prepending '.' before lines that begin with '.', and while appending CRLF after each line.

- **-l** *length*

  Send *length* bytes as message payload. The length does not include message headers.

- **-L**

  Speak LMTP rather than SMTP.

- **-m** *message\_count*

  Send the specified number of messages (default: 1).

- **-M** *my-hostname*

  Use the specified hostname or \[address\] in the HELO command and in the default sender and recipient addresses, instead of the machine hostname.

- **-N**

  Generate each recipient address by appending a number (a per-process recipient counter) to the recipient address localpart specified with the **-t** option.

  Note: to use the number as an address extension, specify an explicit address delimiter at the end of the recipient localpart, as in "**-t localpart+@domain**" or "**-t** **localpart+**", where "**+**" is a Postfix recipient address delimiter.

  Benefits:

  - •

    A non-constant recipient address avoids an unrealistic 100% cache hit rate in clients of the Postfix trivial-rewrite service, better approximating performance under real-life work-loads.

  - •

    A fixed recipient address local-part with a non-constant address extension avoids the need to configure a large number of valid recipient addresses in the receiving Postfix server.

- **-o**

  Old mode: don't send HELO, and don't send message headers.

- **-r** *recipient\_count*

  Send the specified number of recipients per transaction (default: 1), and generate recipient addresses as described under the **-N** option.

- **-R** *interval*

  Wait a random time (0 \<= n \<= *interval*) between messages. Suspending one thread does not affect other delivery threads.

- **-s** *session\_count*

  Run the specified number of SMTP sessions in parallel (default: 1).

- **-S** *subject*

  Send mail with the named subject line (default: none).

- **-t** *to*

  Use the specified recipient address (default: \<foo@my-hostname\>).

- **-T** *windowsize*

  Override the default TCP window size. To work around broken TCP window scaling implementations, specify a value \> 0 and \< 65536.

- **-v**

  Make the program more verbose, for debugging purposes.

- **-w** *interval*

  Wait a fixed time between messages. Suspending one thread does not affect other delivery threads.

- \[**inet:**\]*host*\[:*port*\]

  Connect via TCP to host *host*, port *port*. The default port is **smtp**.

- **unix:***pathname*

  Connect to the UNIX-domain socket at *pathname*.

## BUGS

No SMTP command pipelining support.

## SEE ALSO

```
smtp-sink(1), SMTP/LMTP message dump
```

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