X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/14245f74fe76da5260b8fe3a9e7b6f99cc240077..a7ea53c5ccf6c81c4716f17428646d0f55f1bed3:/doc/doc-docbook/spec.xfpt diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index cea683810..202c27659 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -1805,6 +1805,11 @@ suited to Exim's usage model. Yet another DBM library, called &'tdb'&, is available from &url(https://sourceforge.net/projects/tdb/files/). It has its own interface, and also operates on a single file. +.next +.new +It is possible to use sqlite3 (&url(https://www.sqlite.org/index.html)) +for the DBM library. +.wen .endlist .cindex "USE_DB" @@ -1816,8 +1821,9 @@ USE_DB in an appropriate configuration file (typically .code USE_DB=yes .endd -Similarly, for gdbm you set USE_GDBM, and for tdb you set USE_TDB. An -error is diagnosed if you set more than one of these. +Similarly, for gdbm you set USE_GDBM, for tdb you set USE_TDB, +and for sqlite3 you set USE_SQLITE. +An error is diagnosed if you set more than one of these. You can set USE_NDBM if needed to override an operating system default. At the lowest level, the build-time configuration sets none of these options, @@ -1833,6 +1839,7 @@ in one of these lines: .code DBMLIB = -ldb DBMLIB = -ltdb +DBMLIB = -lsqlite3 DBMLIB = -lgdbm -lgdbm_compat .endd The last of those was for a Linux having GDBM provide emulated NDBM facilities. @@ -11585,6 +11592,19 @@ literal question mark). .cindex "&%utf8_localpart_from_alabel%& expansion item" These convert EAI mail name components between UTF-8 and a-label forms. For information on internationalisation support see &<>&. + + +.new +.vitem &*${xtextd:*&<&'string'&>&*}*& +.cindex "text forcing in strings" +.cindex "string" "xtext decoding" +.cindex "xtext" +.cindex "&%xtextd%& expansion item" +This performs xtext decoding of the string (per RFC 3461 section 4). +.wen + + + .endlist @@ -14836,6 +14856,7 @@ listed in more than one group. .row &%acl_smtp_rcpt%& "ACL for RCPT" .row &%acl_smtp_starttls%& "ACL for STARTTLS" .row &%acl_smtp_vrfy%& "ACL for VRFY" +.row &%acl_smtp_wellknown%& "ACL for WELLKNOWN" .row &%av_scanner%& "specify virus scanner" .row &%check_rfc2047_length%& "check length of RFC 2047 &""encoded &&& words""&" @@ -15002,6 +15023,7 @@ See also the &'Policy controls'& section above. .row &%prdr_enable%& "advertise PRDR to all hosts" .row &%smtputf8_advertise_hosts%& "advertise SMTPUTF8 to these hosts" .row &%tls_advertise_hosts%& "advertise TLS to these hosts" +.row &%wellknown_advertise_hosts%& "advertise WELLKNOWN to these hosts" .endtable @@ -15242,6 +15264,13 @@ received. See chapter &<>& for further details. This option defines the ACL that is run when an SMTP VRFY command is received. See chapter &<>& for further details. +.new +.option acl_smtp_wellknown main string&!! unset +.cindex "WELLKNOWN, ACL for" +This option defines the ACL that is run when an SMTP WELLKNOWN command is +received. See section &<>& for further details. +.wen + .option add_environment main "string list" empty .cindex "environment" "set values" This option adds individual environment variables that the @@ -18913,6 +18942,14 @@ absolute and untainted. See also &%bounce_message_file%&. +.new +.option wellknown_advertise_hosts main boolean unset +.cindex WELLKNOWN advertisement +.cindex "ESMTP extensions" WELLKNOWN +This option enables the advertising of the SMTP WELLKNOWN extension. +See also the &%acl_smtp_wellknown%& ACL (&<>&). +.wen + .option write_rejectlog main boolean true .cindex "reject log" "disabling" If this option is set false, Exim no longer writes anything to the reject log. @@ -30645,6 +30682,7 @@ options in the main part of the configuration. These options are: .cindex "RCPT" "ACL for" .cindex "STARTTLS, ACL for" .cindex "VRFY" "ACL for" +.cindex "WELLKNOWN" "ACL for" .cindex "SMTP" "connection, ACL for" .cindex "non-SMTP messages" "ACLs for" .cindex "MIME content scanning" "ACL for" @@ -30671,6 +30709,7 @@ options in the main part of the configuration. These options are: .irow &%acl_smtp_rcpt%& "ACL for RCPT" .irow &%acl_smtp_starttls%& "ACL for STARTTLS" .irow &%acl_smtp_vrfy%& "ACL for VRFY" +.irow &%acl_smtp_wellknown%& "ACL for WELLKNOWN" .endtable For example, if you set @@ -30853,6 +30892,62 @@ This ACL is evaluated after &%acl_smtp_dkim%& but before &%acl_smtp_data%&. If the ACL is not defined, processing completes as if the feature was not requested by the client. +.new +.subsection "The SMTP WELLKNOWN ACL" SECTWELLKNOWNACL +.cindex "WELLKNOWN" "ACL for" +.oindex "&%acl_smtp_wellknown%&" +The &%acl_smtp_wellknown%& ACL is available only when Exim is compiled +with WELLKNOWN support enabled. + +The ACL determines the response to an SMTP WELLKNOWN command, using the normal +accept/defer/deny verbs for the response code, +and a new &"control=wellknown"& modifier. +This modifier takes a single option, separated by a '/' +character, which must be the name of a file containing the response +cleartext. The modifier is expanded before use in the usual way before +it is used. The configuration is responsible for picking a suitable file +to return and, most importantly, not returning any unexpected file. +The argument for the SMTP verb will be available in the &$smtp_command_argument$& +variable and can be used for building the file path. +If the file path given in the modifier is empty or inacessible, the control will +fail. + +For example: +.code + check_wellknown: + accept control = wellknown/\ + ${lookup {${xtextd:$smtp_command_argument}} \ + dsearch,key=path,filter=file,ret=full \ + {$spooldir/wellknown.d}} +.endd +File content will be encoded in &"xtext"& form, and line-wrapping +for line-length limitation will be done before transmission. +A response summary line will be prepended, with the (pre-encoding) file size. + +The above example uses the expansion operator ${xtextd:} +which is needed to decode the xtext-encoded key from the SMTP verb. + +Under the util directory there is a "mailtest" utility which can be used +to test/retrieve WELLKNOWN items. Syntax is +.code + mailtest -h host.example.com -w security.txt +.endd + +WELLKNOWN is a ESMTP extension providing access to extended +information about the server. It is modelled on the webserver +facilities documented in RFC 8615 and can be used for a security.txt +file and could be used for ACME handshaking (RFC 8555). + +Exim will advertise WELLKNOWN support in the EHLO response +.oindex &%wellknown_advertise_hosts%& +(conditional on a new option &%wellknown_advertise_hosts%&) +and service WELLKNOWN smtp verbs having a single parameter +giving a key for an item of "site-wide metadata". +The verb and key are separated by whitespace, +and the key is xtext-encoded (per RFC 3461 section 4). +.wen + + .subsection "The QUIT ACL" SECTQUITACL .cindex "QUIT, ACL for" The ACL for the SMTP QUIT command is anomalous, in that the outcome of the ACL @@ -31023,12 +31118,15 @@ For &%acl_not_smtp%&, &%acl_smtp_auth%&, &%acl_smtp_connect%&, &%acl_smtp_mime%&, &%acl_smtp_predata%&, and &%acl_smtp_starttls%&, the action when the ACL is not defined is &"accept"&. -For the others (&%acl_smtp_etrn%&, &%acl_smtp_expn%&, &%acl_smtp_rcpt%&, and -&%acl_smtp_vrfy%&), the action when the ACL is not defined is &"deny"&. -This means that &%acl_smtp_rcpt%& must be defined in order to receive any -messages over an SMTP connection. For an example, see the ACL in the default -configuration file. - +For the others (&%acl_smtp_etrn%&, &%acl_smtp_expn%&, &%acl_smtp_rcpt%&, +&%acl_smtp_vrfy%& +.new +and &%acl_smtp_wellknown%&), +.wen +the action when the ACL +is not defined is &"deny"&. This means that &%acl_smtp_rcpt%& must be +defined in order to receive any messages over an SMTP connection. +For an example, see the ACL in the default configuration file. @@ -32133,6 +32231,13 @@ that are being submitted at the same time using &%-bs%& or &%-bS%&. This control enables conversion of UTF-8 in message envelope addresses to a-label form. For details see section &<>&. + +.new +.vitem &*control&~=&~wellknown*& +This control sets up a response data file for a WELLKNOWN SMTP command. +It may only be used in an ACL servicing that command. +For details see section &<>&. +.wen .endlist vlist