Prototype for strchrnul() on platforms lacking one (OpenBSD)
[exim.git] / doc / doc-docbook / filter.xfpt
index 4821ef17344680da98a85ff1da65a551851bd708..87c2682038a4f291152ccdf5fc73dfefb420c106 100644 (file)
@@ -8,6 +8,7 @@
 
 .include stdflags
 .include stdmacs
 
 .include stdflags
 .include stdmacs
+.include ./local_params
 .docbook
 
 . /////////////////////////////////////////////////////////////////////////////
 .docbook
 
 . /////////////////////////////////////////////////////////////////////////////
 .endmacro
 . ===========================================================================
 
 .endmacro
 . ===========================================================================
 
+. Copyright year.  Update this (only) when changing content.
+
+.macro copyyear
+2023
+.endmacro
+
+. ===========================================================================
 
 . /////////////////////////////////////////////////////////////////////////////
 . /////////////////////////////////////////////////////////////////////////////
 
 . /////////////////////////////////////////////////////////////////////////////
 . /////////////////////////////////////////////////////////////////////////////
 <bookinfo>
 <title>Exim's interfaces to mail filtering</title>
 <titleabbrev>Exim filtering</titleabbrev>
 <bookinfo>
 <title>Exim's interfaces to mail filtering</title>
 <titleabbrev>Exim filtering</titleabbrev>
-<date>23 November 2009</date>
+<date>
+.fulldate
+</date>
 <author><firstname>Philip</firstname><surname>Hazel</surname></author>
 <authorinitials>PH</authorinitials>
 <revhistory><revision>
 <author><firstname>Philip</firstname><surname>Hazel</surname></author>
 <authorinitials>PH</authorinitials>
 <revhistory><revision>
-  <revnumber>4.77</revnumber>
-  <date>10 Oct 2011</date>
+.versiondatexml
   <authorinitials>PH</authorinitials>
 </revision></revhistory>
   <authorinitials>PH</authorinitials>
 </revision></revhistory>
-<copyright><year>2010</year><holder>University of Cambridge</holder></copyright>
+<copyright><year>
+.copyyear
+           </year><holder>The Exim Maintainers</holder></copyright>
 </bookinfo>
 .literal off
 
 </bookinfo>
 .literal off
 
@@ -77,8 +88,8 @@
 
 .chapter "Forwarding and filtering in Exim" "CHAPforandfilt"
 This document describes the user interfaces to Exim's in-built mail filtering
 
 .chapter "Forwarding and filtering in Exim" "CHAPforandfilt"
 This document describes the user interfaces to Exim's in-built mail filtering
-facilities, and is copyright &copy; University of Cambridge 2007. It
-corresponds to Exim version 4.77.
+facilities, and is copyright &copy; The Exim Maintainers &copyyear(). It
+corresponds to Exim version &version().
 
 
 
 
 
 
@@ -274,9 +285,9 @@ in RFC 3028, which should be read in conjunction with these notes.
 The Exim Sieve implementation offers the core as defined by RFC 3028,
 comparison tests, the subaddress parameter, the &*copy*&, &*envelope*&,
 &*fileinto*&, &*notify*&, and &*vacation*& extensions, but not the &*reject*&
 The Exim Sieve implementation offers the core as defined by RFC 3028,
 comparison tests, the subaddress parameter, the &*copy*&, &*envelope*&,
 &*fileinto*&, &*notify*&, and &*vacation*& extensions, but not the &*reject*&
-extension. Exim does not support message delivery notifications (MDNs), so
-adding it just to the Sieve filter (as required for &*reject*&) makes little
-sense.
+extension.
+Exim did not support message delivery notifications (MDNs) when Sieve handling
+was introduced, so &*reject*& (which need them) could not be supported.
 
 In order for Sieve to work properly in Exim, the system administrator needs to
 make some adjustments to the Exim configuration. These are described in the
 
 In order for Sieve to work properly in Exim, the system administrator needs to
 make some adjustments to the Exim configuration. These are described in the
@@ -344,10 +355,14 @@ contains an additional address besides the one the test checks for.
 
 
 .section "Semantics of keep" "SEC11"
 
 
 .section "Semantics of keep" "SEC11"
-The &(keep)& command is equivalent to
+.new
+The &(keep)& command is by default equivalent to
 .code
 fileinto "inbox";
 .endd
 .code
 fileinto "inbox";
 .endd
+but, when called from a redirect router, the destination can be set
+by using the &%sieve_inbox%& option on the router.
+.wen
 It saves the message and resets the implicit keep flag. It does not set the
 implicit keep flag; there is no command to set it once it has been reset.
 
 It saves the message and resets the implicit keep flag. It does not set the
 implicit keep flag; there is no command to set it once it has been reset.
 
@@ -1178,7 +1193,9 @@ been obeyed, the &(logwrite)& command can be used to write to it:
 &`e.g. logwrite "$tod_log $message_id processed"`&
 .endd
 It is possible to have more than one &(logfile)& command, to specify writing to
 &`e.g. logwrite "$tod_log $message_id processed"`&
 .endd
 It is possible to have more than one &(logfile)& command, to specify writing to
-different log files in different circumstances. Writing takes place at the end
+different log files in different circumstances.
+A previously opened log is closed on a subsequent &(logfile)& command.
+Writing takes place at the end
 of the file, and a newline character is added to the end of each string if
 there isn't one already there. Newlines can be put in the middle of the string
 by using the &"\n"& escape sequence. Lines from simultaneous deliveries may get
 of the file, and a newline character is added to the end of each string if
 there isn't one already there. Newlines can be put in the middle of the string
 by using the &"\n"& escape sequence. Lines from simultaneous deliveries may get
@@ -1330,7 +1347,7 @@ A &"contains"& test does a partial string match, having expanded both strings.
 .endd
 
 For a &"matches"& test, after expansion of both strings, the second one is
 .endd
 
 For a &"matches"& test, after expansion of both strings, the second one is
-interpreted as a regular expression. Exim uses the PCRE regular expression
+interpreted as a regular expression. Exim uses the PCRE2 regular expression
 library, which provides regular expressions that are compatible with Perl.
 
 The match succeeds if the regular expression matches any part of the first
 library, which provides regular expressions that are compatible with Perl.
 
 The match succeeds if the regular expression matches any part of the first