. Update the Copyright year (only) when changing content.
. /////////////////////////////////////////////////////////////////////////////
-.set previousversion "4.84"
+.set previousversion "4.85"
.include ./local_params
.set ACL "access control lists (ACLs)"
by Exim in conjunction with the &%-MC%& option. It signifies that the
connection to the remote host has been authenticated.
+.new
.vitem &%-MCD%&
.oindex "&%-MCD%&"
This option is not intended for use by external callers. It is used internally
by Exim in conjunction with the &%-MC%& option. It signifies that the
remote host supports the ESMTP &_DSN_& extension.
+.wen
.vitem &%-MCP%&
.oindex "&%-MCP%&"
.oindex "&%-X%&"
This option is interpreted by Sendmail to cause debug information to be sent
to the named file. It is ignored by Exim.
+
+.vitem &%-z%&&~<&'log-line'&>
+.oindex "&%-z%&"
+This option writes its argument to Exim's logfile.
+Use is restricted to administrators; the intent is for operational notes.
+Quotes should be used to maintain a multi-word item as a single argument,
+under most shells.
.endlist
.ecindex IIDclo1
.endd
sorts a list of numbers, and
.code
-${sort {$lookup dnsdb{>:,,mx=example.com}} {<} {${listextract{1}{<,$item}}}}
+${sort {${lookup dnsdb{>:,,mx=example.com}}} {<} {${listextract{1}{<,$item}}}}
.endd
will sort an MX lookup into priority order.
of times it has been compiled. This serves to distinguish different
compilations of the same version of the program.
+.new
.vitem &$config_dir$&
.vindex "&$config_dir$&"
The directory name of the main configuration file. That is, the content of
.vitem &$config_file$&
.vindex "&$config_file$&"
The name of the main configuration file Exim is using.
+.wen
.vitem &$demime_errorlevel$&
.vindex "&$demime_errorlevel$&"
.vindex "&$exim_uid$&"
This variable contains the numerical value of the Exim user id.
+.new
.vitem &$exim_version$&
.vindex "&$exim_uid$&"
This variable contains the version string of the Exim build.
The first character is a major version number, currently 4.
Then after a dot, the next group of digits is a minor version number.
There may be other characters following the minor version.
+.wen
.vitem &$found_extension$&
.vindex "&$found_extension$&"
processed and the message itself has been received, but before the final
acknowledgment is sent. See chapter &<<CHAPACL>>& for further details.
+.new
.option acl_smtp_data_prdr main string&!! accept
.cindex "PRDR" "ACL for"
.cindex "DATA" "PRDR ACL for"
.cindex "&ACL;" "PRDR-related"
.cindex "&ACL;" "per-user data processing"
+.wen
This option defines the ACL that,
if the PRDR feature has been negotiated,
is run for each recipient after an SMTP DATA command has been
handled CR and LF characters in incoming messages. What happens now is
described in section &<<SECTlineendings>>&.
+.new
.option dsn_advertise_hosts main "host list&!!" unset
.cindex "bounce messages" "success"
.cindex "DSN" "success"
A NOTIFY=SUCCESS option requests success-DSN messages.
A NOTIFY= option with no argument requests that no delay or failure DSNs
are sent.
+.wen
.option dsn_from main "string&!!" "see below"
.cindex "&'From:'& header line" "in bounces"
This option is an obsolete synonym for &%bounce_return_size_limit%&.
+.new
.option rfc1413_hosts main "host list&!!" @[]
.cindex "RFC 1413"
.cindex "host" "for RFC 1413 calls"
an item in the list.
The default value specifies just this host, being any local interface
for the system.
+.wen
+.new
.option rfc1413_query_timeout main time 0s
+.wen
.cindex "RFC 1413" "query timeout"
.cindex "timeout" "for RFC 1413 call"
This sets the timeout on RFC 1413 identification calls. If it is set to zero,
See &%smtp_ratelimit_hosts%& above.
-.option smtp_receive_timeout main time 5m
+.option smtp_receive_timeout main time&!! 5m
.cindex "timeout" "for SMTP input"
.cindex "SMTP" "input timeout"
This sets a timeout value for SMTP reception. It applies to all forms of SMTP
The former means that Exim was expecting to read an SMTP command; the latter
means that it was in the DATA phase, reading the contents of a message.
+If the first character of the option is a &"$"& the option is
+expanded before use and may depend on
+&$sender_host_name$&, &$sender_host_address$& and &$sender_host_port$&.
+
.oindex "&%-os%&"
The value set by this option can be overridden by the
See &%tls_verify_hosts%& below.
+.new
.option tls_verify_certificates main string&!! system
.cindex "TLS" "client certificate verification"
.cindex "certificate" "verification of client"
explicitly
either by file or directory
are added to those given by the system default location.
-
-With OpenSSL the certificates specified
-explicitly
-either by file or directory
-are added to those given by the system default location.
+.wen
These certificates should be for the certificate authorities trusted, rather
than the public cert of individual clients. With both OpenSSL and GnuTLS, if
to be used.
+.new
.option dsn_lasthop routers boolean false
.cindex "DSN" "success"
.cindex "Delivery Status Notification" "success"
Exim will not pass on DSN requests to downstream DSN-aware hosts but will
instead send a success DSN as if the next hop does not support DSN.
Not effective on redirect routers.
+.wen
files and pipes, and for generating autoreplies. See the &%file_transport%&,
&%pipe_transport%& and &%reply_transport%& descriptions below.
+.new
If success DSNs have been requested
.cindex "DSN" "success"
.cindex "Delivery Status Notification" "success"
redirection triggers one and the DSN options are not passed any further.
+.wen
unauthenticated. See also &%hosts_require_auth%&, and chapter
&<<CHAPSMTPAUTH>>& for details of authentication.
+.new
.option hosts_try_prdr smtp "host list&!!" *
.cindex "PRDR" "enabling, optional in client"
This option provides a list of servers to which, provided they announce
PRDR support, Exim will attempt to negotiate PRDR
for multi-recipient messages.
The option can usually be left as default.
+.wen
.option interface smtp "string list&!!" unset
.cindex "bind IP address"
&$domain$& in an expansion for the transport, because it is set only when there
is a single domain involved in a remote delivery.
+.new
It is expanded per-address and can depend on any of
&$address_data$&, &$domain_data$&, &$local_part_data$&,
&$host$&, &$host_address$& and &$host_port$&.
+.wen
.option port smtp string&!! "see below"
.cindex "port" "sending TCP/IP"
each time they connect. In this situation the use of the IP address as part of
the retry key leads to undesirable behaviour. Setting this option false causes
Exim to use only the host name.
+.new
Since it is expanded it can be made to depend on the host or domain.
+.wen
.option serialize_hosts smtp "host list&!!" unset
in clear.
+.new
.option tls_try_verify_hosts smtp "host list&!!" *
+.wen
.cindex "TLS" "server certificate verification"
.cindex "certificate" "verification of server"
This option gives a list of hosts for which, on encrypted connections,
certificate verification succeeds.
+.new
.option tls_verify_cert_hostnames smtp "host list&!!" *
.cindex "TLS" "server certificate hostname verification"
.cindex "certificate" "verification of server"
limited to being the initial component of a 3-or-more component FQDN.
There is no equivalent checking on client certificates.
+.wen
+.new
.option tls_verify_certificates smtp string&!! system
.cindex "TLS" "server certificate verification"
.cindex "certificate" "verification of server"
The use of a directory for the option value is not avilable for GnuTLS versions
preceding 3.3.6 and a single file must be used.
+.wen
With OpenSSL the certificates specified
explicitly
Exim requests a certificate as part of the setup of the TLS session. The
contents of the certificate are verified by comparing it with a list of
expected certificates.
+.new
These may be the system default set (depending on library version),
+.wen
an explicit file or,
depending on library version, a directory, identified by
&%tls_verify_certificates%&.
If the &%tls_verify_certificates%& option is set on the &(smtp)& transport, it
specifies a collection of expected server certificates.
-These may be the system default set (depeding on library version),
+.new
+These may be the system default set (depending on library version),
+.wen
a file or,
depnding on liibrary version, a directory,
must name a file or,
.cindex "cutthrough" "requesting"
This option requests delivery be attempted while the item is being received.
-The option usable in the RCPT ACL.
+The option is usable in the RCPT ACL.
If enabled for a message recieved via smtp and routed to an smtp transport,
-and the message has only one recipient,
+and only one transport, interface, destination host and port combination
+is used for all recipients of the message,
then the delivery connection is made while the receiving connection is open
and data is copied from one to the other.
+An attempt to set this option for any recipient but the first
+for a mail will be quietly ignored.
If a recipient-verify callout connection is subsequently
-requested in the same ACL it is held open and used for the data,
+requested in the same ACL it is held open and used for
+any subsequent receipients and the data,
otherwise one is made after the initial RCPT ACL completes.
Note that routers are used in verify mode,
Cutthrough delivery is not supported via transport-filters or when DKIM signing
of outgoing messages is done, because it sends data to the ultimate destination
before the entire message has been received from the source.
+It is not supported for messages recieved with the SMTP PRDR option in use.
Should the ultimate destination system positively accept or reject the mail,
a corresponding indication is given to the source system and nothing is queued.
If there is a temporary error the item is queued for later delivery in the
usual fashion. If the item is successfully delivered in cutthrough mode
-the log line is tagged with ">>" rather than "=>" and appears
+the delivery log lines are tagged with ">>" rather than "=>" and appear
before the acceptance "<=" line.
Delivery in this mode avoids the generation of a bounce mail to a
address, and in that case, the subsequent value of &$address_data$& is the
value for the child address.
-.vitem &*verify&~=&~reverse_host_lookup*&
+.vitem &*verify&~=&~reverse_host_lookup/*&<&'options'&>
.cindex "&%verify%& ACL condition"
.cindex "&ACL;" "verifying host reverse lookup"
.cindex "host" "verifying reverse lookup"
one of its aliases, does, when it is itself looked up in the DNS, yield the
original IP address.
+There is one possible option, &`defer_ok`&. If this is present and a
+DNS operation returns a temporary error, the verify condition succeeds.
+
If this condition is used for a locally generated message (that is, when there
is no client host involved), it always succeeds.
specialized interfaces for &"daemon"& type virus scanners, which are resident
in memory and thus are much faster.
+.new
A timeout of 2 minutes is applied to a scanner call (by default);
if it expires then a defer action is taken.
+.wen
.oindex "&%av_scanner%&"
You can set the &%av_scanner%& option in the main part of the configuration
The following scanner types are supported in this release:
.vlist
+.new
.vitem &%avast%&
.cindex "virus scanners" "avast"
This is the scanner daemon of Avast. It has been tested with Avast Core
SENSITIVITY
PACK
.endd
+.wen
.vitem &%aveserver%&
message.
The &%malware%& condition takes a right-hand argument that is expanded before
+.new
use and taken as a list, slash-separated by default.
+.wen
The first element can then be one of
.ilist
A regular expression, in which case the message is scanned for viruses. The
condition succeeds if a virus is found and its name matches the regular
expression. This allows you to take special actions on certain types of virus.
+.new
Note that &"/"& characters in the RE must be doubled due to the list-processing,
unless the separator is changed (in the usual way).
+.wen
.endlist
You can append a &`defer_ok`& element to the &%malware%& argument list to accept
messages even if there is a problem with the virus scanner.
Otherwise, such a problem causes the ACL to defer.
+.new
You can append a &`tmo=<val>`& element to the &%malware%& argument list to
specify a non-default timeout. The default is two minutes.
For example:
malware = * / defer_ok / tmo=10s
.endd
A timeout causes the ACL to defer.
+.wen
.vindex "&$malware_name$&"
When a virus is found, the condition sets up an expansion variable called
The third item is used to introduce any text from pipe transports that is to be
returned to the sender. It is omitted if there is no such text.
.next
+.new
The fourth, fifth and sixth items will be ignored and may be empty.
The fields exist for back-compatibility
+.wen
.endlist
The default state (&%bounce_message_file%& unset) is equivalent to the
&`*etrn `& ETRN commands
&`*host_lookup_failed `& as it says
&` ident_timeout `& timeout for ident connection
-&` incoming_interface `& incoming interface on <= lines
-&` incoming_port `& incoming port on <= lines
+&` incoming_interface `& local interface on <= and => lines
+&` incoming_port `& remote port on <= lines
&`*lost_incoming_connection `& as it says (includes timeouts)
&` outgoing_port `& add remote port to => lines
&`*queue_run `& start and end queue runs
&` smtp_protocol_error `& SMTP protocol errors
&` smtp_syntax_error `& SMTP syntax errors
&` subject `& contents of &'Subject:'& on <= lines
+.new
&`*tls_certificate_verified `& certificate verification status
+.wen
&`*tls_cipher `& TLS cipher suite on <= and => lines
&` tls_peerdn `& TLS peer DN on <= and => lines
&` tls_sni `& TLS SNI on <= lines
client's ident port times out.
.next
.cindex "log" "incoming interface"
+.cindex "log" "local interface"
+.cindex "log" "local address and port"
+.cindex "TCP/IP" "logging local address and port"
.cindex "interface" "logging"
&%incoming_interface%&: The interface on which a message was received is added
to the &"<="& line as an IP address in square brackets, tagged by I= and
followed by a colon and the port number. The local interface and port are also
-added to other SMTP log lines, for example &"SMTP connection from"&, and to
-rejection lines.
+added to other SMTP log lines, for example &"SMTP connection from"& and to
+rejection lines
+and (despite the name) the local interface is added to &"=>"& lines..
.next
.cindex "log" "incoming remote port"
.cindex "port" "logging remote"