Bugzilla 663: explain that $spam_score and $spam_score_int may appear to disagree.
[exim.git] / doc / doc-docbook / spec.xfpt
index a4bbac4bfe3d5a65cabfb99a666db2f4ebbbf6c9..d3a1f758e362cb10435875244020979b5aec66dd 100644 (file)
@@ -1,4 +1,4 @@
-. $Cambridge: exim/doc/doc-docbook/spec.xfpt,v 1.28 2008/01/17 12:56:12 nm4 Exp $
+. $Cambridge: exim/doc/doc-docbook/spec.xfpt,v 1.30 2008/01/28 18:30:29 fanf2 Exp $
 .
 . /////////////////////////////////////////////////////////////////////////////
 . This is the primary source of the Exim Manual. It is an xfpt document that is
@@ -28047,6 +28047,10 @@ condition defers.
 &*Warning*&: It is not possible to use the UNIX socket connection method with
 multiple &%spamd%& servers.
 
+The &%spamd_address%& variable is expanded before use if it starts with
+a dollar sign. In this case, the expansion may return a string that is
+used as the list so that multiple spamd servers can be the result of an
+expansion.
 
 .section "Calling SpamAssassin from an Exim ACL" "SECID206"
 Here is a simple example of the use of the &%spam%& condition in a DATA ACL:
@@ -28100,7 +28104,9 @@ for inclusion in log or reject messages.
 
 .vitem &$spam_score_int$&
 The spam score of the message, multiplied by ten, as an integer value. For
-example &"34"& or &"305"&. This is useful for numeric comparisons in
+example &"34"& or &"305"&. It may appear to disagree with &$spam_score$&
+because &$spam_score$& is rounded and &$spam_score_int$& is truncated.
+The integer value is useful for numeric comparisons in
 conditions. This variable is special; its value is saved with the message, and
 written to Exim's spool file. This means that it can be used during the whole
 life of the message on your Exim system, in particular, in routers or
@@ -28117,14 +28123,15 @@ A multiline text table, containing the full SpamAssassin report for the
 message. Useful for inclusion in headers or reject messages.
 .endlist
 
-The &%spam%& condition caches its results. If you call it again with the same
-user name, it does not scan again, but rather returns the same values as
-before.
+The &%spam%& condition caches its results unless expansion in
+spamd_address was used. If you call it again with the same user name, it
+does not scan again, but rather returns the same values as before.
 
-The &%spam%& condition returns DEFER if there is any error while running the
-message through SpamAssassin. If you want to treat DEFER as FAIL (to pass on to
-the next ACL statement block), append &`/defer_ok`& to the right-hand side of
-the spam condition, like this:
+The &%spam%& condition returns DEFER if there is any error while running
+the message through SpamAssassin or if the expansion of spamd_address
+failed. If you want to treat DEFER as FAIL (to pass on to the next ACL
+statement block), append &`/defer_ok`& to the right-hand side of the
+spam condition, like this:
 .code
 deny message = This message was classified as SPAM
      spam    = joe/defer_ok