Skip to main content
Version: 0.16

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: 1

Maximum number CPU cycles a script can use

maxHeaderSize

Type: UnsignedInt · default: 1024 · min: 1

Maximum size of a header

maxIncludes

Type: UnsignedInt · default: 3 · min: 1

Maximum number of includes

maxLocalVars

Type: UnsignedInt · default: 128 · min: 1

Maximum number of local variables

maxMatchVars

Type: UnsignedInt · default: 30 · min: 1

Maximum number of match variables

maxScriptNameLength

Type: UnsignedInt · default: 512 · min: 1

Maximum length of a script name

maxNestedBlocks

Type: UnsignedInt · default: 15 · min: 1

Maximum number of nested blocks

maxNestedForEvery

Type: UnsignedInt · default: 3 · min: 1

Maximum number of nested foreach blocks

maxNestedIncludes

Type: UnsignedInt · default: 3 · min: 1

Maximum number of nested includes

maxNestedTests

Type: UnsignedInt · default: 15 · min: 1

Maximum number of nested tests

maxOutMessages

Type: UnsignedInt · default: 3

Maximum number of outgoing messages

maxReceivedHeaders

Type: UnsignedInt · default: 10 · min: 1

Maximum number of received headers

maxRedirects

Type: UnsignedInt · default: 1

Maximum number of redirects

maxScriptSize

Type: Size · default: "100kb" · min: 1

Maximum size of a script

maxStringLength

Type: UnsignedInt · default: 4096 · min: 1

Maximum length of a string

maxVarNameLength

Type: UnsignedInt · default: 32 · min: 1

Maximum length of a variable name

maxVarSize

Type: UnsignedInt · default: 4096 · min: 1

Maximum size of a variable

maxScripts

Type: UnsignedInt? · default: 100 · min: 1

The 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

ValueLabel
envelopeEnvelope Test
envelope-dsnEnvelope DSN (Delivery Status Notification)
envelope-deliverbyEnvelope Deliver-By
fileintoFile Into Mailbox
encoded-characterEncoded Character Support
comparator-elboniaElbonia Comparator
comparator-i;octetOctet Comparator
comparator-i;ascii-casemapASCII Case Map Comparator
comparator-i;ascii-numericASCII Numeric Comparator
bodyBody Test
convertMessage Conversion
copyCopying Without Side Effects
relationalRelational Tests
dateDate Tests
indexHeader Index
duplicateDuplicate Delivery Detection
variablesVariables
editheaderEdit Header
foreverypartFor Every MIME Part
mimeMIME Part Tests
replaceMIME Part Replacement
encloseMIME Part Enclosure
extracttextExtract Text from MIME Parts
enotifyEmail Notifications
redirect-dsnRedirect with DSN
redirect-deliverbyRedirect with Deliver-By
environmentEnvironment Information
rejectReject Message
erejectExtended Reject (SMTP-level)
extlistsExternally Stored Lists
subaddressSubaddress (Detail) Matching
vacationVacation Auto-Reply
vacation-secondsVacation with Seconds Parameter
fccFile Carbon Copy
mailboxMailbox Existence Check
mailboxidMailbox by OBJECTID
mboxmetadataMailbox Metadata Access
servermetadataServer Metadata Access
special-useSpecial-Use Mailboxes
imap4flagsIMAP Flags
ihaveConditional Extension Test
imapsieveIMAP Events in Sieve
includeScript Inclusion
regexRegular Expression Matching
spamtestSpam Test
spamtestplusExtended Spam Test
virustestVirus Test
vnd.stalwart.whileWhile Loop (Stalwart)
vnd.stalwart.expressionsExpression Evaluation (Stalwart)