Merge branch 'lists'
authorJeremy Harris <jgh146exb@wizmail.org>
Tue, 12 Jun 2012 20:43:58 +0000 (21:43 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Tue, 12 Jun 2012 20:43:58 +0000 (21:43 +0100)
1  2 
doc/doc-docbook/spec.xfpt
doc/doc-txt/ChangeLog

index 0cdc9865716cbb529e46a4c684f33a956cf1a229,675d3f9561a95087403bba3baa1f342585bfafd6..dcf6b6cfb0a2bbecc9a059cb67c4162ee89286f2
@@@ -5369,7 -5369,7 +5369,7 @@@ it is unset, Exim uses the &[uname()]& 
  
  The first three non-comment configuration lines are as follows:
  .code
 -domainlist local_domains = @
 +domainlist local_domains    = @
  domainlist relay_to_domains =
  hostlist   relay_from_hosts = 127.0.0.1
  .endd
@@@ -5711,7 -5711,7 +5711,7 @@@ examples described in &<<SECTdefconfaut
  fact authenticate until you complete the authenticator definitions.
  .code
  require message = relay not permitted
 -        domains = +local_domains : +relay_domains
 +        domains = +local_domains : +relay_to_domains
  .endd
  This statement rejects the address if its domain is neither a local domain nor
  one of the domains for which this host is a relay.
@@@ -7485,7 -7485,7 +7485,7 @@@ ${lookup sqlite {/some/thing/sqlitedb 
  .endd
  In a list, the syntax is similar. For example:
  .code
 -domainlist relay_domains = sqlite;/some/thing/sqlitedb \
 +domainlist relay_to_domains = sqlite;/some/thing/sqlitedb \
     select * from relays where ip='$sender_host_address';
  .endd
  The only character affected by the &%quote_sqlite%& operator is a single
@@@ -7567,13 -7567,13 +7567,13 @@@ subject is not in the set. If the end o
  subject having matched any of the patterns, it is in the set if the last item
  was a negative one, but not if it was a positive one. For example, the list in
  .code
 -domainlist relay_domains = !a.b.c : *.b.c
 +domainlist relay_to_domains = !a.b.c : *.b.c
  .endd
  matches any domain ending in &'.b.c'& except for &'a.b.c'&. Domains that match
  neither &'a.b.c'& nor &'*.b.c'& do not match, because the last item in the
  list is positive. However, if the setting were
  .code
 -domainlist relay_domains = !a.b.c
 +domainlist relay_to_domains = !a.b.c
  .endd
  then all domains other than &'a.b.c'& would match because the last item in the
  list is negative. In other words, a list that ends with a negative item behaves
@@@ -7677,7 -7677,7 +7677,7 @@@ the words &%domainlist%&, &%hostlist%&
  respectively. Then there follows the name that you are defining, followed by an
  equals sign and the list itself. For example:
  .code
 -hostlist    relay_hosts = 192.168.23.0/24 : my.friend.example
 +hostlist    relay_from_hosts = 192.168.23.0/24 : my.friend.example
  addresslist bad_senders = cdb;/etc/badsenders
  .endd
  A named list may refer to other named lists:
@@@ -9567,6 -9567,7 +9567,7 @@@ environments where Exim uses base 36 in
  identifiers, base-36 digits. The number is converted to decimal and output as a
  string.
  
  .vitem &*${domain:*&<&'string'&>&*}*&
  .cindex "domain" "extraction"
  .cindex "expansion" "domain extraction"
@@@ -9726,6 -9727,25 +9727,25 @@@ See the description of the general &%le
  when &%length%& is used as an operator.
  
  
+ .vitem &*${listcount:*&<&'string'&>&*}*&
+ .cindex "expansion" "list item count"
+ .cindex "list" "item count"
+ .cindex "list" "count of items"
+ .cindex "&%listcount%& expansion item"
+ The string is interpreted as a list and the number of items is returned.
+ .vitem &*${listnamed:*&<&'name'&>&*}*&&~and&~&*${list_*&<&'type'&>&*name'&>&*}*&
+ .cindex "expansion" "named list"
+ .cindex "&%listnamed%& expansion item"
+ The name is interpreted as a named list and the content of the list is returned,
+ expanding any referenced lists, re-quoting as needed for colon-separation.
+ If the optional type if given it must be one of "a", "d", "h" or "l"
+ and selects address-, domain-, host- or localpart- lists to search among respectively.
+ Otherwise all types are searched in an undefined order and the first
+ matching list is returned.
  .vitem &*${local_part:*&<&'string'&>&*}*&
  .cindex "expansion" "local part extraction"
  .cindex "&%local_part%& expansion item"
@@@ -15168,7 -15188,7 +15188,7 @@@ live with
  . Allow this long option name to split; give it unsplit as a fifth argument
  . for the automatic .oindex that is generated by .option.
  
 -.option "smtp_accept_max_per_ &~&~connection" main integer 1000 &&&
 +.option "smtp_accept_max_per_connection" main integer 1000 &&&
           smtp_accept_max_per_connection
  .cindex "SMTP" "limiting incoming message count"
  .cindex "limit" "messages per SMTP connection"
@@@ -29032,16 -29052,16 +29052,16 @@@ Suppose your LAN is 192.168.45.0/24
  
  In the main part of the configuration, you put the following definitions:
  .code
 -domainlist local_domains = my.dom1.example : my.dom2.example
 -domainlist relay_domains = friend1.example : friend2.example
 -hostlist   relay_hosts   = 192.168.45.0/24
 +domainlist local_domains    = my.dom1.example : my.dom2.example
 +domainlist relay_to_domains = friend1.example : friend2.example
 +hostlist   relay_from_hosts = 192.168.45.0/24
  .endd
  Now you can use these definitions in the ACL that is run for every RCPT
  command:
  .code
  acl_check_rcpt:
 -  accept domains = +local_domains : +relay_domains
 -  accept hosts   = +relay_hosts
 +  accept domains = +local_domains : +relay_to_domains
 +  accept hosts   = +relay_from_hosts
  .endd
  The first statement accepts any RCPT command that contains an address in
  the local or relay domains. For any other domain, control passes to the second
diff --combined doc/doc-txt/ChangeLog
index bd0628637dc8fc94a85ef2491c04963b5dbede33,1bf2cd06b36eb5f18cb55991d365cb6e7c823dee..34521098e3dbfde4bf6153a35f947dedd951e7c4
@@@ -39,9 -39,9 +39,11 @@@ JH/02 Support "G" suffix to numbers in 
  
  PP/08 Handle smtp transport tls_sni option forced-fail for OpenSSL.
  
 -JH/03 Add expansion operators ${listnamed:name} and ${listcount:string}
 +NM/01 Bugzilla 1197 - Spec typo
 +      Bugzilla 1196 - Spec examples corrections
  
++JH/03 Add expansion operators ${listnamed:name} and ${listcount:string}
  Exim version 4.80
  -----------------