7.6. RCPT TO
The RCPT TO script allows verification of recipients.
7.6.1. Variables
These are the pre-defined variables available.
Variable |
Type |
Read-only |
Description |
|---|---|---|---|
array |
yes |
Context/hook arguments |
|
array |
yes |
Connection/session bound |
|
array |
yes |
Transaction bound |
|
$context |
any |
no |
Connection bound user-defined (default none) |
7.6.1.1. Arguments
Array item |
Type |
Example |
Description |
|---|---|---|---|
recipient |
string |
“test@example.com” |
Recipient address (envelope), lowercase |
array |
[“localpart” => “test”…] |
Recipient address (envelope) |
|
params |
array |
[“NOTIFY” => “NEVER”, .. ] |
Recipient parameters to the envelope address (keys will always be in uppercase) |
transportid |
string |
“inbound” |
ID of the transport profile to be used |
7.6.1.2. Connection
Array item |
Type |
Example |
Description |
|---|---|---|---|
id |
string |
“18c190a3-93f-47d7-bd…” |
ID of the connection |
priority |
number |
1 |
The connection priority |
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 |
array |
HELO information (not always available) |
||
array |
TLS information (if TLS was started) |
||
array |
AUTH information (not always available) |
7.6.1.2.1. HELO
Array item |
Type |
Example |
Description |
|---|---|---|---|
verb |
string |
“EHLO” |
HELO or EHLO command |
host |
string |
“mail.example.com” |
HELO hostname |
7.6.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) |
array |
The peer certificate (if provided by the client) |
7.6.1.2.2.1. Peercert
Array item |
Type |
Example |
Description |
|---|---|---|---|
x509 |
X509Resource |
An X509Resource to be used with the |
|
error |
number |
18 |
The peer certificate validation error (see OpenSSLs SSL_get_verify_result(3)) |
7.6.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.6.1.3. Transaction
Array item |
Type |
Example |
Description |
|---|---|---|---|
id |
string |
“18c190a3-93f-47d7-bd…” |
ID of the transaction |
sender |
string |
“test@example.org” |
Sender address (envelope), lowercase |
array |
[“localpart” => “test”…] |
Sender address (envelope) |
|
senderparams |
array |
[“SIZE” => “2048”, … ] |
Sender parameters to the envelope address (keys will always be in uppercase) |
recipients |
array |
[recipient, …] |
List of all accepted recipients (envelope), in order of scanning |
7.6.1.3.1. Recipient
Array item |
Type |
Example |
Description |
|---|---|---|---|
recipient |
string |
“test@example.com” |
Recipient address (envelope), lowercase |
array |
[“localpart” => “test”…] |
Recipient address (envelope) |
|
params |
array |
[“NOTIFY” => “NEVER”, .. ] |
Recipient parameters to the envelope address (keys will always be in uppercase) |
transportid |
string |
“inbound” |
Transport ID for recipient |
7.6.1.3.2. Address
Array item |
Type |
Example |
Description |
|---|---|---|---|
localpart |
string |
“test” |
Local part of address |
domain |
string |
“example.org” |
Domain part of address |
7.6.2. Functions
- rcptto.Accept([options])
Accept the RCPT TO command (recipient). Optionally change the recipient accepted and its transport, which is written back to
$transactionfor subsequent executions.- Parameters
options (array) – an options array
- Returns
doesn’t return, script is terminated
The following options are available in the options array.
recipient (string or array) Change the recipient email address, either as a string or an associative array with a
localpartanddomain. The default is theaddressargument.params (array) Change the sender parameters. The default is the
paramsargument.transportid (string) Change the transport ID. The default is the
transportidargument.reason (string or array) The reason to report. The default is a system generated message.
reply_codes (array) The array may contain code (number) and enhanced (array of three numbers). To remove the enhanced code set it to
[0,0,0]. The default code is250and enhanced is[2,1,5].priority (number) Change the connection priority (0 normal, 1 high).
- rcptto.Reject([reason[, options]])
Reject the RCPT TO command (recipient) with a permanent (554) error.
- Parameters
reason (string or array) – reject message with reason
options (array) – an options array
- Returns
doesn’t return, script is terminated
The following options are available in the options array.
disconnect (boolean) Disconnect the client. The default is
false.reply_codes (array) The array may contain code (number) and enhanced (array of three numbers). To remove the enhanced code set it to
[0,0,0]. The default code is554and enhanced is[5,7,1].priority (number) Change the connection priority (0 normal, 1 high).
- rcptto.Defer([reason[, options]])
Defer the RCPT TO command (recipient) with a temporary (450) error.
- Parameters
reason (string or array) – defer message with reason
options (array) – an options array
- Returns
doesn’t return, script is terminated
The following options are available in the options array.
disconnect (boolean) Disconnect the client. The default is
false.reply_codes (array) The array may contain code (number) and enhanced (array of three numbers). To remove the enhanced code set it to
[0,0,0]. The default code is450and enhanced is[4,7,1].priority (number) Change the connection priority (0 normal, 1 high).
7.6.3. On script error
On script error Defer() is called.
7.6.4. On implicit termination
If not explicitly terminated then Accept() is called.