Previous   Next   Contents       (Exim Filter Specification)

22. Obeying commands conditionally

Most of the power of filtering comes from the ability to test conditions and obey different commands depending on the outcome. The if command is used to specify conditional execution, and its general form is

  if <condition>
  then <commands>
  elif <condition>
  then <commands>
  else <commands>
  endif

There may be any number of elif and then sections (including none) and the else section is also optional. Any number of commands, including nested if commands, may appear in any of the <commands> sections.

Conditions can be combined by using the words and and or, and round brackets (parentheses) can be used to specify how several conditions are to combine. Without brackets, and is more binding than or. For example,

  if
    $h_subject: contains "Make money" or
    $h_precedence: is "junk" or
    ($h_sender: matches ^\\d{8}@ and not personal) or
    $message_body contains "this is spam"
  then
    seen finish
  endif

A condition can be preceded by not to negate it, and there are also some negative forms of condition that are more English-like.


Previous  Next  Contents       (Exim Filter Specification)