Skip to main content
Version: 0.16

Metrics

Every metric Stalwart collects is listed below, grouped by subsystem. Each metric has an identifier (formatted as <subsystem>.<name>), a unit, and a description.

Acme

MetricUnitDescription
acme.auth-errorcountACME authentication error
acme.auth-too-many-attemptscountToo many ACME authentication attempts
acme.order-completedcountACME order completed
acme.order-invalidcountACME order invalid
acme.client-missing-snicountACME client missing SNI
acme.tls-alpn-errorcountACME TLS ALPN error
acme.token-not-foundcountACME token not found
acme.errorcountACME error

Arc

MetricUnitDescription
arc.chain-too-longcountARC chain too long
arc.invalid-instancecountInvalid ARC instance
arc.invalid-cvcountInvalid ARC CV
arc.has-header-tagcountARC has header tag
arc.broken-chaincountBroken ARC chain

Auth

MetricUnitDescription
auth.successcountAuthentication successful
auth.failedcountAuthentication failed
auth.too-many-attemptscountToo many authentication attempts
auth.errorcountAuthentication error

Calendar

MetricUnitDescription
calendar.alarm-sentcountCalendar alarm sent
calendar.alarm-failedcountCalendar alarm could not be sent
calendar.itip-message-sentcountCalendar iTIP message sent
calendar.itip-message-receivedcountCalendar iTIP message received
calendar.itip-message-errorcountiTIP message error

Cluster

MetricUnitDescription
cluster.subscriber-errorcountPubSub subscriber error
cluster.subscriber-disconnectedcountPubSub subscriber disconnected
cluster.publisher-errorcountPubSub publisher error

Dane

MetricUnitDescription
dane.authentication-successcountDANE authentication successful
dane.authentication-failurecountDANE authentication failed
dane.no-certificates-foundcountNo certificates found for DANE
dane.certificate-parse-errorcountError parsing certificate for DANE
dane.tlsa-record-fetch-errorcountError fetching TLSA record
dane.tlsa-record-not-foundcountTLSA record not found
dane.tlsa-record-not-dnssec-signedcountTLSA record not DNSSEC signed
dane.tlsa-record-invalidcountInvalid TLSA record

Delivery

MetricUnitDescription
delivery.total-timemillisecondsTotal message delivery time from submission to delivery
delivery.attempt-timemillisecondsMessage delivery time
delivery.active-connectionsconnectionsActive delivery connections
delivery.attempt-startcountDelivery attempt started
delivery.attempt-endcountDelivery attempt ended
delivery.completedcountDelivery completed
delivery.mx-lookup-failedcountMX record lookup failed
delivery.ip-lookup-failedcountIP address lookup failed
delivery.null-mxcountNull MX record found
delivery.greeting-failedcountSMTP greeting failed
delivery.ehlo-rejectedcountSMTP EHLO rejected
delivery.auth-failedcountSMTP authentication failed
delivery.mail-from-rejectedcountSMTP MAIL FROM rejected
delivery.deliveredcountMessage delivered
delivery.rcpt-to-rejectedcountSMTP RCPT TO rejected
delivery.rcpt-to-failedcountSMTP RCPT TO failed
delivery.message-rejectedcountMessage rejected by remote server
delivery.start-tls-unavailablecountSTARTTLS unavailable
delivery.start-tls-errorcountSTARTTLS error
delivery.start-tls-disabledcountSTARTTLS disabled
delivery.implicit-tls-errorcountImplicit TLS error
delivery.concurrency-limit-exceededcountConcurrency limit exceeded
delivery.rate-limit-exceededcountRate limit exceeded
delivery.double-bouncecountDiscarding message after double bounce
delivery.dsn-successcountDSN success notification
delivery.dsn-temp-failcountDSN temporary failure notification
delivery.dsn-perm-failcountDSN permanent failure notification

Dkim

MetricUnitDescription
dkim.passcountDKIM verification passed
dkim.neutralcountDKIM verification neutral
dkim.failcountDKIM verification failed
dkim.perm-errorcountDKIM permanent error
dkim.temp-errorcountDKIM temporary error
dkim.nonecountNo DKIM signature
dkim.unsupported-versioncountUnsupported DKIM version
dkim.unsupported-algorithmcountUnsupported DKIM algorithm
dkim.unsupported-canonicalizationcountUnsupported DKIM canonicalization
dkim.unsupported-key-typecountUnsupported DKIM key type
dkim.failed-body-hash-matchcountDKIM body hash mismatch
dkim.failed-verificationcountDKIM verification failed
dkim.failed-auid-matchcountDKIM AUID mismatch
dkim.revoked-public-keycountDKIM public key revoked
dkim.incompatible-algorithmscountIncompatible DKIM algorithms
dkim.signature-expiredcountDKIM signature expired
dkim.signature-lengthcountDKIM signature length issue
dkim.signer-not-foundcountDKIM signer not found

Dmarc

MetricUnitDescription
dmarc.passcountDMARC check passed
dmarc.failcountDMARC check failed
dmarc.perm-errorcountDMARC permanent error
dmarc.temp-errorcountDMARC temporary error
dmarc.nonecountNo DMARC record

Dns

MetricUnitDescription
dns.lookup-timemillisecondsDNS lookup time
dns.record-creation-failedcountDNS record creation failed
dns.record-deletion-failedcountDNS record deletion failed
dns.record-lookup-failedcountDNS record lookup failed
dns.record-propagation-timeoutcountDNS record propagation timeout

Domain

MetricUnitDescription
domain.countdomainsTotal number of domains

Eval

MetricUnitDescription
eval.errorcountExpression evaluation error
eval.directory-not-foundcountDirectory not found while evaluating expression
eval.store-not-foundcountStore not found while evaluating expression

Http

MetricUnitDescription
http.request-timemillisecondsHTTP request duration
http.active-connectionsconnectionsActive HTTP connections
http.connection-startcountHTTP connection started
http.errorcountHTTP error occurred
http.request-bodycountHTTP request body
http.response-bodycountHTTP response body
http.x-forwarded-missingcountX-Forwarded-For header is missing

Imap

MetricUnitDescription
imap.request-timemillisecondsIMAP request duration
imap.active-connectionsconnectionsActive IMAP connections
imap.connection-startcountIMAP connection started
imap.connection-endcountIMAP connection ended

IncomingReport

MetricUnitDescription
incoming-report.dmarc-reportcountDMARC report received
incoming-report.dmarc-report-with-warningscountDMARC report received with warnings
incoming-report.tls-reportcountTLS report received
incoming-report.tls-report-with-warningscountTLS report received with warnings
incoming-report.abuse-reportcountAbuse report received
incoming-report.auth-failure-reportcountAuthentication failure report received
incoming-report.fraud-reportcountFraud report received
incoming-report.not-spam-reportcountNot spam report received
incoming-report.virus-reportcountVirus report received
incoming-report.other-reportcountOther type of report received
incoming-report.message-parse-failedcountFailed to parse incoming report message
incoming-report.dmarc-parse-failedcountFailed to parse DMARC report
incoming-report.tls-rpc-parse-failedcountFailed to parse TLS RPC report
incoming-report.arf-parse-failedcountFailed to parse ARF report
incoming-report.decompress-errorcountError decompressing report

Iprev

MetricUnitDescription
iprev.passcountIPREV check passed
iprev.failcountIPREV check failed
iprev.perm-errorcountIPREV permanent error
iprev.temp-errorcountIPREV temporary error
iprev.nonecountNo IPREV record

Jmap

MetricUnitDescription
jmap.method-callcountJMAP method call
jmap.invalid-argumentscountInvalid JMAP arguments
jmap.request-too-largecountJMAP request too large
jmap.unsupported-filtercountUnsupported JMAP filter
jmap.unsupported-sortcountUnsupported JMAP sort
jmap.unknown-methodcountUnknown JMAP method
jmap.forbiddencountJMAP operation forbidden
jmap.not-jsoncountJMAP request is not JSON
jmap.not-requestcountJMAP input is not a request
jmap.websocket-startcountJMAP WebSocket connection started
jmap.websocket-errorcountJMAP WebSocket error

Limit

MetricUnitDescription
limit.size-requestcountRequest size limit reached
limit.size-uploadcountUpload size limit reached
limit.calls-incountIncoming calls limit reached
limit.concurrent-requestcountConcurrent request limit reached
limit.concurrent-uploadcountConcurrent upload limit reached
limit.concurrent-connectioncountConcurrent connection limit reached
limit.quotacountQuota limit reached
limit.blob-quotacountBlob quota limit reached
limit.tenant-quotacountTenant quota limit reached
limit.too-many-requestscountToo many requests

MailAuth

MetricUnitDescription
mail-auth.parse-errorcountMail authentication parse error
mail-auth.missing-parameterscountMissing mail authentication parameters
mail-auth.no-headers-foundcountNo headers found in message
mail-auth.cryptocountCrypto error during mail authentication
mail-auth.iocountI/O error during mail authentication
mail-auth.base64countBase64 error during mail authentication
mail-auth.dns-errorcountDNS error
mail-auth.dns-record-not-foundcountDNS record not found
mail-auth.dns-invalid-record-typecountInvalid DNS record type
mail-auth.policy-not-alignedcountPolicy not aligned

ManageSieve

MetricUnitDescription
manage-sieve.connection-startcountManageSieve connection started
manage-sieve.connection-endcountManageSieve connection ended

Message

MetricUnitDescription
message.sizebytesReceived message size
message.authenticated-sizebytesReceived message size from authenticated users

MessageIngest

MetricUnitDescription
message-ingest.timemillisecondsMessage ingestion time
message-ingest.index-timemillisecondsMessage full-text indexing time
message-ingest.hamcountMessage ingested
message-ingest.spamcountPossible spam message ingested
message-ingest.imap-appendcountMessage appended via IMAP
message-ingest.jmap-appendcountMessage appended via JMAP
message-ingest.duplicatecountSkipping duplicate message
message-ingest.errorcountMessage ingestion error
message-ingest.search-indexcountSearch index updated

Milter

MetricUnitDescription
milter.action-acceptcountMilter action: Accept
milter.action-discardcountMilter action: Discard
milter.action-rejectcountMilter action: Reject
milter.action-temp-failcountMilter action: Temporary failure
milter.action-reply-codecountMilter action: Reply code
milter.action-connection-failurecountMilter action: Connection failure
milter.action-shutdowncountMilter action: Shutdown

MtaHook

MetricUnitDescription
mta-hook.action-acceptcountMTA hook action: Accept
mta-hook.action-discardcountMTA hook action: Discard
mta-hook.action-rejectcountMTA hook action: Reject
mta-hook.action-quarantinecountMTA hook action: Quarantine
mta-hook.errorcountMTA hook error

MtaSts

MetricUnitDescription
mta-sts.authorizedcountHost authorized by MTA-STS policy
mta-sts.not-authorizedcountHost not authorized by MTA-STS policy
mta-sts.invalid-policycountInvalid MTA-STS policy

Network

MetricUnitDescription
network.timeoutcountNetwork timeout

OutgoingReport

MetricUnitDescription
outgoing-report.sizebytesOutgoing report size
outgoing-report.spf-reportcountSPF report sent
outgoing-report.spf-rate-limitedcountSPF report rate limited
outgoing-report.dkim-reportcountDKIM report sent
outgoing-report.dkim-rate-limitedcountDKIM report rate limited
outgoing-report.dmarc-reportcountDMARC report sent
outgoing-report.dmarc-rate-limitedcountDMARC report rate limited
outgoing-report.dmarc-aggregate-reportcountDMARC aggregate is being prepared
outgoing-report.tls-aggregatecountTLS aggregate report is being prepared
outgoing-report.http-submissioncountReport submitted via HTTP
outgoing-report.unauthorized-reporting-addresscountUnauthorized reporting address
outgoing-report.reporting-address-validation-errorcountError validating reporting address
outgoing-report.not-foundcountReport not found
outgoing-report.submission-errorcountError submitting report
outgoing-report.no-recipients-foundcountNo recipients found for report

Pop3

MetricUnitDescription
pop3.request-timemillisecondsPOP3 request duration
pop3.active-connectionsconnectionsActive POP3 connections
pop3.connection-startcountPOP3 connection started
pop3.connection-endcountPOP3 connection ended

PushSubscription

MetricUnitDescription
push-subscription.successcountPush subscription successful
push-subscription.errorcountPush subscription error
push-subscription.not-foundcountPush subscription not found

Queue

MetricUnitDescription
queue.countmessagesTotal number of messages in the queue
queue.message-queuedcountQueued message for delivery
queue.authenticated-message-queuedcountQueued message submission for delivery
queue.report-queuedcountQueued report for delivery
queue.dsn-queuedcountQueued DSN for delivery
queue.autogenerated-queuedcountQueued autogenerated message for delivery
queue.rescheduledcountMessage rescheduled for delivery
queue.blob-not-foundcountMessage blob not found
queue.rate-limit-exceededcountRate limit exceeded
queue.concurrency-limit-exceededcountConcurrency limit exceeded
queue.quota-exceededcountQuota exceeded

Resource

MetricUnitDescription
resource.not-foundcountResource not found
resource.bad-parameterscountBad resource parameters
resource.errorcountResource error

Security

MetricUnitDescription
security.authentication-bancountBanned due to authentication errors
security.abuse-bancountBanned due to abuse
security.scan-bancountBanned due to scan
security.loiter-bancountBanned due to loitering
security.ip-blockedcountBlocked IP address
security.unauthorizedcountUnauthorized access

Server

MetricUnitDescription
server.memorybytesServer memory usage
server.thread-errorcountServer thread error

Sieve

MetricUnitDescription
sieve.request-timemillisecondsManageSieve request duration
sieve.active-connectionsconnectionsActive ManageSieve connections
sieve.action-acceptcountSieve action: Accept
sieve.action-accept-replacecountSieve action: Accept and replace
sieve.action-discardcountSieve action: Discard
sieve.action-rejectcountSieve action: Reject
sieve.send-messagecountSieve sending message
sieve.message-too-largecountSieve message too large
sieve.runtime-errorcountSieve runtime error
sieve.unexpected-errorcountUnexpected Sieve error
sieve.not-supportedcountSieve action not supported
sieve.quota-exceededcountSieve quota exceeded

Smtp

MetricUnitDescription
smtp.request-timemillisecondsSMTP request duration
smtp.active-connectionsconnectionsActive SMTP connections
smtp.connection-startcountSMTP connection started
smtp.connection-endcountSMTP connection ended
smtp.errorcountSMTP error occurred
smtp.concurrency-limit-exceededcountConcurrency limit exceeded
smtp.transfer-limit-exceededcountTransfer limit exceeded
smtp.rate-limit-exceededcountRate limit exceeded
smtp.time-limit-exceededcountTime limit exceeded
smtp.message-parse-failedcountMessage parsing failed
smtp.message-too-largecountMessage too large
smtp.loop-detectedcountMail loop detected
smtp.dkim-passcountDKIM verification passed
smtp.dkim-failcountDKIM verification failed
smtp.arc-passcountARC verification passed
smtp.arc-failcountARC verification failed
smtp.spf-ehlo-passcountSPF EHLO check passed
smtp.spf-ehlo-failcountSPF EHLO check failed
smtp.spf-from-passcountSPF From check passed
smtp.spf-from-failcountSPF From check failed
smtp.dmarc-passcountDMARC check passed
smtp.dmarc-failcountDMARC check failed
smtp.iprev-passcountIPREV check passed
smtp.iprev-failcountIPREV check failed
smtp.too-many-messagescountToo many messages
smtp.invalid-ehlocountInvalid EHLO command
smtp.did-not-say-ehlocountClient did not say EHLO
smtp.mail-from-unauthenticatedcountMAIL FROM without authentication
smtp.mail-from-unauthorizedcountMAIL FROM unauthorized
smtp.mail-from-missingcountMAIL FROM address missing
smtp.multiple-mail-fromcountMultiple MAIL FROM commands
smtp.mailbox-does-not-existcountMailbox does not exist
smtp.relay-not-allowedcountRelay not allowed
smtp.rcpt-to-duplicatecountDuplicate RCPT TO
smtp.rcpt-to-missingcountRCPT TO address missing
smtp.too-many-recipientscountToo many recipients
smtp.too-many-invalid-rcptcountToo many invalid recipients
smtp.auth-mechanism-not-supportedcountAuth mechanism not supported
smtp.auth-exchange-too-longcountAuth exchange too long
smtp.command-not-implementedcountCommand not implemented
smtp.invalid-commandcountInvalid command
smtp.syntax-errorcountSyntax error
smtp.request-too-largecountRequest too large

Spam

MetricUnitDescription
spam.pyzor-errorcountPyzor error
spam.dnsbl-errorcountError querying DNSBL
spam.train-completedcountSpam classifier training completed
spam.train-sample-addedcountNew training sample added
spam.classifycountClassifying message for spam
spam.model-not-readycountSpam classifier model not ready

Spf

MetricUnitDescription
spf.passcountSPF check passed
spf.failcountSPF check failed
spf.soft-failcountSPF soft fail
spf.neutralcountSPF neutral result
spf.temp-errorcountSPF temporary error
spf.perm-errorcountSPF permanent error
spf.nonecountNo SPF record

Store

MetricUnitDescription
store.data-read-timemillisecondsData store read time
store.data-write-timemillisecondsData store write time
store.blob-read-timemillisecondsBlob store read time
store.blob-write-timemillisecondsBlob store write time
store.assert-value-failedcountAnother process modified the record
store.foundationdb-errorcountFoundationDB error
store.mysql-errorcountMySQL error
store.postgresql-errorcountPostgreSQL error
store.rocksdb-errorcountRocksDB error
store.sqlite-errorcountSQLite error
store.ldap-errorcountLDAP error
store.elasticsearch-errorcountElasticSearch error
store.redis-errorcountRedis error
store.s3-errorcountS3 error
store.azure-errorcountAzure error
store.filesystem-errorcountFilesystem error
store.pool-errorcountConnection pool error
store.data-corruptioncountData corruption detected
store.decompress-errorcountDecompression error
store.deserialize-errorcountDeserialization error
store.not-foundcountRecord not found in database
store.not-configuredcountStore not configured
store.not-supportedcountOperation not supported by store
store.unexpected-errorcountUnexpected store error
store.crypto-errorcountStore crypto error
store.http-store-errorcountError updating HTTP store
store.blob-missing-markercountBlob missing marker
store.data-writecountWrite batch operation
store.data-iteratecountData store iteration operation
store.blob-readcountBlob read operation
store.blob-writecountBlob write operation
store.blob-deletecountBlob delete operation

TaskManager

MetricUnitDescription
task-manager.blob-not-foundcountBlob not found for task
task-manager.metadata-not-foundcountMetadata not found for task

Telemetry

MetricUnitDescription
telemetry.alert-eventcountAlert event triggered
telemetry.alert-messagecountAlert message sent
telemetry.log-errorcountLog collector error
telemetry.webhook-errorcountWebhook collector error
telemetry.otel-exporter-errorcountOpenTelemetry exporter error
telemetry.otel-metrics-exporter-errorcountOpenTelemetry metrics exporter error
telemetry.prometheus-exporter-errorcountPrometheus exporter error
telemetry.journal-errorcountJournal collector error

Tls

MetricUnitDescription
tls.handshake-errorcountTLS handshake error

User

MetricUnitDescription
user.countusersTotal number of users