diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/doc-docbook/spec.xfpt | 53 | ||||
-rw-r--r-- | doc/doc-txt/ChangeLog | 13 | ||||
-rw-r--r-- | doc/doc-txt/experimental-spec.txt | 107 |
3 files changed, 111 insertions, 62 deletions
diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index b6f387a1a..0775cb139 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -7266,7 +7266,7 @@ default list of ldap servers, and a single lookup can specify a single ldap server to use. But when you need to do a lookup with a list of servers that is different than the default list (maybe different order, maybe a completely different set of servers), the SERVERS parameter allows you to specify this -alternate list. +alternate list (colon-separated). Here is an example of an LDAP query in an Exim lookup that uses some of these values. This is a single line, folded to fit on the page: @@ -10997,12 +10997,10 @@ precedes the expansion of the string. For example, the commands available in Exim filter files include an &%if%& command with its own regular expression matching condition. -.new .vitem "&$acl_arg1$&, &$acl_arg2$&, etc" Within an acl condition, expansion condition or expansion item any arguments are copied to these variables, any unused variables being made empty. -.wen .vitem "&$acl_c...$&" Values can be placed in these variables by the &%set%& modifier in an ACL. They @@ -11025,11 +11023,9 @@ message is received, the values of these variables are saved with the message, and can be accessed by filters, routers, and transports during subsequent delivery. -.new .vitem &$acl_narg$& Within an acl condition, expansion condition or expansion item this variable has the number of arguments. -.wen .vitem &$acl_verify_message$& .vindex "&$acl_verify_message$&" @@ -11417,6 +11413,11 @@ the result, the name is not accepted, and &$host_lookup_deferred$& is set to .vindex "&$host_lookup_failed$&" See &$host_lookup_deferred$&. +.vitem &$host_port$& +.vindex "&$host_port$&" +This variable is set to the remote host's TCP port whenever &$host$& is set +for an outbound connection. + .vitem &$inode$& .vindex "&$inode$&" @@ -12359,7 +12360,9 @@ If TLS has not been negotiated, the value will be 0. This variable refers to the certificate presented to the peer of an inbound connection when the message was received. It is only useful as the argument of a -&%certextract%& expansion item, &%md5%& or &%sha1%& operator, +.new +&%certextract%& expansion item, &%md5%&, &%sha1%& or &%sha256%& operator, +.wen or a &%def%& condition. .vitem &$tls_in_peercert$& @@ -12367,21 +12370,27 @@ or a &%def%& condition. This variable refers to the certificate presented by the peer of an inbound connection when the message was received. It is only useful as the argument of a -&%certextract%& expansion item, &%md5%& or &%sha1%& operator, +.new +&%certextract%& expansion item, &%md5%&, &%sha1%& or &%sha256%& operator, +.wen or a &%def%& condition. .vitem &$tls_out_ourcert$& .vindex "&$tls_out_ourcert$&" This variable refers to the certificate presented to the peer of an outbound connection. It is only useful as the argument of a -&%certextract%& expansion item, &%md5%& or &%sha1%& operator, +.new +&%certextract%& expansion item, &%md5%&, &%sha1%& or &%sha256%& operator, +.wen or a &%def%& condition. .vitem &$tls_out_peercert$& .vindex "&$tls_out_peercert$&" This variable refers to the certificate presented by the peer of an outbound connection. It is only useful as the argument of a -&%certextract%& expansion item, &%md5%& or &%sha1%& operator, +.new +&%certextract%& expansion item, &%md5%&, &%sha1%& or &%sha256%& operator, +.wen or a &%def%& condition. .vitem &$tls_in_certificate_verified$& @@ -12421,6 +12430,24 @@ and then set to the outgoing cipher suite if one is negotiated. See chapter &<<CHAPTLS>>& for details of TLS support and chapter &<<CHAPsmtptrans>>& for details of the &(smtp)& transport. +.vitem &$tls_in_ocsp$& +.vindex "&$tls_in_ocsp$&" +When a message is received from a remote client connection +the result of any OCSP request from the client is encoded in this variable: +.code +0 OCSP proof was not requested (default value) +1 No response to request +2 Response not verified +3 Verification failed +4 Verification succeeded +.endd + +.vitem &$tls_out_ocsp$& +.vindex "&$tls_out_ocsp$&" +When a message is sent to a remote host connection +the result of any OCSP request made is encoded in this variable. +See &$tls_in_ocsp$& for values. + .vitem &$tls_in_peerdn$& .vindex "&$tls_in_peerdn$&" .vindex "&$tls_peerdn$&" @@ -25376,6 +25403,7 @@ but it is present in many binary distributions. .scindex IIDdcotauth2 "authenticators" "&(dovecot)&" This authenticator is an interface to the authentication facility of the Dovecot POP/IMAP server, which can support a number of authentication methods. +Note that Dovecot must be configured to use auth-client not auth-userdb. If you are using Dovecot to authenticate POP/IMAP clients, it might be helpful to use the same mechanisms for SMTP authentication. This is a server authenticator only. There is only one option: @@ -26244,6 +26272,8 @@ file named by &%tls_ocsp_file%&. Note that the proof only covers the terminal server certificate, not any of the chain from CA to it. +There is no current way to staple a proof for a client certificate. + .code A helper script "ocsp_fetch.pl" for fetching a proof from a CA OCSP server is supplied. The server URL may be included in the @@ -27607,6 +27637,11 @@ anyway. If the message contains newlines, this gives rise to a multi-line SMTP response. .vindex "&$acl_verify_message$&" +.new +For ACLs that are called by an &%acl =%& ACL condition, the message is +stored in &$acl_verify_message$&, from which the calling ACL may use it. +.wen + If &%message%& is used on a statement that verifies an address, the message specified overrides any message that is generated by the verification process. However, the original message is available in the variable diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index bb4752fbb..0bf49a7c5 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -12,6 +12,11 @@ TL/01 When running the test suite, the README says that variables such as variables, reset to the beginning of the script, and then run through the script parsing/test process like normal. +TL/02 The BSD's have an arc4random API. One of the functions to induce + adding randomness was arc4random_stir(), but it has been removed in + OpenBSD 5.5. Detect this OpenBSD version and skip calling this + function when detected. + Exim version 4.84 ----------------- @@ -19,6 +24,14 @@ TL/01 Bugzilla 1506: Re-add a 'return NULL' to silence complaints from static checkers that were complaining about end of non-void function with no return. +JH/01 Bug 1513: Fix parsing of quoted parameter values in MIME headers. + This was a regression intruduced in 4.83 by another bugfix. + +JH/02 Fix broken compilation when EXPERIMENTAL_DSN is enabled. + +TL/02 Bug 1509: Fix exipick for enhanced spoolfile specification used when + EXPERIMENTAL_DNS is enabled. Fix from Wolfgang Breyha. + Exim version 4.83 ----------------- diff --git a/doc/doc-txt/experimental-spec.txt b/doc/doc-txt/experimental-spec.txt index 80e970cc1..28591eaf7 100644 --- a/doc/doc-txt/experimental-spec.txt +++ b/doc/doc-txt/experimental-spec.txt @@ -767,82 +767,83 @@ and (for SMTP transports) a second string on deferrals caused by a host error. This feature may be used, for example, to write exim internal log information (not available otherwise) into a database. -In order to use the feature, you must set +In order to use the feature, you must compile with EXPERIMENTAL_TPDA=yes in your Local/Makefile -and define the expandable strings in the runtime config file, to -be executed at end of delivery. +and define the tpda_event_action option in the transport, to +be expanded when the event fires. -Additionally, there are 6 more variables, available at end of -delivery: +A new variable, $tpda_event, is set to the event type when the +expansion is done. The current list of events is: -tpda_delivery_ip IP of host, which has accepted delivery -tpda_delivery_port Port of remote host which has accepted delivery -tpda_delivery_fqdn FQDN of host, which has accepted delivery -tpda_delivery_local_part local part of address being delivered -tpda_delivery_domain domain part of address being delivered -tpda_delivery_confirmation SMTP confirmation message + msg:delivery + msg:host:defer + tcp:connect + tcp:close + tls:cert + smtp:connect -In case of a deferral caused by a host-error: -tpda_defer_errno Error number -tpda_defer_errstr Error string possibly containing more details +The expansion is called for all event types, and should use the $tpda_event +value to decide when to act. The variable data is a colon-separated +list, describing an event tree. -The $router_name and $transport_name variables are also usable. +There is an auxilary variable, $tpda_data, for which the +content is event_dependent: + msg:delivery smtp confirmation mssage + msg:host:defer error string + tls:cert verification chain depth + smtp:connect smtp banner -To take action after successful deliveries, set the following option -on any transport of interest. +The msg:host:defer event populates one extra variable, $tpda_defer_errno. + +The following variables are likely to be useful for most event types: + + router_name, transport_name + local_part, domain + host, host_address, host_port + tls_out_peercert + lookup_dnssec_authenticated, tls_out_dane + sending_ip_address, sending_port -tpda_delivery_action An example might look like: -tpda_delivery_action = \ -${lookup pgsql {SELECT * FROM record_Delivery( \ +tpda_event_action = ${if = {msg:delivery}{$tpda_event} \ +{${lookup pgsql {SELECT * FROM record_Delivery( \ '${quote_pgsql:$sender_address_domain}',\ '${quote_pgsql:${lc:$sender_address_local_part}}', \ - '${quote_pgsql:$tpda_delivery_domain}', \ - '${quote_pgsql:${lc:$tpda_delivery_local_part}}', \ - '${quote_pgsql:$tpda_delivery_ip}', \ - '${quote_pgsql:${lc:$tpda_delivery_fqdn}}', \ - '${quote_pgsql:$message_exim_id}')}} + '${quote_pgsql:$domain}', \ + '${quote_pgsql:${lc:$local_part}}', \ + '${quote_pgsql:$host_address}', \ + '${quote_pgsql:${lc:$host}}', \ + '${quote_pgsql:$message_exim_id}')}} \ +} {}} The string is expanded after the delivery completes and any side-effects will happen. The result is then discarded. Note that for complex operations an ACL expansion can be used. +During the expansion the tpda_event variable will contain the +string-list "msg:delivery". + + +The expansion of the tpda_event_action option should normally +return an empty string. Should it return anything else the +following will be forced: + + msg:delivery (ignored) + msg:host:defer (ignored) + tcp:connect do not connect + tcp:close (ignored) + tls:cert refuse verification + smtp:connect close connection + + -In order to log host deferrals, add the following option to an SMTP -transport: - -tpda_host_defer_action - -This is a private option of the SMTP transport. It is intended to -log failures of remote hosts. It is executed only when exim has -attempted to deliver a message to a remote host and failed due to -an error which doesn't seem to be related to the individual -message, sender, or recipient address. -See section 47.2 of the exim documentation for more details on how -this is determined. - -Example: - -tpda_host_defer_action = \ -${lookup mysql {insert into delivlog set \ - msgid = '${quote_mysql:$message_exim_id}', \ - senderlp = '${quote_mysql:${lc:$sender_address_local_part}}', \ - senderdom = '${quote_mysql:$sender_address_domain}', \ - delivlp = '${quote_mysql:${lc:$tpda_delivery_local_part}}', \ - delivdom = '${quote_mysql:$tpda_delivery_domain}', \ - delivip = '${quote_mysql:$tpda_delivery_ip}', \ - delivport = '${quote_mysql:$tpda_delivery_port}', \ - delivfqdn = '${quote_mysql:$tpda_delivery_fqdn}', \ - deliverrno = '${quote_mysql:$tpda_defer_errno}', \ - deliverrstr = '${quote_mysql:$tpda_defer_errstr}' \ - }} Redis Lookup |