SIEVEC(1)

NAME
sievec - Sieve script compiler for the Dovecot secure IMAP server

SYNOPSIS
sievec [-d] [-x "extension extension ..."] script-file [out-file]

DESCRIPTION

The sievec command is part of the Sieve implementation for the Dovecot secure IMAP server. Sieve (RFC 5228) is a simple and highly extensible language for filtering e-mail messages. It can be implemented for any type of mail access protocol, mail architecture and operating system. The language cannot execute external programs and in its basic form it does not provide the means to cause infinite loops, making it suitable for running securely on mail servers where mail users have no permission run arbitrary programs.

Using the sievec command, Sieve scripts can be compiled into a binary representation. The resulting binary can be used directly to process e-mail messages during the delivery process. The delivery of mail messages and therefore also the execution of Sieve scripts is performed by Dovecot's local delivery agent (LDA) called deliver. Usually, it is not necessary to compile the Sieve script manually using sievec, because deliver will do this automatically if the binary is missing. However, in some cases deliver does not have permission to write the compiled binary to disk, forcing it to recompile the script every time it is executed. Using the sievec tool, this can be performed manually by an authorized user to increase performance.

The sievec command accepts two arguments: the script-file argument specifies the script to be compiled and the out-file argument specifies where the (binary) output is to be written. This Sieve implementation reconizes files with a .sieve extension as Sieve scripts and corresponding files with a .svbin extension as the associated compiled binary. This means for example that Dovecot's deliver process will look for a binary file 'dovecot.svbin' when it needs to execute 'dovecot.sieve'. Such filename is chosen automatically for the binary output when the out-file argument is missing.

If the script-file argument is a directory, all files in that directory with a .sieve extension are compiled into a corresponding .svbin binary file. The compilation is not halted upon errors; it attempts to compile as many scripts in the directory as possible. Note that the -d option and the out-file argument are not allowed when the script-file argument is a directory.

The sievec command is also useful to verify Sieve scripts before using. Additionally, with the -d option it can output a textual (and thus human-readable) dump of the generated Sieve code to the specified file. The output is then identical to what the sieved(1) command produces for a stored binary file. This output is mainly useful to find bugs in the compiler that yield corrupt binaries.

OPTIONS

-d  Don't write the binary to out-file, but write a textual dump of the binary in stead. In this context, the out-file value '-' has special meaning: it causes the the textual dump to be written to stdout. The out-file argument may also be omitted, which has the same effect as '-'. The output is identical to what the sieved(1) command produces for a compiled Sieve binary file. Note that this option is not allowed when the out-file argument is a directory.

-x "extension extension ..."
    Set the available extensions. The parameter is a space-separated list of the active extensions. By prepending the extension identifiers with + or -, extensions can be included or excluded relative to the default set of extensions. If no extensions have a + or - prefix, only those extensions that are explicitly listed will be enabled. Unknown extensions are ignored and a warning is produced. By default, all supported extensions are available, except for deprecated extensions or those that are still under development. For example -x "+imapflags -enotify" will enable the deprecated imapflags extension along with all extensions that are available by default, except for the enotify extension.

AUTHOR

The Sieve implementation for Dovecot was written by Stephan Bosch <stephan@rename-it.nl>.

Dovecot was written by Timo Sirainen <tss@iki.fi>.

SEE ALSO
sieved(1), sieve-test(1)