Skip to content

MtaInboundThrottle

Defines an inbound rate limit rule for SMTP connections.

This object can be configured from the WebUI under Settings › MTA › Rates & Quotas › Inbound Rate Limits

Type: Boolean · default: true

Whether to enable this throttle

Type: String · read-only

Short description for the throttle

Type: MtaInboundThrottleKey[]

Optional list of context variables that determine where this throttle should be applied

Type: Expression · default: {"else":"true"}

Enable the imposition of concurrency and rate limits only when a specific condition is met

Available variables: MtaRcptToVariable.

Type: Rate · required

Number of incoming requests over a period of time that the rate limiter will allow

The MtaInboundThrottle object is available via the urn:stalwart:jmap capability.

This is a standard Foo/get method as defined in RFC 8620, Section 5.1.

This method requires the sysMtaInboundThrottleGet permission.

Terminal window
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:MtaInboundThrottle/get",
{
"ids": [
"id1"
]
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'

This is a standard Foo/set method as defined in RFC 8620, Section 5.3.

Supports create, update, and destroy operations in a single call.

This operation requires the sysMtaInboundThrottleCreate permission.

Terminal window
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:MtaInboundThrottle/set",
{
"create": {
"new1": {
"key": {},
"rate": {}
}
}
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'

This operation requires the sysMtaInboundThrottleUpdate permission.

Terminal window
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:MtaInboundThrottle/set",
{
"update": {
"id1": {
"enable": true
}
}
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'

This operation requires the sysMtaInboundThrottleDestroy permission.

Terminal window
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:MtaInboundThrottle/set",
{
"destroy": [
"id1"
]
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'

This is a standard Foo/query method as defined in RFC 8620, Section 5.5.

This method requires the sysMtaInboundThrottleQuery permission.

Terminal window
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:MtaInboundThrottle/query",
{
"filter": {}
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'

stalwart-cli wraps the same JMAP calls. See the CLI reference for installation, authentication, and general usage.

Terminal window
stalwart-cli get MtaInboundThrottle id1
Terminal window
stalwart-cli create MtaInboundThrottle \
--field 'key={}' \
--field 'rate={}'
Terminal window
stalwart-cli query MtaInboundThrottle
Terminal window
stalwart-cli update MtaInboundThrottle id1 --field enable=true
Terminal window
stalwart-cli delete MtaInboundThrottle --ids id1

A conditional expression with match rules and a default value.

Type: ExpressionMatch[]

List of conditions and their corresponding results

Type: String · required

Else condition

A single condition-result pair in an expression.

Type: String · required

If condition

Type: String · required

Then clause

Defines a rate limit as a count over a time period.

Type: UnsignedInt · default: 0 · min: 1 · max: 1000000

Count

Type: Duration · default: "0s" · min: 1

Period

ValueLabel
listenerListener
remoteIpRemote IP
localIpLocal IP
authenticatedAsAuthenticated As
heloDomainEHLO Domain
senderSender
senderDomainSender Domain
rcptRecipient
rcptDomainRecipient Domain

The following expression contexts are used by fields on this page: