4.8.1 Predefined Variables

Several variables are predefined. In mailfromd version 6.0 these are:

Variable: Predefined Variable number cache_used

This variable is set by stdpoll and strictpoll built-ins (and, consequently, by the on poll statement). Its value is ‘1’ if the function used the cached data instead of directly polling the host, and ‘0’ if the polling took place. See section Polling Functions.

You can use this variable to make your reject message more informative for the remote party. The common paradigm is to define a function, returning empty string if the result was obtained from polling, or some notice if cached data were used, and to use the function in the reject text, for example:

 
func cachestr() returns string
do
  if %cache_used
    return "[CACHED] "
  else
    return ""
  fi
done

Then, in prog envfrom one can use:

 
on poll $f
do
when not_found or failure:
  reject 550 5.1.0 cachestr() . "Sender validity not confirmed"
done
Predefined Variable: string clamav_virus_name

Name of virus identified by ClamAV. Set by clamav function (see ClamAV).

Predefined Variable: number greylist_seconds_left

Number of seconds left to the end of greylisting period. Set by greylist and is_greylisted functions (see section Special Test Functions).

Predefined Variable: string ehlo_domain

Name of the domain used by polling functions in SMTP EHLO or HELO command. Default value is the fully qualified domain name of the host where mailfromd is run. See section Sender Verification Tests.

Variable: Predefined Variable string last_poll_greeting

Polling functions (see section Polling Functions) set this variable before returning. It contains the initial SMTP reply from the last polled host.

Variable: Predefined Variable string last_poll_helo

Polling functions (see section Polling Functions) set this variable before returning. It contains the reply to the HELO (EHLO) command, received from the last polled host.

Variable: Predefined Variable string last_poll_host

Polling functions (see section Polling Functions) set this variable before returning. It contains the host name or IP address of the last polled host.

Variable: Predefined Variable string last_poll_recv

Polling functions (see section Polling Functions) set this variable before returning. It contains the last SMTP reply received from the remote host. In case of multi-line replies, only the first line is stored. If nothing was received the variable contains the string ‘nothing’.

Variable: Predefined Variable string last_poll_send

Polling functions (see section Polling Functions) set this variable before returning. It contains the last SMTP command sent to the polled host. If nothing was sent, last_poll_send contains the string ‘nothing’.

Predefined Variable: string mailfrom_address

Email address used by polling functions in SMTP MAIL FROM command (see section Sender Verification Tests.). Default is ‘<>’. Here is an example of how to change it:

 
set mailfrom_address "postmaster@my.domain.com"

You can set this value to a comma-separated list of email addresses, in which case the probing will try each address until either the remote party accepts it or the list of addresses is exhausted, whichever happens first.

It is not necessary to enclose emails in angle brackets, as they will be added automatically where appropriate. The only exception is null return address, when used in a list of addresses. In this case, it should always be written as ‘<>’. For example:

 
set mailfrom_address "postmaster@my.domain.com, <>"
Predefined Variable: number sa_code

Spam score for the message, set by sa function (see sa).

Predefined Variable: number rcpt_count

The variable rcpt_count keeps the number of recipients given so far by RCPT TO commands. It is defined only in ‘envrcpt’ handlers.

Predefined Variable: number sa_threshold

Spam threshold, set by sa function (see sa).

Predefined Variable: string sa_keywords

Spam keywords for the message, set by sa function (see sa).

Predefined Variable: number safedb_verbose

This variable controls the verbosity of the exception-safe database functions. See safedb_verbose.