X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/14245f74fe76da5260b8fe3a9e7b6f99cc240077..8cb2cf17f0aba94df3a5a1109b28337949e3f7c1:/doc/doc-docbook/spec.xfpt?ds=sidebyside diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index cea683810..4575bc879 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -1,4 +1,3 @@ - . ///////////////////////////////////////////////////////////////////////////// . This is the primary source of the Exim Manual. It is an xfpt document that is . converted into DocBook XML for subsequent conversion into printable and online @@ -55,7 +54,7 @@ .set drivernamemax "64" .macro copyyear -2023 +2024 .endmacro . ///////////////////////////////////////////////////////////////////////////// @@ -1805,6 +1804,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 +1820,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 +1838,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 +11591,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 +14855,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 +15022,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 +15263,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 +18941,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. @@ -24551,7 +24587,7 @@ when the message is specified by the transport. .cindex "transports" "&(lmtp)&" .cindex "&(lmtp)& transport" .cindex "LMTP" "over a pipe" -.cindex "LMTP" "over a socket" +.cindex "LMTP" "over a unix-domain socket" The &(lmtp)& transport runs the LMTP protocol (RFC 2033) over a pipe to a specified command or by interacting with a Unix domain socket. @@ -26071,6 +26107,11 @@ 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 &<>&. +.new +&*Note*&: When using LMTP it should be considered whether the default values +for some other features, such as DANE, are appropriate. +.wen + If this option is set to &"smtps"&, the default value 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. @@ -30645,6 +30686,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 +30713,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 +30896,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 +31122,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 +32235,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 @@ -35122,13 +35231,13 @@ If the string does not start with a slash, it is used as the filename, and the default path is then used. .endlist The &%decode%& condition normally succeeds. It is only false for syntax -errors or unusual circumstances such as memory shortages. You can easily decode -a file with its original, proposed filename using -.code -decode = $mime_filename -.endd -However, you should keep in mind that &$mime_filename$& might contain -anything. If you place files outside of the default path, they are not +errors or unusual circumstances such as memory shortages. +.new +The variable &$mime_filename$& will have the suggested name for the file. +Note however that this might contain anything, and is very difficult +to safely use as all or even part of the filename. +.wen +If you place files outside of the default path, they are not automatically unlinked. For RFC822 attachments (these are messages attached to messages, with a