Sieve is a
data-driven programming language, similar to earlier email filtering languages such as
procmail and
maildrop, and earlier line-oriented languages such as
sed and
AWK: it specifies conditions to match and actions to take on matching. This differs from
general-purpose programming languages. While Sieve has many limitations – the base standard has no variables and no loops – it does allow conditional branching, preventing runaway programs. These limitations generally confine the language to simple filtering operations. Although extensions have been devised to extend the language to include variables and, limited loops, the language is still highly restricted, and thus suitable for running user-devised programs as part of the mail system. There are also a significant number of restrictions on the
grammar of the language, in order to reduce the complexity of parsing the language, but the language also supports the use of multiple methods for comparing localized strings, and is fully
Unicode-aware. While Sieve was originally conceived as tool external to SMTP, precognitively extends it in order to allow rejection at the SMTP protocol level. ==Use==