Files

https://www.iana.org/assignments/sieve-extensions/sieve-extensions.xhtml

  • RFC2852 envelope-deliverby / redirect-deliverby
  • RFC3461 envelope-dsn / redirect-dsn
  • RFC3894 copy
  • RFC4790 comparator-*
  • RFC5051 i;unicode-casemap
  • RFC5173 body
  • RFC5183 environment
  • RFC5228 encoded-character / envelope / fileinto
  • RFC5229 variables
  • RFC5230 vacation
  • RFC5231 relational
  • RFC5232 imap4flags
  • RFC5233 subaddress
  • RFC5235 spamtest / spamtestplus / virustest
  • RFC5260 date / index
  • RFC5293 editheader
  • RFC5429 ereject / reject
  • RFC5435 enotify
  • RFC5463 ihave
  • RFC5490 mailbox / mboxmetadata / servermetadata
  • RFC5703 enclose / extracttext / foreverypart / mime / replace
  • RFC6131 vacation-seconds
  • RFC6134 extlists
  • RFC6558 convert
  • RFC6609 include
  • RFC6785 imapsieve
  • RFC7352 duplicate
  • RFC8579 special-use
  • RFC8580 fcc
  • RFC regex https://tools.ietf.org/html/draft-ietf-sieve-regex-01
  • vnd.cyrus.*
  • vnd.dovecot.*

Classes

abstract GrammarCommand

identifier = identifier || constructor.name.toLowerCase().replace(/(test|command|action)$/, '');
arguments = []; only initialized at pushArguments()

abstract ControlCommand extends GrammarCommand

IncludeCommand extends ControlCommand

global = false; // ':personal' / ':global';
once = false;
optional = false;
value = new GrammarQuotedString;

ReturnCommand extends ControlCommand

no properties

GlobalCommand extends ControlCommand

value = new GrammarStringList;

ForEveryPartCommand extends ControlCommand

_name = new GrammarString;
commands = new GrammarCommands;

ErrorCommand extends ControlCommand

message = new GrammarQuotedString;

RequireCommand extends ControlCommand

capabilities = new GrammarStringList();

StopCommand extends ControlCommand

no properties

abstract ConditionalCommand extends ControlCommand

no properties

IfCommand extends ConditionalCommand

test = null; // must be descendent instanceof TestCommand
commands = new GrammarCommands;

ElsIfCommand extends IfCommand

test = null; // must be descendent instanceof TestCommand
commands = new GrammarCommands;

ElseCommand extends ConditionalCommand

no properties
commands = new GrammarCommands;

abstract ActionCommand extends GrammarCommand

FileIntoCommand extends ActionCommand

_mailbox = new GrammarQuotedString();
copy = false;
create = false;

RedirectCommand extends ActionCommand

_address = new GrammarQuotedString();
copy = false;
list = null;

KeepCommand extends ActionCommand

no properties

DiscardCommand extends ActionCommand

no properties

SetCommand extends ActionCommand

modifiers = [];
_name    = new GrammarQuotedString;
_value   = new GrammarQuotedString;

VacationCommand extends ActionCommand

_days      = new GrammarNumber;
_seconds   = new GrammarNumber;
_subject   = new GrammarQuotedString;
_from      = new GrammarQuotedString;
addresses  = new GrammarStringList;
mime       = false;
_handle    = new GrammarQuotedString;
_reason    = new GrammarQuotedString; // QuotedString / MultiLine

SetFlagCommand extends ActionCommand

_variablename = new GrammarQuotedString;
list_of_flags = new GrammarStringList;

AddFlagCommand extends ActionCommand

_variablename = new GrammarQuotedString;
list_of_flags = new GrammarStringList;

RemoveFlagCommand extends ActionCommand

_variablename = new GrammarQuotedString;
list_of_flags = new GrammarStringList;

AddHeaderCommand extends ActionCommand

last       = false;
field_name = new GrammarQuotedString;
value      = new GrammarQuotedString;

DeleteHeaderCommand extends ActionCommand

index          = new GrammarNumber;
last           = false;
comparator     = '',
match_type     = ':is',
field_name     = new GrammarQuotedString;
value_patterns = new GrammarStringList;

ErejectCommand extends ActionCommand

_reason = new GrammarQuotedString;

RejectCommand extends ActionCommand

_reason = new GrammarQuotedString;

NotifyCommand extends ActionCommand

_method = new GrammarQuotedString;
_from = new GrammarQuotedString;
_importance = new GrammarNumber;
options = new GrammarStringList;
_message = new GrammarQuotedString;

ReplaceCommand extends ActionCommand

mime        = false;
_subject    = new GrammarQuotedString;
_from       = new GrammarQuotedString;
replacement = new GrammarQuotedString;

EncloseCommand extends ActionCommand

_subject    = new GrammarQuotedString;
headers     = new GrammarStringList;

ExtractTextCommand extends ActionCommand

modifiers = [];
_first    = new GrammarNumber;
varname   = new GrammarQuotedString;

abstract TestCommand extends GrammarCommand

AddressTest extends TestCommand

address_part = ':all';
header_list  = new GrammarStringList;
key_list     = new GrammarStringList;
index        = new GrammarNumber;
last         = false;

// mime // anychild

AllOfTest extends TestCommand

tests = new GrammarTestList;

AnyOfTest extends TestCommand

tests = new GrammarTestList;

EnvelopeTest extends TestCommand

address_part = ':all';
envelope_part = new GrammarStringList;
key_list      = new GrammarStringList;

ExistsTest extends TestCommand

header_names = new GrammarStringList;

// mime // anychild

FalseTest extends TestCommand

HeaderTest extends TestCommand

address_part = ':all';
header_names = new GrammarStringList;
key_list     = new GrammarStringList;
index        = new GrammarNumber;
last         = false;
mime         = false;
anychild     = false;
// when ":mime" is used:
type         = false;
subtype      = false;
contenttype  = false;
param        = new GrammarStringList;

NotTest extends TestCommand

test = new TestCommand;

SizeTest extends TestCommand

mode  = ':over'; // :under
limit = 0;

TrueTest extends TestCommand

BodyTest extends TestCommand

body_transform = ''; // :raw, :content <string-list>, :text
key_list = new GrammarStringList;

EnvironmentTest extends TestCommand

name     = new GrammarQuotedString;
key_list = new GrammarStringList;

StringTest extends TestCommand

source   = new GrammarStringList;
key_list = new GrammarStringList;

HasFlagTest extends TestCommand

variable_list = new GrammarStringList;
list_of_flags = new GrammarStringList;

SpamTestTest extends TestCommand

percent = false, // 0 - 100 else 0 - 10
value = new GrammarQuotedString;

VirusTestTest extends TestCommand

value = new GrammarQuotedString; // 1 - 5

DateTest extends TestCommand

zone         = new GrammarQuotedString;
originalzone = false;
header_name  = new GrammarQuotedString;
date_part    = new GrammarQuotedString;
key_list     = new GrammarStringList;
index        = new GrammarNumber;
last         = false;

CurrentDateTest extends TestCommand

zone       = new GrammarQuotedString;
date_part  = new GrammarQuotedString;
key_list   = new GrammarStringList;

ValidNotifyMethodTest extends TestCommand

notification_uris = new GrammarStringList;

NotifyMethodCapabilityTest extends TestCommand

notification_uri = new GrammarQuotedString;
notification_capability = new GrammarQuotedString;
key_list = new GrammarStringList;

IHaveTest extends TestCommand

capabilities = new GrammarStringList;

MailboxExistsTest extends TestCommand

mailbox_names = new GrammarStringList;

MetadataTest extends TestCommand

mailbox = new GrammarQuotedString;
annotation_name = new GrammarQuotedString;
key_list = new GrammarStringList;

MetadataExistsTest extends TestCommand

mailbox = new GrammarQuotedString;
annotation_names = new GrammarStringList;

ServerMetadataTest extends TestCommand

annotation_name = new GrammarQuotedString;
key_list = new GrammarStringList;

ServerMetadataExistsTest extends TestCommand

annotation_names = new GrammarStringList;

ValidExtListTest extends TestCommand

ext_list_names = new GrammarStringList;