common driver structs for transports
[exim.git] / doc / doc-docbook / spec.xfpt
index 8d61543cdff8be0b6ff22e397af0aab0bac1b730..ebc44978b5927d35d2329e3a69f0f297586483b9 100644 (file)
@@ -2077,7 +2077,7 @@ On some platforms, Exim supports not compiling all lookup types directly into
 the main binary, instead putting some into external modules which can be loaded
 on demand.
 This permits packagers to build Exim with support for lookups with extensive
-library dependencies without requiring all users to install all of those
+library dependencies without requiring all systems to install all of those
 dependencies.
 Most, but not all, lookup types can be built this way.
 
@@ -2091,7 +2091,7 @@ see &_src/EDITME_& for details.
 Then, for each module to be loaded dynamically, define the relevant
 &`LOOKUP_`&<&'lookup_type'&> flags to have the value "2" instead of "yes".
 For example, this will build in lsearch but load sqlite and mysql support
-on demand:
+only if each is installed:
 .code
 LOOKUP_LSEARCH=yes
 LOOKUP_SQLITE=2
@@ -12611,6 +12611,11 @@ contain the trailing slash. If &$config_file$& does not contain a slash,
 .vindex "&$config_file$&"
 The name of the main configuration file Exim is using.
 
+.vitem &$connection_id$&
+.vindex "&$connection_id$&"
+.cindex connection "identifier logging"
+An identifier for the accepted connection, for use in custom logging.
+
 .vitem &$dkim_verify_status$&
 Results of DKIM verification.
 For details see section &<<SECDKIMVFY>>&.
@@ -15204,8 +15209,11 @@ See section &<<SECDKIMVFY>>& for further details.
 
 .option acl_smtp_etrn main string&!! unset
 .cindex "ETRN" "ACL for"
+.cindex "ETRN" advertisement
 This option defines the ACL that is run when an SMTP ETRN command is
-received. See chapter &<<CHAPACL>>& for further details.
+received.
+If no value is set then the ETRN facility is not advertised.
+See chapter &<<CHAPACL>>& for further details.
 
 .option acl_smtp_expn main string&!! unset
 .cindex "EXPN" "ACL for"
@@ -15778,9 +15786,9 @@ the ACL once for each signature in the message.
 See section &<<SECDKIMVFY>>&.
 
 
-.option dmarc_forensic_sender main string&!! unset &&&
-        dmarc_history_file main string unset &&&
-        dmarc_tld_file main string unset
+.options dmarc_forensic_sender main string&!! unset &&&
+         dmarc_history_file main string unset &&&
+         dmarc_tld_file main string unset
 .cindex DMARC "main section options"
 These options control DMARC processing.
 See section &<<SECDMARC>>& for details.
@@ -16106,9 +16114,11 @@ routing, but which are not used for listening by the daemon. See section
 
 . Allow this long option name to split; give it unsplit as a fifth argument
 . for the automatic .oindex that is generated by .option.
+. WAS:
+. .option "extract_addresses_remove_ &~&~arguments"
+. but apparently this results in searchability problems; bug 1197
 
-.option "extract_addresses_remove_arguments" main boolean true &&&
-         extract_addresses_remove_arguments
+.option extract_addresses_remove_arguments main boolean true
 .oindex "&%-t%&"
 .cindex "command line" "addresses with &%-t%&"
 .cindex "Sendmail compatibility" "&%-t%& option"
@@ -17754,8 +17764,7 @@ live with.
 . searchable.  NM changed this occurrence for bug 1197 to no longer allow
 . the option name to split.
 
-.option "smtp_accept_max_per_connection" main integer&!! 1000 &&&
-         smtp_accept_max_per_connection
+.option smtp_accept_max_per_connection main integer&!! 1000
 .cindex "SMTP" "limiting incoming message count"
 .cindex "limit" "messages per SMTP connection"
 The value of this option limits the number of MAIL commands that Exim is
@@ -17809,8 +17818,7 @@ various &%-od%&&'x'& command line options.
 
 . See the comment on smtp_accept_max_per_connection
 
-.option "smtp_accept_queue_per_connection" main integer 10 &&&
-         smtp_accept_queue_per_connection
+.option smtp_accept_queue_per_connection main integer 10
 .cindex "queueing incoming messages"
 .cindex "message" "queueing by message count"
 This option limits the number of delivery processes that Exim starts
@@ -22220,6 +22228,12 @@ subject to address rewriting. Otherwise, they are treated like new addresses
 and are rewritten according to the global rewriting rules.
 
 
+.option sieve_inbox redirect string&!! inbox
+.new
+The value of this option is passed to a Sieve filter to specify the
+name of the mailbox used for "keep" operations (explicit or implicit).
+.wen
+
 .option sieve_subaddress redirect string&!! unset
 The value of this option is passed to a Sieve filter to specify the
 :subaddress part of an address.
@@ -23256,7 +23270,11 @@ fileinto "folder23";
 .endd
 In this situation, the expansion of &%file%& or &%directory%& in the transport
 must transform the relative path into an appropriate absolute filename. In the
-case of Sieve filters, the name &'inbox'& must be handled. It is the name that
+case of Sieve filters, the name &'inbox'& must be handled. It is the
+.new
+default
+.wen
+name that
 is used as a result of a &"keep"& action in the filter. This example shows one
 way of handling this requirement:
 .code
@@ -23272,6 +23290,12 @@ With this setting of &%file%&, &'inbox'& refers to the standard mailbox
 location, absolute paths are used without change, and other folders are in the
 &_mail_& directory within the home directory.
 
+.new
+An alternative for the &"keep"& aspect is to use the &%sieve_inbox%& option
+on the redirect router that calls the Sieve filter,
+to explicitly set the filename used.
+.wen
+
 &*Note 1*&: While processing an Exim filter, a relative path such as
 &_folder23_& is turned into an absolute path if a home directory is known to
 the router. In particular, this is the case if &%check_local_user%& is set. If
@@ -23282,6 +23306,10 @@ path to the transport.
 &*Note 2*&: An absolute path in &$address_file$& is not treated specially;
 the &%file%& or &%directory%& option is still used if it is set.
 
+.new
+&*Note 3*&: Permitting a user to enable writes to an absolute path
+may be a security issue.
+.wen
 
 
 
@@ -37317,12 +37345,8 @@ See the next section for more detail about error handling.
 .cindex "SMTP" "batching over TCP/IP"
 When a message is successfully delivered over a TCP/IP SMTP connection, Exim
 looks in the hints database for the transport to see if there are any queued
-messages waiting for the host to which it is connected. If it finds one, it
-creates a new Exim process using the &%-MC%& option (which can only be used by
-a process running as root or the Exim user) and passes the TCP/IP socket to it
-so that it can deliver another message using the same socket. The new process
-does only those deliveries that are routed to the connected host, and may in
-turn pass the socket on to a third process, and so on.
+messages waiting for the host to which it is connected.
+If it finds one, it arranges to attempt that message on the same connection.
 
 The &%connection_max_messages%& option of the &(smtp)& transport can be used to
 limit the number of messages sent down a single TCP/IP connection.
@@ -37660,6 +37684,14 @@ RCPT failures.
 .subsection "The ETRN command" SECTETRN
 .cindex "ETRN" "processing"
 .cindex "ESMTP extensions" ETRN
+Most modern installations never need to use this.
+It is used for managing messages queued for an intermittently-connecting
+destination (eg. one using a dialup connection).
+
+.oindex "&%acl_smtp_etrn%&"
+The command is only available if permitted by an ACL
+specfied by the main-section &%acl_smtp_etrn%& option.
+
 RFC 1985 describes an ESMTP command called ETRN that is designed to
 overcome the security problems of the TURN command (which has fallen into
 disuse). When Exim receives an ETRN command on a TCP/IP connection, it runs
@@ -39340,17 +39372,19 @@ because the arguments are checked before the configuration file is read. The
 only way to log such cases is to interpose a script such as &_util/logargs.sh_&
 between the caller and Exim.
 .next
-.cindex "log" "connection identifier"
-&%connection_identifier%&: An identifier for the accepted connection is added to
+.cindex log "connection identifier"
+.cindex connection "identifier logging"
+&%connection_id%&: An identifier for the accepted connection is added to
 connection start and end lines and to message accept lines.
 The identifier is tagged by Ci=.
 The value is PID-based, so will reset on reboot and will wrap.
 .next
-.cindex "log" "connection rejections"
+.cindex log "connection rejections"
+.cindex connection "rejection logging"
 &%connection_reject%&: A log entry is written whenever an incoming SMTP
 connection is rejected, for whatever reason.
 .next
-.cindex "log" "delayed delivery"
+.cindex log "delayed delivery"
 .cindex "delayed delivery, logging"
 &%delay_delivery%&: A log entry is written whenever a delivery process is not
 started for an incoming message because the load is too high or too many
@@ -40272,8 +40306,6 @@ for remote hosts
 The &'misc'& database is used for
 
 .ilist
-Serializing ETRN runs (when &%smtp_etrn_serialize%& is set)
-.next
 Serializing delivery to a specific host (when &%serialize_hosts%& is set in an
 &(smtp)& transport)
 .next
@@ -40281,11 +40313,13 @@ Limiting the concurrency of specific transports (when &%max_parallel%& is set
 in a transport)
 .next
 Recording EHLO-time facilities advertised by hosts
+.next
+Serializing ETRN runs (when &%smtp_etrn_serialize%& is set)
 .endlist
 
 
 
-.section "exim_dumpdb" "SECTdumpdb"
+.subsection "exim_dumpdb" "SECTdumpdb"
 .cindex "&'exim_dumpdb'&"
 The entire contents of a database are written to the standard output by the
 &'exim_dumpdb'& program,
@@ -40327,7 +40361,7 @@ cross-references.
 
 
 
-.section "exim_tidydb" "SECTtidydb"
+.subsection "exim_tidydb" "SECTtidydb"
 .cindex "&'exim_tidydb'&"
 The &'exim_tidydb'& utility program is used to tidy up the contents of a hints
 database. If run with no options, it removes all records that are more than 30
@@ -40376,7 +40410,7 @@ databases is likely to keep on increasing.
 
 
 
-.section "exim_fixdb" "SECTfixdb"
+.subsection "exim_fixdb" "SECTfixdb"
 .cindex "&'exim_fixdb'&"
 The &'exim_fixdb'& program is a utility for interactively modifying databases.
 Its main use is for testing Exim, but it might also be occasionally useful for
@@ -43116,6 +43150,7 @@ Events have names which correspond to the point in process at which they fire.
 The name is placed in the variable &$event_name$& and the event action
 expansion must check this, as it will be called for every possible event type.
 
+.new
 The current list of events is:
 .itable all 0 0 4 25* left 10* center 15* center 50* left
 .row auth:fail             after    both       "per driver per authentication attempt"
@@ -43135,7 +43170,10 @@ The current list of events is:
 .row tls:fail:connect       after    main       "per connection"
 .row smtp:connect           after    transport  "per connection"
 .row smtp:ehlo              after    transport  "per connection"
+.row smtp:fail:protocol     after    main       "per connection"
+.row smtp:fail:syntax       after    main       "per connection"
 .endtable
+.wen
 New event types may be added in future.
 
 The event name is a colon-separated list, defining the type of
@@ -43151,6 +43189,7 @@ should define the event action.
 
 An additional variable, &$event_data$&, is filled with information varying
 with the event type:
+.new
 .itable all 0 0 2 20* left 80* left
 .row auth:fail           "smtp response"
 .row dane:fail            "failure reason"
@@ -43166,7 +43205,10 @@ with the event type:
 .row tls:fail:connect     "error string"
 .row smtp:connect         "smtp banner"
 .row smtp:ehlo            "smtp ehlo response"
+.row smtp:fail:protocol   "error string"
+.row smtp:fail:syntax     "error string"
 .endtable
+.wen
 
 The :defer events populate one extra variable: &$event_defer_errno$&.