Gitweb:
http://git.exim.org/exim.git/commitdiff/2341d632dfbd25fae2fe13dd7585f812dd8277a8
Commit: 2341d632dfbd25fae2fe13dd7585f812dd8277a8
Parent: bba74fc65f77dc6678b3d33eef0acf43efe8f653
Author: Phil Pennock <pdp@???>
AuthorDate: Thu May 31 06:29:28 2012 -0400
Committer: Phil Pennock <pdp@???>
CommitDate: Thu May 31 06:29:28 2012 -0400
Doc: drop .new/.wen, update previousversion.
Also, drop fix one place which claimed TLS SNI support was OpenSSL only.
---
doc/doc-docbook/spec.xfpt | 95 ++------------------------------------------
1 files changed, 5 insertions(+), 90 deletions(-)
diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt
index ae1f7df..7b8c17b 100644
--- a/doc/doc-docbook/spec.xfpt
+++ b/doc/doc-docbook/spec.xfpt
@@ -45,7 +45,7 @@
. 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)"
@@ -1647,7 +1647,6 @@ architecture and operating system for itself, but the defaults can be
overridden if necessary.
-.new
.section "PCRE library" "SECTpcre"
.cindex "PCRE library"
Exim no longer has an embedded PCRE library as the vast majority of
@@ -1662,7 +1661,6 @@ If your operating system has no
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/).
-.wen
.section "DBM libraries" "SECTdb"
.cindex "DBM libraries" "discussion of"
@@ -1873,14 +1871,12 @@ SUPPORT_TLS=yes
TLS_LIBS=-L/usr/local/openssl/lib -lssl -lcrypto
TLS_INCLUDE=-I/usr/local/openssl/include/
.endd
-.new
.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
-.wen
.cindex "USE_GNUTLS"
If GnuTLS is installed, you should set
.code
@@ -1896,7 +1892,6 @@ USE_GNUTLS=yes
TLS_LIBS=-L/usr/gnu/lib -lgnutls -ltasn1 -lgcrypt
TLS_INCLUDE=-I/usr/gnu/include
.endd
-.new
.cindex "pkg-config" "GnuTLS"
If you have &'pkg-config'& available, then instead you can just use:
.code
@@ -1904,7 +1899,6 @@ SUPPORT_TLS=yes
USE_GNUTLS=yes
USE_GNUTLS_PC=gnutls
.endd
-.wen
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
@@ -2133,7 +2127,6 @@ files or libraries are required. When a lookup type is not included in the
binary, attempts to configure Exim to use it cause run time configuration
errors.
-.new
.cindex "pkg-config" "lookups"
.cindex "pkg-config" "authenticators"
Many systems now use a tool called &'pkg-config'& to encapsulate information
@@ -2153,7 +2146,6 @@ AUTH_GSASL_PC=libgsasl
AUTH_HEIMDAL_GSSAPI=yes
AUTH_HEIMDAL_GSSAPI_PC=heimdal-gssapi
.endd
-.wen
.cindex "Perl" "including support for"
Exim can be linked with an embedded Perl interpreter, allowing Perl
@@ -6245,7 +6237,6 @@ using Berkeley DB versions 3 or 4, it opens existing databases for reading with
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.)
-.new
.next
.cindex "lookup" "dbmjz"
.cindex "lookup" "dbm &-- embedded NULs"
@@ -6257,7 +6248,6 @@ ASCII NUL characters to form the lookup key. An example usage would be to
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.
-.wen
.next
.cindex "lookup" "dbmnz"
.cindex "lookup" "dbm &-- terminating zero"
@@ -6756,13 +6746,11 @@ is used on its own as the result. If the lookup does not succeed, the
&`fail`& keyword causes a &'forced expansion failure'& &-- see section
&<<SECTforexpfai>>& for an explanation of what this means.
-.new
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:
-.wen
.code
${lookup dnsdb{ptr=192.168.4.5}{$value}fail}
.endd
@@ -6789,13 +6777,11 @@ white space is ignored.
.cindex "TXT record" "in &(dnsdb)& lookup"
.cindex "SPF record" "in &(dnsdb)& lookup"
-.new
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.
-.wen
.code
${lookup dnsdb{>\n,: txt=a.b.example}}
${lookup dnsdb{>\n; txt=a.b.example}}
@@ -9773,10 +9759,8 @@ This operator returns a somewhat random number which is less than the
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.
-.new
If Exim is linked against GnuTLS then gnutls_rnd(GNUTLS_RND_NONCE) is used,
for versions of GnuTLS with that function.
-.wen
Otherwise, the implementation may be arc4random(), random() seeded by
srandomdev() or srandom(), or a custom implementation even weaker than
random().
@@ -10182,7 +10166,6 @@ string is lexically greater than the second string. For &%gt%& the comparison
includes the case of letters, whereas for &%gti%& the comparison is
case-independent.
-.new
.vitem &*inlist&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*& &&&
&*inlisti&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*&
.cindex "string" "comparison"
@@ -10199,7 +10182,6 @@ ${if inlist{needle}{foo:needle:bar}}
${if inlisti{Needle}{fOo:NeeDLE:bAr}}
${if forany{fOo:NeeDLE:bAr}{eqi{$item}{Needle}}}
.endd
-.wen
.vitem &*isip&~{*&<&'string'&>&*}*& &&&
&*isip4&~{*&<&'string'&>&*}*& &&&
@@ -10311,12 +10293,10 @@ See &*match_local_part*&.
.vitem &*match_ip&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*&
.cindex "&%match_ip%& expansion condition"
-.new
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:
-.wen
.code
${if match_ip{$sender_host_address}{1.2.3.4:5.6.7.8}{...}{...}}
.endd
@@ -10362,10 +10342,8 @@ just as easy to use the fact that a lookup is itself a condition, and write:
.endd
.endlist ilist
-.new
Note that <&'string2'&> is not itself subject to string expansion, unless
Exim was built with the EXPAND_LISTMATCH_RHS option.
-.wen
Consult section &<<SECThoslispatip>>& for further details of these patterns.
@@ -10394,10 +10372,8 @@ item can be used, as in all address lists, to cause subsequent items to
have their local parts matched casefully. Domains are always matched
caselessly.
-.new
Note that <&'string2'&> is not itself subject to string expansion, unless
Exim was built with the EXPAND_LISTMATCH_RHS option.
-.wen
&*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
@@ -10744,14 +10720,12 @@ is empty and &$authentication_failed$& is set to &"1"&). Failure includes any
negative response to an AUTH command, including (for example) an attempt to use
an undefined mechanism.
-.new
.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.
-.wen
.vitem &$body_linecount$&
.cindex "message body" "line count"
@@ -11884,7 +11858,6 @@ command in a filter file. Its use is explained in the description of that
command, which can be found in the separate document entitled &'Exim's
interfaces to mail filtering'&.
-.new
.vitem &$tls_bits$&
.vindex "&$tls_bits$&"
Contains an approximation of the TLS cipher's bit-strength; the meaning of
@@ -11892,7 +11865,6 @@ this depends upon the TLS implementation used.
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).
-.wen
.vitem &$tls_certificate_verified$&
.vindex "&$tls_certificate_verified$&"
@@ -11924,7 +11896,6 @@ the value of the Distinguished Name of the certificate is made available in the
value is retained during message delivery, except during outbound SMTP
deliveries.
-.new
.vitem &$tls_sni$&
.vindex "&$tls_sni$&"
.cindex "TLS" "Server Name Indication"
@@ -11939,7 +11910,6 @@ used) to the client, based upon the value of the SNI extension.
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.
-.wen
.vitem &$tod_bsdinbox$&
.vindex "&$tod_bsdinbox$&"
@@ -12883,7 +12853,6 @@ See also the &'Policy controls'& section above.
Those options that undergo string expansion before use are marked with
†.
-.new
.option accept_8bitmime main boolean true
.cindex "8BITMIME"
.cindex "8-bit characters"
@@ -12899,7 +12868,6 @@ A more detailed analysis of the issues is provided by Dan Bernstein:
.display
&url(
http://cr.yp.to/smtp/8bitmime.html)
.endd
-.wen
.option acl_not_smtp main string&!! unset
.cindex "&ACL;" "for non-SMTP messages"
@@ -13481,7 +13449,6 @@ to set in them.
See &%dns_retrans%& above.
-.new
.option dns_use_edns0 main integer -1
.cindex "DNS" "resolver options"
.cindex "DNS" "EDNS0"
@@ -13491,7 +13458,6 @@ the system default. A value of 0 coerces EDNS0 off, a value of 1 coerces EDNS0
on.
If the resolver library does not support EDNS0 then this option has no effect.
-.wen
.option drop_cr main boolean false
@@ -14405,12 +14371,10 @@ yourself in the foot in various unpleasant ways. This option should not be
adjusted lightly. An unrecognised item will be detected at startup, by
invoking Exim with the &%-bV%& flag.
-.new
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.
-.wen
An example:
.code
@@ -15663,12 +15627,10 @@ receiving incoming messages as a server. If you want to supply certificates for
use when sending messages as a client, you must set the &%tls_certificate%&
option in the relevant &(smtp)& transport.
-.new
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.
-.wen
.option tls_crl main string&!! unset
.cindex "TLS" "server certificate revocation list"
@@ -15676,12 +15638,9 @@ Server Name Indication extension, then this option and others documented in
This option specifies a certificate revocation list. The expanded value must
be the name of a file that contains a CRL in PEM format.
-.new
See &<<SECTtlssni>>& for discussion of when this option might be re-expanded.
-.wen
-.new
.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
@@ -15701,12 +15660,10 @@ number.
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.
-.wen
.option tls_dhparam main string&!! unset
.cindex "TLS" "D-H parameters for server"
-.new
The value of this option is expanded and indicates the source of DH parameters
to be used by Exim.
@@ -15743,7 +15700,6 @@ The available primes are:
Some of these will be too small to be accepted by clients.
Some may be too large to be accepted by clients.
-.wen
.option tls_on_connect_ports main "string list" unset
@@ -15762,9 +15718,7 @@ the expansion is forced to fail, or the result is an empty string, the private
key is assumed to be in the same file as the server's certificates. See chapter
&<<CHAPTLS>>& for further details.
-.new
See &<<SECTtlssni>>& for discussion of when this option might be re-expanded.
-.wen
.option tls_remember_esmtp main boolean false
@@ -15812,9 +15766,7 @@ connecting clients, defining the list of accepted certificate authorities.
Thus the values defined should be considered public data. To avoid this,
use OpenSSL with a directory.
-.new
See &<<SECTtlssni>>& for discussion of when this option might be re-expanded.
-.wen
.option tls_verify_hosts main "host list&!!" unset
@@ -17136,7 +17088,6 @@ look for A or AAAA records, unless the domain matches &%mx_domains%&, in which
case routing fails.
-.new
.section "Declining addresses by dnslookup" "SECTdnslookupdecline"
.cindex "&(dnslookup)& router" "declines"
There are a few cases where a &(dnslookup)& router will decline to accept
@@ -17167,7 +17118,6 @@ The domain is not syntactically valid (see also &%allow_utf8_domains%& and
&%check_secondary_mx%& is set on this router but the local host can
not be found in the MX records (see below)
.endlist
-.wen
@@ -20288,7 +20238,6 @@ This option applies only to deliveries in maildir format, and is described in
section &<<SECTmaildirdelivery>>& below.
-.new
.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.
@@ -20297,7 +20246,6 @@ creates a &_maildirsize_& file in a maildir if one does not exist, taking the
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.
-.wen
.option maildirfolder_create_regex appendfile string unset
.cindex "maildir format" "&_maildirfolder_& file"
@@ -22389,12 +22337,10 @@ protocol (RFC 2033) instead of SMTP. This protocol is sometimes used for local
deliveries into closed message stores. Exim also has support for running LMTP
over a pipe to a local process &-- see chapter &<<CHAPLMTP>>&.
-.new
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.
-.wen
.option retry_include_ip_address smtp boolean true
@@ -22507,7 +22453,6 @@ ciphers is a preference order.
-.new
.option tls_sni smtp string&!! unset
.cindex "TLS" "Server Name Indication"
.vindex "&$tls_sni$&"
@@ -22518,8 +22463,9 @@ certificate and private key for the session.
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.
+
@@ -23698,18 +23644,15 @@ included by setting
.code
AUTH_CRAM_MD5=yes
AUTH_CYRUS_SASL=yes
-.new
AUTH_DOVECOT=yes
AUTH_GSASL=yes
AUTH_HEIMDAL_GSSAPI=yes
-.wen
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.
-.new
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
@@ -23720,7 +23663,6 @@ The sixth can be configured to support
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.
-.wen
The authenticators are configured using the same syntax as other drivers (see
section &<<SECTfordricon>>&). If no authenticators are required, no
@@ -23752,7 +23694,6 @@ The remainder of this chapter covers the generic options for the
authenticators, followed by general discussion of the way authentication works
in Exim.
-.new
&*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
@@ -23774,7 +23715,6 @@ A &'realm'& is a text string, typically a domain name, presented by a server
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.
-.wen
@@ -23822,10 +23762,8 @@ This option must be set for a &%plaintext%& server authenticator, where it
is used directly to control authentication. See section &<<SECTplainserver>>&
for details.
-.new
For the &(gsasl)& authenticator, this option is required for various
mechanisms; see chapter &<<CHAPgsasl>>& for details.
-.wen
For the other authenticators, &%server_condition%& can be used as an additional
authentication or authorization mechanism that is applied after the other
@@ -24432,7 +24370,6 @@ lookup_cram:
Note that this expansion explicitly forces failure if the lookup fails
because &$auth1$& contains an unknown user name.
-.new
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
@@ -24445,7 +24382,6 @@ cyrusless_crammd5:
dbmjz{/etc/sasldb2}}
server_set_id = $auth1
.endd
-.wen
.section "Using cram_md5 as a client" "SECID177"
.cindex "options" "&(cram_md5)& authenticator (client)"
@@ -24520,7 +24456,7 @@ Kerberos, note that because of limitations in the GSSAPI interface,
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.
-.new
+
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
@@ -24529,7 +24465,6 @@ With newer releases of Heimdal, a setuid Exim may cause Heimdal to discard 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>>&
-.wen
.section "Using cyrus_sasl as a server" "SECID178"
@@ -24560,10 +24495,8 @@ sasl:
server_set_id = $auth1
.endd
-.new
.option server_realm cyrus_sasl string&!! unset
This specifies the SASL realm that the server claims to be in.
-.wen
.option server_service cyrus_sasl string &`smtp`&
@@ -24636,7 +24569,6 @@ who authenticated is placed in &$auth1$&.
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
-.new
.chapter "The gsasl authenticator" "CHAPgsasl"
.scindex IIDgsaslauth1 "&(gsasl)& authenticator"
.scindex IIDgsaslauth2 "authenticators" "&(gsasl)&"
@@ -24791,12 +24723,10 @@ gsasl_cyrusless_crammd5:
server_condition = yes
.endd
-.wen
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
-.new
.chapter "The heimdal_gssapi authenticator" "CHAPheimdalgss"
.scindex IIDheimdalgssauth1 "&(heimdal_gssapi)& authenticator"
.scindex IIDheimdalgssauth2 "authenticators" "&(heimdal_gssapi)&"
@@ -24843,7 +24773,6 @@ authentication. If that was empty, this will also be set to the
GSS Display Name.
.endlist
-.wen
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
@@ -25029,9 +24958,7 @@ There are some differences in usage when using GnuTLS instead of OpenSSL:
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
-.new
The default value for &%tls_dhparam%& differs for historical reasons.
-.wen
.next
.vindex "&$tls_peerdn$&"
Distinguished Name (DN) strings reported by the OpenSSL library use a slash for
@@ -25049,18 +24976,15 @@ option).
.next
The &%tls_require_ciphers%& options operate differently, as described in the
sections &<<SECTreqciphssl>>& and &<<SECTreqciphgnu>>&.
-.new
.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.
-.wen
.endlist
.section "GnuTLS parameter computation" "SECTgnutlsparam"
-.new
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.
@@ -25141,7 +25065,6 @@ increase the chance of the generated prime actually being within acceptable
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.
-.wen
.section "Requiring specific ciphers in OpenSSL" "SECTreqciphssl"
@@ -25191,7 +25114,6 @@ includes any ciphers already present they will be ignored: that is, they will
not be moved to the end of the list.
.endlist
-.new
The OpenSSL &'ciphers(1)'& command may be used to test the results of a given
string:
.code
@@ -25209,11 +25131,9 @@ tls_require_ciphers = ${if =={$received_port}{25}\
{DEFAULT}\
{HIGH:!MD5:!SHA1}}
.endd
-.wen
-.new
.section "Requiring specific ciphers or other parameters in GnuTLS" &&&
"SECTreqciphgnu"
.cindex "GnuTLS" "specifying parameters for"
@@ -25259,7 +25179,6 @@ tls_require_ciphers = ${if =={$received_port}{25}\
{NORMAL:%COMPAT}\
{SECURE128}}
.endd
-.wen
.section "Configuring an Exim server to use TLS" "SECID182"
@@ -25320,7 +25239,6 @@ tls_dhparam = /some/file/name
.endd
is set, the SSL library is initialized for the use of Diffie-Hellman ciphers
with the parameters contained in the file.
-.new
Set this to &`none`& to disable use of DH entirely, by making no prime
available:
.code
@@ -25336,7 +25254,6 @@ See the command
openssl dhparam
.endd
for a way of generating file data.
-.wen
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
@@ -25503,7 +25420,6 @@ outgoing connection.
-.new
.section "Use of TLS Server Name Indication" "SECTtlssni"
.cindex "TLS" "Server Name Indication"
.vindex "&$tls_sni$&"
@@ -25575,7 +25491,6 @@ see &`-servername`& in the output, then OpenSSL has 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).
-.wen