Skip to content

TlsInternalReport

Stores an outbound TLS aggregate report pending delivery.

This object can be configured from the WebUI under Management › Reports › Outbox › TLS

Type: UnsignedInt[]

Identifiers for the TLS policies that generated this report

Type: EmailAddress[]

Reporting email addresses from the TLS policy

Type: Uri[]

Reporting URIs from the TLS policy

Type: TlsReport · required

TLS report content

Type: DomainName · required

Domain this report is associated with

Type: UTCDateTime · required

When the report was created

Type: UTCDateTime · required

When the report is scheduled to be delivered

The TlsInternalReport 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 sysTlsInternalReportGet permission.

Terminal window
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:TlsInternalReport/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 sysTlsInternalReportCreate permission.

Terminal window
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:TlsInternalReport/set",
{
"create": {
"new1": {
"createdAt": "2026-01-01T00:00:00Z",
"deliverAt": "2026-01-01T00:00:00Z",
"domain": "example.com",
"httpRua": {},
"mailRua": {},
"policyIdentifiers": {},
"report": {
"dateRangeEnd": "2026-01-01T00:00:00Z",
"dateRangeStart": "2026-01-01T00:00:00Z",
"policies": {},
"reportId": "Example"
}
}
}
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'

This operation requires the sysTlsInternalReportUpdate permission.

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

This operation requires the sysTlsInternalReportDestroy permission.

Terminal window
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:TlsInternalReport/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 sysTlsInternalReportQuery permission.

Terminal window
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:TlsInternalReport/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 TlsInternalReport id1
Terminal window
stalwart-cli create TlsInternalReport \
--field 'policyIdentifiers={}' \
--field 'mailRua={}' \
--field 'httpRua={}' \
--field 'report={"dateRangeEnd":"2026-01-01T00:00:00Z","dateRangeStart":"2026-01-01T00:00:00Z","policies":{},"reportId":"Example"}' \
--field domain=example.com \
--field createdAt=2026-01-01T00:00:00Z \
--field deliverAt=2026-01-01T00:00:00Z
Terminal window
stalwart-cli query TlsInternalReport
Terminal window
stalwart-cli update TlsInternalReport id1 --field policyIdentifiers='{}'
Terminal window
stalwart-cli delete TlsInternalReport --ids id1

Content of a TLS aggregate report.

Type: String?

Name of the organization that generated the report

Type: String?

Contact information for the reporting organization

Type: String · required

Unique identifier for this report

Type: UTCDateTime · required

Start of the reporting period

Type: UTCDateTime · required

End of the reporting period

Type: TlsReportPolicy[]

Policy evaluation results for each domain

TLS policy evaluation result for a specific domain.

Type: TlsPolicyType · required

Type of TLS policy that was evaluated

Type: String[]

Raw policy strings as retrieved

Type: DomainName · required

Domain the policy applies to

Type: String[]

MX hostnames covered by the policy

Type: UnsignedInt · default: 0

Number of sessions that successfully established TLS

Type: UnsignedInt · default: 0

Number of sessions that failed TLS establishment

Type: TlsFailureDetails[]

Details of TLS failures encountered

Details of a TLS failure encountered during delivery.

Type: TlsResultType · required

Type of failure encountered

Type: IpAddr?

IP address of the sending mail server

Type: String?

Hostname of the receiving mail server

Type: String?

HELO/EHLO string of the receiving mail server

Type: IpAddr?

IP address of the receiving mail server

Type: UnsignedInt · default: 0

Number of sessions that failed with this error

Type: String?

Additional context about the failure

Type: String?

Error code or reason string for the failure

ValueLabel
tlsaDANE TLSA policy
stsMTA-STS policy
noPolicyFoundNo TLS policy was found for the domain
otherOther or unrecognized policy type
ValueLabel
startTlsNotSupportedRemote server does not support STARTTLS
certificateHostMismatchCertificate hostname does not match server
certificateExpiredCertificate has expired
certificateNotTrustedCertificate is not trusted
validationFailureGeneral certificate validation failure
tlsaInvalidDANE TLSA record is invalid
dnssecInvalidDNSSEC validation failed
daneRequiredDANE is required but not available
stsPolicyFetchErrorFailed to fetch MTA-STS policy
stsPolicyInvalidMTA-STS policy is invalid
stsWebpkiInvalidMTA-STS WebPKI validation failed
otherOther or unrecognized failure type