MtaRoute
MtaRoute
Section titled “MtaRoute”Defines a routing rule for outbound message delivery.
This object can be configured from the WebUI under Settings › MTA › Outbound › Routes
Fields
Section titled “Fields”MtaRoute is a multi-variant object: each instance has an @type discriminator selecting one of the variants below, and each variant carries its own set of fields.
@type: "Mx"
Section titled “@type: "Mx"”Remote Delivery (MX)
ipLookupStrategy
Section titled “ipLookupStrategy”Type:
MtaIpStrategy· default:"v4ThenV6"IP resolution strategy for MX hosts
maxMultihomed
Section titled “maxMultihomed”Type:
UnsignedInt· default:2· min: 1For multi-homed remote servers, it is the maximum number of IP addresses to try on each delivery attempt
maxMxHosts
Section titled “maxMxHosts”Type:
UnsignedInt· default:5· min: 1Maximum number of MX hosts to try on each delivery attempt
Type:
String· read-onlyShort identifier for the route
description
Section titled “description”Type:
String?A short description of the route, which can be used to identify it in the list of routes
@type: "Relay"
Section titled “@type: "Relay"”Relay Host
address
Section titled “address”Type:
String· requiredThe address of the remote SMTP server, which can be an IP address or a domain name
authSecret
Section titled “authSecret”Type:
SecretKeyOptional· requiredThe secret to use when authenticating with the remote server
authUsername
Section titled “authUsername”Type:
String?The username to use when authenticating with the remote server
Type:
UnsignedInt· default:25· max: 65535 · min: 1The port number of the remote server, which is typically 25 for SMTP and 11200 for LMTP
protocol
Section titled “protocol”Type:
MtaProtocol· default:"smtp"The protocol to use when delivering messages to the remote server, which can be either SMTP or LMTP
allowInvalidCerts
Section titled “allowInvalidCerts”Type:
Boolean· default:falseWhether to allow connections to servers with invalid TLS certificates
implicitTls
Section titled “implicitTls”Type:
Boolean· default:falseWhether to use TLS encryption for all connections to the remote server
Type:
String· read-onlyShort identifier for the route
description
Section titled “description”Type:
String?A short description of the route, which can be used to identify it in the list of routes
@type: "Local"
Section titled “@type: "Local"”Local Delivery
Type:
String· read-onlyShort identifier for the route
description
Section titled “description”Type:
String?A short description of the route, which can be used to identify it in the list of routes
JMAP API
Section titled “JMAP API”The MtaRoute object is available via the urn:stalwart:jmap capability.
x:MtaRoute/get
Section titled “x:MtaRoute/get”This is a standard Foo/get method as defined in RFC 8620, Section 5.1.
This method requires the sysMtaRouteGet permission.
curl -X POST https://mail.example.com/api \ -H 'Authorization: Bearer $TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "methodCalls": [ [ "x:MtaRoute/get", { "ids": [ "id1" ] }, "c1" ] ], "using": [ "urn:ietf:params:jmap:core", "urn:stalwart:jmap" ] }'x:MtaRoute/set
Section titled “x:MtaRoute/set”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.
Create
Section titled “Create”This operation requires the sysMtaRouteCreate permission.
curl -X POST https://mail.example.com/api \ -H 'Authorization: Bearer $TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "methodCalls": [ [ "x:MtaRoute/set", { "create": { "new1": { "@type": "Mx" } } }, "c1" ] ], "using": [ "urn:ietf:params:jmap:core", "urn:stalwart:jmap" ] }'Update
Section titled “Update”This operation requires the sysMtaRouteUpdate permission.
curl -X POST https://mail.example.com/api \ -H 'Authorization: Bearer $TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "methodCalls": [ [ "x:MtaRoute/set", { "update": { "id1": { "description": "updated value" } } }, "c1" ] ], "using": [ "urn:ietf:params:jmap:core", "urn:stalwart:jmap" ] }'Destroy
Section titled “Destroy”This operation requires the sysMtaRouteDestroy permission.
curl -X POST https://mail.example.com/api \ -H 'Authorization: Bearer $TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "methodCalls": [ [ "x:MtaRoute/set", { "destroy": [ "id1" ] }, "c1" ] ], "using": [ "urn:ietf:params:jmap:core", "urn:stalwart:jmap" ] }'x:MtaRoute/query
Section titled “x:MtaRoute/query”This is a standard Foo/query method as defined in RFC 8620, Section 5.5.
This method requires the sysMtaRouteQuery permission.
curl -X POST https://mail.example.com/api \ -H 'Authorization: Bearer $TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "methodCalls": [ [ "x:MtaRoute/query", { "filter": { "name": "example" } }, "c1" ] ], "using": [ "urn:ietf:params:jmap:core", "urn:stalwart:jmap" ] }'The x:MtaRoute/query filter argument accepts the following conditions (combinable with AnyOf / AllOf / Not per RFC 8620):
| Condition | Kind |
|---|---|
name | text |
stalwart-cli wraps the same JMAP calls. See the CLI reference for installation, authentication, and general usage.
stalwart-cli get MtaRoute id1Create
Section titled “Create”stalwart-cli create MtaRoute/Mxstalwart-cli query MtaRoutestalwart-cli query MtaRoute --where name=exampleUpdate
Section titled “Update”stalwart-cli update MtaRoute id1 --field description='updated value'Delete
Section titled “Delete”stalwart-cli delete MtaRoute --ids id1Nested types
Section titled “Nested types”SecretKeyOptional
Section titled “SecretKeyOptional”An optional secret value, or none.
None: No secret. No additional fields.Value: Secret value. Carries the fields ofSecretKeyValue.EnvironmentVariable: Secret read from environment variable. Carries the fields ofSecretKeyEnvironmentVariable.File: Secret read from file. Carries the fields ofSecretKeyFile.
SecretKeyValue
Section titled “SecretKeyValue”A secret value provided directly.
secret
Section titled “secret”Type:
String· required · secretPassword or secret value
SecretKeyEnvironmentVariable
Section titled “SecretKeyEnvironmentVariable”A secret value read from an environment variable.
variableName
Section titled “variableName”Type:
String· requiredEnvironment variable name to read the secret from
SecretKeyFile
Section titled “SecretKeyFile”A secret value read from a file.
filePath
Section titled “filePath”Type:
String· requiredFile path to read the secret from
MtaIpStrategy
Section titled “MtaIpStrategy”| Value | Label |
|---|---|
v4ThenV6 | IPv4 then IPv6 |
v6ThenV4 | IPv6 then IPv4 |
v4Only | IPv4 Only |
v6Only | IPv6 Only |
MtaProtocol
Section titled “MtaProtocol”| Value | Label |
|---|---|
smtp | SMTP |
lmtp | LMTP |