# aiosmtpd

Provides an asynchronous, RFC 5321 compliant Simple Mail Transfer Protocol (SMTP) server that supports customizable extensions.

Author:

  The aiosmtpd Developers

Date:

  2025-12-17

Copyright:

  2015-2022, The aiosmtpd Developers

Version:

  1.4.6

Manual section:

  1

## SYNOPSIS

    usage: aiosmtpd [-h] [-v] [-n] [-c CLASSPATH] [-s SIZE] [-u] [-d]
                    [-l [[HOST][:PORT]]] [--smtpscert CERTFILE]
                    [--smtpskey KEYFILE] [--tlscert CERTFILE] [--tlskey KEYFILE]
                    [--no-requiretls]
                    [CLASSARGS ...]

### Options

CLASSARGS

  Additional arguments passed to the handler CLASS.

-h, --help

  show this help message and exit

-v, --version

  show program’s version number and exit

-n, --nosetuid

  This program generally tries to setuid `nobody`, unless this flag is set. The setuid call will fail if this program is not run as root (in which case, use this flag).

-c <CLASSPATH>, --class <CLASSPATH>

  Use the given class, as a Python dotted import path, as the handler class for SMTP events. This class can process received messages and do other actions during the SMTP dialog. Uses `aiosmtpd.handlers.Debugging` by default.

-s <SIZE>, --size <SIZE>

  Restrict the total size of the incoming message to `SIZE` number of bytes via the RFC 1870 SIZE extension. Defaults to 33,554,432 bytes.

-u, --smtputf8

  Enable the `SMTPUTF8` extension as defined in RFC 6531.

-d, --debug

  Increase debugging output. Every `-d` increases debugging level by one.

-l <[HOST][:PORT]>, --listen <[HOST][:PORT]>

  Optional host and port to listen on. If the `PORT` part is not given, then port `8025` is used. If only `:PORT` is given, then `localhost` is used for the hostname. If neither are given, `localhost:8025` is used.

--smtpscert <CERTFILE>

  The certificate file for implementing SMTPS. If given, the parameter `--smtpskey` must also be specified.

--smtpskey <KEYFILE>

  The key file for implementing SMTPS. If given, the parameter `--smtpscert` must also be specified.

--tlscert <CERTFILE>

  The certificate file for implementing STARTTLS. If given, the parameter `--tlskey` must also be specified.

--tlskey <KEYFILE>

  The key file for implementing STARTTLS. If given, the parameter `--tlscert` must also be specified.

--no-requiretls

  If specified, disables `require_starttls` of the SMTP class. (By default, `require_starttls` is True.) Has no effect if `--tlscert` and `--tlskey` are not specified.

## ENVIRONMENT

AIOSMTPD_CONTROLLER_TIMEOUT
  How long the main thread will wait (in seconds) until the SMTP thread is ready.
  Default: `1.0`