Skip to main content
Version: 0.16

Events

Every event Stalwart can emit is listed below, grouped by subsystem. Each event has:

  • an identifier used when enabling or disabling the event and when filtering logs or traces. Identifiers are formatted as <subsystem>.<name>, for example acme.auth-start.
  • a default logging level: one of trace, debug, info, warn, error.
  • a short description (used as the label in UI dropdowns and column headings).
  • a long description (operational context: when the event fires, what it means, what action might be needed).

Metrics reported alongside events are listed on the Metrics page.

Acme

EventLevelShortLong
acme.auth-startinfoACME authentication startedThe domain ownership validation challenge has begun; the server will attempt to prove control of the domain to the ACME provider.
acme.auth-pendinginfoACME authentication pendingThe ACME server has acknowledged the challenge but validation is not yet complete; the server is polling for the result.
acme.auth-validinfoACME authentication validThe ACME server confirmed that the domain ownership challenge was successfully validated.
acme.auth-completedinfoACME authentication completedDomain ownership validation has finished and the authorization is now in a terminal state.
acme.auth-errorwarnACME authentication errorThe domain ownership challenge failed; certificate renewal cannot proceed until the underlying DNS or network issue is resolved.
acme.auth-too-many-attemptswarnToo many ACME authentication attemptsThe ACME provider rejected the request because too many validation attempts have been made for this domain in a short period.
acme.process-certinfoProcessing ACME certificateA newly issued certificate has been received from the ACME provider and is being installed into the TLS configuration.
acme.order-startinfoACME order startedA new certificate order has been submitted to the ACME provider; domain ownership challenges will follow.
acme.order-processinginfoACME order processingThe ACME provider is processing the order after all challenges passed; the server is waiting for the certificate to be issued.
acme.order-completedinfoACME order completedThe ACME provider has issued the certificate and it has been successfully installed.
acme.order-readyinfoACME order readyAll domain ownership challenges have been validated and the order is ready to be finalized.
acme.order-validinfoACME order validThe ACME order reached the "valid" state, meaning the certificate has been issued and is ready for download.
acme.order-invalidwarnACME order invalidThe ACME order failed and cannot be completed; one or more domain ownership challenges were rejected by the provider.
acme.renew-backoffdebugACME renew backoffThe ACME server returned HTTP 429 with a Retry-After header; renewal is paused and will be retried after the indicated delay.
acme.client-supplied-snidebugACME client supplied SNIDuring TLS-ALPN-01 challenge validation, the connecting ACME client provided an SNI hostname matching the domain being validated.
acme.client-missing-snidebugACME client missing SNIDuring TLS-ALPN-01 challenge validation, the ACME client did not supply an SNI hostname; the challenge cannot be completed.
acme.tls-alpn-receivedinfoACME TLS ALPN receivedA TLS-ALPN-01 challenge connection was received from the ACME provider and is being processed.
acme.tls-alpn-errorwarnACME TLS ALPN errorThe TLS-ALPN-01 challenge validation failed; check that port 443 is reachable and that no other service is intercepting the connection.
acme.token-not-foundwarnACME token not foundThe HTTP-01 challenge token requested by the ACME provider was not found in the token store; the challenge will fail.
acme.errorerrorACME errorAn unrecoverable error occurred during ACME certificate management; automatic certificate renewal may be interrupted.

Ai

EventLevelShortLong
ai.llm-responsetraceLLM responseA response was received from the configured AI/LLM provider; logged at trace level for debugging AI-assisted classification or generation.
ai.api-errorwarnAI API errorA request to the AI provider API failed; features relying on LLM assistance (e.g. smart spam classification) may be degraded.

Arc

EventLevelShortLong
arc.chain-too-longdebugARC chain too longThe message contains more than 50 ARC header sets, exceeding the maximum allowed chain length; ARC verification will fail.
arc.invalid-instancedebugInvalid ARC instanceAn ARC header set has an instance number that is out of sequence or otherwise invalid, breaking the chain integrity.
arc.invalid-cvdebugInvalid ARC CVThe ARC chain validation (cv=) tag contains an invalid or contradictory value; the chain cannot be trusted.
arc.has-header-tagdebugARC has header tagAn ARC-Seal header contains an unexpected header tag, which violates the ARC specification.
arc.broken-chaindebugBroken ARC chainOne or more ARC signatures in the chain failed verification; forwarded messages from this path cannot be trusted.
arc.sealer-not-foundwarnARC sealer not foundThe ARC sealer referenced in configuration was not found; outbound ARC signing will be skipped for affected messages.

Auth

EventLevelShortLong
auth.successinfoAuthentication successfulA user or service successfully authenticated; credentials were verified against the configured directory or OAuth provider.
auth.faileddebugAuthentication failedA login attempt was rejected due to incorrect credentials; repeated failures from the same IP may trigger an authentication ban.
auth.token-expireddebugOAuth token expiredThe OAuth access or refresh token presented by the client has expired and must be renewed before the session can continue.
auth.mfa-requiredtraceMissing MFA token for authenticationMFA token is required for authentication but was not provided
auth.too-many-attemptswarnToo many authentication attemptsThe client has exceeded the configured limit for failed login attempts in a rolling window; further attempts may be blocked.
auth.client-registrationinfoOAuth Client registrationA new OAuth client application was successfully registered with the server's OAuth provider.
auth.errorerrorAuthentication errorAn internal error occurred while processing an authentication request; the login cannot proceed.
auth.warningdebugAuthentication warningA non-fatal issue was detected during authentication processing, such as an unexpected token format or directory lookup anomaly.
auth.credential-expireddebugCredential expiredThe credential (password, token, or certificate) used for authentication has passed its expiry date.

Calendar

EventLevelShortLong
calendar.rule-expansion-errordebugCalendar rule expansion errorFailed to expand a recurring calendar event's recurrence rule into concrete instances; affected occurrences may not appear in the user's calendar.
calendar.alarm-sentinfoCalendar alarm sentA calendar event alarm notification was successfully dispatched to the recipient via email or push.
calendar.alarm-skippeddebugCalendar alarm skippedA calendar alarm was not sent because the trigger time was missed, the event was already acknowledged, or the recipient is unavailable.
calendar.alarm-recipient-overridedebugCalendar alarm recipient overridenThe alarm recipient was substituted by a server-configured override rather than the address specified in the calendar event.
calendar.alarm-failedwarnCalendar alarm could not be sentDelivery of a calendar alarm notification failed; the recipient may not be notified of the upcoming event.
calendar.itip-message-sentinfoCalendar iTIP message sentA scheduling message (invite, update, cancellation, or reply) was sent to an external calendar participant via email.
calendar.itip-message-receivedinfoCalendar iTIP message receivedAn inbound iTIP/iMIP scheduling message was received and is being processed to update the recipient's calendar.
calendar.itip-message-errordebugiTIP message errorAn iTIP/iMIP scheduling message could not be parsed or applied; the calendar event may not be updated correctly.

Cluster

EventLevelShortLong
cluster.startupinfoClustering enabledThe clustering subsystem has been initialized; inter-node communication via the configured PubSub backend (Kafka, NATS, or Redis) is now active.
cluster.subscriber-startinfoPubSub subscriber startedThis node has connected to the PubSub backend and begun consuming inter-node messages.
cluster.subscriber-stopinfoPubSub subscriber stoppedThis node's PubSub subscription has been torn down, typically during a graceful shutdown.
cluster.subscriber-errorerrorPubSub subscriber errorAn error occurred on the PubSub subscription channel; inter-node cache invalidation and state sync may be disrupted.
cluster.subscriber-disconnectedwarnPubSub subscriber disconnectedThe PubSub subscriber lost its connection to the backend; the node will attempt to reconnect automatically.
cluster.publisher-startinfoPubSub publisher startedThis node has established a publisher connection to the PubSub backend for broadcasting events to other cluster nodes.
cluster.publisher-stopinfoPubSub publisher stoppedThis node's PubSub publisher has been shut down; no further inter-node notifications will be sent.
cluster.publisher-errorerrorPubSub publisher errorFailed to publish a message to the PubSub backend; other cluster nodes may not receive this event.
cluster.message-receivedtracePubSub message receivedAn inter-node message was received from the PubSub backend and is being dispatched to the appropriate handler.
cluster.message-skippedtracePubSub message skippedA PubSub message was ignored because it originated from this node and would cause a processing loop.
cluster.message-invaliderrorInvalid PubSub messageA message received from the PubSub backend could not be deserialized; it may indicate a version mismatch between cluster nodes.
cluster.node-id-reneweddebugNode ID renewedThis node's distributed lease has been refreshed, confirming it remains the active holder of its node identity in the cluster.

Dane

EventLevelShortLong
dane.authentication-successinfoDANE authentication successfulThe remote server's certificate matched a TLSA record in DNS; the TLS connection is cryptographically verified via DANE.
dane.authentication-failureinfoDANE authentication failedThe remote server's certificate did not match any TLSA record; the connection may be rejected depending on policy.
dane.no-certificates-foundinfoNo certificates found for DANEThe TLS handshake completed but no certificates were presented by the remote server for TLSA matching.
dane.certificate-parse-errorinfoError parsing certificate for DANEA certificate presented during the TLS handshake could not be parsed; DANE verification cannot proceed.
dane.tlsa-record-matchinfoTLSA record match foundThe remote server's certificate matched a TLSA record, confirming the server's identity via DANE.
dane.tlsa-record-fetchinfoFetching TLSA recordA DNS lookup is being performed to retrieve the TLSA record for the remote server's domain.
dane.tlsa-record-fetch-errorinfoError fetching TLSA recordThe DNS lookup for the TLSA record failed; DANE verification cannot be performed for this connection.
dane.tlsa-record-not-foundinfoTLSA record not foundNo TLSA record exists for the remote server's domain; DANE verification is skipped for this connection.
dane.tlsa-record-not-dnssec-signedinfoTLSA record not DNSSEC signedThe TLSA record was found but is not protected by DNSSEC; it cannot be trusted for DANE verification.
dane.tlsa-record-invalidinfoInvalid TLSA recordThe TLSA record syntax or content is invalid and cannot be used for certificate matching.

Delivery

EventLevelShortLong
delivery.attempt-startinfoDelivery attempt startedA new outbound SMTP delivery attempt is beginning; the server will look up MX records and try to connect to the recipient's mail server.
delivery.attempt-endinfoDelivery attempt endedThe outbound delivery attempt has finished, either successfully or with a temporary/permanent failure recorded.
delivery.completedinfoDelivery completedAll recipients for this message have been either delivered or permanently failed; the message is removed from the queue.
delivery.failedinfoDelivery failedThe delivery attempt failed with a temporary error; the message will be rescheduled for a later retry.
delivery.domain-delivery-startinfoNew delivery attempt for domainAn outbound delivery attempt is starting for a specific recipient domain; MX lookup and connection will follow.
delivery.mx-lookupdebugMX record lookupPerforming a DNS MX record lookup to determine which mail servers accept mail for the recipient domain.
delivery.mx-lookup-failedinfoMX record lookup failedDNS returned no MX records or an error for the recipient domain; delivery to this domain cannot proceed.
delivery.ip-lookupdebugIP address lookupResolving the IP address of an MX host before attempting a connection.
delivery.ip-lookup-failedinfoIP address lookup failedDNS resolution of an MX hostname failed; this host will be skipped and the next MX record tried.
delivery.null-mxinfoNull MX record foundThe recipient domain published a null MX record (RFC 7505), explicitly indicating it does not accept email; delivery is permanently impossible.
delivery.connectinfoConnecting to remote serverA TCP connection is being established to the remote mail server for outbound delivery.
delivery.connect-errorinfoConnection errorThe TCP connection to the remote mail server failed; another MX host will be tried if available.
delivery.missing-outbound-hostnamewarnMissing outbound hostname in configurationNo outbound EHLO hostname is configured; a hostname is required to present in the EHLO command to remote servers.
delivery.greeting-failedinfoSMTP greeting failedThe remote server did not send a valid SMTP 220 greeting after connection; the session cannot continue.
delivery.ehlodebugSMTP EHLO commandThe EHLO command was sent to the remote server to advertise capabilities and begin the SMTP session.
delivery.ehlo-rejectedinfoSMTP EHLO rejectedThe remote server rejected the EHLO command; delivery to this host cannot proceed.
delivery.authdebugSMTP authenticationAuthenticating with the remote server using the configured relay credentials.
delivery.auth-failedinfoSMTP authentication failedThe configured relay credentials were rejected by the remote server; delivery via this relay will fail.
delivery.mail-fromdebugSMTP MAIL FROM commandThe MAIL FROM command was sent to declare the envelope sender address to the remote server.
delivery.mail-from-rejectedinfoSMTP MAIL FROM rejectedThe remote server rejected the MAIL FROM command; the sender address or domain may be blocked.
delivery.deliveredinfoMessage deliveredThe remote server accepted the message for the recipient with a 250 response; delivery is complete.
delivery.rcpt-todebugSMTP RCPT TO commandThe RCPT TO command was sent to specify the envelope recipient address to the remote server.
delivery.rcpt-to-rejectedinfoSMTP RCPT TO rejectedThe remote server rejected the recipient address; a DSN will be generated for permanent failures.
delivery.rcpt-to-failedinfoSMTP RCPT TO failedThe RCPT TO command could not be sent due to a connection error; delivery will be retried.
delivery.message-rejectedinfoMessage rejected by remote serverThe remote server rejected the message data after accepting the envelope; a DSN will be generated.
delivery.start-tlsinfoSMTP STARTTLS commandRequesting a TLS upgrade on the existing SMTP connection to the remote server.
delivery.start-tls-unavailableinfoSTARTTLS unavailableThe remote server does not advertise STARTTLS; the connection will proceed unencrypted if policy allows.
delivery.start-tls-errorinfoSTARTTLS errorThe TLS handshake after STARTTLS failed; the connection may fall back to plaintext or be abandoned depending on policy.
delivery.start-tls-disabledinfoSTARTTLS disabledSTARTTLS has been disabled in the configuration for this remote host; the connection will be plaintext.
delivery.implicit-tls-errorinfoImplicit TLS errorThe TLS handshake on the implicit TLS port (e.g. port 465) failed; the connection cannot be used.
delivery.concurrency-limit-exceededwarnConcurrency limit exceededThe configured maximum number of simultaneous outbound connections to this remote host has been reached; delivery is deferred.
delivery.rate-limit-exceededwarnRate limit exceededThe configured outbound message rate limit for this remote host has been reached; delivery is deferred until the window resets.
delivery.double-bounceinfoDiscarding message after double bounceA bounce notification itself bounced; the message is permanently discarded to prevent a delivery loop.
delivery.dsn-successinfoDSN success notificationA delivery success notification (DSN) was generated and queued for the original sender.
delivery.dsn-temp-failinfoDSN temporary failure notificationA temporary failure delivery status notification was generated; the sender is informed that delivery is being retried.
delivery.dsn-perm-failinfoDSN permanent failure notificationA permanent failure delivery status notification was generated; the sender is informed that the message cannot be delivered.
delivery.raw-inputtraceRaw SMTP input receivedRaw bytes received from the remote server; logged at trace level for low-level SMTP session debugging.
delivery.raw-outputtraceRaw SMTP output sentRaw bytes sent to the remote server; logged at trace level for low-level SMTP session debugging.

Dkim

EventLevelShortLong
dkim.passdebugDKIM verification passedThe DKIM signature on the incoming message was cryptographically valid and the signing domain is authorized.
dkim.neutraldebugDKIM verification neutralThe DKIM signature was present but the result is neither pass nor fail, typically due to a policy setting.
dkim.faildebugDKIM verification failedThe DKIM signature did not verify; the message may have been tampered with or the key has changed since signing.
dkim.perm-errordebugDKIM permanent errorA permanent DKIM error occurred (e.g. malformed signature or missing required tag); the signature cannot be evaluated.
dkim.temp-errordebugDKIM temporary errorA transient error prevented DKIM verification, such as a DNS timeout when fetching the public key.
dkim.nonedebugNo DKIM signatureThe message carries no DKIM signature; authentication relies on SPF and DMARC alone.
dkim.unsupported-versiondebugUnsupported DKIM versionThe DKIM signature specifies a version tag that is not supported; the signature is ignored.
dkim.unsupported-algorithmdebugUnsupported DKIM algorithmThe signing algorithm specified in the DKIM signature (e.g. an obsolete or unknown algorithm) is not supported.
dkim.unsupported-canonicalizationdebugUnsupported DKIM canonicalizationThe canonicalization method in the DKIM signature is not recognized; the signature cannot be verified.
dkim.unsupported-key-typedebugUnsupported DKIM key typeThe public key type published in DNS for this DKIM selector is not supported by this server.
dkim.failed-body-hash-matchdebugDKIM body hash mismatchThe hash of the message body does not match the body hash in the DKIM signature; the message body was likely modified in transit.
dkim.failed-verificationdebugDKIM verification failedCryptographic verification of the DKIM signature failed; the signature or the message has been altered.
dkim.failed-auid-matchdebugDKIM AUID mismatchThe agent or user identifier (i=) in the DKIM signature does not belong to the signing domain (d=).
dkim.revoked-public-keydebugDKIM public key revokedThe DNS TXT record for the DKIM selector has an empty or revoked key; all signatures from this selector are invalid.
dkim.incompatible-algorithmsdebugIncompatible DKIM algorithmsThe signature algorithm and the public key type are incompatible with each other; verification cannot proceed.
dkim.signature-expireddebugDKIM signature expiredThe DKIM signature's expiry time (x= tag) has passed; the signature is no longer valid.
dkim.signature-lengthdebugDKIM signature length issueThe DKIM signature's body length limit (l= tag) does not match the actual message body length.
dkim.signer-not-foundwarnDKIM signer not foundThe DKIM signing key referenced in configuration was not found; outbound messages will not be signed.
dkim.build-errorerrorDKIM build errorFailed to construct a DKIM signature due to a configuration or key loading error.
dkim.signature-createdinfoDKIM signature createdA new DKIM signing key pair has been generated and stored, ready for publication to DNS.
dkim.signature-publishedinfoDKIM signature publishedThe DKIM public key has been published as a DNS TXT record and is now active for verification by recipients.
dkim.signature-retiringinfoDKIM signature retiringThe DKIM signing key is being phased out; the DNS record will be removed after the retirement period to allow in-flight messages to verify.
dkim.signature-retiredinfoDKIM signature retiredThe DKIM key's retirement period has elapsed and its DNS record has been removed; the key is no longer in use.
dkim.signature-deletedinfoDKIM signature deletedThe DKIM signing key has been permanently deleted from the system and its DNS record removed.

Dmarc

EventLevelShortLong
dmarc.passdebugDMARC check passedThe message passed DMARC evaluation; either DKIM or SPF aligned with the From domain per the domain's policy.
dmarc.faildebugDMARC check failedThe message failed DMARC evaluation; neither DKIM nor SPF produced an aligned pass, and the domain's policy may require rejection or quarantine.
dmarc.perm-errordebugDMARC permanent errorA permanent error prevented DMARC evaluation, such as a malformed policy record; the check result is indeterminate.
dmarc.temp-errordebugDMARC temporary errorA transient error prevented DMARC evaluation, such as a DNS timeout when fetching the policy record; the check will not be retried for this message.
dmarc.nonedebugNo DMARC recordNo DMARC policy record was found for the From domain; the message is not subject to DMARC enforcement.

Dns

EventLevelShortLong
dns.record-createdinfoDNS record createdThe DNS provider API accepted the new record; propagation polling will begin to confirm visibility.
dns.record-creation-failedwarnDNS record creation failedThe DNS provider API rejected or failed the record creation request; ACME DNS-01 challenges or DKIM publishing may be blocked.
dns.record-deletion-faileddebugDNS record deletion failedThe DNS provider API could not remove the record; stale challenge or DKIM records may remain in DNS.
dns.record-not-propagateddebugDNS record not propagatedA poll of the authoritative DNS servers shows the record has not yet appeared; the server will retry until the propagation timeout.
dns.record-lookup-faileddebugDNS record lookup failedA DNS lookup performed during propagation polling returned an error; check DNS resolver connectivity.
dns.record-propagatedinfoDNS record propagatedThe DNS record is now visible on the authoritative nameservers; propagation polling has completed successfully.
dns.record-propagation-timeoutwarnDNS record propagation timeoutThe configured propagation timeout elapsed before the record became visible; the dependent operation (e.g. ACME challenge) may fail.
dns.build-errorerrorDNS updater build errorFailed to initialize the DNS provider client from configuration; automatic DNS record management will not function.

Eval

EventLevelShortLong
eval.resulttraceExpression evaluation resultA configuration expression was evaluated and produced a result; logged at trace level for debugging rule logic.
eval.errordebugExpression evaluation errorA configuration expression could not be evaluated due to a syntax or runtime error; the rule using this expression may not behave as expected.
eval.directory-not-foundwarnDirectory not found while evaluating expressionAn expression referenced a directory backend by name that does not exist in the configuration; the expression cannot be evaluated.
eval.store-not-founddebugStore not found while evaluating expressionAn expression referenced a store backend by name that does not exist in the configuration; the expression cannot be evaluated.

Http

EventLevelShortLong
http.connection-startdebugHTTP connection startedA new inbound HTTP/HTTPS connection was accepted by the server.
http.connection-enddebugHTTP connection endedAn inbound HTTP/HTTPS connection was closed after completing its requests.
http.errordebugHTTP error occurredAn error was returned during an HTTP request, such as a 4xx or 5xx response or a transport-level failure.
http.request-urldebugHTTP request URLLogs the URL of an incoming HTTP request for debugging purposes.
http.request-bodytraceHTTP request bodyLogs the full body of an incoming HTTP request; only emitted at trace level due to potentially sensitive content.
http.response-bodytraceHTTP response bodyLogs the full body of an outgoing HTTP response; only emitted at trace level due to potentially sensitive content.
http.x-forwarded-missingwarnX-Forwarded-For header is missingThe server is configured to trust a reverse proxy but the X-Forwarded-For header was absent; the client IP cannot be determined accurately.

Imap

EventLevelShortLong
imap.connection-startdebugIMAP connection startedA new IMAP client connection was accepted; the server will begin processing IMAP commands from this client.
imap.connection-enddebugIMAP connection endedAn IMAP client connection was closed, either by the client logging out or due to a timeout or error.
imap.get-acldebugIMAP GET ACL commandClient requested mailbox ACL
imap.set-acldebugIMAP SET ACL commandClient set mailbox ACL
imap.my-rightsdebugIMAP MYRIGHTS commandClient requested mailbox rights
imap.list-rightsdebugIMAP LISTRIGHTS commandClient requested mailbox rights list
imap.appenddebugIMAP APPEND commandClient appended a message to a mailbox
imap.capabilitiesdebugIMAP CAPABILITIES commandClient requested server capabilities
imap.iddebugIMAP ID commandClient sent an ID command
imap.closedebugIMAP CLOSE commandClient closed a mailbox
imap.copydebugIMAP COPY commandClient copied messages between mailboxes
imap.movedebugIMAP MOVE commandClient moved messages between mailboxes
imap.create-mailboxdebugIMAP CREATE mailbox commandClient created a mailbox
imap.delete-mailboxdebugIMAP DELETE mailbox commandClient deleted a mailbox
imap.rename-mailboxdebugIMAP RENAME mailbox commandClient renamed a mailbox
imap.enabledebugIMAP ENABLE commandClient enabled an extension
imap.expungedebugIMAP EXPUNGE commandClient expunged messages
imap.fetchdebugIMAP FETCH commandClient fetched messages
imap.idle-startdebugIMAP IDLE startClient started IDLE
imap.idle-stopdebugIMAP IDLE stopClient stopped IDLE
imap.listdebugIMAP LIST commandClient listed mailboxes
imap.lsubdebugIMAP LSUB commandClient listed subscribed mailboxes
imap.logoutdebugIMAP LOGOUT commandClient logged out
imap.namespacedebugIMAP NAMESPACE commandClient requested namespace
imap.noopdebugIMAP NOOP commandClient sent a NOOP command
imap.searchdebugIMAP SEARCH commandClient searched for messages
imap.sortdebugIMAP SORT commandClient sorted messages
imap.selectdebugIMAP SELECT commandClient selected a mailbox
imap.statusdebugIMAP STATUS commandClient requested mailbox status
imap.storedebugIMAP STORE commandClient stored flags
imap.subscribedebugIMAP SUBSCRIBE commandClient subscribed to a mailbox
imap.unsubscribedebugIMAP UNSUBSCRIBE commandClient unsubscribed from a mailbox
imap.threaddebugIMAP THREAD commandClient requested message threads
imap.get-quotadebugIMAP GETQUOTA commandClient requested mailbox quota
imap.errordebugIMAP error occurredAn error occurred during an IMAP command
imap.raw-inputtraceRaw IMAP input receivedRaw bytes received from the IMAP client; logged at trace level for low-level IMAP session debugging.
imap.raw-outputtraceRaw IMAP output sentRaw bytes sent to the IMAP client; logged at trace level for low-level IMAP session debugging.

IncomingReport

EventLevelShortLong
incoming-report.dmarc-reportinfoDMARC report receivedAn aggregate DMARC report was received from a remote mail server and successfully parsed for processing.
incoming-report.dmarc-report-with-warningswarnDMARC report received with warningsA DMARC aggregate report was received and parsed but contained non-fatal issues; some data may have been skipped.
incoming-report.tls-reportinfoTLS report receivedA TLS-RPT report was received from a remote mail server and successfully parsed for processing.
incoming-report.tls-report-with-warningswarnTLS report received with warningsA TLS-RPT report was received and parsed but contained non-fatal issues; some data may have been skipped.
incoming-report.abuse-reportinfoAbuse report receivedAn ARF abuse report (e.g. spam complaint) was received from a feedback loop provider.
incoming-report.auth-failure-reportinfoAuthentication failure report receivedAn ARF authentication failure report was received, indicating a message failed DKIM, SPF, or DMARC at a remote site.
incoming-report.fraud-reportinfoFraud report receivedAn ARF fraud report was received, indicating a message was identified as phishing or a scam at the remote site.
incoming-report.not-spam-reportinfoNot spam report receivedAn ARF not-spam report was received, indicating a false-positive spam classification by the remote site.
incoming-report.virus-reportinfoVirus report receivedAn ARF virus report was received, indicating a message was identified as containing malware at the remote site.
incoming-report.other-reportinfoOther type of report receivedAn ARF report of an unrecognized type was received; it was logged but could not be classified for processing.
incoming-report.message-parse-failedinfoFailed to parse incoming report messageThe outer email message containing the report could not be parsed; the report contents cannot be processed.
incoming-report.dmarc-parse-failedinfoFailed to parse DMARC reportThe XML payload of the DMARC aggregate report could not be parsed; the report data will not be recorded.
incoming-report.tls-rpc-parse-failedinfoFailed to parse TLS RPC reportThe JSON payload of the TLS-RPT report could not be parsed; the report data will not be recorded.
incoming-report.arf-parse-failedinfoFailed to parse ARF reportThe ARF (Abuse Reporting Format) feedback report could not be parsed; the complaint data will not be recorded.
incoming-report.decompress-errorinfoError decompressing reportThe report attachment could not be decompressed (e.g. corrupt gzip); the report contents cannot be processed.

Iprev

EventLevelShortLong
iprev.passdebugIPREV check passedThe connecting IP's reverse DNS resolved to a hostname that in turn resolved back to the same IP, confirming a matching forward-confirmed reverse DNS.
iprev.faildebugIPREV check failedThe connecting IP either has no reverse DNS or the forward lookup of that hostname did not resolve back to the original IP.
iprev.perm-errordebugIPREV permanent errorA permanent DNS error prevented the reverse lookup from completing; the IPREV result is indeterminate.
iprev.temp-errordebugIPREV temporary errorA transient DNS error prevented the reverse lookup from completing; the IPREV result is indeterminate for this message.
iprev.nonedebugNo IPREV recordNo PTR record exists for the connecting IP address; IPREV cannot be evaluated.

Jmap

EventLevelShortLong
jmap.method-calldebugJMAP method callA JMAP API method was invoked by a client; logged for debugging API usage and performance.
jmap.invalid-argumentsdebugInvalid JMAP argumentsThe client supplied arguments that do not conform to the JMAP method specification; the call is rejected with an invalidArguments error.
jmap.request-too-largedebugJMAP request too largeThe JMAP request body exceeds the server's configured maximum size limit and is rejected.
jmap.state-mismatchdebugJMAP state mismatchThe client's ifInState or ifNotInState condition was not satisfied; the operation is rejected to prevent conflicting changes.
jmap.anchor-not-founddebugJMAP anchor not foundThe anchor object ID referenced in a paginated query was not found; the result window cannot be positioned.
jmap.unsupported-filterdebugUnsupported JMAP filterThe client used a filter operator or property that is not supported by this server implementation.
jmap.unsupported-sortdebugUnsupported JMAP sortThe client requested sorting by a property that is not supported by this server implementation.
jmap.unknown-methoddebugUnknown JMAP methodThe client called a method name that is not recognized; check that the required capability is included in the session.
jmap.invalid-result-referencedebugInvalid JMAP result referenceA back-reference to a previous method result in the same request was invalid or pointed to a non-existent result.
jmap.forbiddendebugJMAP operation forbiddenThe authenticated account does not have permission to perform this JMAP operation on the requested resource.
jmap.account-not-founddebugJMAP account not foundThe account ID supplied in the JMAP request does not exist or is not accessible to the authenticated user.
jmap.account-not-supported-by-methoddebugJMAP account not supported by methodThe requested JMAP method is not available for the specified account type.
jmap.account-read-onlydebugJMAP account is read-onlyThe client attempted a write operation on an account that only allows read access.
jmap.not-founddebugJMAP resource not foundThe requested object ID does not exist in the account or has been destroyed.
jmap.cannot-calculate-changesdebugCannot calculate JMAP changesThe server cannot compute the change delta since the client's state token; the client must perform a full resync.
jmap.unknown-data-typedebugUnknown JMAP data typeThe client referenced a data type that is not supported or not enabled via the session capabilities.
jmap.unknown-capabilitydebugUnknown JMAP capabilityThe request included a capability URI that the server does not recognize.
jmap.not-jsondebugJMAP request is not JSONThe request body could not be parsed as JSON; the entire JMAP request is rejected.
jmap.not-requestdebugJMAP input is not a requestThe JSON body was valid but did not conform to the JMAP Request object structure.
jmap.websocket-startdebugJMAP WebSocket connection startedA client established a JMAP-over-WebSocket connection for push updates and multiplexed API calls.
jmap.websocket-stopdebugJMAP WebSocket connection stoppedA JMAP WebSocket connection was closed by the client or due to a timeout.
jmap.websocket-errordebugJMAP WebSocket errorAn error occurred on a JMAP WebSocket connection; the connection may have been terminated.

Limit

EventLevelShortLong
limit.size-requestdebugRequest size limit reachedThe incoming request body exceeds the configured maximum request size; the request is rejected.
limit.size-uploaddebugUpload size limit reachedThe uploaded blob exceeds the configured maximum upload size; the upload is rejected.
limit.calls-indebugIncoming calls limit reachedThe number of method calls in a single JMAP request exceeds the server's configured maximum.
limit.concurrent-requestdebugConcurrent request limit reachedThe number of simultaneous in-flight requests from this account or IP has reached the configured limit; the request is rejected.
limit.concurrent-uploaddebugConcurrent upload limit reachedThe number of simultaneous blob uploads from this account has reached the configured limit.
limit.concurrent-connectionwarnConcurrent connection limit reachedThe number of simultaneous connections from this IP or account has reached the configured limit; new connections are refused.
limit.quotadebugQuota limit reachedThe account's storage quota has been reached; new messages or objects cannot be stored until space is freed.
limit.blob-quotadebugBlob quota limit reachedThe account's blob storage quota has been reached; blob uploads will be rejected until space is freed.
limit.tenant-quotainfoTenant quota limit reachedA tenant-level quota (users, domains, or storage) has been reached; operations that would exceed it are being rejected.
limit.too-many-requestswarnToo many requestsThe client has exceeded the configured request rate limit; requests are being throttled until the window resets.

MailAuth

EventLevelShortLong
mail-auth.parse-errordebugMail authentication parse errorA DKIM, SPF, or ARC header could not be parsed; the affected authentication check will be skipped for this message.
mail-auth.missing-parametersdebugMissing mail authentication parametersA required parameter for mail authentication (e.g. a mandatory DKIM tag) was absent; the check cannot proceed.
mail-auth.no-headers-founddebugNo headers found in messageThe message contains no headers relevant to mail authentication; signing or verification cannot be performed.
mail-auth.cryptodebugCrypto error during mail authenticationA cryptographic operation (signing or verification) failed during mail authentication processing.
mail-auth.iodebugI/O error during mail authenticationAn I/O error occurred while reading message data for mail authentication processing.
mail-auth.base64debugBase64 error during mail authenticationA base64-encoded value in a mail authentication header (e.g. a DKIM signature) could not be decoded.
mail-auth.dns-errordebugDNS errorA DNS query required for mail authentication (e.g. fetching a DKIM public key or SPF record) returned an error.
mail-auth.dns-record-not-founddebugDNS record not foundThe DNS record needed for mail authentication (e.g. a DKIM key or SPF policy) does not exist.
mail-auth.dns-invalid-record-typedebugInvalid DNS record typeThe DNS response for a mail authentication lookup returned an unexpected record type.
mail-auth.policy-not-aligneddebugPolicy not alignedThe authenticated domain does not align with the message's From header as required by DMARC policy.

ManageSieve

EventLevelShortLong
manage-sieve.connection-startdebugManageSieve connection startedA new ManageSieve client connection was accepted; the client can now upload, download, and manage Sieve filter scripts.
manage-sieve.connection-enddebugManageSieve connection endedA ManageSieve client connection was closed, either by logout, timeout, or error.
manage-sieve.create-scriptdebugManageSieve CREATE script commandClient created a script
manage-sieve.update-scriptdebugManageSieve UPDATE script commandClient updated a script
manage-sieve.get-scriptdebugManageSieve GET script commandClient fetched a script
manage-sieve.delete-scriptdebugManageSieve DELETE script commandClient deleted a script
manage-sieve.rename-scriptdebugManageSieve RENAME script commandClient renamed a script
manage-sieve.check-scriptdebugManageSieve CHECK script commandClient checked a script
manage-sieve.have-spacedebugManageSieve HAVESPACE commandClient checked for space
manage-sieve.list-scriptsdebugManageSieve LIST scripts commandClient listed scripts
manage-sieve.set-activedebugManageSieve SET ACTIVE commandClient set an active script
manage-sieve.capabilitiesdebugManageSieve CAPABILITIES commandClient requested server capabilities
manage-sieve.start-tlsdebugManageSieve STARTTLS commandClient requested TLS
manage-sieve.unauthenticatedebugManageSieve UNAUTHENTICATE commandClient unauthenticated
manage-sieve.logoutdebugManageSieve LOGOUT commandClient logged out
manage-sieve.noopdebugManageSieve NOOP commandClient sent a NOOP command
manage-sieve.errordebugManageSieve error occurredAn error occurred during a ManageSieve command
manage-sieve.raw-inputtraceRaw ManageSieve input receivedRaw bytes received from the ManageSieve client; logged at trace level for low-level protocol debugging.
manage-sieve.raw-outputtraceRaw ManageSieve output sentRaw bytes sent to the ManageSieve client; logged at trace level for low-level protocol debugging.

MessageIngest

EventLevelShortLong
message-ingest.haminfoMessage ingestedAn inbound message passed spam checks and was successfully delivered to the recipient's mailbox.
message-ingest.spaminfoPossible spam message ingestedAn inbound message was classified as likely spam and delivered to the Junk folder rather than the inbox.
message-ingest.imap-appendinfoMessage appended via IMAPA message was directly appended to a mailbox by an IMAP client using the APPEND command.
message-ingest.jmap-appendinfoMessage appended via JMAPA message was directly appended to a mailbox via the JMAP Email/import method.
message-ingest.duplicateinfoSkipping duplicate messageAn incoming message was detected as a duplicate of one already delivered; it has been discarded to prevent duplicates in the mailbox.
message-ingest.errorerrorMessage ingestion errorAn error occurred while storing an inbound message; the message may not have been delivered to the recipient.
message-ingest.search-indexinfoSearch index updatedThe full-text search index was updated after a new message was ingested or an existing message was modified.

Milter

EventLevelShortLong
milter.readtraceReading from MilterRaw data was read from the Milter socket; logged at trace level for low-level Milter protocol debugging.
milter.writetraceWriting to MilterRaw data was written to the Milter socket; logged at trace level for low-level Milter protocol debugging.
milter.action-acceptinfoMilter action: AcceptThe Milter requested to accept the message
milter.action-discardinfoMilter action: DiscardThe Milter requested to discard the message
milter.action-rejectinfoMilter action: RejectThe Milter requested to reject the message
milter.action-temp-failinfoMilter action: Temporary failureThe Milter requested to temporarily fail the message
milter.action-reply-codeinfoMilter action: Reply codeThe Milter requested a reply code
milter.action-connection-failureinfoMilter action: Connection failureThe Milter requested a connection failure
milter.action-shutdowninfoMilter action: ShutdownThe Milter requested a shutdown
milter.io-errorwarnMilter I/O errorAn I/O error occurred with the Milter
milter.frame-too-largewarnMilter frame too largeThe Milter frame was too large
milter.frame-invalidwarnInvalid Milter frameThe Milter frame was invalid
milter.unexpected-responsewarnUnexpected Milter responseAn unexpected response was received from the Milter
milter.timeoutwarnMilter timeoutA timeout occurred with the Milter
milter.tls-invalid-namewarnInvalid TLS name for MilterThe Milter TLS name is invalid
milter.disconnectedwarnMilter disconnectedThe Milter disconnected
milter.parse-errorwarnMilter parse errorAn error occurred while parsing the Milter response

MtaHook

EventLevelShortLong
mta-hook.action-acceptinfoMTA hook action: AcceptThe MTA hook requested to accept the message
mta-hook.action-discardinfoMTA hook action: DiscardThe MTA hook requested to discard the message
mta-hook.action-rejectinfoMTA hook action: RejectThe MTA hook requested to reject the message
mta-hook.action-quarantineinfoMTA hook action: QuarantineThe MTA hook requested to quarantine the message
mta-hook.errorwarnMTA hook errorAn error occurred with the MTA hook

MtaSts

EventLevelShortLong
mta-sts.authorizedinfoHost authorized by MTA-STS policyThe remote mail server's hostname matches the MTA-STS policy for the recipient domain; the TLS connection is permitted.
mta-sts.not-authorizedinfoHost not authorized by MTA-STS policyThe remote mail server's hostname is not listed in the MTA-STS policy; delivery may be blocked depending on the policy mode.
mta-sts.policy-fetchinfoFetched MTA-STS policyThe MTA-STS policy for the recipient domain was successfully retrieved and cached for outbound delivery decisions.
mta-sts.policy-not-foundinfoMTA-STS policy not foundNo MTA-STS policy exists for this recipient domain; TLS enforcement via MTA-STS is not applied.
mta-sts.policy-fetch-errorinfoError fetching MTA-STS policyThe MTA-STS policy could not be retrieved from the domain's HTTPS endpoint; TLS enforcement may fall back to best-effort.
mta-sts.invalid-policyinfoInvalid MTA-STS policyThe retrieved MTA-STS policy file is malformed or contains invalid directives; it cannot be applied.

Network

EventLevelShortLong
network.listen-startinfoNetwork listener startedA network listener is now accepting connections on the configured address and port.
network.listen-stopinfoNetwork listener stoppedA network listener has been shut down and is no longer accepting new connections.
network.listen-errorerrorNetwork listener errorThe network listener encountered a fatal error and may have stopped accepting connections.
network.bind-errorerrorNetwork bind errorFailed to bind the listener to the configured address and port; the port may already be in use or permissions may be insufficient.
network.read-errortraceNetwork read errorAn error occurred while reading data from a client connection; the connection may have been dropped by the client.
network.write-errortraceNetwork write errorAn error occurred while writing data to a client connection; the connection may have been closed unexpectedly.
network.flush-errortraceNetwork flush errorAn error occurred while flushing buffered data to a client connection.
network.accept-errordebugNetwork accept errorAn error occurred while accepting a new incoming connection; this is often transient and the listener continues running.
network.split-errorerrorNetwork split errorAn error occurred while splitting a TLS stream into read and write halves; the connection cannot be used.
network.timeoutdebugNetwork timeoutA network operation exceeded its configured timeout; the connection will be closed.
network.closedtraceNetwork connection closedA network connection was closed cleanly after completing its session.
network.proxy-errorwarnProxy protocol errorThe PROXY protocol header from the upstream load balancer was missing or malformed; the real client IP cannot be determined.
network.set-opt-errorerrorNetwork set option errorFailed to set a socket option (e.g. TCP keepalive or buffer size) on a connection; the connection may behave unexpectedly.

OutgoingReport

EventLevelShortLong
outgoing-report.spf-reportinfoSPF report sentAn SPF failure report was sent to the address specified in the domain's SPF record.
outgoing-report.spf-rate-limitedinfoSPF report rate limitedAn SPF failure report was suppressed because the reporting rate limit for this domain has been reached.
outgoing-report.dkim-reportinfoDKIM report sentA DKIM failure report was sent to the address specified in the DKIM signature's reporting tag.
outgoing-report.dkim-rate-limitedinfoDKIM report rate limitedA DKIM failure report was suppressed because the reporting rate limit for this selector has been reached.
outgoing-report.dmarc-reportinfoDMARC report sentA DMARC failure report was sent to the address specified in the domain's DMARC policy record.
outgoing-report.dmarc-rate-limitedinfoDMARC report rate limitedA DMARC failure report was suppressed because the reporting rate limit for this domain has been reached.
outgoing-report.dmarc-aggregate-reportinfoDMARC aggregate is being preparedA DMARC aggregate report is being compiled and will be sent to the domain's rua address at the scheduled interval.
outgoing-report.tls-aggregateinfoTLS aggregate report is being preparedA TLS-RPT aggregate report is being compiled and will be sent to the domain's TLS reporting address at the scheduled interval.
outgoing-report.http-submissioninfoReport submitted via HTTPThe report was submitted to the recipient's reporting endpoint via an HTTP POST request.
outgoing-report.unauthorized-reporting-addressinfoUnauthorized reporting addressThe external reporting address for this domain is not authorized via a DNS verification record; the report will not be sent.
outgoing-report.reporting-address-validation-errorinfoError validating reporting addressThe DNS verification check for the external reporting address failed; the report cannot be sent to that address.
outgoing-report.not-foundinfoReport not foundThe report referenced for submission could not be found in the queue; it may have already been sent or expired.
outgoing-report.submission-errorinfoError submitting reportAn error occurred while submitting the report via email or HTTP; the submission may be retried.
outgoing-report.no-recipients-foundinfoNo recipients found for reportNo valid reporting addresses were found for this domain; the report will not be sent.
outgoing-report.lockedinfoReport is locked by another processAnother cluster node is currently processing this report; this node will skip it to avoid duplicate submissions.
outgoing-report.max-size-exceededdebugReport size exceeds maximumThe compiled report exceeds the configured maximum size and will be truncated or split before sending.

Pop3

EventLevelShortLong
pop3.connection-startdebugPOP3 connection startedA new POP3 client connection was accepted; the server will begin processing POP3 commands from this client.
pop3.connection-enddebugPOP3 connection endedA POP3 client connection was closed, either by the client sending QUIT or due to a timeout or error.
pop3.deletedebugPOP3 DELETE commandClient deleted a message
pop3.resetdebugPOP3 RESET commandClient reset the session
pop3.quitdebugPOP3 QUIT commandClient quit the session
pop3.fetchdebugPOP3 FETCH commandClient fetched a message
pop3.listdebugPOP3 LIST commandClient listed messages
pop3.list-messagedebugPOP3 LIST specific message commandClient listed a specific message
pop3.uidldebugPOP3 UIDL commandClient requested unique identifiers
pop3.uidl-messagedebugPOP3 UIDL specific message commandClient requested a specific unique identifier
pop3.statdebugPOP3 STAT commandClient requested mailbox status
pop3.noopdebugPOP3 NOOP commandClient sent a NOOP command
pop3.capabilitiesdebugPOP3 CAPABILITIES commandClient requested server capabilities
pop3.start-tlsdebugPOP3 STARTTLS commandClient requested TLS
pop3.utf8debugPOP3 UTF8 commandClient requested UTF-8 support
pop3.errordebugPOP3 error occurredAn error occurred during a POP3 command
pop3.raw-inputtraceRaw POP3 input receivedRaw bytes received from the POP3 client; logged at trace level for low-level POP3 session debugging.
pop3.raw-outputtraceRaw POP3 output sentRaw bytes sent to the POP3 client; logged at trace level for low-level POP3 session debugging.

PushSubscription

EventLevelShortLong
push-subscription.successtracePush subscription successfulA push notification was successfully delivered to the client's registered push endpoint.
push-subscription.errordebugPush subscription errorA push notification could not be delivered to the client's endpoint; the subscription may be stale or the endpoint unreachable.
push-subscription.not-founddebugPush subscription not foundA push notification could not be sent because the referenced subscription no longer exists in the database.

Queue

EventLevelShortLong
queue.startedinfoMTA queue startedThe outbound MTA message queue has started and is ready to process and deliver queued messages.
queue.message-queuedinfoQueued message for deliveryAn inbound message was accepted and placed into the outbound delivery queue for processing.
queue.authenticated-message-queuedinfoQueued message submission for deliveryA message submitted by an authenticated SMTP client was accepted and placed into the outbound delivery queue.
queue.report-queuedinfoQueued report for deliveryA DMARC, TLS-RPT, or ARF report was placed into the delivery queue for sending to the recipient domain.
queue.dsn-queuedinfoQueued DSN for deliveryA delivery status notification (bounce or success) was placed into the queue for delivery back to the original sender.
queue.autogenerated-queuedinfoQueued autogenerated message for deliveryA system-generated message (e.g. calendar notification or auto-reply) was placed into the delivery queue.
queue.rescheduledinfoMessage rescheduled for deliveryA delivery attempt failed with a temporary error; the message has been rescheduled for a later retry.
queue.lockeddebugQueue event is locked by another processAnother cluster node is already processing this queue event; this node will skip it to avoid duplicate delivery attempts.
queue.blob-not-founddebugMessage blob not foundThe message body blob referenced by a queue entry could not be found in the blob store; the message cannot be delivered.
queue.rate-limit-exceededinfoRate limit exceededThe outbound rate limit for the destination domain or relay has been reached; delivery is deferred until the window resets.
queue.concurrency-limit-exceededinfoConcurrency limit exceededThe maximum number of simultaneous outbound delivery connections has been reached; new deliveries are deferred.
queue.quota-exceededinfoQuota exceededThe outbound queue size limit has been reached; new messages cannot be queued until existing ones are delivered or expired.
queue.back-pressurewarnQueue backpressure detectedQueue congested, processing can't keep up with incoming message rate

Registry

EventLevelShortLong
registry.local-read-errorerrorLocal registry read errorThe local configuration registry file could not be read; the server may be running with a stale or default configuration.
registry.local-write-errorerrorLocal registry write errorA configuration change could not be persisted to the local registry file; the change may be lost on restart.
registry.local-parse-errorerrorLocal registry parse errorThe local registry file contains invalid syntax or structure and could not be parsed; configuration may not load correctly.
registry.read-errorerrorRegistry read errorThe remote or distributed registry store returned an error on read; configuration retrieval may be incomplete.
registry.write-errorerrorRegistry write errorA configuration change could not be written to the registry store; the change will not be persisted.
registry.deserialization-errorerrorRegistry deserialization errorA registry entry could not be deserialized; it may have been written by an incompatible version of the server.
registry.build-errorerrorConfiguration build errorThe server configuration could not be assembled from registry entries; the server may not start or reload correctly.
registry.build-warningwarnConfiguration build warningA non-fatal issue was encountered while building the configuration; the server will continue but some settings may be ignored.
registry.not-supporteddebugOperation not supported by local registryThe requested registry operation is not available when using the local file-based registry backend.
registry.validation-errorerrorObject validation errorA configuration object failed schema validation; the invalid entry will not be applied.

Resource

EventLevelShortLong
resource.not-founddebugResource not foundA requested static or dynamic resource (e.g. a web asset or lookup file) was not found.
resource.bad-parameterserrorBad resource parametersA resource request contained invalid or missing parameters; the request cannot be fulfilled.
resource.errorerrorResource errorAn unexpected error occurred while serving or loading a resource.
resource.download-externalinfoDownloading external resourceAn external resource (e.g. a blocklist or lookup file) is being fetched from a remote URL.
resource.application-updatedinfoApplication resource updatedAn external web application resource (e.g. a web admin interface) has been updated.
resource.application-unpackeddebugApplication resource unpackedAn external web application resource has been unpacked to a local directory and is ready to be served.

Security

EventLevelShortLong
security.authentication-baninfoBanned due to authentication errorsIP address was banned due to multiple authentication errors
security.abuse-baninfoBanned due to abuseIP address was banned due to abuse, such as RCPT TO attacks
security.scan-baninfoBanned due to scanIP address was banned due to exploit scanning
security.loiter-baninfoBanned due to loiteringIP address was banned due to multiple loitering events
security.ip-blockedinfoBlocked IP addressRejected connection from blocked IP address
security.ip-block-expiredinfoIP block expiredA temporary IP block has passed its expiry time and has been removed; the IP may now connect again.
security.ip-allow-expiredinfoIP allow expiredA temporary IP allowlist entry has passed its expiry time and has been removed; the IP is subject to normal access rules again.
security.ip-unauthorizedinfoUnauthorized IP addressIP address is not authorized to authenticate using this credential
security.unauthorizedinfoUnauthorized accessAccount does not have permission to access resource

Server

EventLevelShortLong
server.startupinfoStarting Stalwart ServerThe server has finished initializing all subsystems and is now accepting connections.
server.shutdowninfoShutting down Stalwart ServerA graceful shutdown has been initiated; active connections will be drained before the process exits.
server.startup-errorerrorServer startup errorA fatal error occurred during server initialization; the server was unable to start.
server.thread-errorerrorServer thread errorA background worker thread panicked or encountered an unrecoverable error.
server.licensinginfoServer licensing eventA license-related event occurred, such as license validation, expiry warning, or activation.
server.recovery-modewarnServer started in recovery modeThe server has started in recovery mode to allow for maintenance or troubleshooting.
server.bootstrap-modewarnServer started in bootstrap modeThe server has started in bootstrap mode to allow for initial configuration load.

Sieve

EventLevelShortLong
sieve.action-acceptdebugSieve action: AcceptThe Sieve script requested to accept the message
sieve.action-accept-replacedebugSieve action: Accept and replaceThe Sieve script requested to accept the message and replace its contents
sieve.action-discarddebugSieve action: DiscardThe Sieve script requested to discard the message
sieve.action-rejectdebugSieve action: RejectThe Sieve script requested to reject the message
sieve.send-messageinfoSieve sending messageA Sieve script triggered a redirect, vacation reply, or other outbound message action.
sieve.message-too-largewarnSieve message too largeThe Sieve script attempted to send a message that exceeds the configured size limit; the action is aborted.
sieve.script-not-foundwarnSieve script not foundA Sieve script referenced by name in a configuration rule or include action was not found.
sieve.list-not-foundwarnSieve list not foundA Sieve script referenced a lookup list (e.g. for address matching) that does not exist.
sieve.runtime-errordebugSieve runtime errorA Sieve script encountered a recoverable runtime error during execution; the failing action may be skipped.
sieve.unexpected-errorerrorUnexpected Sieve errorAn unexpected internal error occurred while executing a Sieve script; message processing may be incomplete.
sieve.not-supportedwarnSieve action not supportedA Sieve script attempted to use an action or extension that is not supported or not enabled on this server.
sieve.quota-exceededwarnSieve quota exceededThe Sieve script exceeded the configured resource quota (e.g. redirect count or message size); further actions are blocked.

Smtp

EventLevelShortLong
smtp.connection-startdebugSMTP connection startedA new SMTP connection was started
smtp.connection-enddebugSMTP connection endedThe SMTP connection was ended
smtp.errordebugSMTP error occurredAn error occurred during an SMTP command
smtp.id-not-foundwarnStrategy not foundThe strategy ID was not found in the configuration
smtp.concurrency-limit-exceededinfoConcurrency limit exceededThe concurrency limit was exceeded
smtp.transfer-limit-exceededinfoTransfer limit exceededThe remote host transferred more data than allowed
smtp.rate-limit-exceededinfoRate limit exceededThe rate limit was exceeded
smtp.time-limit-exceededinfoTime limit exceededThe remote host kept the SMTP session open too long
smtp.missing-auth-directoryinfoMissing auth directoryThe auth directory was missing
smtp.message-parse-failedinfoMessage parsing failedFailed to parse the message
smtp.message-too-largeinfoMessage too largeThe message was rejected because it was too large
smtp.loop-detectedinfoMail loop detectedA mail loop was detected, the message contains too many Received headers
smtp.dkim-passinfoDKIM verification passedSuccessful DKIM verification
smtp.dkim-failinfoDKIM verification failedFailed to verify DKIM signature
smtp.arc-passinfoARC verification passedSuccessful ARC verification
smtp.arc-failinfoARC verification failedFailed to verify ARC signature
smtp.spf-ehlo-passinfoSPF EHLO check passedEHLO identity passed SPF check
smtp.spf-ehlo-failinfoSPF EHLO check failedEHLO identity failed SPF check
smtp.spf-from-passinfoSPF From check passedMAIL FROM identity passed SPF check
smtp.spf-from-failinfoSPF From check failedMAIL FROM identity failed SPF check
smtp.dmarc-passinfoDMARC check passedSuccessful DMARC verification
smtp.dmarc-failinfoDMARC check failedFailed to verify DMARC policy
smtp.iprev-passinfoIPREV check passedReverse IP check passed
smtp.iprev-failinfoIPREV check failedReverse IP check failed
smtp.too-many-messagesinfoToo many messagesThe remote server exceeded the number of messages allowed per session
smtp.ehloinfoSMTP EHLO commandThe remote server sent an EHLO command
smtp.invalid-ehloinfoInvalid EHLO commandThe remote server sent an invalid EHLO command
smtp.did-not-say-ehlodebugClient did not say EHLOThe remote server did not send EHLO command
smtp.ehlo-expecteddebugEHLO command expectedThe remote server sent a LHLO command while EHLO was expected
smtp.lhlo-expecteddebugLHLO command expectedThe remote server sent an EHLO command while LHLO was expected
smtp.mail-from-unauthenticateddebugMAIL FROM without authenticationThe remote client did not authenticate before sending MAIL FROM
smtp.mail-from-unauthorizeddebugMAIL FROM unauthorizedThe remote client is not authorized to send mail from the given address
smtp.mail-from-not-alloweddebugMAIL FROM not allowedThe remote client is not allowed to send mail from this address
smtp.mail-from-rewrittendebugMAIL FROM address rewrittenThe envelope sender address was rewritten
smtp.mail-from-missingdebugMAIL FROM address missingThe remote client issued an RCPT TO command before MAIL FROM
smtp.mail-frominfoSMTP MAIL FROM commandThe remote client sent a MAIL FROM command
smtp.multiple-mail-fromdebugMultiple MAIL FROM commandsThe remote client already sent a MAIL FROM command
smtp.mailbox-does-not-existinfoMailbox does not existThe mailbox does not exist on the server
smtp.relay-not-allowedinfoRelay not allowedThe server does not allow relaying
smtp.rcpt-toinfoSMTP RCPT TO commandThe remote client sent an RCPT TO command
smtp.rcpt-to-duplicatedebugDuplicate RCPT TOThe remote client already sent an RCPT TO command for this recipient
smtp.rcpt-to-rewrittendebugRCPT TO address rewrittenThe envelope recipient address was rewritten
smtp.rcpt-to-missingdebugRCPT TO address missingThe remote client issued a DATA command before RCPT TO
smtp.rcpt-to-greylistedinfoRCPT TO greylistedThe recipient was greylisted
smtp.too-many-recipientsinfoToo many recipientsThe remote client exceeded the number of recipients allowed
smtp.too-many-invalid-rcptinfoToo many invalid recipientsThe remote client exceeded the number of invalid RCPT TO commands allowed
smtp.raw-inputtraceRaw SMTP input receivedRaw bytes received from the remote SMTP client; logged at trace level for low-level SMTP session debugging.
smtp.raw-outputtraceRaw SMTP output sentRaw bytes sent to the remote SMTP client; logged at trace level for low-level SMTP session debugging.
smtp.missing-local-hostnamewarnMissing local hostnameThe local hostname is missing in the configuration
smtp.vrfyinfoSMTP VRFY commandThe remote client sent a VRFY command
smtp.vrfy-not-foundinfoVRFY address not foundThe remote client sent a VRFY command for an address that was not found
smtp.vrfy-disabledinfoVRFY command disabledThe VRFY command is disabled
smtp.expninfoSMTP EXPN commandThe remote client sent an EXPN command
smtp.expn-not-foundinfoEXPN address not foundThe remote client sent an EXPN command for an address that was not found
smtp.expn-disabledinfoEXPN command disabledThe EXPN command is disabled
smtp.require-tls-disableddebugREQUIRETLS extension disabledThe REQUIRETLS extension is disabled
smtp.deliver-by-disableddebugDELIVERBY extension disabledThe DELIVERBY extension is disabled
smtp.deliver-by-invaliddebugInvalid DELIVERBY parameterThe DELIVERBY parameter is invalid
smtp.future-release-disableddebugFUTURE RELEASE extension disabledThe FUTURE RELEASE extension is disabled
smtp.future-release-invaliddebugInvalid FUTURE RELEASE parameterThe FUTURE RELEASE parameter is invalid
smtp.mt-priority-disableddebugMT-PRIORITY extension disabledThe MT-PRIORITY extension is disabled
smtp.mt-priority-invaliddebugInvalid MT-PRIORITY parameterThe MT-PRIORITY parameter is invalid
smtp.dsn-disableddebugDSN extension disabledThe DSN extension is disabled
smtp.auth-not-allowedinfoAuthentication not allowedAuthentication is not allowed on this listener
smtp.auth-mechanism-not-supportedinfoAuth mechanism not supportedThe requested authentication mechanism is not supported
smtp.auth-exchange-too-longdebugAuth exchange too longThe authentication exchange was too long
smtp.already-authenticateddebugAlready authenticatedThe client is already authenticated
smtp.noopdebugSMTP NOOP commandThe remote client sent a NOOP command
smtp.start-tlsdebugSMTP STARTTLS commandThe remote client requested a TLS connection
smtp.start-tls-unavailabledebugSTARTTLS unavailableThe remote client requested a TLS connection but it is not available
smtp.start-tls-alreadydebugTLS already activeTLS is already active
smtp.rsetdebugSMTP RSET commandThe remote client sent a RSET command
smtp.quitdebugSMTP QUIT commandThe remote client sent a QUIT command
smtp.helpdebugSMTP HELP commandThe remote client sent a HELP command
smtp.command-not-implementeddebugCommand not implementedThe server does not implement the requested command
smtp.invalid-commanddebugInvalid commandThe remote client sent an invalid command
smtp.invalid-sender-addressdebugInvalid sender addressThe specified sender address is invalid
smtp.invalid-recipient-addressdebugInvalid recipient addressThe specified recipient address is invalid
smtp.invalid-parameterdebugInvalid parameterThe command contained an invalid parameter
smtp.unsupported-parameterdebugUnsupported parameterThe command contained an unsupported parameter
smtp.syntax-errordebugSyntax errorThe command contained a syntax error
smtp.request-too-largeinfoRequest too largeThe request was too large

Spam

EventLevelShortLong
spam.pyzordebugPyzor successA Pyzor collaborative spam hash check completed successfully; the result is used as a spam scoring signal.
spam.pyzor-errordebugPyzor errorThe Pyzor network query failed; this spam signal will be unavailable for this message.
spam.dnsbldebugDNSBL queryA DNS blocklist lookup completed; the result is used as a spam scoring signal for the message.
spam.dnsbl-errordebugError querying DNSBLA DNS blocklist lookup failed due to a DNS error; this blocklist signal will be unavailable for this message.
spam.train-startedinfoSpam classifier training startedThe SGD logistic regression spam classifier has begun a training run on accumulated samples.
spam.train-completedinfoSpam classifier training completedThe SGD logistic regression spam classifier training run finished; the updated model is now active.
spam.train-sample-addeddebugNew training sample addedA user-classified message (spam or ham) was added to the training corpus for the next classifier training run.
spam.train-sample-not-foundwarnTraining sample not foundA training sample referenced during a training run could not be found in the store; it will be skipped.
spam.classifydebugClassifying message for spamThe spam classifier is scoring the message using the trained model and configured rules.
spam.model-loadedinfoSpam classifier model loadedThe trained spam classifier model was loaded from storage and is ready to classify incoming messages.
spam.model-not-readyinfoSpam classifier model not readyThe spam classifier has not yet been trained with enough samples to produce reliable results; classification is skipped.
spam.model-not-foundinfoSpam classifier model not foundNo trained spam classifier model exists yet; the classifier will be unavailable until sufficient training samples are provided.
spam.rules-updatedinfoSpam filter rules updatedThe spam filter ruleset was reloaded after a configuration or remote update.

Spf

EventLevelShortLong
spf.passdebugSPF check passedThe sending server's IP is explicitly authorized to send mail for the domain in the SPF record.
spf.faildebugSPF check failedThe sending server's IP is explicitly not authorized; the message should be rejected or marked per DMARC policy.
spf.soft-faildebugSPF soft failThe sending server's IP is not authorized but the domain owner prefers the message be accepted with a warning rather than rejected.
spf.neutraldebugSPF neutral resultThe domain's SPF record makes no assertion about the sending IP; the result is treated as if no record exists.
spf.temp-errordebugSPF temporary errorA transient DNS error prevented the SPF check from completing; the result is treated as neutral for this message.
spf.perm-errordebugSPF permanent errorThe SPF record is syntactically invalid or caused a lookup limit to be exceeded; the check result is indeterminate.
spf.nonedebugNo SPF recordNo SPF record was published for the sending domain; the check result is none and no authorization decision can be made.

Store

EventLevelShortLong
store.assert-value-failederrorAnother process modified the recordAn optimistic locking conflict was detected; another process updated the same record concurrently and the operation must be retried.
store.foundationdb-errorerrorFoundationDB errorAn error was returned by the FoundationDB backend; check FoundationDB cluster health and connectivity.
store.mysql-errorerrorMySQL errorAn error was returned by the MySQL backend; check database connectivity, credentials, and query logs.
store.postgresql-errorerrorPostgreSQL errorAn error was returned by the PostgreSQL backend; check database connectivity, credentials, and query logs.
store.rocksdb-errorerrorRocksDB errorAn error was returned by the RocksDB embedded store; this may indicate disk issues or a corrupted database file.
store.sqlite-errorerrorSQLite errorAn error was returned by the SQLite backend; this may indicate a locked, corrupted, or missing database file.
store.ldap-errorerrorLDAP errorAn error was returned by the LDAP directory server; check connectivity, bind credentials, and server logs.
store.elasticsearch-errorerrorElasticSearch errorAn error was returned by the Elasticsearch backend; check cluster health, index availability, and connectivity.
store.meilisearch-errorerrorMeilisearch errorAn error was returned by the Meilisearch backend; check service availability and index configuration.
store.redis-errorerrorRedis errorAn error was returned by the Redis backend; check connectivity and Redis server health.
store.s3-errorerrorS3 errorAn error was returned by the S3-compatible blob store; check bucket permissions, credentials, and endpoint configuration.
store.azure-errorerrorAzure errorAn error was returned by the Azure Blob Storage backend; check container permissions and connection string.
store.filesystem-errorerrorFilesystem errorA filesystem operation failed; check disk space, file permissions, and the configured storage path.
store.pool-errorerrorConnection pool errorA database connection pool error occurred; the pool may be exhausted or the backend may be unreachable.
store.data-corruptionerrorData corruption detectedA stored value failed integrity checks; the record may be unreadable and manual recovery may be required.
store.decompress-errorerrorDecompression errorA stored blob or record could not be decompressed; the data may be corrupt.
store.deserialize-errorerrorDeserialization errorA stored record could not be deserialized; it may have been written by an incompatible version of the server.
store.not-founddebugRecord not found in databaseA lookup for a specific record returned no result; the caller will handle this as an expected miss.
store.not-configurederrorStore not configuredAn operation was attempted on a store backend that has not been configured; check the server configuration.
store.not-supportederrorOperation not supported by storeThe requested operation is not supported by the currently configured store backend.
store.unexpected-errorerrorUnexpected store errorAn unclassified internal error occurred in the store layer; consult the server logs for details.
store.crypto-errorerrorStore crypto errorAn encryption or decryption operation on stored data failed; check key configuration and data integrity.
store.http-store-errorwarnError updating HTTP storeA download of an HTTP lookup list (e.g. a blocklist or allowlist) failed; the list will not be updated until the next retry.
store.cache-missdebugCache missNo cached account data was found; the data will be loaded from the database and cached for subsequent requests.
store.cache-hitdebugCache hitValid cached account data was found; the database lookup is skipped for this request.
store.cache-staledebugCache is staleThe cached account data has expired or been invalidated; it is being rebuilt from the database.
store.cache-updatedebugCache updateThe account data cache was refreshed with the latest changes from the database.
store.blob-missing-markerwarnBlob missing markerA blob in storage is missing its expected format marker; the blob may be corrupt or from an incompatible version.
store.data-writetraceWrite batch operationA batched write transaction was committed to the data store; logged at trace level for storage debugging.
store.data-iteratetraceData store iteration operationA range scan or iteration over the data store was performed; logged at trace level for storage debugging.
store.blob-readtraceBlob read operationA blob was read from the blob store; logged at trace level for storage debugging.
store.blob-writetraceBlob write operationA blob was written to the blob store; logged at trace level for storage debugging.
store.blob-deletetraceBlob delete operationA blob was deleted from the blob store; logged at trace level for storage debugging.
store.sql-querytraceSQL query executedA SQL query was executed against the configured relational database backend; logged at trace level for query debugging.
store.ldap-querytraceLDAP query executedAn LDAP query was executed against the configured directory server; logged at trace level for query debugging.
store.ldap-warningdebugLDAP authentication warningAn LDAP directory operation returned a warning response; authentication may have partially succeeded.
store.http-store-fetchdebugHTTP store updatedAn HTTP lookup list was successfully downloaded and the in-memory store has been updated with its contents.
store.auto-expungedebugAuto-expunge executedScheduled cleanup ran and deleted expired messages from Trash and Junk folders per the configured retention policy.
store.blob-store-purgedinfoBlob store purge completedThe scheduled blob store purge finished, removing orphaned or expired blobs to reclaim storage space.
store.data-store-purgedinfoData store purge completedThe scheduled data store purge finished, removing expired records and compacting the database.

TaskManager

EventLevelShortLong
task-manager.task-acquireddebugTask acquired from queueA background task was dequeued and assigned to this node for execution.
task-manager.task-queuedinfoTask queued for processingA new background task has been placed into the task queue and is waiting for a worker to pick it up.
task-manager.task-scheduledinfoTask scheduled for future executionA background task has been scheduled to run at a future time, such as a deferred report or maintenance job.
task-manager.task-lockeddebugTask is locked by another processAnother cluster node has already acquired this task; this node will skip it to avoid duplicate execution.
task-manager.task-ignoreddebugTask ignored based on current server rolesThis task type is not assigned to the current node's cluster role; the task is skipped without processing.
task-manager.task-failedwarnTask failed during processingA background task encountered an error during execution; it may be retried depending on the retry policy.
task-manager.task-retrydebugTask will be retriedA background task failed but is eligible for retry; it has been rescheduled according to the retry strategy.
task-manager.blob-not-founddebugBlob not found for taskA blob required for task execution was not found in the blob store; the task cannot proceed.
task-manager.metadata-not-founddebugMetadata not found for taskMetadata required for task execution was not found in the store; the task cannot proceed.
task-manager.scheduler-startedinfoTask scheduler startedThe task scheduler subsystem has started and is now triggering scheduled background tasks.
task-manager.manager-startedinfoTask manager startedThe task manager subsystem has started and is now processing background task queues.

Telemetry

EventLevelShortLong
telemetry.alert-eventwarnAlert event triggeredA configured metric alert threshold was crossed; an alert notification will be sent to the configured recipients.
telemetry.alert-messageinfoAlert message sentAn alert notification email was dispatched to the configured recipients for a triggered metric alert.
telemetry.log-errorwarnLog collector errorThe log collector encountered an error writing to the configured log target; log entries may be lost.
telemetry.webhook-errorwarnWebhook collector errorAn event could not be delivered to the configured webhook endpoint; the event may be dropped or retried.
telemetry.otel-exporter-errorwarnOpenTelemetry exporter errorAn error occurred while exporting traces or spans to the configured OpenTelemetry collector endpoint.
telemetry.otel-metrics-exporter-errorwarnOpenTelemetry metrics exporter errorAn error occurred while exporting metrics to the configured OpenTelemetry metrics endpoint.
telemetry.prometheus-exporter-errorwarnPrometheus exporter errorAn error occurred while serving or pushing metrics to the Prometheus scrape endpoint.
telemetry.journal-errorwarnJournal collector errorAn error occurred while writing events to the system journal (e.g. journald); log entries may be lost.
telemetry.metrics-collectedinfoMetrics collectedA metrics collection cycle completed; counters and histograms have been sampled and are ready for export.
telemetry.metrics-storeddebugMetric storeCollected metrics were persisted to the internal metrics store for historical querying.
telemetry.metrics-pusheddebugMetrics pushedA batch of metrics was successfully pushed to all configured telemetry exporters.

Tls

EventLevelShortLong
tls.handshakeinfoTLS handshakeA TLS handshake with a client or server completed successfully; the connection is now encrypted.
tls.handshake-errordebugTLS handshake errorA TLS handshake failed; the client may not support the configured TLS version or cipher, or presented an invalid certificate.
tls.not-configurederrorTLS not configuredA TLS connection was requested but no certificate is configured for this listener; the connection cannot be established.
tls.certificate-not-founddebugTLS certificate not foundNo certificate matching the client's SNI hostname was found; the default certificate will be used if one is configured.
tls.no-certificates-availablewarnNo TLS certificates availableNo valid TLS certificates are available for this listener; TLS connections will fail until a certificate is provisioned.
tls.multiple-certificates-availablewarnMultiple TLS certificates availableMore than one certificate matches the requested SNI hostname; the first matching certificate will be used.
tls.expired-certificate-removedinfoCertificate expired and removedAn expired TLS certificate was automatically removed from the active certificate store during a cleanup cycle.

TlsRpt

EventLevelShortLong
tls-rpt.record-fetchinfoFetched TLS-RPT recordThe TLS-RPT DNS record for the recipient domain was fetched to determine where TLS failure reports should be sent.
tls-rpt.record-fetch-errorinfoError fetching TLS-RPT recordA DNS error occurred while fetching the TLS-RPT record; TLS failure reports cannot be sent for this domain.
tls-rpt.record-not-foundinfoTLS-RPT record not foundNo TLS-RPT record was found for the domain; the domain has not opted into TLS failure reporting.

WebDav

EventLevelShortLong
web-dav.propfinddebugWebDAV PROPFIND requestA client requested property metadata for a resource or collection (used by CalDAV/CardDAV for calendar and contact discovery).
web-dav.proppatchdebugWebDAV PROPPATCH requestA client updated property metadata on a resource or collection.
web-dav.getdebugWebDAV GET requestA client downloaded a resource such as a calendar event, contact, or file.
web-dav.headdebugWebDAV HEAD requestA client requested headers only for a resource, typically to check existence or modification time without downloading the body.
web-dav.reportdebugWebDAV REPORT requestA client issued a REPORT query, used by CalDAV/CardDAV for calendar queries, free-busy lookups, and sync operations.
web-dav.mkcoldebugWebDAV MKCOL requestA client created a new collection (folder) on the server.
web-dav.mkcalendardebugWebDAV MKCALENDAR requestA CalDAV client created a new calendar collection.
web-dav.deletedebugWebDAV DELETE requestA client deleted a resource or collection from the server.
web-dav.putdebugWebDAV PUT requestA client uploaded or updated a resource such as a calendar event or contact card.
web-dav.postdebugWebDAV POST requestA client submitted data via POST, typically used for CalDAV scheduling or free-busy queries.
web-dav.patchdebugWebDAV PATCH requestA client applied a partial update to a resource.
web-dav.copydebugWebDAV COPY requestA client copied a resource or collection to another location on the server.
web-dav.movedebugWebDAV MOVE requestA client moved or renamed a resource or collection on the server.
web-dav.lockdebugWebDAV LOCK requestA client acquired a write lock on a resource to prevent concurrent modifications.
web-dav.unlockdebugWebDAV UNLOCK requestA client released a previously acquired write lock on a resource.
web-dav.acldebugWebDAV ACL requestA client modified the access control list for a resource or collection.
web-dav.optionsdebugWebDAV OPTIONS requestA client requested the supported HTTP methods and WebDAV features for a resource, typically during capability discovery.
web-dav.errordebugWebDAV errorAn error occurred while processing a WebDAV request; check the associated status code and resource path.

Keys

Events carry structured key/value pairs. The recognised keys are listed below.

KeyDescription
accountNameAccount name
accountIdAccount ID
blobIdBlob ID
causedByCaused by
changeIdChange ID
codeStatus code
collectionCollection
contentsContents
detailsDetails
dkimFailDKIM failures
dkimNoneDKIM none
dkimPassDKIM passes
dmarcNoneDMARC none
dmarcPassDMARC passes
dmarcQuarantineDMARC quarantined
dmarcRejectDMARC rejected
documentIdDocument ID
domainDomain
dueDue date
elapsedElapsed time
expiresExpiration
fromFrom address
hostnameHostname
idID
keyKey
limitLimit
listenerIdListener ID
localIpLocal IP
localPortLocal port
mailboxNameMailbox name
mailboxIdMailbox ID
messageIdMessage-ID
nextDsnNext DSN
nextRetryNext retry
pathPath
policyPolicy
queueIdQueue ID
rangeFromRange start
rangeToRange end
reasonReason
remoteIpRemote IP
remotePortRemote port
reportIdReport ID
resultResult
sizeSize
sourceSource
spanIdSpan ID
spfFailSPF failures
spfNoneSPF none
spfPassSPF passes
strictStrict mode
tlsTLS version
toTo address
totalTotal
totalFailuresTotal failures
totalSuccessesTotal successes
typeType
uidIMAP UID
uidNextIMAP UID next
uidValidityIMAP UID validity
urlURL
validFromValid from
validToValid to
valueValue
versionVersion
queueNameQueue name