Also, drop fix one place which claimed TLS SNI support was OpenSSL only.
. the <bookinfo> element must also be updated for each new edition.
. /////////////////////////////////////////////////////////////////////////////
. the <bookinfo> element must also be updated for each new edition.
. /////////////////////////////////////////////////////////////////////////////
-.set previousversion "4.75"
+.set previousversion "4.80"
.set version "4.80"
.set ACL "access control lists (ACLs)"
.set version "4.80"
.set ACL "access control lists (ACLs)"
.section "PCRE library" "SECTpcre"
.cindex "PCRE library"
Exim no longer has an embedded PCRE library as the vast majority of
.section "PCRE library" "SECTpcre"
.cindex "PCRE library"
Exim no longer has an embedded PCRE library as the vast majority of
PCRE support then you will need to obtain and build the current PCRE
from &url(ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/).
More information on PCRE is available at &url(http://www.pcre.org/).
PCRE support then you will need to obtain and build the current PCRE
from &url(ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/).
More information on PCRE is available at &url(http://www.pcre.org/).
.section "DBM libraries" "SECTdb"
.cindex "DBM libraries" "discussion of"
.section "DBM libraries" "SECTdb"
.cindex "DBM libraries" "discussion of"
TLS_LIBS=-L/usr/local/openssl/lib -lssl -lcrypto
TLS_INCLUDE=-I/usr/local/openssl/include/
.endd
TLS_LIBS=-L/usr/local/openssl/lib -lssl -lcrypto
TLS_INCLUDE=-I/usr/local/openssl/include/
.endd
.cindex "pkg-config" "OpenSSL"
If you have &'pkg-config'& available, then instead you can just use:
.code
SUPPORT_TLS=yes
USE_OPENSSL_PC=openssl
.endd
.cindex "pkg-config" "OpenSSL"
If you have &'pkg-config'& available, then instead you can just use:
.code
SUPPORT_TLS=yes
USE_OPENSSL_PC=openssl
.endd
.cindex "USE_GNUTLS"
If GnuTLS is installed, you should set
.code
.cindex "USE_GNUTLS"
If GnuTLS is installed, you should set
.code
TLS_LIBS=-L/usr/gnu/lib -lgnutls -ltasn1 -lgcrypt
TLS_INCLUDE=-I/usr/gnu/include
.endd
TLS_LIBS=-L/usr/gnu/lib -lgnutls -ltasn1 -lgcrypt
TLS_INCLUDE=-I/usr/gnu/include
.endd
.cindex "pkg-config" "GnuTLS"
If you have &'pkg-config'& available, then instead you can just use:
.code
.cindex "pkg-config" "GnuTLS"
If you have &'pkg-config'& available, then instead you can just use:
.code
USE_GNUTLS=yes
USE_GNUTLS_PC=gnutls
.endd
USE_GNUTLS=yes
USE_GNUTLS_PC=gnutls
.endd
You do not need to set TLS_INCLUDE if the relevant directory is already
specified in INCLUDE. Details of how to configure Exim to make use of TLS are
You do not need to set TLS_INCLUDE if the relevant directory is already
specified in INCLUDE. Details of how to configure Exim to make use of TLS are
binary, attempts to configure Exim to use it cause run time configuration
errors.
binary, attempts to configure Exim to use it cause run time configuration
errors.
.cindex "pkg-config" "lookups"
.cindex "pkg-config" "authenticators"
Many systems now use a tool called &'pkg-config'& to encapsulate information
.cindex "pkg-config" "lookups"
.cindex "pkg-config" "authenticators"
Many systems now use a tool called &'pkg-config'& to encapsulate information
AUTH_HEIMDAL_GSSAPI=yes
AUTH_HEIMDAL_GSSAPI_PC=heimdal-gssapi
.endd
AUTH_HEIMDAL_GSSAPI=yes
AUTH_HEIMDAL_GSSAPI_PC=heimdal-gssapi
.endd
.cindex "Perl" "including support for"
Exim can be linked with an embedded Perl interpreter, allowing Perl
.cindex "Perl" "including support for"
Exim can be linked with an embedded Perl interpreter, allowing Perl
the DB_UNKNOWN option. This enables it to handle any of the types of database
that the library supports, and can be useful for accessing DBM files created by
other applications. (For earlier DB versions, DB_HASH is always used.)
the DB_UNKNOWN option. This enables it to handle any of the types of database
that the library supports, and can be useful for accessing DBM files created by
other applications. (For earlier DB versions, DB_HASH is always used.)
.next
.cindex "lookup" "dbmjz"
.cindex "lookup" "dbm &-- embedded NULs"
.next
.cindex "lookup" "dbmjz"
.cindex "lookup" "dbm &-- embedded NULs"
authenticate incoming SMTP calls using the passwords from Cyrus SASL's
&_/etc/sasldb2_& file with the &(gsasl)& authenticator or Exim's own
&(cram_md5)& authenticator.
authenticate incoming SMTP calls using the passwords from Cyrus SASL's
&_/etc/sasldb2_& file with the &(gsasl)& authenticator or Exim's own
&(cram_md5)& authenticator.
.next
.cindex "lookup" "dbmnz"
.cindex "lookup" "dbm &-- terminating zero"
.next
.cindex "lookup" "dbmnz"
.cindex "lookup" "dbm &-- terminating zero"
&`fail`& keyword causes a &'forced expansion failure'& &-- see section
&<<SECTforexpfai>>& for an explanation of what this means.
&`fail`& keyword causes a &'forced expansion failure'& &-- see section
&<<SECTforexpfai>>& for an explanation of what this means.
The supported DNS record types are A, CNAME, MX, NS, PTR, SPF, SRV, and TXT,
and, when Exim is compiled with IPv6 support, AAAA (and A6 if that is also
configured). If no type is given, TXT is assumed. When the type is PTR,
the data can be an IP address, written as normal; inversion and the addition of
&%in-addr.arpa%& or &%ip6.arpa%& happens automatically. For example:
The supported DNS record types are A, CNAME, MX, NS, PTR, SPF, SRV, and TXT,
and, when Exim is compiled with IPv6 support, AAAA (and A6 if that is also
configured). If no type is given, TXT is assumed. When the type is PTR,
the data can be an IP address, written as normal; inversion and the addition of
&%in-addr.arpa%& or &%ip6.arpa%& happens automatically. For example:
.code
${lookup dnsdb{ptr=192.168.4.5}{$value}fail}
.endd
.code
${lookup dnsdb{ptr=192.168.4.5}{$value}fail}
.endd
.cindex "TXT record" "in &(dnsdb)& lookup"
.cindex "SPF record" "in &(dnsdb)& lookup"
.cindex "TXT record" "in &(dnsdb)& lookup"
.cindex "SPF record" "in &(dnsdb)& lookup"
For TXT records with multiple items of data, only the first item is returned,
unless a separator for them is specified using a comma after the separator
character followed immediately by the TXT record item separator. To concatenate
items without a separator, use a semicolon instead. For SPF records the
default behaviour is to concatenate multiple items without using a separator.
For TXT records with multiple items of data, only the first item is returned,
unless a separator for them is specified using a comma after the separator
character followed immediately by the TXT record item separator. To concatenate
items without a separator, use a semicolon instead. For SPF records the
default behaviour is to concatenate multiple items without using a separator.
.code
${lookup dnsdb{>\n,: txt=a.b.example}}
${lookup dnsdb{>\n; txt=a.b.example}}
.code
${lookup dnsdb{>\n,: txt=a.b.example}}
${lookup dnsdb{>\n; txt=a.b.example}}
supplied number and is at least 0. The quality of this randomness depends
on how Exim was built; the values are not suitable for keying material.
If Exim is linked against OpenSSL then RAND_pseudo_bytes() is used.
supplied number and is at least 0. The quality of this randomness depends
on how Exim was built; the values are not suitable for keying material.
If Exim is linked against OpenSSL then RAND_pseudo_bytes() is used.
If Exim is linked against GnuTLS then gnutls_rnd(GNUTLS_RND_NONCE) is used,
for versions of GnuTLS with that function.
If Exim is linked against GnuTLS then gnutls_rnd(GNUTLS_RND_NONCE) is used,
for versions of GnuTLS with that function.
Otherwise, the implementation may be arc4random(), random() seeded by
srandomdev() or srandom(), or a custom implementation even weaker than
random().
Otherwise, the implementation may be arc4random(), random() seeded by
srandomdev() or srandom(), or a custom implementation even weaker than
random().
includes the case of letters, whereas for &%gti%& the comparison is
case-independent.
includes the case of letters, whereas for &%gti%& the comparison is
case-independent.
.vitem &*inlist&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*& &&&
&*inlisti&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*&
.cindex "string" "comparison"
.vitem &*inlist&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*& &&&
&*inlisti&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*&
.cindex "string" "comparison"
${if inlisti{Needle}{fOo:NeeDLE:bAr}}
${if forany{fOo:NeeDLE:bAr}{eqi{$item}{Needle}}}
.endd
${if inlisti{Needle}{fOo:NeeDLE:bAr}}
${if forany{fOo:NeeDLE:bAr}{eqi{$item}{Needle}}}
.endd
.vitem &*isip&~{*&<&'string'&>&*}*& &&&
&*isip4&~{*&<&'string'&>&*}*& &&&
.vitem &*isip&~{*&<&'string'&>&*}*& &&&
&*isip4&~{*&<&'string'&>&*}*& &&&
.vitem &*match_ip&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*&
.cindex "&%match_ip%& expansion condition"
.vitem &*match_ip&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*&
.cindex "&%match_ip%& expansion condition"
This condition matches an IP address to a list of IP address patterns. It must
be followed by two argument strings. The first (after expansion) must be an IP
address or an empty string. The second (not expanded) is a restricted host
list that can match only an IP address, not a host name. For example:
This condition matches an IP address to a list of IP address patterns. It must
be followed by two argument strings. The first (after expansion) must be an IP
address or an empty string. The second (not expanded) is a restricted host
list that can match only an IP address, not a host name. For example:
.code
${if match_ip{$sender_host_address}{1.2.3.4:5.6.7.8}{...}{...}}
.endd
.code
${if match_ip{$sender_host_address}{1.2.3.4:5.6.7.8}{...}{...}}
.endd
Note that <&'string2'&> is not itself subject to string expansion, unless
Exim was built with the EXPAND_LISTMATCH_RHS option.
Note that <&'string2'&> is not itself subject to string expansion, unless
Exim was built with the EXPAND_LISTMATCH_RHS option.
Consult section &<<SECThoslispatip>>& for further details of these patterns.
Consult section &<<SECThoslispatip>>& for further details of these patterns.
have their local parts matched casefully. Domains are always matched
caselessly.
have their local parts matched casefully. Domains are always matched
caselessly.
Note that <&'string2'&> is not itself subject to string expansion, unless
Exim was built with the EXPAND_LISTMATCH_RHS option.
Note that <&'string2'&> is not itself subject to string expansion, unless
Exim was built with the EXPAND_LISTMATCH_RHS option.
&*Note*&: Host lists are &'not'& supported in this way. This is because
hosts have two identities: a name and an IP address, and it is not clear
&*Note*&: Host lists are &'not'& supported in this way. This is because
hosts have two identities: a name and an IP address, and it is not clear
negative response to an AUTH command, including (for example) an attempt to use
an undefined mechanism.
negative response to an AUTH command, including (for example) an attempt to use
an undefined mechanism.
.vitem &$av_failed$&
.cindex "content scanning" "AV scanner failure"
This variable is available when Exim is compiled with the content-scanning
extension. It is set to &"0"& by default, but will be set to &"1"& if any
problem occurs with the virus scanner (specified by &%av_scanner%&) during
the ACL malware condition.
.vitem &$av_failed$&
.cindex "content scanning" "AV scanner failure"
This variable is available when Exim is compiled with the content-scanning
extension. It is set to &"0"& by default, but will be set to &"1"& if any
problem occurs with the virus scanner (specified by &%av_scanner%&) during
the ACL malware condition.
.vitem &$body_linecount$&
.cindex "message body" "line count"
.vitem &$body_linecount$&
.cindex "message body" "line count"
command, which can be found in the separate document entitled &'Exim's
interfaces to mail filtering'&.
command, which can be found in the separate document entitled &'Exim's
interfaces to mail filtering'&.
.vitem &$tls_bits$&
.vindex "&$tls_bits$&"
Contains an approximation of the TLS cipher's bit-strength; the meaning of
.vitem &$tls_bits$&
.vindex "&$tls_bits$&"
Contains an approximation of the TLS cipher's bit-strength; the meaning of
If TLS has not been negotiated, the value will be 0.
The value of this is automatically fed into the Cyrus SASL authenticator
when acting as a server, to specify the "external SSF" (a SASL term).
If TLS has not been negotiated, the value will be 0.
The value of this is automatically fed into the Cyrus SASL authenticator
when acting as a server, to specify the "external SSF" (a SASL term).
.vitem &$tls_certificate_verified$&
.vindex "&$tls_certificate_verified$&"
.vitem &$tls_certificate_verified$&
.vindex "&$tls_certificate_verified$&"
value is retained during message delivery, except during outbound SMTP
deliveries.
value is retained during message delivery, except during outbound SMTP
deliveries.
.vitem &$tls_sni$&
.vindex "&$tls_sni$&"
.cindex "TLS" "Server Name Indication"
.vitem &$tls_sni$&
.vindex "&$tls_sni$&"
.cindex "TLS" "Server Name Indication"
The value will be retained for the lifetime of the message. During outbound
SMTP deliveries, it reflects the value of the &%tls_sni%& option on
the transport.
The value will be retained for the lifetime of the message. During outbound
SMTP deliveries, it reflects the value of the &%tls_sni%& option on
the transport.
.vitem &$tod_bsdinbox$&
.vindex "&$tod_bsdinbox$&"
.vitem &$tod_bsdinbox$&
.vindex "&$tod_bsdinbox$&"
Those options that undergo string expansion before use are marked with
†.
Those options that undergo string expansion before use are marked with
†.
.option accept_8bitmime main boolean true
.cindex "8BITMIME"
.cindex "8-bit characters"
.option accept_8bitmime main boolean true
.cindex "8BITMIME"
.cindex "8-bit characters"
.display
&url(http://cr.yp.to/smtp/8bitmime.html)
.endd
.display
&url(http://cr.yp.to/smtp/8bitmime.html)
.endd
.option acl_not_smtp main string&!! unset
.cindex "&ACL;" "for non-SMTP messages"
.option acl_not_smtp main string&!! unset
.cindex "&ACL;" "for non-SMTP messages"
See &%dns_retrans%& above.
See &%dns_retrans%& above.
.option dns_use_edns0 main integer -1
.cindex "DNS" "resolver options"
.cindex "DNS" "EDNS0"
.option dns_use_edns0 main integer -1
.cindex "DNS" "resolver options"
.cindex "DNS" "EDNS0"
on.
If the resolver library does not support EDNS0 then this option has no effect.
on.
If the resolver library does not support EDNS0 then this option has no effect.
.option drop_cr main boolean false
.option drop_cr main boolean false
adjusted lightly. An unrecognised item will be detected at startup, by
invoking Exim with the &%-bV%& flag.
adjusted lightly. An unrecognised item will be detected at startup, by
invoking Exim with the &%-bV%& flag.
Historical note: prior to release 4.80, Exim defaulted this value to
"+dont_insert_empty_fragments", which may still be needed for compatibility
with some clients, but which lowers security by increasing exposure to
some now infamous attacks.
Historical note: prior to release 4.80, Exim defaulted this value to
"+dont_insert_empty_fragments", which may still be needed for compatibility
with some clients, but which lowers security by increasing exposure to
some now infamous attacks.
use when sending messages as a client, you must set the &%tls_certificate%&
option in the relevant &(smtp)& transport.
use when sending messages as a client, you must set the &%tls_certificate%&
option in the relevant &(smtp)& transport.
If the option contains &$tls_sni$& and Exim is built against OpenSSL, then
if the OpenSSL build supports TLS extensions and the TLS client sends the
Server Name Indication extension, then this option and others documented in
&<<SECTtlssni>>& will be re-expanded.
If the option contains &$tls_sni$& and Exim is built against OpenSSL, then
if the OpenSSL build supports TLS extensions and the TLS client sends the
Server Name Indication extension, then this option and others documented in
&<<SECTtlssni>>& will be re-expanded.
.option tls_crl main string&!! unset
.cindex "TLS" "server certificate revocation list"
.option tls_crl main string&!! unset
.cindex "TLS" "server certificate revocation list"
This option specifies a certificate revocation list. The expanded value must
be the name of a file that contains a CRL in PEM format.
This option specifies a certificate revocation list. The expanded value must
be the name of a file that contains a CRL in PEM format.
See &<<SECTtlssni>>& for discussion of when this option might be re-expanded.
See &<<SECTtlssni>>& for discussion of when this option might be re-expanded.
.option tls_dh_max_bits main integer 2236
.cindex "TLS" "D-H bit count"
The number of bits used for Diffie-Hellman key-exchange may be suggested by
.option tls_dh_max_bits main integer 2236
.cindex "TLS" "D-H bit count"
The number of bits used for Diffie-Hellman key-exchange may be suggested by
Note that the value passed to GnuTLS for *generating* a new prime may be a
little less than this figure, because GnuTLS is inexact and may produce a
larger prime than requested.
Note that the value passed to GnuTLS for *generating* a new prime may be a
little less than this figure, because GnuTLS is inexact and may produce a
larger prime than requested.
.option tls_dhparam main string&!! unset
.cindex "TLS" "D-H parameters for server"
.option tls_dhparam main string&!! unset
.cindex "TLS" "D-H parameters for server"
The value of this option is expanded and indicates the source of DH parameters
to be used by Exim.
The value of this option is expanded and indicates the source of DH parameters
to be used by Exim.
Some of these will be too small to be accepted by clients.
Some may be too large to be accepted by clients.
Some of these will be too small to be accepted by clients.
Some may be too large to be accepted by clients.
.option tls_on_connect_ports main "string list" unset
.option tls_on_connect_ports main "string list" unset
key is assumed to be in the same file as the server's certificates. See chapter
&<<CHAPTLS>>& for further details.
key is assumed to be in the same file as the server's certificates. See chapter
&<<CHAPTLS>>& for further details.
See &<<SECTtlssni>>& for discussion of when this option might be re-expanded.
See &<<SECTtlssni>>& for discussion of when this option might be re-expanded.
.option tls_remember_esmtp main boolean false
.option tls_remember_esmtp main boolean false
Thus the values defined should be considered public data. To avoid this,
use OpenSSL with a directory.
Thus the values defined should be considered public data. To avoid this,
use OpenSSL with a directory.
See &<<SECTtlssni>>& for discussion of when this option might be re-expanded.
See &<<SECTtlssni>>& for discussion of when this option might be re-expanded.
.option tls_verify_hosts main "host list&!!" unset
.option tls_verify_hosts main "host list&!!" unset
.section "Declining addresses by dnslookup" "SECTdnslookupdecline"
.cindex "&(dnslookup)& router" "declines"
There are a few cases where a &(dnslookup)& router will decline to accept
.section "Declining addresses by dnslookup" "SECTdnslookupdecline"
.cindex "&(dnslookup)& router" "declines"
There are a few cases where a &(dnslookup)& router will decline to accept
&%check_secondary_mx%& is set on this router but the local host can
not be found in the MX records (see below)
.endlist
&%check_secondary_mx%& is set on this router but the local host can
not be found in the MX records (see below)
.endlist
section &<<SECTmaildirdelivery>>& below.
section &<<SECTmaildirdelivery>>& below.
.option maildir_use_size_file appendfile&!! boolean false
.cindex "maildir format" "&_maildirsize_& file"
The result of string expansion for this option must be a valid boolean value.
.option maildir_use_size_file appendfile&!! boolean false
.cindex "maildir format" "&_maildirsize_& file"
The result of string expansion for this option must be a valid boolean value.
quota from the &%quota%& option of the transport. If &%quota%& is unset, the
value is zero. See &%maildir_quota_directory_regex%& above and section
&<<SECTmaildirdelivery>>& below for further details.
quota from the &%quota%& option of the transport. If &%quota%& is unset, the
value is zero. See &%maildir_quota_directory_regex%& above and section
&<<SECTmaildirdelivery>>& below for further details.
.option maildirfolder_create_regex appendfile string unset
.cindex "maildir format" "&_maildirfolder_& file"
.option maildirfolder_create_regex appendfile string unset
.cindex "maildir format" "&_maildirfolder_& file"
deliveries into closed message stores. Exim also has support for running LMTP
over a pipe to a local process &-- see chapter &<<CHAPLMTP>>&.
deliveries into closed message stores. Exim also has support for running LMTP
over a pipe to a local process &-- see chapter &<<CHAPLMTP>>&.
If this option is set to &"smtps"&, the default vaule for the &%port%& option
changes to &"smtps"&, and the transport initiates TLS immediately after
connecting, as an outbound SSL-on-connect, instead of using STARTTLS to upgrade.
The Internet standards bodies strongly discourage use of this mode.
If this option is set to &"smtps"&, the default vaule for the &%port%& option
changes to &"smtps"&, and the transport initiates TLS immediately after
connecting, as an outbound SSL-on-connect, instead of using STARTTLS to upgrade.
The Internet standards bodies strongly discourage use of this mode.
.option retry_include_ip_address smtp boolean true
.option retry_include_ip_address smtp boolean true
.option tls_sni smtp string&!! unset
.cindex "TLS" "Server Name Indication"
.vindex "&$tls_sni$&"
.option tls_sni smtp string&!! unset
.cindex "TLS" "Server Name Indication"
.vindex "&$tls_sni$&"
See &<<SECTtlssni>>& for more information.
See &<<SECTtlssni>>& for more information.
-OpenSSL only, also requiring a build of OpenSSL that supports TLS extensions.
-.wen
+Note that for OpenSSL, this feature requires a build of OpenSSL that supports
+TLS extensions.
+
.code
AUTH_CRAM_MD5=yes
AUTH_CYRUS_SASL=yes
.code
AUTH_CRAM_MD5=yes
AUTH_CYRUS_SASL=yes
AUTH_DOVECOT=yes
AUTH_GSASL=yes
AUTH_HEIMDAL_GSSAPI=yes
AUTH_DOVECOT=yes
AUTH_GSASL=yes
AUTH_HEIMDAL_GSSAPI=yes
AUTH_PLAINTEXT=yes
AUTH_SPA=yes
.endd
in &_Local/Makefile_&, respectively. The first of these supports the CRAM-MD5
authentication mechanism (RFC 2195), and the second provides an interface to
the Cyrus SASL authentication library.
AUTH_PLAINTEXT=yes
AUTH_SPA=yes
.endd
in &_Local/Makefile_&, respectively. The first of these supports the CRAM-MD5
authentication mechanism (RFC 2195), and the second provides an interface to
the Cyrus SASL authentication library.
The third is an interface to Dovecot's authentication system, delegating the
work via a socket interface.
The fourth provides an interface to the GNU SASL authentication library, which
The third is an interface to Dovecot's authentication system, delegating the
work via a socket interface.
The fourth provides an interface to the GNU SASL authentication library, which
the PLAIN authentication mechanism (RFC 2595) or the LOGIN mechanism, which is
not formally documented, but used by several MUAs. The seventh authenticator
supports Microsoft's &'Secure Password Authentication'& mechanism.
the PLAIN authentication mechanism (RFC 2595) or the LOGIN mechanism, which is
not formally documented, but used by several MUAs. The seventh authenticator
supports Microsoft's &'Secure Password Authentication'& mechanism.
The authenticators are configured using the same syntax as other drivers (see
section &<<SECTfordricon>>&). If no authenticators are required, no
The authenticators are configured using the same syntax as other drivers (see
section &<<SECTfordricon>>&). If no authenticators are required, no
authenticators, followed by general discussion of the way authentication works
in Exim.
authenticators, followed by general discussion of the way authentication works
in Exim.
&*Beware:*& the meaning of &$auth1$&, &$auth2$&, ... varies on a per-driver and
per-mechanism basis. Please read carefully to determine which variables hold
account labels such as usercodes and which hold passwords or other
&*Beware:*& the meaning of &$auth1$&, &$auth2$&, ... varies on a per-driver and
per-mechanism basis. Please read carefully to determine which variables hold
account labels such as usercodes and which hold passwords or other
to a client to help it select an account and credentials to use. In some
mechanisms, the client and server provably agree on the realm, but clients
typically can not treat the realm as secure data to be blindly trusted.
to a client to help it select an account and credentials to use. In some
mechanisms, the client and server provably agree on the realm, but clients
typically can not treat the realm as secure data to be blindly trusted.
is used directly to control authentication. See section &<<SECTplainserver>>&
for details.
is used directly to control authentication. See section &<<SECTplainserver>>&
for details.
For the &(gsasl)& authenticator, this option is required for various
mechanisms; see chapter &<<CHAPgsasl>>& for details.
For the &(gsasl)& authenticator, this option is required for various
mechanisms; see chapter &<<CHAPgsasl>>& for details.
For the other authenticators, &%server_condition%& can be used as an additional
authentication or authorization mechanism that is applied after the other
For the other authenticators, &%server_condition%& can be used as an additional
authentication or authorization mechanism that is applied after the other
Note that this expansion explicitly forces failure if the lookup fails
because &$auth1$& contains an unknown user name.
Note that this expansion explicitly forces failure if the lookup fails
because &$auth1$& contains an unknown user name.
As another example, if you wish to re-use a Cyrus SASL sasldb2 file without
using the relevant libraries, you need to know the realm to specify in the
lookup and then ask for the &"userPassword"& attribute for that user in that
As another example, if you wish to re-use a Cyrus SASL sasldb2 file without
using the relevant libraries, you need to know the realm to specify in the
lookup and then ask for the &"userPassword"& attribute for that user in that
dbmjz{/etc/sasldb2}}
server_set_id = $auth1
.endd
dbmjz{/etc/sasldb2}}
server_set_id = $auth1
.endd
.section "Using cram_md5 as a client" "SECID177"
.cindex "options" "&(cram_md5)& authenticator (client)"
.section "Using cram_md5 as a client" "SECID177"
.cindex "options" "&(cram_md5)& authenticator (client)"
changing the server keytab might need to be communicated down to the Kerberos
layer independently. The mechanism for doing so is dependent upon the Kerberos
implementation.
changing the server keytab might need to be communicated down to the Kerberos
layer independently. The mechanism for doing so is dependent upon the Kerberos
implementation.
For example, for older releases of Heimdal, the environment variable KRB5_KTNAME
may be set to point to an alternative keytab file. Exim will pass this
variable through from its own inherited environment when started as root or the
For example, for older releases of Heimdal, the environment variable KRB5_KTNAME
may be set to point to an alternative keytab file. Exim will pass this
variable through from its own inherited environment when started as root or the
environment variable. In practice, for those releases, the Cyrus authenticator
is not a suitable interface for GSSAPI (Kerberos) support. Instead, consider
the &(heimdal_gssapi)& authenticator, described in chapter &<<CHAPheimdalgss>>&
environment variable. In practice, for those releases, the Cyrus authenticator
is not a suitable interface for GSSAPI (Kerberos) support. Instead, consider
the &(heimdal_gssapi)& authenticator, described in chapter &<<CHAPheimdalgss>>&
.section "Using cyrus_sasl as a server" "SECID178"
.section "Using cyrus_sasl as a server" "SECID178"
server_set_id = $auth1
.endd
server_set_id = $auth1
.endd
.option server_realm cyrus_sasl string&!! unset
This specifies the SASL realm that the server claims to be in.
.option server_realm cyrus_sasl string&!! unset
This specifies the SASL realm that the server claims to be in.
.option server_service cyrus_sasl string &`smtp`&
.option server_service cyrus_sasl string &`smtp`&
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
.chapter "The gsasl authenticator" "CHAPgsasl"
.scindex IIDgsaslauth1 "&(gsasl)& authenticator"
.scindex IIDgsaslauth2 "authenticators" "&(gsasl)&"
.chapter "The gsasl authenticator" "CHAPgsasl"
.scindex IIDgsaslauth1 "&(gsasl)& authenticator"
.scindex IIDgsaslauth2 "authenticators" "&(gsasl)&"
server_condition = yes
.endd
server_condition = yes
.endd
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
.chapter "The heimdal_gssapi authenticator" "CHAPheimdalgss"
.scindex IIDheimdalgssauth1 "&(heimdal_gssapi)& authenticator"
.scindex IIDheimdalgssauth2 "authenticators" "&(heimdal_gssapi)&"
.chapter "The heimdal_gssapi authenticator" "CHAPheimdalgss"
.scindex IIDheimdalgssauth1 "&(heimdal_gssapi)& authenticator"
.scindex IIDheimdalgssauth2 "authenticators" "&(heimdal_gssapi)&"
GSS Display Name.
.endlist
GSS Display Name.
.endlist
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
The &%tls_verify_certificates%& option must contain the name of a file, not the
name of a directory (for OpenSSL it can be either).
.next
The &%tls_verify_certificates%& option must contain the name of a file, not the
name of a directory (for OpenSSL it can be either).
.next
The default value for &%tls_dhparam%& differs for historical reasons.
The default value for &%tls_dhparam%& differs for historical reasons.
.next
.vindex "&$tls_peerdn$&"
Distinguished Name (DN) strings reported by the OpenSSL library use a slash for
.next
.vindex "&$tls_peerdn$&"
Distinguished Name (DN) strings reported by the OpenSSL library use a slash for
.next
The &%tls_require_ciphers%& options operate differently, as described in the
sections &<<SECTreqciphssl>>& and &<<SECTreqciphgnu>>&.
.next
The &%tls_require_ciphers%& options operate differently, as described in the
sections &<<SECTreqciphssl>>& and &<<SECTreqciphgnu>>&.
.next
Some other recently added features may only be available in one or the other.
This should be documented with the feature. If the documentation does not
explicitly state that the feature is infeasible in the other TLS
implementation, then patches are welcome.
.next
Some other recently added features may only be available in one or the other.
This should be documented with the feature. If the documentation does not
explicitly state that the feature is infeasible in the other TLS
implementation, then patches are welcome.
.endlist
.section "GnuTLS parameter computation" "SECTgnutlsparam"
.endlist
.section "GnuTLS parameter computation" "SECTgnutlsparam"
This section only applies if &%tls_dhparam%& is set to &`historic`& or to
an explicit path; if the latter, then the text about generation still applies,
but not the chosen filename.
This section only applies if &%tls_dhparam%& is set to &`historic`& or to
an explicit path; if the latter, then the text about generation still applies,
but not the chosen filename.
bounds, as GnuTLS has been observed to overshoot. Note the check step in the
procedure above. There is no sane procedure available to Exim to double-check
the size of the generated prime, so it might still be too large.
bounds, as GnuTLS has been observed to overshoot. Note the check step in the
procedure above. There is no sane procedure available to Exim to double-check
the size of the generated prime, so it might still be too large.
.section "Requiring specific ciphers in OpenSSL" "SECTreqciphssl"
.section "Requiring specific ciphers in OpenSSL" "SECTreqciphssl"
not be moved to the end of the list.
.endlist
not be moved to the end of the list.
.endlist
The OpenSSL &'ciphers(1)'& command may be used to test the results of a given
string:
.code
The OpenSSL &'ciphers(1)'& command may be used to test the results of a given
string:
.code
{DEFAULT}\
{HIGH:!MD5:!SHA1}}
.endd
{DEFAULT}\
{HIGH:!MD5:!SHA1}}
.endd
.section "Requiring specific ciphers or other parameters in GnuTLS" &&&
"SECTreqciphgnu"
.cindex "GnuTLS" "specifying parameters for"
.section "Requiring specific ciphers or other parameters in GnuTLS" &&&
"SECTreqciphgnu"
.cindex "GnuTLS" "specifying parameters for"
{NORMAL:%COMPAT}\
{SECURE128}}
.endd
{NORMAL:%COMPAT}\
{SECURE128}}
.endd
.section "Configuring an Exim server to use TLS" "SECID182"
.section "Configuring an Exim server to use TLS" "SECID182"
.endd
is set, the SSL library is initialized for the use of Diffie-Hellman ciphers
with the parameters contained in the file.
.endd
is set, the SSL library is initialized for the use of Diffie-Hellman ciphers
with the parameters contained in the file.
Set this to &`none`& to disable use of DH entirely, by making no prime
available:
.code
Set this to &`none`& to disable use of DH entirely, by making no prime
available:
.code
openssl dhparam
.endd
for a way of generating file data.
openssl dhparam
.endd
for a way of generating file data.
The strings supplied for these three options are expanded every time a client
host connects. It is therefore possible to use different certificates and keys
The strings supplied for these three options are expanded every time a client
host connects. It is therefore possible to use different certificates and keys
.section "Use of TLS Server Name Indication" "SECTtlssni"
.cindex "TLS" "Server Name Indication"
.vindex "&$tls_sni$&"
.section "Use of TLS Server Name Indication" "SECTtlssni"
.cindex "TLS" "Server Name Indication"
.vindex "&$tls_sni$&"
When Exim is built against GnuTLS, SNI support is available as of GnuTLS
0.5.10. (Its presence predates the current API which Exim uses, so if Exim
built, then you have SNI support).
When Exim is built against GnuTLS, SNI support is available as of GnuTLS
0.5.10. (Its presence predates the current API which Exim uses, so if Exim
built, then you have SNI support).