7.3. MAIL FROM

The MAIL FROM context allows verification of the MAIL FROM sender.

7.3.1. Pre-defined variables

These are the read-only pre-defined variables available for MAIL FROM command.

7.3.1.1. Connection

Variable Type Example Description
$senderip string “192.168.1.11” IP address of the connected client
$senderport number 41666 TCP port of connected client
$serverip string “10.0.0.1” IP address of the mailserver
$serverport number 25 TCP port of the mailserver
$serverid string “mailserver:1” ID of the mailserver profile
$senderhelo string “mail.example.com” HELO message of sender
$tlsstarted boolean false Whether or not the SMTP session is using TLS
$saslauthed boolean true Whether or not the SMTP session is authenticated (SASL)
$saslusername string “mailuser” SASL username

These are the writable pre-defined variables available.

Variable Type Description
$context any Connection-bound variable

7.3.1.2. Transaction

Variable Type Example Description
$messageid string “18c190a3-93f-47d7-bd...” ID of the message

7.3.1.3. Arguments

Variable Type Example Description
$senderdomain string “example.org” Domain part of sender’s address (envelope)
$sender string “test@example.org” E-mail address of sender (envelope)
$senderparams array [“SIZE” => “2048”, ... ] Sender parameters to the envelope address

7.3.2. Functions

mailfrom.Accept()

Accept the MAIL FROM command (sender).

Returns:doesn’t return, script is terminated
mailfrom.Reject([reason[, options]])

Reject the MAIL FROM command (sender) 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). The default is pre-defined.
mailfrom.Defer([reason[, options]])

Defer the MAIL FROM command (sender) 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). The default is pre-defined.
mailfrom.SetSender(sender)

Change the sender of the message.

Parameters:sender (string) – an e-mail address
Returns:sender if successful
Return type:string or none
Updates:$sender and $senderdomain

Warning

This function changes the sender for all recipients. To change sender per recipient use SetSender() in the Pre-delivery context.

mailfrom.GetMailQueueMetric(options)

Return metric information about the mail queue, it can be used to enforce quotas.

Parameters:options (array) – options array
Return type:number

The following options are available in the options array.

  • metric (string) Metric to be returned; count or bytes. The default is count.
  • filter (array) Any of the available filters, see below. The default is no filters.

The following filters are available in the filters array.

Type Example
senderip $senderip
saslusername $saslusername
sender $sender
senderdomain $senderdomain
recipient $recipient
recipientdomain $recipientdomain
transportid $transportid
retry 1
$queuesize = GetMailQueueMetric(
        [
                "metric" => "bytes",
                "filter" => [
                        "senderdomain" => ["example.com" , "example.net"],
                        "transportid" => "mailtransport:2"
                ]
        ]
) / 1024 / 1024;
if ($queuesize > 500) {
        Defer("Current queue for mailtransport:2 exceeds 500 MiB");
}

Note

If multiple filters of the same type are given using array notation, any of them may match.

mailfrom.GetTLS([options])

Get the TLS information for a connection.

Parameters:options (array) – options array
Return type:array

The following options are available in the options array.

  • fingerprint (string) Generate the fingerprint of the certificate using one of the following hash function (md5, sha1, sha256 or sha512). The default no hashing.

The following items are available in the result.

  • started (boolean) If STARTTLS was issued.
  • protocol (string) The protocol used (eg. TLSv1.2)
  • ciphers (string) The cipher used (eg. ECDHE-RSA-AES256-SHA384).
  • keysize (number) The keysize used (eg. 256).
  • peer_cert (array) The peer certificate (if provided by the client). Same format as TLSSocket.getpeercert().
  • peer_cert_error (number) The peer certificate validation error (see OpenSSLs SSL_get_verify_result(3)).

7.3.3. On script error

On script error Defer() is called.

7.3.4. On implicit termination

If not explicitly terminated then Accept() is called.