<a id="smtp-queue"></a>

# SMTP queue

The *smtpd* process implements the [pre-](predelivery.html.md) and [post-delivery](postdelivery.html.md) contexts. These contexts operates on a message in queue. A message in queue is not directly bound to an inbound SMTP connection, hence its delivery is not done inline.

```default
,-------> queue
|           |                     <-- Pre-delivery context
|   delivery attempt
|           |                     <-- Post-delivery context
\__________/ \______ done
```

* [Pre-delivery](predelivery.html.md)
  * [Variables](predelivery.html.md#variables)
    * [Arguments](predelivery.html.md#arguments)
      * [Queue](predelivery.html.md#queue)
        * [Plugin](predelivery.html.md#plugin)
    * [Message](predelivery.html.md#message)
      * [Id](predelivery.html.md#id1)
      * [Address](predelivery.html.md#address)
      * [File](predelivery.html.md#file)
      * [DSN](predelivery.html.md#dsn)
  * [Functions](predelivery.html.md#functions)
    * [`Try()`](predelivery.html.md#Try)
    * [`Queue()`](predelivery.html.md#Queue)
    * [`Bounce()`](predelivery.html.md#Bounce)
    * [`Delete()`](predelivery.html.md#Delete)
    * [`SetMetaData()`](predelivery.html.md#SetMetaData)
    * [`GetMetaData()`](predelivery.html.md#GetMetaData)
  * [On script error](predelivery.html.md#on-script-error)
  * [On implicit termination](predelivery.html.md#on-implicit-termination)
* [Post-delivery](postdelivery.html.md)
  * [Variables](postdelivery.html.md#variables)
    * [Arguments](postdelivery.html.md#arguments)
      * [Policy](postdelivery.html.md#policy)
        * [Policies](postdelivery.html.md#policies)
      * [Attempt](postdelivery.html.md#attempt)
        * [Result](postdelivery.html.md#result)
        * [Error](postdelivery.html.md#error)
        * [Connection](postdelivery.html.md#connection)
          * [TLS](postdelivery.html.md#tls)
            * [Peercert](postdelivery.html.md#peercert)
            * [TLSA](postdelivery.html.md#tlsa)
              * [Records](postdelivery.html.md#records)
        * [Plugin](postdelivery.html.md#plugin)
      * [DSN](postdelivery.html.md#dsn)
      * [Queue](postdelivery.html.md#queue)
        * [Plugin](postdelivery.html.md#ai1p)
    * [Message](postdelivery.html.md#message)
      * [Id](postdelivery.html.md#id2)
      * [Address](postdelivery.html.md#address)
      * [File](postdelivery.html.md#file)
      * [DSN](postdelivery.html.md#dsn2)
  * [Functions](postdelivery.html.md#functions)
    * [`Queue()`](postdelivery.html.md#Queue)
    * [`Bounce()`](postdelivery.html.md#Bounce)
    * [`Delete()`](postdelivery.html.md#Delete)
    * [`Default()`](postdelivery.html.md#Default)
    * [`SetMetaData()`](postdelivery.html.md#SetMetaData)
    * [`GetMetaData()`](postdelivery.html.md#GetMetaData)
  * [On script error](postdelivery.html.md#on-script-error)
  * [On implicit termination](postdelivery.html.md#on-implicit-termination)
  * [References](postdelivery.html.md#references)
    * [SMTP states](postdelivery.html.md#smtp-states)
