snappymail/dev/Sieve/README.md
2024-09-22 16:36:12 +02:00

289 lines
8 KiB
Markdown

https://www.iana.org/assignments/sieve-extensions/sieve-extensions.xhtml
- [ ] RFC2852 envelope-deliverby / redirect-deliverby
- [ ] RFC3461 envelope-dsn / redirect-dsn
- [x] RFC3894 copy
- [ ] RFC4790 comparator-*
- [x] RFC5173 body
- [x] RFC5183 environment
- [x] RFC5228 encoded-character / envelope / fileinto
- [x] RFC5229 variables
- [x] RFC5230 vacation
- [x] RFC5231 relational
- [x] RFC5232 imap4flags
- [x] RFC5233 subaddress
- [x] RFC5235 spamtest / spamtestplus / virustest
- [x] RFC5260 date / index
- [x] RFC5293 editheader
- [x] RFC5429 ereject / reject
- [x] RFC5435 enotify
- [x] RFC5463 ihave
- [x] RFC5490 mailbox / mboxmetadata / servermetadata
- [x] RFC5703 enclose / extracttext / foreverypart / mime / replace
- [x] RFC6131 vacation-seconds
- [ ] RFC6134 extlists
- [ ] RFC6558 convert
- [x] 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;