DmarcInternalReport
DmarcInternalReport
Section titled “DmarcInternalReport”Stores an outbound DMARC aggregate report pending delivery.
This object can be configured from the WebUI under Management › Reports › Outbox › DMARC
Fields
Section titled “Fields”Type:
EmailAddress[]Reporting email addresses from the DMARC policy
policyIdentifier
Section titled “policyIdentifier”Type:
UnsignedInt· default:0Identifier for the DMARC policy that generated this report
report
Section titled “report”Type:
DmarcReport· requiredDMARC report content
domain
Section titled “domain”Type:
DomainName· requiredDomain this report is associated with
createdAt
Section titled “createdAt”Type:
UTCDateTime· requiredWhen the report was created
deliverAt
Section titled “deliverAt”Type:
UTCDateTime· requiredWhen the report is scheduled to be delivered
JMAP API
Section titled “JMAP API”The DmarcInternalReport object is available via the urn:stalwart:jmap capability.
x:DmarcInternalReport/get
Section titled “x:DmarcInternalReport/get”This is a standard Foo/get method as defined in RFC 8620, Section 5.1.
This method requires the sysDmarcInternalReportGet permission.
curl -X POST https://mail.example.com/api \ -H 'Authorization: Bearer $TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "methodCalls": [ [ "x:DmarcInternalReport/get", { "ids": [ "id1" ] }, "c1" ] ], "using": [ "urn:ietf:params:jmap:core", "urn:stalwart:jmap" ] }'x:DmarcInternalReport/set
Section titled “x:DmarcInternalReport/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 sysDmarcInternalReportCreate permission.
curl -X POST https://mail.example.com/api \ -H 'Authorization: Bearer $TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "methodCalls": [ [ "x:DmarcInternalReport/set", { "create": { "new1": { "createdAt": "2026-01-01T00:00:00Z", "deliverAt": "2026-01-01T00:00:00Z", "domain": "example.com", "report": { "dateRangeBegin": "2026-01-01T00:00:00Z", "dateRangeEnd": "2026-01-01T00:00:00Z", "email": "[email protected]", "errors": {}, "extensions": {}, "orgName": "Example", "policyAdkim": "relaxed", "policyAspf": "relaxed", "policyDisposition": "none", "policyDomain": "Example", "policyFailureReportingOptions": {}, "policySubdomainDisposition": "none", "records": {}, "reportId": "Example" }, "rua": {} } } }, "c1" ] ], "using": [ "urn:ietf:params:jmap:core", "urn:stalwart:jmap" ] }'Update
Section titled “Update”This operation requires the sysDmarcInternalReportUpdate permission.
curl -X POST https://mail.example.com/api \ -H 'Authorization: Bearer $TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "methodCalls": [ [ "x:DmarcInternalReport/set", { "update": { "id1": { "rua": {} } } }, "c1" ] ], "using": [ "urn:ietf:params:jmap:core", "urn:stalwart:jmap" ] }'Destroy
Section titled “Destroy”This operation requires the sysDmarcInternalReportDestroy permission.
curl -X POST https://mail.example.com/api \ -H 'Authorization: Bearer $TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "methodCalls": [ [ "x:DmarcInternalReport/set", { "destroy": [ "id1" ] }, "c1" ] ], "using": [ "urn:ietf:params:jmap:core", "urn:stalwart:jmap" ] }'x:DmarcInternalReport/query
Section titled “x:DmarcInternalReport/query”This is a standard Foo/query method as defined in RFC 8620, Section 5.5.
This method requires the sysDmarcInternalReportQuery permission.
curl -X POST https://mail.example.com/api \ -H 'Authorization: Bearer $TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "methodCalls": [ [ "x:DmarcInternalReport/query", { "filter": { "domain": "example" } }, "c1" ] ], "using": [ "urn:ietf:params:jmap:core", "urn:stalwart:jmap" ] }'The x:DmarcInternalReport/query filter argument accepts the following conditions (combinable with AnyOf / AllOf / Not per RFC 8620):
| Condition | Kind |
|---|---|
domain | text |
stalwart-cli wraps the same JMAP calls. See the CLI reference for installation, authentication, and general usage.
stalwart-cli get DmarcInternalReport id1Create
Section titled “Create”stalwart-cli create DmarcInternalReport \ --field 'rua={}' \ --field 'report={"dateRangeBegin":"2026-01-01T00:00:00Z","dateRangeEnd":"2026-01-01T00:00:00Z","email":"[email protected]","errors":{},"extensions":{},"orgName":"Example","policyAdkim":"relaxed","policyAspf":"relaxed","policyDisposition":"none","policyDomain":"Example","policyFailureReportingOptions":{},"policySubdomainDisposition":"none","records":{},"reportId":"Example"}' \ --field domain=example.com \ --field createdAt=2026-01-01T00:00:00Z \ --field deliverAt=2026-01-01T00:00:00Zstalwart-cli query DmarcInternalReportstalwart-cli query DmarcInternalReport --where domain=exampleUpdate
Section titled “Update”stalwart-cli update DmarcInternalReport id1 --field rua='{}'Delete
Section titled “Delete”stalwart-cli delete DmarcInternalReport --ids id1Nested types
Section titled “Nested types”DmarcReport
Section titled “DmarcReport”Content of a DMARC aggregate report.
version
Section titled “version”Type:
Float· default:1.0DMARC report format version
orgName
Section titled “orgName”Type:
String· requiredName of the organization that generated the report
Type:
EmailAddress· requiredContact email address of the reporting organization
extraContactInfo
Section titled “extraContactInfo”Type:
String?Additional contact information for the reporting organization
reportId
Section titled “reportId”Type:
String· requiredUnique identifier for this report
dateRangeBegin
Section titled “dateRangeBegin”Type:
UTCDateTime· requiredStart of the reporting period
dateRangeEnd
Section titled “dateRangeEnd”Type:
UTCDateTime· requiredEnd of the reporting period
errors
Section titled “errors”Type:
String[]Errors encountered during report generation
policyDomain
Section titled “policyDomain”Type:
String· requiredDomain for which the DMARC policy is published
policyVersion
Section titled “policyVersion”Type:
String?Version of the published DMARC policy
policyAdkim
Section titled “policyAdkim”Type:
DmarcAlignment· requiredDKIM alignment mode specified in the policy
policyAspf
Section titled “policyAspf”Type:
DmarcAlignment· requiredSPF alignment mode specified in the policy
policyDisposition
Section titled “policyDisposition”Type:
DmarcDisposition· requiredRequested handling policy for failing messages
policySubdomainDisposition
Section titled “policySubdomainDisposition”Type:
DmarcDisposition· requiredRequested handling policy for failing messages from subdomains
policyTestingMode
Section titled “policyTestingMode”Type:
Boolean· default:falseWhether the policy is in testing mode (pct < 100)
policyFailureReportingOptions
Section titled “policyFailureReportingOptions”Type:
FailureReportingOption[]Conditions under which failure reports should be generated
records
Section titled “records”Type:
DmarcReportRecord[]Aggregated authentication results grouped by source
extensions
Section titled “extensions”Type:
DmarcExtension[]Custom vendor-specific extensions to the report
DmarcReportRecord
Section titled “DmarcReportRecord”An aggregated authentication result record from a single source.
sourceIp
Section titled “sourceIp”Type:
IpAddr?IP address of the sending mail server
Type:
UnsignedInt· default:0Number of messages from this source matching this result
evaluatedDisposition
Section titled “evaluatedDisposition”Type:
DmarcActionDisposition· requiredAction taken on the messages
evaluatedDkim
Section titled “evaluatedDkim”Type:
DmarcResult· requiredDMARC result based on DKIM authentication
evaluatedSpf
Section titled “evaluatedSpf”Type:
DmarcResult· requiredDMARC result based on SPF authentication
policyOverrideReasons
Section titled “policyOverrideReasons”Type:
DmarcPolicyOverrideReason[]Reasons why the evaluated disposition differs from the published policy
envelopeTo
Section titled “envelopeTo”Type:
String?Envelope recipient domain
envelopeFrom
Section titled “envelopeFrom”Type:
String· requiredEnvelope sender domain (MAIL FROM)
headerFrom
Section titled “headerFrom”Type:
String· requiredDomain from the message From header
dkimResults
Section titled “dkimResults”Type:
DmarcDkimResult[]DKIM authentication results for the messages
spfResults
Section titled “spfResults”Type:
DmarcSpfResult[]SPF authentication results for the messages
extensions
Section titled “extensions”Type:
DmarcExtension[]Custom vendor-specific extensions to this record
DmarcPolicyOverrideReason
Section titled “DmarcPolicyOverrideReason”Reason for a DMARC policy override.
overrideType
Section titled “overrideType”Type:
DmarcPolicyOverride· requiredType of policy override applied
comment
Section titled “comment”Type:
String?Additional explanation for the override
DmarcDkimResult
Section titled “DmarcDkimResult”DKIM authentication result within a DMARC report record.
domain
Section titled “domain”Type:
DomainName· requiredDomain that signed the message
selector
Section titled “selector”Type:
String· requiredDKIM selector used for signing
result
Section titled “result”Type:
DkimAuthResult· requiredDKIM verification result
humanResult
Section titled “humanResult”Type:
String?Human-readable explanation of the result
DmarcSpfResult
Section titled “DmarcSpfResult”SPF authentication result within a DMARC report record.
domain
Section titled “domain”Type:
DomainName· requiredDomain checked for SPF
Type:
SpfDomainScope· requiredWhich identity was checked
result
Section titled “result”Type:
SpfAuthResult· requiredSPF verification result
humanResult
Section titled “humanResult”Type:
String?Human-readable explanation of the result
DmarcExtension
Section titled “DmarcExtension”A vendor-specific extension in a DMARC report.
Type:
String· requiredExtension identifier
definition
Section titled “definition”Type:
String· requiredExtension content or value
DmarcAlignment
Section titled “DmarcAlignment”| Value | Label |
|---|---|
relaxed | Organizational domain match is sufficient |
strict | Exact domain match is required |
unspecified | Alignment mode not specified |
DmarcDisposition
Section titled “DmarcDisposition”| Value | Label |
|---|---|
none | No specific action requested |
quarantine | Treat failing messages as suspicious |
reject | Reject failing messages |
unspecified | Disposition not specified |
FailureReportingOption
Section titled “FailureReportingOption”| Value | Label |
|---|---|
all | Generate report if all authentication mechanisms fail |
any | Generate report if any authentication mechanism fails |
dkimFailure | Generate report if DKIM authentication fails |
spfFailure | Generate report if SPF authentication fails |
DmarcActionDisposition
Section titled “DmarcActionDisposition”| Value | Label |
|---|---|
none | No action taken |
pass | Message passed evaluation |
quarantine | Message was quarantined |
reject | Message was rejected |
unspecified | Disposition not specified |
DmarcResult
Section titled “DmarcResult”| Value | Label |
|---|---|
pass | Authentication passed |
fail | Authentication failed |
unspecified | Result not specified |
DmarcPolicyOverride
Section titled “DmarcPolicyOverride”| Value | Label |
|---|---|
Forwarded | Message was forwarded |
SampledOut | Message was excluded by policy sampling (pct) |
TrustedForwarder | Message came from a trusted forwarder |
MailingList | Message came from a mailing list |
LocalPolicy | Local policy override was applied |
Other | Other reason for override |
DkimAuthResult
Section titled “DkimAuthResult”| Value | Label |
|---|---|
none | No DKIM signature present |
pass | DKIM signature verified successfully |
fail | DKIM signature verification failed |
policy | DKIM signature not accepted due to policy |
neutral | DKIM verification returned neutral |
tempError | Temporary error during verification |
permError | Permanent error in DKIM record or signature |
SpfDomainScope
Section titled “SpfDomainScope”| Value | Label |
|---|---|
helo | SPF check performed on HELO/EHLO identity |
mailFrom | SPF check performed on MAIL FROM identity |
unspecified | Scope not specified |
SpfAuthResult
Section titled “SpfAuthResult”| Value | Label |
|---|---|
none | No SPF record found |
neutral | SPF record returned neutral |
pass | SPF check passed |
fail | SPF check failed (hard fail) |
softFail | SPF check returned soft fail |
tempError | Temporary error during SPF check |
permError | Permanent error in SPF record |