Skip to main content

Events

Events are specific occurrences or actions within the system that are recorded for monitoring, auditing, and troubleshooting purposes. These events can range from user authentication attempts to message delivery notifications. Stalwart emits hundreds of different events, such as "auth successful," "message delivered," and many others, each capturing a particular aspect of the server's operation.

Each event is assigned a default logging level, which indicates the importance or severity of the event. The logging levels help to categorize events, making it easier to filter and manage them based on their significance. Tracers and loggers in Stalwart use these logging levels to decide which events to record. By configuring the logging levels, administrators can control the granularity of the data collected—choosing to log only critical events, all events, or anything in between.

Stalwart supports multiple loggers and tracers, each with its own configured logging level. This flexibility allows for different aspects of the system to be monitored with varying levels of detail. For instance, a logger configured to capture detailed debugging information might run alongside another that logs only errors and critical issues.

It is important to note that Webhooks operate differently from loggers and tracers. They do not rely on logging levels. Instead, they are configured to send a predefined list of events to external systems or services. This means that Webhooks can be used to deliver specific notifications in real-time, regardless of the event's logging level, providing a flexible mechanism for integrating Stalwart with other applications and services.

Event Levels

Logging levels define the severity or importance of events that are captured and recorded. They help in filtering the events, allowing administrators and developers to focus on the most relevant information. Here's a brief explanation of each logging level:

  • info: This level captures general information about the system's operations. It is typically used for logging normal, successful operations and significant milestones in the application's flow.
  • warn: This level captures events that are not errors but may indicate potential issues or unusual situations that should be monitored. Warnings are useful for highlighting situations that could potentially lead to problems.
  • error: This level captures events that indicate a failure or an issue that has occurred. Errors are critical problems that typically require immediate attention, as they may affect the system's functionality or stability.
  • debug: This level captures detailed diagnostic information useful for developers when troubleshooting or diagnosing issues. Debug logs provide more granular details than Info logs, often including internal state information.
  • trace: This is the most detailed level of logging, capturing fine-grained information about the system's operations. Trace logs are useful for in-depth debugging, as they record almost everything happening within the system.
  • disable: This level effectively disables logging. No events are captured or recorded when this level is set. It's useful when logging is not needed or to reduce overhead in production environments where minimal logging is required.

By using these logging levels, administrators can tailor the verbosity of logs according to their needs, balancing the amount of collected data with the relevance and importance of the information. This flexibility helps in managing storage, performance, and the ease of troubleshooting and monitoring the system.

Overriding

The default severity or logging level of each event can be overridden to customize which events are captured based on specific needs. This is done by setting the tracing.level.<event_id> key in the configuration file to the desired logging level.

For example, if the default level for a particular event, such as auth.success is set to info but you want to capture it at the debug level for more detailed information, you can adjust the configuration accordingly. For example:

[tracing.level]
auth.success = "debug"

This allows for fine-tuning of the logging output, ensuring that only relevant events are recorded at the appropriate level of detail.

By overriding the default levels, you can increase the verbosity for specific events that require closer monitoring or reduce it for less critical events to save on storage and processing resources. This flexibility is particularly useful in environments where different components or services may require different levels of attention and detail in their logging.

Event Types

The following are the event types that Stalwart Mail Server captures along with their default logging levels:

EventDescriptionLevel
acme.auth-completedACME authentication completedINFO
acme.auth-errorACME authentication errorWARN
acme.auth-pendingACME authentication pendingINFO
acme.auth-startACME authentication startedINFO
acme.auth-too-many-attemptsToo many ACME authentication attemptsWARN
acme.auth-validACME authentication validINFO
acme.client-missing-sniACME client missing SNIDEBUG
acme.client-supplied-sniACME client supplied SNIDEBUG
acme.dns-record-createdACME DNS record createdINFO
acme.dns-record-creation-failedACME DNS record creation failedWARN
acme.dns-record-deletion-failedACME DNS record deletion failedDEBUG
acme.dns-record-lookup-failedACME DNS record lookup failedDEBUG
acme.dns-record-not-propagatedACME DNS record not propagatedDEBUG
acme.dns-record-propagatedACME DNS record propagatedINFO
acme.dns-record-propagation-timeoutACME DNS record propagation timeoutWARN
acme.errorACME errorERROR
acme.order-completedACME order completedINFO
acme.order-invalidACME order invalidWARN
acme.order-processingACME order processingINFO
acme.order-readyACME order readyINFO
acme.order-startACME order startedINFO
acme.order-validACME order validINFO
acme.process-certProcessing ACME certificateINFO
acme.renew-backoffACME renew backoffDEBUG
acme.tls-alpn-errorACME TLS ALPN errorWARN
acme.tls-alpn-receivedACME TLS ALPN receivedINFO
acme.token-not-foundACME token not foundWARN
arc.broken-chainBroken ARC chainDEBUG
arc.chain-too-longARC chain too longDEBUG
arc.has-header-tagARC has header tagDEBUG
arc.invalid-cvInvalid ARC CVDEBUG
arc.invalid-instanceInvalid ARC instanceDEBUG
arc.sealer-not-foundARC sealer not foundWARN
auth.errorAuthentication errorERROR
auth.failedAuthentication failedDEBUG
auth.missing-totpMissing TOTP for authenticationTRACE
auth.successAuthentication successfulINFO
auth.too-many-attemptsToo many authentication attemptsWARN
cluster.decryption-errorFailed to decrypt a gossip packetWARN
cluster.empty-packetReceived an empty gossip packetWARN
cluster.errorA cluster error occurredWARN
cluster.invalid-packetReceived an invalid gossip packetWARN
cluster.one-or-more-peers-offlineOne or more peers are offlineDEBUG
cluster.peer-aliveA peer is aliveINFO
cluster.peer-back-onlineA peer came back onlineINFO
cluster.peer-discoveredA new peer was discoveredINFO
cluster.peer-has-config-changesA peer has configuration changesDEBUG
cluster.peer-has-list-changesA peer has list changesDEBUG
cluster.peer-leavingA peer is leaving the clusterINFO
cluster.peer-offlineA peer went offlineINFO
cluster.peer-suspectedA peer is suspected to be offlineINFO
cluster.peer-suspected-is-aliveA suspected peer is actually aliveINFO
config.already-up-to-dateConfiguration already up to dateDEBUG
config.build-errorConfiguration build errorERROR
config.build-warningConfiguration build warningDEBUG
config.default-appliedDefault configuration appliedDEBUG
config.external-key-ignoredExternal configuration key ignoredDEBUG
config.fetch-errorConfiguration fetch errorERROR
config.import-externalImporting external configurationINFO
config.macro-errorConfiguration macro errorERROR
config.missing-settingMissing configuration settingDEBUG
config.parse-errorConfiguration parse errorERROR
config.parse-warningConfiguration parse warningDEBUG
config.unused-settingUnused configuration settingDEBUG
config.write-errorConfiguration write errorERROR
dane.authentication-failureDANE authentication failedINFO
dane.authentication-successDANE authentication successfulINFO
dane.certificate-parse-errorError parsing certificate for DANEINFO
dane.no-certificates-foundNo certificates found for DANEINFO
dane.tlsa-record-fetchFetching TLSA recordINFO
dane.tlsa-record-fetch-errorError fetching TLSA recordINFO
dane.tlsa-record-invalidInvalid TLSA recordINFO
dane.tlsa-record-matchTLSA record match foundINFO
dane.tlsa-record-not-dnssec-signedTLSA record not DNSSEC signedINFO
dane.tlsa-record-not-foundTLSA record not foundINFO
delivery.attempt-endDelivery attempt endedINFO
delivery.attempt-startDelivery attempt startedINFO
delivery.authSMTP authenticationDEBUG
delivery.auth-failedSMTP authentication failedINFO
delivery.completedDelivery completedINFO
delivery.concurrency-limit-exceededConcurrency limit exceededWARN
delivery.connectConnecting to remote serverINFO
delivery.connect-errorConnection errorINFO
delivery.deliveredMessage deliveredINFO
delivery.domain-delivery-startNew delivery attempt for domainINFO
delivery.double-bounceDiscarding message after double bounceINFO
delivery.dsn-perm-failDSN permanent failure notificationINFO
delivery.dsn-successDSN success notificationINFO
delivery.dsn-temp-failDSN temporary failure notificationINFO
delivery.ehloSMTP EHLO commandDEBUG
delivery.ehlo-rejectedSMTP EHLO rejectedINFO
delivery.failedDelivery failedINFO
delivery.greeting-failedSMTP greeting failedINFO
delivery.implicit-tls-errorImplicit TLS errorINFO
delivery.ip-lookupIP address lookupDEBUG
delivery.ip-lookup-failedIP address lookup failedINFO
delivery.mail-fromSMTP MAIL FROM commandDEBUG
delivery.mail-from-rejectedSMTP MAIL FROM rejectedINFO
delivery.message-rejectedMessage rejected by remote serverINFO
delivery.missing-outbound-hostnameMissing outbound hostname in configurationWARN
delivery.mx-lookupMX record lookupDEBUG
delivery.mx-lookup-failedMX record lookup failedINFO
delivery.null-mxNull MX record foundINFO
delivery.rate-limit-exceededRate limit exceededWARN
delivery.raw-inputRaw SMTP input receivedTRACE
delivery.raw-outputRaw SMTP output sentTRACE
delivery.rcpt-toSMTP RCPT TO commandDEBUG
delivery.rcpt-to-failedSMTP RCPT TO failedINFO
delivery.rcpt-to-rejectedSMTP RCPT TO rejectedINFO
delivery.start-tlsSMTP STARTTLS commandINFO
delivery.start-tls-disabledSTARTTLS disabledINFO
delivery.start-tls-errorSTARTTLS errorINFO
delivery.start-tls-unavailableSTARTTLS unavailableINFO
dkim.failDKIM verification failedDEBUG
dkim.failed-auid-matchDKIM AUID mismatchDEBUG
dkim.failed-body-hash-matchDKIM body hash mismatchDEBUG
dkim.failed-verificationDKIM verification failedDEBUG
dkim.incompatible-algorithmsIncompatible DKIM algorithmsDEBUG
dkim.neutralDKIM verification neutralDEBUG
dkim.noneNo DKIM signatureDEBUG
dkim.passDKIM verification passedDEBUG
dkim.perm-errorDKIM permanent errorDEBUG
dkim.revoked-public-keyDKIM public key revokedDEBUG
dkim.signature-expiredDKIM signature expiredDEBUG
dkim.signature-lengthDKIM signature length issueDEBUG
dkim.signer-not-foundDKIM signer not foundWARN
dkim.temp-errorDKIM temporary errorDEBUG
dkim.unsupported-algorithmUnsupported DKIM algorithmDEBUG
dkim.unsupported-canonicalizationUnsupported DKIM canonicalizationDEBUG
dkim.unsupported-key-typeUnsupported DKIM key typeDEBUG
dkim.unsupported-versionUnsupported DKIM versionDEBUG
dmarc.failDMARC check failedDEBUG
dmarc.noneNo DMARC recordDEBUG
dmarc.passDMARC check passedDEBUG
dmarc.perm-errorDMARC permanent errorDEBUG
dmarc.temp-errorDMARC temporary errorDEBUG
eval.directory-not-foundDirectory not found while evaluating expressionWARN
eval.errorExpression evaluation errorDEBUG
eval.resultExpression evaluation resultTRACE
eval.store-not-foundStore not found while evaluating expressionDEBUG
fts-index.blob-not-foundBlob not found for full-text indexingDEBUG
fts-index.indexFull-text search index doneINFO
fts-index.lock-busyFull-text search index lock is busyWARN
fts-index.lockedFull-text search index is lockedDEBUG
fts-index.metadata-not-foundMetadata not found for full-text indexingDEBUG
housekeeper.purge-accountsPurging accountsINFO
housekeeper.purge-sessionsPurging sessionsINFO
housekeeper.purge-storePurging storeINFO
housekeeper.scheduleHousekeeper task scheduledDEBUG
housekeeper.startHousekeeper process startedINFO
housekeeper.stopHousekeeper process stoppedINFO
http.connection-endHTTP connection endedINFO
http.connection-startHTTP connection startedINFO
http.errorHTTP error occurredDEBUG
http.request-bodyHTTP request bodyTRACE
http.request-urlHTTP request URLDEBUG
http.response-bodyHTTP response bodyTRACE
http.x-forwarded-missingX-Forwarded-For header is missingWARN
imap.appendIMAP APPEND commandDEBUG
imap.capabilitiesIMAP CAPABILITIES commandDEBUG
imap.closeIMAP CLOSE commandDEBUG
imap.connection-endIMAP connection endedINFO
imap.connection-startIMAP connection startedINFO
imap.copyIMAP COPY commandDEBUG
imap.create-mailboxIMAP CREATE mailbox commandDEBUG
imap.delete-mailboxIMAP DELETE mailbox commandDEBUG
imap.enableIMAP ENABLE commandDEBUG
imap.errorIMAP error occurredDEBUG
imap.expungeIMAP EXPUNGE commandDEBUG
imap.fetchIMAP FETCH commandDEBUG
imap.get-aclIMAP GET ACL commandDEBUG
imap.idIMAP ID commandDEBUG
imap.idle-startIMAP IDLE startDEBUG
imap.idle-stopIMAP IDLE stopDEBUG
imap.listIMAP LIST commandDEBUG
imap.list-rightsIMAP LISTRIGHTS commandDEBUG
imap.logoutIMAP LOGOUT commandDEBUG
imap.lsubIMAP LSUB commandDEBUG
imap.moveIMAP MOVE commandDEBUG
imap.my-rightsIMAP MYRIGHTS commandDEBUG
imap.namespaceIMAP NAMESPACE commandDEBUG
imap.noopIMAP NOOP commandDEBUG
imap.raw-inputRaw IMAP input receivedTRACE
imap.raw-outputRaw IMAP output sentTRACE
imap.rename-mailboxIMAP RENAME mailbox commandDEBUG
imap.searchIMAP SEARCH commandDEBUG
imap.selectIMAP SELECT commandDEBUG
imap.set-aclIMAP SET ACL commandDEBUG
imap.sortIMAP SORT commandDEBUG
imap.statusIMAP STATUS commandDEBUG
imap.storeIMAP STORE commandDEBUG
imap.subscribeIMAP SUBSCRIBE commandDEBUG
imap.threadIMAP THREAD commandDEBUG
imap.unsubscribeIMAP UNSUBSCRIBE commandDEBUG
incoming-report.abuse-reportAbuse report receivedINFO
incoming-report.arf-parse-failedFailed to parse ARF reportINFO
incoming-report.auth-failure-reportAuthentication failure report receivedINFO
incoming-report.decompress-errorError decompressing reportINFO
incoming-report.dmarc-parse-failedFailed to parse DMARC reportINFO
incoming-report.dmarc-reportDMARC report receivedINFO
incoming-report.dmarc-report-with-warningsDMARC report received with warningsWARN
incoming-report.fraud-reportFraud report receivedINFO
incoming-report.message-parse-failedFailed to parse incoming report messageINFO
incoming-report.not-spam-reportNot spam report receivedINFO
incoming-report.other-reportOther type of report receivedINFO
incoming-report.tls-reportTLS report receivedINFO
incoming-report.tls-report-with-warningsTLS report received with warningsWARN
incoming-report.tls-rpc-parse-failedFailed to parse TLS RPC reportINFO
incoming-report.virus-reportVirus report receivedINFO
iprev.failIPREV check failedDEBUG
iprev.noneNo IPREV recordDEBUG
iprev.passIPREV check passedDEBUG
iprev.perm-errorIPREV permanent errorDEBUG
iprev.temp-errorIPREV temporary errorDEBUG
jmap.account-not-foundJMAP account not foundDEBUG
jmap.account-not-supported-by-methodJMAP account not supported by methodDEBUG
jmap.account-read-onlyJMAP account is read-onlyDEBUG
jmap.anchor-not-foundJMAP anchor not foundDEBUG
jmap.cannot-calculate-changesCannot calculate JMAP changesDEBUG
jmap.forbiddenJMAP operation forbiddenDEBUG
jmap.invalid-argumentsInvalid JMAP argumentsDEBUG
jmap.invalid-result-referenceInvalid JMAP result referenceDEBUG
jmap.method-callJMAP method callDEBUG
jmap.not-foundJMAP resource not foundDEBUG
jmap.not-jsonJMAP request is not JSONDEBUG
jmap.not-requestJMAP input is not a requestDEBUG
jmap.request-too-largeJMAP request too largeDEBUG
jmap.state-mismatchJMAP state mismatchDEBUG
jmap.unknown-capabilityUnknown JMAP capabilityDEBUG
jmap.unknown-data-typeUnknown JMAP data typeDEBUG
jmap.unknown-methodUnknown JMAP methodDEBUG
jmap.unsupported-filterUnsupported JMAP filterDEBUG
jmap.unsupported-sortUnsupported JMAP sortDEBUG
jmap.websocket-errorJMAP WebSocket errorDEBUG
jmap.websocket-startJMAP WebSocket connection startedDEBUG
jmap.websocket-stopJMAP WebSocket connection stoppedDEBUG
limit.blob-quotaBlob quota limit reachedDEBUG
limit.calls-inIncoming calls limit reachedDEBUG
limit.concurrent-connectionConcurrent connection limit reachedWARN
limit.concurrent-requestConcurrent request limit reachedDEBUG
limit.concurrent-uploadConcurrent upload limit reachedDEBUG
limit.quotaQuota limit reachedDEBUG
limit.size-requestRequest size limit reachedDEBUG
limit.size-uploadUpload size limit reachedDEBUG
limit.too-many-requestsToo many requestsWARN
mail-auth.base64Base64 error during mail authenticationDEBUG
mail-auth.cryptoCrypto error during mail authenticationDEBUG
mail-auth.dns-errorDNS errorDEBUG
mail-auth.dns-invalid-record-typeInvalid DNS record typeDEBUG
mail-auth.dns-record-not-foundDNS record not foundDEBUG
mail-auth.ioI/O error during mail authenticationDEBUG
mail-auth.missing-parametersMissing mail authentication parametersDEBUG
mail-auth.no-headers-foundNo headers found in messageDEBUG
mail-auth.parse-errorMail authentication parse errorDEBUG
mail-auth.policy-not-alignedPolicy not alignedDEBUG
manage-sieve.capabilitiesManageSieve CAPABILITIES commandDEBUG
manage-sieve.check-scriptManageSieve CHECK script commandDEBUG
manage-sieve.connection-endManageSieve connection endedINFO
manage-sieve.connection-startManageSieve connection startedINFO
manage-sieve.create-scriptManageSieve CREATE script commandDEBUG
manage-sieve.delete-scriptManageSieve DELETE script commandDEBUG
manage-sieve.errorManageSieve error occurredDEBUG
manage-sieve.get-scriptManageSieve GET script commandDEBUG
manage-sieve.have-spaceManageSieve HAVESPACE commandDEBUG
manage-sieve.list-scriptsManageSieve LIST scripts commandDEBUG
manage-sieve.logoutManageSieve LOGOUT commandDEBUG
manage-sieve.noopManageSieve NOOP commandDEBUG
manage-sieve.raw-inputRaw ManageSieve input receivedTRACE
manage-sieve.raw-outputRaw ManageSieve output sentTRACE
manage-sieve.rename-scriptManageSieve RENAME script commandDEBUG
manage-sieve.set-activeManageSieve SET ACTIVE commandDEBUG
manage-sieve.start-tlsManageSieve STARTTLS commandDEBUG
manage-sieve.unauthenticateManageSieve UNAUTHENTICATE commandDEBUG
manage-sieve.update-scriptManageSieve UPDATE script commandDEBUG
manage.already-existsManaged resource already existsDEBUG
manage.assert-failedManagement assertion failedDEBUG
manage.errorManagement errorDEBUG
manage.missing-parameterMissing management parameterDEBUG
manage.not-foundManaged resource not foundDEBUG
manage.not-supportedManagement operation not supportedDEBUG
message-ingest.duplicateSkipping duplicate messageINFO
message-ingest.errorMessage ingestion errorERROR
message-ingest.hamMessage ingestedINFO
message-ingest.imap-appendMessage appended via IMAPINFO
message-ingest.jmap-appendMessage appended via JMAPINFO
message-ingest.spamPossible spam message ingestedINFO
milter.action-acceptMilter action: AcceptINFO
milter.action-connection-failureMilter action: Connection failureINFO
milter.action-discardMilter action: DiscardINFO
milter.action-rejectMilter action: RejectINFO
milter.action-reply-codeMilter action: Reply codeINFO
milter.action-shutdownMilter action: ShutdownINFO
milter.action-temp-failMilter action: Temporary failureINFO
milter.disconnectedMilter disconnectedWARN
milter.frame-invalidInvalid Milter frameWARN
milter.frame-too-largeMilter frame too largeWARN
milter.io-errorMilter I/O errorWARN
milter.parse-errorMilter parse errorWARN
milter.readReading from MilterTRACE
milter.timeoutMilter timeoutWARN
milter.tls-invalid-nameInvalid TLS name for MilterWARN
milter.unexpected-responseUnexpected Milter responseWARN
milter.writeWriting to MilterTRACE
mta-hook.action-acceptMTA hook action: AcceptINFO
mta-hook.action-discardMTA hook action: DiscardINFO
mta-hook.action-quarantineMTA hook action: QuarantineINFO
mta-hook.action-rejectMTA hook action: RejectINFO
mta-hook.errorMTA hook errorWARN
mta-sts.authorizedHost authorized by MTA-STS policyINFO
mta-sts.invalid-policyInvalid MTA-STS policyINFO
mta-sts.not-authorizedHost not authorized by MTA-STS policyINFO
mta-sts.policy-fetchFetched MTA-STS policyINFO
mta-sts.policy-fetch-errorError fetching MTA-STS policyINFO
mta-sts.policy-not-foundMTA-STS policy not foundINFO
network.accept-errorNetwork accept errorDEBUG
network.bind-errorNetwork bind errorERROR
network.closedNetwork connection closedTRACE
network.flush-errorNetwork flush errorTRACE
network.listen-errorNetwork listener errorERROR
network.listen-startNetwork listener startedINFO
network.listen-stopNetwork listener stoppedINFO
network.proxy-errorProxy protocol errorWARN
network.read-errorNetwork read errorTRACE
network.set-opt-errorNetwork set option errorERROR
network.split-errorNetwork split errorERROR
network.timeoutNetwork timeoutDEBUG
network.write-errorNetwork write errorTRACE
outgoing-report.dkim-rate-limitedDKIM report rate limitedINFO
outgoing-report.dkim-reportDKIM report sentINFO
outgoing-report.dmarc-aggregate-reportDMARC aggregate report sentINFO
outgoing-report.dmarc-rate-limitedDMARC report rate limitedINFO
outgoing-report.dmarc-reportDMARC report sentINFO
outgoing-report.http-submissionReport submitted via HTTPINFO
outgoing-report.lock-busyReport lock is busyINFO
outgoing-report.lock-deletedReport lock was deletedINFO
outgoing-report.lockedReport is lockedINFO
outgoing-report.no-recipients-foundNo recipients found for reportINFO
outgoing-report.not-foundReport not foundINFO
outgoing-report.reporting-address-validation-errorError validating reporting addressINFO
outgoing-report.spf-rate-limitedSPF report rate limitedINFO
outgoing-report.spf-reportSPF report sentINFO
outgoing-report.submission-errorError submitting reportINFO
outgoing-report.tls-aggregateTLS aggregate report sentINFO
outgoing-report.unauthorized-reporting-addressUnauthorized reporting addressINFO
pop3.capabilitiesPOP3 CAPABILITIES commandDEBUG
pop3.connection-endPOP3 connection endedINFO
pop3.connection-startPOP3 connection startedINFO
pop3.deletePOP3 DELETE commandDEBUG
pop3.errorPOP3 error occurredDEBUG
pop3.fetchPOP3 FETCH commandDEBUG
pop3.listPOP3 LIST commandDEBUG
pop3.list-messagePOP3 LIST specific message commandDEBUG
pop3.noopPOP3 NOOP commandDEBUG
pop3.quitPOP3 QUIT commandDEBUG
pop3.raw-inputRaw POP3 input receivedTRACE
pop3.raw-outputRaw POP3 output sentTRACE
pop3.resetPOP3 RESET commandDEBUG
pop3.start-tlsPOP3 STARTTLS commandDEBUG
pop3.statPOP3 STAT commandDEBUG
pop3.uidlPOP3 UIDL commandDEBUG
pop3.uidl-messagePOP3 UIDL specific message commandDEBUG
pop3.utf8POP3 UTF8 commandDEBUG
purge.auto-expungeAuto-expunge executedDEBUG
purge.errorPurge errorERROR
purge.finishedPurge finishedDEBUG
purge.purge-activeActive purge in progressDEBUG
purge.runningPurge runningINFO
purge.startedPurge startedDEBUG
purge.tombstone-cleanupTombstone cleanup executedDEBUG
push-subscription.errorPush subscription errorDEBUG
push-subscription.not-foundPush subscription not foundDEBUG
push-subscription.successPush subscription successfulTRACE
queue.blob-not-foundMessage blob not foundDEBUG
queue.concurrency-limit-exceededConcurrency limit exceededINFO
queue.lock-busyQueue lock is busyDEBUG
queue.lockedQueue is lockedDEBUG
queue.queue-autogeneratedQueued autogenerated message for deliveryINFO
queue.queue-dsnQueued DSN for deliveryINFO
queue.queue-messageQueued message for deliveryINFO
queue.queue-message-authenticatedQueued message submission for deliveryINFO
queue.queue-reportQueued report for deliveryINFO
queue.quota-exceededQuota exceededINFO
queue.rate-limit-exceededRate limit exceededINFO
queue.rescheduledMessage rescheduled for deliveryINFO
resource.bad-parametersBad resource parametersERROR
resource.download-externalDownloading external resourceINFO
resource.errorResource errorERROR
resource.not-foundResource not foundDEBUG
resource.webadmin-unpackedWebadmin resource unpackedINFO
security.authentication-banBanned due to authentication errorsINFO
security.brute-force-banBanned due to brute force attackINFO
security.ip-blockedBlocked IP addressINFO
security.loiter-banBanned due to loiteringINFO
server.licensingServer licensing eventINFO
server.shutdownShutting down Stalwart Mail Server v0.9.3INFO
server.startupStarting Stalwart Mail Server v0.9.3INFO
server.startup-errorServer startup errorERROR
server.thread-errorServer thread errorERROR
sieve.action-acceptSieve action: AcceptDEBUG
sieve.action-accept-replaceSieve action: Accept and replaceDEBUG
sieve.action-discardSieve action: DiscardDEBUG
sieve.action-rejectSieve action: RejectDEBUG
sieve.list-not-foundSieve list not foundWARN
sieve.message-too-largeSieve message too largeWARN
sieve.not-supportedSieve action not supportedWARN
sieve.quota-exceededSieve quota exceededWARN
sieve.runtime-errorSieve runtime errorWARN
sieve.script-not-foundSieve script not foundWARN
sieve.send-messageSieve sending messageINFO
sieve.unexpected-errorUnexpected Sieve errorERROR
smtp.already-authenticatedAlready authenticatedDEBUG
smtp.arc-failARC verification failedINFO
smtp.arc-passARC verification passedINFO
smtp.auth-exchange-too-longAuth exchange too longDEBUG
smtp.auth-mechanism-not-supportedAuth mechanism not supportedINFO
smtp.auth-not-allowedAuthentication not allowedINFO
smtp.command-not-implementedCommand not implementedDEBUG
smtp.concurrency-limit-exceededConcurrency limit exceededINFO
smtp.connection-endSMTP connection endedINFO
smtp.connection-startSMTP connection startedINFO
smtp.deliver-by-disabledDELIVERBY extension disabledDEBUG
smtp.deliver-by-invalidInvalid DELIVERBY parameterDEBUG
smtp.did-not-say-ehloClient did not say EHLODEBUG
smtp.dkim-failDKIM verification failedINFO
smtp.dkim-passDKIM verification passedINFO
smtp.dmarc-failDMARC check failedINFO
smtp.dmarc-passDMARC check passedINFO
smtp.dsn-disabledDSN extension disabledDEBUG
smtp.ehloSMTP EHLO commandINFO
smtp.ehlo-expectedEHLO command expectedDEBUG
smtp.errorSMTP error occurredDEBUG
smtp.expnSMTP EXPN commandINFO
smtp.expn-disabledEXPN command disabledINFO
smtp.expn-not-foundEXPN address not foundINFO
smtp.future-release-disabledFUTURE RELEASE extension disabledDEBUG
smtp.future-release-invalidInvalid FUTURE RELEASE parameterDEBUG
smtp.helpSMTP HELP commandDEBUG
smtp.invalid-commandInvalid commandDEBUG
smtp.invalid-ehloInvalid EHLO commandINFO
smtp.invalid-parameterInvalid parameterDEBUG
smtp.invalid-recipient-addressInvalid recipient addressDEBUG
smtp.invalid-sender-addressInvalid sender addressDEBUG
smtp.iprev-failIPREV check failedINFO
smtp.iprev-passIPREV check passedINFO
smtp.lhlo-expectedLHLO command expectedDEBUG
smtp.loop-detectedMail loop detectedINFO
smtp.mail-fromSMTP MAIL FROM commandINFO
smtp.mail-from-missingMAIL FROM address missingDEBUG
smtp.mail-from-not-allowedMAIL FROM not allowedDEBUG
smtp.mail-from-rewrittenMAIL FROM address rewrittenDEBUG
smtp.mail-from-unauthenticatedMAIL FROM without authenticationDEBUG
smtp.mail-from-unauthorizedMAIL FROM unauthorizedDEBUG
smtp.mailbox-does-not-existMailbox does not existINFO
smtp.message-parse-failedMessage parsing failedINFO
smtp.message-too-largeMessage too largeINFO
smtp.missing-auth-directoryMissing auth directoryINFO
smtp.missing-local-hostnameMissing local hostnameWARN
smtp.mt-priority-disabledMT-PRIORITY extension disabledDEBUG
smtp.mt-priority-invalidInvalid MT-PRIORITY parameterDEBUG
smtp.multiple-mail-fromMultiple MAIL FROM commandsDEBUG
smtp.noopSMTP NOOP commandDEBUG
smtp.pipe-errorPipe command failedDEBUG
smtp.pipe-successPipe command succeededDEBUG
smtp.quitSMTP QUIT commandDEBUG
smtp.rate-limit-exceededRate limit exceededINFO
smtp.raw-inputRaw SMTP input receivedTRACE
smtp.raw-outputRaw SMTP output sentTRACE
smtp.rcpt-toSMTP RCPT TO commandINFO
smtp.rcpt-to-duplicateDuplicate RCPT TODEBUG
smtp.rcpt-to-missingRCPT TO address missingDEBUG
smtp.rcpt-to-rewrittenRCPT TO address rewrittenDEBUG
smtp.relay-not-allowedRelay not allowedINFO
smtp.remote-id-not-foundRemote host ID not foundWARN
smtp.request-too-largeRequest too largeINFO
smtp.require-tls-disabledREQUIRETLS extension disabledDEBUG
smtp.rsetSMTP RSET commandDEBUG
smtp.spf-ehlo-failSPF EHLO check failedINFO
smtp.spf-ehlo-passSPF EHLO check passedINFO
smtp.spf-from-failSPF From check failedINFO
smtp.spf-from-passSPF From check passedINFO
smtp.start-tlsSMTP STARTTLS commandDEBUG
smtp.start-tls-alreadyTLS already activeDEBUG
smtp.start-tls-unavailableSTARTTLS unavailableDEBUG
smtp.syntax-errorSyntax errorDEBUG
smtp.time-limit-exceededTime limit exceededINFO
smtp.too-many-invalid-rcptToo many invalid recipientsINFO
smtp.too-many-messagesToo many messagesINFO
smtp.too-many-recipientsToo many recipientsINFO
smtp.transfer-limit-exceededTransfer limit exceededINFO
smtp.unsupported-parameterUnsupported parameterDEBUG
smtp.vrfySMTP VRFY commandINFO
smtp.vrfy-disabledVRFY command disabledINFO
smtp.vrfy-not-foundVRFY address not foundINFO
spam.classifyClassifying message for spamDEBUG
spam.classify-errorError classifying message for spamWARN
spam.list-updatedSpam list updatedINFO
spam.not-enough-training-dataNot enough training data for spam filterDEBUG
spam.pyzor-errorPyzor errorWARN
spam.trainTraining spam filterDEBUG
spam.train-balanceBalancing spam filter training dataDEBUG
spam.train-errorError training spam filterWARN
spf.failSPF check failedDEBUG
spf.neutralSPF neutral resultDEBUG
spf.noneNo SPF recordDEBUG
spf.passSPF check passedDEBUG
spf.perm-errorSPF permanent errorDEBUG
spf.soft-failSPF soft failDEBUG
spf.temp-errorSPF temporary errorDEBUG
store.assert-value-failedAnother process modified the recordERROR
store.blob-deleteBlob delete operationTRACE
store.blob-missing-markerBlob missing markerWARN
store.blob-readBlob read operationTRACE
store.blob-writeBlob write operationTRACE
store.crypto-errorStore crypto errorERROR
store.data-corruptionData corruption detectedERROR
store.data-iterateData store iteration operationTRACE
store.data-writeWrite batch operationTRACE
store.decompress-errorDecompression errorERROR
store.deserialize-errorDeserialization errorERROR
store.elasticsearch-errorElasticSearch errorERROR
store.filesystem-errorFilesystem errorERROR
store.foundationdb-errorFoundationDB errorERROR
store.ldap-bindLDAP bind operationTRACE
store.ldap-errorLDAP errorERROR
store.ldap-queryLDAP query executedTRACE
store.mysql-errorMySQL errorERROR
store.not-configuredStore not configuredERROR
store.not-foundRecord not found in databaseDEBUG
store.not-supportedOperation not supported by storeERROR
store.pool-errorConnection pool errorERROR
store.postgresql-errorPostgreSQL errorERROR
store.redis-errorRedis errorERROR
store.rocksdb-errorRocksDB errorERROR
store.s3-errorS3 errorERROR
store.sql-querySQL query executedTRACE
store.sqlite-errorSQLite errorERROR
store.unexpected-errorUnexpected store errorERROR
telemetry.alertAlert triggeredWARN
telemetry.journal-errorJournal collector errorWARN
telemetry.log-errorLog collector errorWARN
telemetry.otel-exporter-errorOpenTelemetry exporter errorWARN
telemetry.otel-metrics-exporter-errorOpenTelemetry metrics exporter errorWARN
telemetry.prometheus-exporter-errorPrometheus exporter errorWARN
telemetry.webhook-errorWebhook collector errorWARN
tls-rpt.record-fetchFetched TLS-RPT recordINFO
tls-rpt.record-fetch-errorError fetching TLS-RPT recordINFO
tls.certificate-not-foundTLS certificate not foundDEBUG
tls.handshakeTLS handshakeINFO
tls.handshake-errorTLS handshake errorDEBUG
tls.multiple-certificates-availableMultiple TLS certificates availableWARN
tls.no-certificates-availableNo TLS certificates availableWARN
tls.not-configuredTLS not configuredERROR

Key Types

Each event log or trace entry can contain a set of key-value pairs. The following key types are supported:

  • accountId: Unique identifier for an account
  • attempt: Number of attempts made for an operation
  • blobId: Unique identifier for a binary large object (BLOB)
  • causedBy: Reason or cause of an event or error
  • changeId: Identifier for a specific change or modification
  • code: Error code or status code
  • collection: Name or identifier of a data collection
  • contents: Contents or payload of a message or object
  • date: Date of an event or operation
  • details: Additional details or information about an event
  • dkimFail: Indicator of a failed DKIM (DomainKeys Identified Mail) check
  • dkimNone: Indicator of no DKIM signature present
  • dkimPass: Indicator of a passed DKIM check
  • dmarcNone: Indicator of no DMARC (Domain-based Message Authentication, Reporting & Conformance) policy
  • dmarcPass: Indicator of a passed DMARC check
  • dmarcQuarantine: Indicator of DMARC quarantine policy
  • dmarcReject: Indicator of DMARC reject policy
  • documentId: Unique identifier for a document
  • domain: Domain name associated with an event or entity
  • due: Due date or deadline
  • elapsed: Elapsed time since a specific point
  • expected: Expected value or outcome
  • expires: Expiration date or time
  • from: Source or sender of a message or action
  • hamLearns: Number of ham (non-spam) messages learned
  • hostname: Name of a host or server
  • id: Generic identifier
  • interval: Time interval between events or operations
  • key: Key value in a key-value pair
  • limit: Upper or lower bound of a value or operation
  • listenerId: Identifier for a listener process
  • localIp: Local IP address
  • localPort: Local port number
  • mailboxId: Unique identifier for a mailbox
  • messageId: Unique identifier for a message
  • name: Name of an entity or object
  • nextDsn: Next Delivery Status Notification
  • nextRenewal: Date or time of next renewal
  • nextRetry: Time of next retry attempt
  • oldName: Previous name of an entity or object
  • parameters: Parameters or arguments for an operation
  • path: File path or URL path
  • policy: Policy name or identifier
  • protocol: Communication protocol used
  • queueId: Identifier for a message queue
  • rangeFrom: Start of a range
  • rangeTo: End of a range
  • reason: Reason for an action or outcome
  • remoteIp: Remote IP address
  • remotePort: Remote port number
  • renewal: Renewal date or information
  • reportId: Identifier for a report
  • result: Outcome or result of an operation
  • size: Size of an object or data
  • spfFail: Indicator of a failed SPF (Sender Policy Framework) check
  • spfNone: Indicator of no SPF record present
  • spfPass: Indicator of a passed SPF check
  • status: Current status of an entity or operation
  • strict: Indicator of strict mode or enforcement
  • tls: TLS (Transport Layer Security) version or status
  • to: Destination or recipient of a message or action
  • total: Total count or sum
  • totalFailures: Total number of failures
  • totalSuccesses: Total number of successes
  • type: Type or category of an entity or event
  • uid: Unique identifier
  • uidNext: Next available unique identifier
  • uidValidity: Validity token for unique identifiers
  • url: Uniform Resource Locator
  • used: Amount or quantity used
  • validFrom: Start date of validity period
  • validTo: End date of validity period
  • value: Value of a property or measurement
  • version: Version number or identifier