7.8. Disconnect

This script is executed when the client has disconnected.

7.8.1. Variables

These are the pre-defined variables available for each command. Depending on when the disconnect script is executed, the different objects may contain different information.

Variable

Type

Read-only

Description

$arguments

array

yes

Context/hook arguments

$connection

array

yes

Connection/session bound

$transaction

array

yes

Transaction bound (empty)

$context

any

no

Connection bound user-defined (default none)

7.8.1.1. Arguments

Array item

Type

Example

Description

close

string

“local”

Who initialized the disconnect (local or remote)

reply

array

[“code” => 250, “enhanced” => [1, …]

A SMTP protocol response (if available)

error

array

[“reply” => “….

If an error occurred (if available)

7.8.1.1.1. Error

Array item

Type

Example

Description

reason

string

“Connection reset by peer”

The error message

type

string

“socket”

The type of error (if avilable, socket or tls)

code

number

54

The error code (for socket it’s an errno and for tls it’s an OpenSSL error code)

7.8.1.1.2. Reply

Array item

Type

Example

Description

code

number

221

A SMTP status code

enhanced

array

[2, 5, 0]

A SMTP enhanced status code

reason

array

[“Bye”]

A SMTP response text

state

string

“QUIT”

An enum to indicate which issued SMTP command triggerd the disconnect

7.8.1.2. Connection

Array item

Type

Example

Description

id

string

“18c190a3-93f-47d7-bd…”

ID of the connection

remoteip

string

“192.168.1.11”

IP address of the connected client

remoteport

number

41666

TCP port of connected client

remoteptr

string

“mail.example.org”

Reverse DNS (FCrDNS) for remoteip (not always available)

remoteuid

number

106

UNIX socket remote user id (not always available)

localip

string

“10.0.0.1”

IP address of the server

localport

number

25

TCP port of the server

serverid

string

“inbound”

ID of the server

helo

array

HELO information (not always available)

tls

array

TLS information (if TLS was started)

auth

array

AUTH information (not always available)

7.8.1.2.1. HELO

Array item

Type

Example

Description

verb

string

“EHLO”

HELO or EHLO command

host

string

“mail.example.com”

HELO hostname

7.8.1.2.2. TLS

Array item

Type

Example

Description

protocol

string

“TLSv1.3”

The protocol

cipher

string

“ECDHE-RSA-AES256-SHA384”

The cipher

keysize

number

256

The keysize

sni

string

“example.com”

The SNI hostname (not always available)

peercert

array

The peer certificate (if provided by the client)

7.8.1.2.2.1. Peercert

Array item

Type

Example

Description

x509

X509Resource

An X509Resource to be used with the X509 class

error

number

18

The peer certificate validation error (see OpenSSLs SSL_get_verify_result(3))

7.8.1.2.3. AUTH

Array item

Type

Example

Description

mechanism

string

“PLAIN”

SASL mechanism (always in uppercase)

username

string

“mailuser”

SASL username (not always available)

7.8.2. Functions

disconnect.Pass()

Terminate the disconnect script.

Returns

doesn’t return, script is terminated

7.8.3. On script error

On script error Pass() is called.

7.8.4. On implicit termination

If not explicitly terminated then Pass() is called.