-. $Cambridge: exim/doc/doc-docbook/spec.xfpt,v 1.83 2010/06/07 07:09:10 pdp Exp $
+. $Cambridge: exim/doc/doc-docbook/spec.xfpt,v 1.84 2010/06/07 08:23:20 pdp Exp $
.
. /////////////////////////////////////////////////////////////////////////////
. This is the primary source of the Exim Manual. It is an xfpt document that is
${if bool{$acl_m_privileged_sender} ...
.endd
+.vitem &*bool_lax&~{*&<&'string'&>&*}*&
+.cindex "expansion" "boolean parsing"
+.cindex "&%bool_lax%& expansion condition"
+Like &%bool%&, this condition turns a string into a boolean state. But
+where &%bool%& accepts a strict set of strings, &%bool_lax%& uses the same
+loose definition that the Router &%condition%& option uses. The empty string
+and the values &"false"&, &"no"& and &"0"& map to false, all others map to
+true.
+
+Note that where &"bool{00}"& is false, &"bool_lax{00}"& is true.
+
.vitem &*crypteq&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*&
.cindex "expansion" "encrypted comparison"
.cindex "encrypted strings, comparing"
precondition to be evaluated, all the other preconditions must be true).
This option is unique in that multiple &%condition%& options may be present.
-In this case, the previous statement does not quite apply: the result of each
-&%condition%& option must be a string recognised by the &%bool%& expansion
-operator, or failure will be forced. The effect is to "and" the conditions
-together, as each must pass.
+All &%condition%& options must succeed.
The &%condition%& option provides a means of applying custom conditions to the
running of routers. Note that in the case of a simple conditional expansion,
.code
condition = ${if >{$message_age}{600}{true}{}}
.endd
-A multiple condition example:
+A multiple condition example, which succeeds:
.code
condition = ${if >{$message_age}{600}}
condition = ${if !eq{${lc:$local_part}}{postmaster}}
+condition = foobar
.endd
If the expansion fails (other than forced failure) delivery is deferred. Some
of the other precondition options are common special cases that could in fact