SieveUserInterpreter
Configures the user-level Sieve script interpreter settings and limits.
This object can be configured from the WebUI under Settings › Sieve › User Interpreter
Fields
defaultExpiryDuplicate
Type:
Duration· default:"7d"Default expiration time for IDs stored by the duplicate extension from user scripts
defaultExpiryVacation
Type:
Duration· default:"30d"Default expiration time for IDs stored by the vacation extension
disableCapabilities
Type:
SieveCapability[]List of capabilities to disable in the user interpreter
allowedNotifyUris
Type:
String[]· default:["mailto"]List of allowed URIs for the notify extension
protectedHeaders
Type:
String[]· default:["Original-Subject","Original-From","Received","Auto-Submitted"]List of headers that cannot be deleted or added using the editheader extension
defaultSubject
Type:
String· default:"Automated reply"Default subject of vacation responses
defaultSubjectPrefix
Type:
String· default:"Auto: "Default subject prefix of vacation responses
maxCpuCycles
Type:
UnsignedInt· default:5000· min: 1Maximum number CPU cycles a script can use
maxHeaderSize
Type:
UnsignedInt· default:1024· min: 1Maximum size of a header
maxIncludes
Type:
UnsignedInt· default:3· min: 1Maximum number of includes
maxLocalVars
Type:
UnsignedInt· default:128· min: 1Maximum number of local variables
maxMatchVars
Type:
UnsignedInt· default:30· min: 1Maximum number of match variables
maxScriptNameLength
Type:
UnsignedInt· default:512· min: 1Maximum length of a script name
maxNestedBlocks
Type:
UnsignedInt· default:15· min: 1Maximum number of nested blocks
maxNestedForEvery
Type:
UnsignedInt· default:3· min: 1Maximum number of nested foreach blocks
maxNestedIncludes
Type:
UnsignedInt· default:3· min: 1Maximum number of nested includes
maxNestedTests
Type:
UnsignedInt· default:15· min: 1Maximum number of nested tests
maxOutMessages
Type:
UnsignedInt· default:3Maximum number of outgoing messages
maxReceivedHeaders
Type:
UnsignedInt· default:10· min: 1Maximum number of received headers
maxRedirects
Type:
UnsignedInt· default:1Maximum number of redirects
maxScriptSize
Type:
Size· default:"100kb"· min: 1Maximum size of a script
maxStringLength
Type:
UnsignedInt· default:4096· min: 1Maximum length of a string
maxVarNameLength
Type:
UnsignedInt· default:32· min: 1Maximum length of a variable name
maxVarSize
Type:
UnsignedInt· default:4096· min: 1Maximum size of a variable
maxScripts
Type:
UnsignedInt?· default:100· min: 1The default maximum number of sieve scripts a user can create
JMAP API
The SieveUserInterpreter singleton is available via the urn:stalwart:jmap capability.
x:SieveUserInterpreter/get
This is a standard Foo/get method as defined in RFC 8620, Section 5.1.
For singletons, the ids argument should be the literal singleton (or null to return the single instance).
This method requires the sysSieveUserInterpreterGet permission.
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:SieveUserInterpreter/get",
{
"ids": [
"singleton"
]
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'
x:SieveUserInterpreter/set
This is a standard Foo/set method as defined in RFC 8620, Section 5.3.
For singletons, only the update argument with id singleton is accepted; create and destroy arguments are rejected.
This method requires the sysSieveUserInterpreterUpdate permission.
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:SieveUserInterpreter/set",
{
"update": {
"singleton": {
"defaultSubject": "updated value"
}
}
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'
CLI
stalwart-cli wraps the same JMAP calls. See the CLI reference for installation, authentication, and general usage.
Fetch
stalwart-cli get sieve-user-interpreter
Update
stalwart-cli update sieve-user-interpreter --field description='Updated'
Enums
SieveCapability
| Value | Label |
|---|---|
envelope | Envelope Test |
envelope-dsn | Envelope DSN (Delivery Status Notification) |
envelope-deliverby | Envelope Deliver-By |
fileinto | File Into Mailbox |
encoded-character | Encoded Character Support |
comparator-elbonia | Elbonia Comparator |
comparator-i;octet | Octet Comparator |
comparator-i;ascii-casemap | ASCII Case Map Comparator |
comparator-i;ascii-numeric | ASCII Numeric Comparator |
body | Body Test |
convert | Message Conversion |
copy | Copying Without Side Effects |
relational | Relational Tests |
date | Date Tests |
index | Header Index |
duplicate | Duplicate Delivery Detection |
variables | Variables |
editheader | Edit Header |
foreverypart | For Every MIME Part |
mime | MIME Part Tests |
replace | MIME Part Replacement |
enclose | MIME Part Enclosure |
extracttext | Extract Text from MIME Parts |
enotify | Email Notifications |
redirect-dsn | Redirect with DSN |
redirect-deliverby | Redirect with Deliver-By |
environment | Environment Information |
reject | Reject Message |
ereject | Extended Reject (SMTP-level) |
extlists | Externally Stored Lists |
subaddress | Subaddress (Detail) Matching |
vacation | Vacation Auto-Reply |
vacation-seconds | Vacation with Seconds Parameter |
fcc | File Carbon Copy |
mailbox | Mailbox Existence Check |
mailboxid | Mailbox by OBJECTID |
mboxmetadata | Mailbox Metadata Access |
servermetadata | Server Metadata Access |
special-use | Special-Use Mailboxes |
imap4flags | IMAP Flags |
ihave | Conditional Extension Test |
imapsieve | IMAP Events in Sieve |
include | Script Inclusion |
regex | Regular Expression Matching |
spamtest | Spam Test |
spamtestplus | Extended Spam Test |
virustest | Virus Test |
vnd.stalwart.while | While Loop (Stalwart) |
vnd.stalwart.expressions | Expression Evaluation (Stalwart) |