Merge branch 'master' of ssh://git.exim.org/home/git/exim
authorTodd Lyons <tlyons@exim.org>
Tue, 15 Apr 2014 16:53:43 +0000 (09:53 -0700)
committerTodd Lyons <tlyons@exim.org>
Tue, 15 Apr 2014 16:53:43 +0000 (09:53 -0700)
Fixed Conflicts:
doc/doc-txt/ChangeLog

1  2 
doc/doc-docbook/spec.xfpt
doc/doc-txt/ChangeLog

index 04678b4808c3e40ef28177174f20893c901fbb74,f7636f85a3f2b9be758fd0c93dd3aba0b5a39797..86090290bffd91218f1aec30ea426401e4db30d5
@@@ -6840,7 -6840,7 +6840,7 @@@ is used on its own as the result. If th
  &`fail`& keyword causes a &'forced expansion failure'& &-- see section
  &<<SECTforexpfai>>& for an explanation of what this means.
  
- The supported DNS record types are A, CNAME, MX, NS, PTR, SPF, SRV, and TXT,
+ The supported DNS record types are A, CNAME, MX, NS, PTR, SPF, SRV, TLSA 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
@@@ -8298,14 -8298,7 +8298,14 @@@ Both &`+include_unknown`& and &`+ignore
  list. The effect of each one lasts until the next, or until the end of the
  list.
  
 -To explain the host/ip processing logic a different way for the same ACL:
 +.new
 +.section "Mixing wildcarded host names and addresses in host lists" &&&
 +         "SECTmixwilhos"
 +.cindex "host list" "mixing names and addresses in"
 +
 +This section explains the host/ip processing logic with the same concepts
 +as the previous section, but specifically addresses what happens when a
 +wildcarded hostname is one of the items in the hostlist.
  
  .ilist
  If you have name lookups or wildcarded host names and
@@@ -8334,7 -8327,7 +8334,7 @@@ If the first &%accept%& fails, Exim goe
  &`+ignore_unknown`&, which was discussed in depth in the first example in
  this section.
  .endlist
 -
 +.wen
  
  
  .section "Temporary DNS errors when looking up host information" &&&
@@@ -8406,6 -8399,33 +8406,6 @@@ See section &<<SECThoslispatsikey>>&.
  
  
  
 -.section "Mixing wildcarded host names and addresses in host lists" &&&
 -         "SECTmixwilhos"
 -.cindex "host list" "mixing names and addresses in"
 -If you have name lookups or wildcarded host names and IP addresses in the same
 -host list, you should normally put the IP addresses first. For example, in an
 -ACL you could have:
 -.code
 -accept hosts = 10.9.8.7 : *.friend.example
 -.endd
 -The reason for this lies in the left-to-right way that Exim processes lists.
 -It can test IP addresses without doing any DNS lookups, but when it reaches an
 -item that requires a host name, it fails if it cannot find a host name to
 -compare with the pattern. If the above list is given in the opposite order, the
 -&%accept%& statement fails for a host whose name cannot be found, even if its
 -IP address is 10.9.8.7.
 -
 -If you really do want to do the name check first, and still recognize the IP
 -address, you can rewrite the ACL like this:
 -.code
 -accept hosts = *.friend.example
 -accept hosts = 10.9.8.7
 -.endd
 -If the first &%accept%& fails, Exim goes on to try the second one. See chapter
 -&<<CHAPACL>>& for details of ACLs.
 -
 -
 -
  
  
  .section "Address lists" "SECTaddresslist"
@@@ -16727,11 -16747,12 +16727,12 @@@ and the discussion in chapter &<<CHAPen
  
  
  
- .option headers_add routers string&!! unset
+ .option headers_add routers list&!! unset
  .cindex "header lines" "adding"
  .cindex "router" "adding header lines"
- This option specifies a string of text that is expanded at routing time, and
- associated with any addresses that are accepted by the router. However, this
+ This option specifies a list of text headers, newline-separated,
+ that is associated with any addresses that are accepted by the router.
+ Each item is separately expanded, at routing time.  However, this
  option has no effect when an address is just being verified. The way in which
  the text is used to add header lines at transport time is described in section
  &<<SECTheadersaddrem>>&. New header lines are not actually added until the
@@@ -16740,8 -16761,8 +16741,8 @@@ header lines in string expansions in th
  &"see"& the added header lines.
  
  The &%headers_add%& option is expanded after &%errors_to%&, but before
- &%headers_remove%& and &%transport%&. If the expanded string is empty, or if
the expansion is forced to fail, the option has no effect. Other expansion
+ &%headers_remove%& and &%transport%&. If an item is empty, or if
an item expansion is forced to fail, the item has no effect. Other expansion
  failures are treated as configuration errors.
  
  Unlike most options, &%headers_add%& can be specified multiple times
@@@ -16763,11 -16784,12 +16764,12 @@@ avoided. The &%repeat_use%& option of t
  
  
  
- .option headers_remove routers string&!! unset
+ .option headers_remove routers list&!! unset
  .cindex "header lines" "removing"
  .cindex "router" "removing header lines"
- This option specifies a string of text that is expanded at routing time, and
- associated with any addresses that are accepted by the router. However, this
+ This option specifies a list of text headers, colon-separated,
+ that is associated with any addresses that are accepted by the router.
+ Each item is separately expanded, at routing time.  However, this
  option has no effect when an address is just being verified. The way in which
  the text is used to remove header lines at transport time is described in
  section &<<SECTheadersaddrem>>&. Header lines are not actually removed until
@@@ -16776,8 -16798,8 +16778,8 @@@ to header lines in string expansions i
  &"see"& the original header lines.
  
  The &%headers_remove%& option is expanded after &%errors_to%& and
- &%headers_add%&, but before &%transport%&. If the expansion is forced to fail,
- the option has no effect. Other expansion failures are treated as configuration
+ &%headers_add%&, but before &%transport%&. If an item expansion is forced to fail,
+ the item has no effect. Other expansion failures are treated as configuration
  errors.
  
  Unlike most options, &%headers_remove%& can be specified multiple times
@@@ -19777,10 -19799,11 +19779,11 @@@ value that the router supplies, and als
  &%user%& (see below).
  
  
- .option headers_add transports string&!! unset
+ .option headers_add transports list&!! unset
  .cindex "header lines" "adding in transport"
  .cindex "transport" "header lines; adding"
- This option specifies a string of text that is expanded and added to the header
+ This option specifies a list of text headers, newline-separated,
+ which are (separately) expanded and added to the header
  portion of a message as it is transported, as described in section
  &<<SECTheadersaddrem>>&. Additional header lines can also be specified by
  routers. If the result of the expansion is an empty string, or if the expansion
@@@ -19801,18 -19824,20 +19804,20 @@@ transports, the settings of &%message_p
  checked, since this option does not automatically suppress them.
  
  
- .option headers_remove transports string&!! unset
+ .option headers_remove transports list&!! unset
  .cindex "header lines" "removing"
  .cindex "transport" "header lines; removing"
- This option specifies a string that is expanded into a list of header names;
+ This option specifies a list of header names, colon-separated;
  these headers are omitted from the message as it is transported, as described
  in section &<<SECTheadersaddrem>>&. Header removal can also be specified by
- routers. If the result of the expansion is an empty string, or if the expansion
+ routers.
+ Each list item is separately expanded.
+ If the result of the expansion is an empty string, or if the expansion
  is forced to fail, no action is taken. Other expansion failures are treated as
  errors and cause the delivery to be deferred.
  
  Unlike most options, &%headers_remove%& can be specified multiple times
- for a router; all listed headers are added.
+ for a router; all listed headers are removed.
  
  
  
@@@ -31963,7 -31988,7 +31968,7 @@@ they do not affect the values of the va
  the transport cannot refer to the modified header lines, because such
  expansions all occur before the message is actually transported.
  
- For both routers and transports, the result of expanding a &%headers_add%&
+ For both routers and transports, the argument of a &%headers_add%&
  option must be in the form of one or more RFC 2822 header lines, separated by
  newlines (coded as &"\n"&). For example:
  .code
@@@ -31973,10 -31998,10 +31978,10 @@@ headers_add = X-added-header: added by 
  Exim does not check the syntax of these added header lines.
  
  Multiple &%headers_add%& options for a single router or transport can be
- specified; the values will be concatenated (with a separating newline
added) before expansion.
+ specified; the values will append to a single list of header lines.
Each header-line is separately expanded.
  
- The result of expanding &%headers_remove%& must consist of a colon-separated
+ The argument of a &%headers_remove%& option must consist of a colon-separated
  list of header names. This is confusing, because header names themselves are
  often terminated by colons. In this case, the colons are the list separators,
  not part of the names. For example:
@@@ -31985,11 -32010,12 +31990,12 @@@ headers_remove = return-receipt-to:ackn
  .endd
  
  Multiple &%headers_remove%& options for a single router or transport can be
- specified; the values will be concatenated (with a separating colon
added) before expansion.
+ specified; the arguments will append to a single header-names list.
Each item is separately expanded.
  
- When &%headers_add%& or &%headers_remove%& is specified on a router, its value
- is expanded at routing time, and then associated with all addresses that are
+ When &%headers_add%& or &%headers_remove%& is specified on a router,
+ items are expanded at routing time,
+ and then associated with all addresses that are
  accepted by that router, and also with any new addresses that it generates. If
  an address passes through several routers as a result of aliasing or
  forwarding, the changes are cumulative.
diff --combined doc/doc-txt/ChangeLog
index c459a0f40d2ebc2cacb2fb9613ed4995b1d0060b,cc136b83cca8d27358f62798cd888b9970fdad2a..17e8091cefcf938f96c86b817b1bd60b8d663a9c
@@@ -64,8 -64,15 +64,17 @@@ JH/09 Bugzilla 1431: Support (with limi
  JH/10 Bugzilla 1005: ACL "condition =" should accept values which are negative
        numbers.  Touch up "bool" conditional to keep the same definition.
  
 +TL/06 Remove duplicated language in spec file from 4.82 TL/16.
 +
+ JH/11 Add dnsdb tlsa lookup.  From Todd Lyons.
+ JH/12 Expand items in router/transport headers_add or headers_remove lists
+       individually rather than the list as a whole.  Bug 1452.
+       Required for reasonable handling of multiple headers_ options when
+       they may be empty; requires that headers_remove items with embedded
+       colons must have them doubled (or the list-separator changed).
  
  Exim version 4.82
  -----------------