{
  "auth_client_passdb_lookup_started": {
    "root": "auth-client",
    "inherit": "auth_client_lookup",
    "text": "<p>Authentication client starts a passdb lookup.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Full username to lookup.</p>\n"
      },
      "error": {
        "text": "<p>Error string, if error occurred.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_client_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_client_common_protocol_added": false
        }
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "session": {
        "text": "<p>Session identifier.</p>\n"
      },
      "certificate_user": {
        "text": "<p>Username from certificate.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP of client.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of client.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Real local IP as seen by the server.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Real remote IP as seen by the server.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Real local port as seen by the server.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Real remote port as seen by the server.</p>\n"
      },
      "tls_cipher": {
        "text": "<p>Cipher name used, e.g. <code>TLS_AES_256_GCM_SHA384</code>.</p>\n"
      },
      "tls_cipher_bits": {
        "text": "<p>Cipher bits, e.g. <code>256</code>.</p>\n"
      },
      "tls_pfs": {
        "text": "<p>Perfect forward-security mechanism, e.g. <code>KxANY</code>, <code>KxECDHE</code>.</p>\n"
      },
      "tls_protocol": {
        "text": "<p>TLS protocol name, e.g. <code>TLSv1.3</code>.</p>\n"
      }
    }
  },
  "auth_client_passdb_lookup_finished": {
    "root": "auth-client",
    "inherit": "auth_client_lookup",
    "text": "<p>Authentication client finishes a passdb lookup.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Full username to lookup.</p>\n"
      },
      "error": {
        "text": "<p>Error string, if error occurred.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_client_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_client_common_protocol_added": false
        }
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "session": {
        "text": "<p>Session identifier.</p>\n"
      },
      "certificate_user": {
        "text": "<p>Username from certificate.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP of client.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of client.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Real local IP as seen by the server.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Real remote IP as seen by the server.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Real local port as seen by the server.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Real remote port as seen by the server.</p>\n"
      },
      "tls_cipher": {
        "text": "<p>Cipher name used, e.g. <code>TLS_AES_256_GCM_SHA384</code>.</p>\n"
      },
      "tls_cipher_bits": {
        "text": "<p>Cipher bits, e.g. <code>256</code>.</p>\n"
      },
      "tls_pfs": {
        "text": "<p>Perfect forward-security mechanism, e.g. <code>KxANY</code>, <code>KxECDHE</code>.</p>\n"
      },
      "tls_protocol": {
        "text": "<p>TLS protocol name, e.g. <code>TLSv1.3</code>.</p>\n"
      }
    }
  },
  "auth_client_request_started": {
    "root": "auth-client",
    "inherit": "auth_client_request",
    "text": "<p>Authentication client starts authentication request.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username, if present.</p>\n"
      },
      "original_user": {
        "text": "<p>Original username, if present.</p>\n"
      },
      "auth_user": {
        "text": "<p>Auth username, if present.</p>\n"
      },
      "error": {
        "text": "<p>Error string, if error occurred.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_client_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_client_common_protocol_added": false
        }
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "session": {
        "text": "<p>Session identifier.</p>\n"
      },
      "certificate_user": {
        "text": "<p>Username from certificate.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP of client.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of client.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Real local IP as seen by the server.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Real remote IP as seen by the server.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Real local port as seen by the server.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Real remote port as seen by the server.</p>\n"
      },
      "tls_cipher": {
        "text": "<p>Cipher name used, e.g. <code>TLS_AES_256_GCM_SHA384</code>.</p>\n"
      },
      "tls_cipher_bits": {
        "text": "<p>Cipher bits, e.g. <code>256</code>.</p>\n"
      },
      "tls_pfs": {
        "text": "<p>Perfect forward-security mechanism, e.g. <code>KxANY</code>, <code>KxECDHE</code>.</p>\n"
      },
      "tls_protocol": {
        "text": "<p>TLS protocol name, e.g. <code>TLSv1.3</code>.</p>\n"
      }
    }
  },
  "auth_client_request_challenged": {
    "root": "auth-client",
    "inherit": "auth_client_request",
    "text": "<p>Authentication client receives a request from server to continue SASL\nauthentication.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username, if present.</p>\n"
      },
      "original_user": {
        "text": "<p>Original username, if present.</p>\n"
      },
      "auth_user": {
        "text": "<p>Auth username, if present.</p>\n"
      },
      "error": {
        "text": "<p>Error string, if error occurred.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_client_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_client_common_protocol_added": false
        }
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "session": {
        "text": "<p>Session identifier.</p>\n"
      },
      "certificate_user": {
        "text": "<p>Username from certificate.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP of client.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of client.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Real local IP as seen by the server.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Real remote IP as seen by the server.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Real local port as seen by the server.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Real remote port as seen by the server.</p>\n"
      },
      "tls_cipher": {
        "text": "<p>Cipher name used, e.g. <code>TLS_AES_256_GCM_SHA384</code>.</p>\n"
      },
      "tls_cipher_bits": {
        "text": "<p>Cipher bits, e.g. <code>256</code>.</p>\n"
      },
      "tls_pfs": {
        "text": "<p>Perfect forward-security mechanism, e.g. <code>KxANY</code>, <code>KxECDHE</code>.</p>\n"
      },
      "tls_protocol": {
        "text": "<p>TLS protocol name, e.g. <code>TLSv1.3</code>.</p>\n"
      }
    }
  },
  "auth_client_request_continued": {
    "root": "auth-client",
    "inherit": "auth_client_request",
    "text": "<p>Authentication client continues SASL authentication by sending a response\nto server request.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username, if present.</p>\n"
      },
      "original_user": {
        "text": "<p>Original username, if present.</p>\n"
      },
      "auth_user": {
        "text": "<p>Auth username, if present.</p>\n"
      },
      "error": {
        "text": "<p>Error string, if error occurred.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_client_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_client_common_protocol_added": false
        }
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "session": {
        "text": "<p>Session identifier.</p>\n"
      },
      "certificate_user": {
        "text": "<p>Username from certificate.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP of client.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of client.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Real local IP as seen by the server.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Real remote IP as seen by the server.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Real local port as seen by the server.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Real remote port as seen by the server.</p>\n"
      },
      "tls_cipher": {
        "text": "<p>Cipher name used, e.g. <code>TLS_AES_256_GCM_SHA384</code>.</p>\n"
      },
      "tls_cipher_bits": {
        "text": "<p>Cipher bits, e.g. <code>256</code>.</p>\n"
      },
      "tls_pfs": {
        "text": "<p>Perfect forward-security mechanism, e.g. <code>KxANY</code>, <code>KxECDHE</code>.</p>\n"
      },
      "tls_protocol": {
        "text": "<p>TLS protocol name, e.g. <code>TLSv1.3</code>.</p>\n"
      }
    }
  },
  "auth_client_request_finished": {
    "root": "auth-client",
    "inherit": "auth_client_request",
    "text": "<p>Authentication client receives response from server that authentication is\nfinished, either success or failure.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username, if present.</p>\n"
      },
      "original_user": {
        "text": "<p>Original username, if present.</p>\n"
      },
      "auth_user": {
        "text": "<p>Auth username, if present.</p>\n"
      },
      "error": {
        "text": "<p>Error string, if error occurred.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_client_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_client_common_protocol_added": false
        }
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "session": {
        "text": "<p>Session identifier.</p>\n"
      },
      "certificate_user": {
        "text": "<p>Username from certificate.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP of client.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of client.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Real local IP as seen by the server.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Real remote IP as seen by the server.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Real local port as seen by the server.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Real remote port as seen by the server.</p>\n"
      },
      "tls_cipher": {
        "text": "<p>Cipher name used, e.g. <code>TLS_AES_256_GCM_SHA384</code>.</p>\n"
      },
      "tls_cipher_bits": {
        "text": "<p>Cipher bits, e.g. <code>256</code>.</p>\n"
      },
      "tls_pfs": {
        "text": "<p>Perfect forward-security mechanism, e.g. <code>KxANY</code>, <code>KxECDHE</code>.</p>\n"
      },
      "tls_protocol": {
        "text": "<p>TLS protocol name, e.g. <code>TLSv1.3</code>.</p>\n"
      }
    }
  },
  "auth_client_userdb_list_started": {
    "root": "auth-client",
    "inherit": "auth_client_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user_mask": {
        "text": "<p>User mask to list.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_client_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_client_common_protocol_added": false
        }
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "session": {
        "text": "<p>Session identifier.</p>\n"
      },
      "certificate_user": {
        "text": "<p>Username from certificate.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP of client.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of client.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Real local IP as seen by the server.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Real remote IP as seen by the server.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Real local port as seen by the server.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Real remote port as seen by the server.</p>\n"
      },
      "tls_cipher": {
        "text": "<p>Cipher name used, e.g. <code>TLS_AES_256_GCM_SHA384</code>.</p>\n"
      },
      "tls_cipher_bits": {
        "text": "<p>Cipher bits, e.g. <code>256</code>.</p>\n"
      },
      "tls_pfs": {
        "text": "<p>Perfect forward-security mechanism, e.g. <code>KxANY</code>, <code>KxECDHE</code>.</p>\n"
      },
      "tls_protocol": {
        "text": "<p>TLS protocol name, e.g. <code>TLSv1.3</code>.</p>\n"
      }
    },
    "text": "<p>Authentication client starts userdb iteration.</p>\n"
  },
  "auth_client_userdb_list_finished": {
    "root": "auth-client",
    "inherit": "auth_client_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user_mask": {
        "text": "<p>User mask to list.</p>\n"
      },
      "error": {
        "text": "<p>Error string, if error occurred.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_client_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_client_common_protocol_added": false
        }
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "session": {
        "text": "<p>Session identifier.</p>\n"
      },
      "certificate_user": {
        "text": "<p>Username from certificate.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP of client.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of client.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Real local IP as seen by the server.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Real remote IP as seen by the server.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Real local port as seen by the server.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Real remote port as seen by the server.</p>\n"
      },
      "tls_cipher": {
        "text": "<p>Cipher name used, e.g. <code>TLS_AES_256_GCM_SHA384</code>.</p>\n"
      },
      "tls_cipher_bits": {
        "text": "<p>Cipher bits, e.g. <code>256</code>.</p>\n"
      },
      "tls_pfs": {
        "text": "<p>Perfect forward-security mechanism, e.g. <code>KxANY</code>, <code>KxECDHE</code>.</p>\n"
      },
      "tls_protocol": {
        "text": "<p>TLS protocol name, e.g. <code>TLSv1.3</code>.</p>\n"
      }
    },
    "text": "<p>Authentication client finishes userdb iteration.</p>\n"
  },
  "auth_client_userdb_lookup_started": {
    "root": "auth-client",
    "inherit": "auth_client_lookup",
    "text": "<p>Authentication client starts a userdb lookup.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Full username to lookup.</p>\n"
      },
      "error": {
        "text": "<p>Error string, if error occurred.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_client_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_client_common_protocol_added": false
        }
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "session": {
        "text": "<p>Session identifier.</p>\n"
      },
      "certificate_user": {
        "text": "<p>Username from certificate.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP of client.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of client.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Real local IP as seen by the server.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Real remote IP as seen by the server.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Real local port as seen by the server.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Real remote port as seen by the server.</p>\n"
      },
      "tls_cipher": {
        "text": "<p>Cipher name used, e.g. <code>TLS_AES_256_GCM_SHA384</code>.</p>\n"
      },
      "tls_cipher_bits": {
        "text": "<p>Cipher bits, e.g. <code>256</code>.</p>\n"
      },
      "tls_pfs": {
        "text": "<p>Perfect forward-security mechanism, e.g. <code>KxANY</code>, <code>KxECDHE</code>.</p>\n"
      },
      "tls_protocol": {
        "text": "<p>TLS protocol name, e.g. <code>TLSv1.3</code>.</p>\n"
      }
    }
  },
  "auth_client_userdb_lookup_finished": {
    "root": "auth-client",
    "inherit": "auth_client_lookup",
    "text": "<p>Authentication client finishes a userdb lookup.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Full username to lookup.</p>\n"
      },
      "error": {
        "text": "<p>Error string, if error occurred.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_client_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_client_common_protocol_added": false
        }
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "session": {
        "text": "<p>Session identifier.</p>\n"
      },
      "certificate_user": {
        "text": "<p>Username from certificate.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP of client.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of client.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Real local IP as seen by the server.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Real remote IP as seen by the server.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Real local port as seen by the server.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Real remote port as seen by the server.</p>\n"
      },
      "tls_cipher": {
        "text": "<p>Cipher name used, e.g. <code>TLS_AES_256_GCM_SHA384</code>.</p>\n"
      },
      "tls_cipher_bits": {
        "text": "<p>Cipher bits, e.g. <code>256</code>.</p>\n"
      },
      "tls_pfs": {
        "text": "<p>Perfect forward-security mechanism, e.g. <code>KxANY</code>, <code>KxECDHE</code>.</p>\n"
      },
      "tls_protocol": {
        "text": "<p>TLS protocol name, e.g. <code>TLSv1.3</code>.</p>\n"
      }
    }
  },
  "auth_request_finished": {
    "root": "auth",
    "inherit": "auth_server_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Set when error happens.</p>\n"
      },
      "success": {
        "text": "<p><code>yes</code>, when authentication succeeded.</p>\n"
      },
      "policy_penalty": {
        "text": "<p>Time of penalty added by policy server.</p>\n"
      },
      "policy_result": {
        "text": "<p><code>ok</code>, <code>delayed</code>, or <code>refused</code>.</p>\n"
      },
      "user": {
        "text": "<p>Full username. This can change during authentication, for example due to passdb lookups.</p>\n"
      },
      "original_user": {
        "text": "<p>Original username exactly as provided by the client.</p>\n"
      },
      "translated_user": {
        "text": "<p>Similar to <code>original_user</code>, except after <code><a href=\"/main/core/summaries/settings.html#auth_username_translation\">auth_username_translation</a></code> translations are applied.</p>\n"
      },
      "login_user": {
        "text": "<p>When doing a master user login, the user we are logging in as. Otherwise not set.</p>\n"
      },
      "master_user": {
        "text": "<p>When doing a master user login, the master username. Otherwise not set.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_server_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Service doing the lookup (e.g. <code>imap</code>, <code>pop3</code>, ...).</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_server_common_protocol_added": false
        }
      },
      "session": {
        "text": "<p>Session ID.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address of the client connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address where client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of the client connection.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port where the client connected to.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Same as <code>remote_ip</code>, except if the connection was proxied this is the proxy's IP address.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Same as <code>local_ip</code>, except if the connection was proxied this is the proxy's IP where proxy connected to.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Same as <code>remote_port</code>, except if the connection was proxied this is the proxy connection's port.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Same as <code>local_port</code>, except if the connection was proxied this is the local port where the proxy connected to.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n"
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      }
    },
    "text": "<p>Authentication request finished.</p>\n<p>Most useful for tracking status of authentication/login attempts.</p>\n"
  },
  "auth_passdb_request_started": {
    "root": "auth",
    "inherit": [
      "auth_server_common",
      "auth_server_passdb"
    ],
    "text": "<p>Processing has begun for a passdb block.</p>\n<p>Most useful for debugging authentication flow.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Full username. This can change during authentication, for example due to passdb lookups.</p>\n"
      },
      "original_user": {
        "text": "<p>Original username exactly as provided by the client.</p>\n"
      },
      "translated_user": {
        "text": "<p>Similar to <code>original_user</code>, except after <code><a href=\"/main/core/summaries/settings.html#auth_username_translation\">auth_username_translation</a></code> translations are applied.</p>\n"
      },
      "login_user": {
        "text": "<p>When doing a master user login, the user we are logging in as. Otherwise not set.</p>\n"
      },
      "master_user": {
        "text": "<p>When doing a master user login, the master username. Otherwise not set.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_server_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Service doing the lookup (e.g. <code>imap</code>, <code>pop3</code>, ...).</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_server_common_protocol_added": false
        }
      },
      "session": {
        "text": "<p>Session ID.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address of the client connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address where client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of the client connection.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port where the client connected to.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Same as <code>remote_ip</code>, except if the connection was proxied this is the proxy's IP address.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Same as <code>local_ip</code>, except if the connection was proxied this is the proxy's IP where proxy connected to.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Same as <code>remote_port</code>, except if the connection was proxied this is the proxy connection's port.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Same as <code>local_port</code>, except if the connection was proxied this is the local port where the proxy connected to.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n"
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "passdb": {
        "changed": {
          "events_auth_server_passdb_passdb_changed": false
        },
        "text": "<p>passdb { name }.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.1.0</span></li>\n</ul>\n"
      },
      "passdb_driver": {
        "text": "<p>Driver name.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_server_passdb_passdb_driver_added": false
        }
      },
      "passdb_name": {
        "text": "<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span>:\nRenamed to <code>passdb</code>.</li>\n</ul>\n",
        "removed": {
          "events_auth_server_passdb_passdb_name_removed": "\nRenamed to `passdb`."
        }
      },
      "passdb_id": {
        "text": "<p>Internal ID number of the passdb. May be useful to identify the passdb if it has no name.</p>\n"
      }
    }
  },
  "auth_passdb_request_finished": {
    "root": "auth",
    "inherit": [
      "auth_server_common",
      "auth_server_passdb"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "result": {
        "text": "<ul>\n<li><code>ok</code></li>\n<li><code>password_mismatch</code></li>\n<li><code>user_unknown</code></li>\n<li><code>pass_expired</code></li>\n<li><code>user_disabled</code></li>\n<li><code>scheme_not_available</code></li>\n<li><code>internal_failure</code></li>\n<li><code>next</code></li>\n</ul>\n"
      },
      "cache": {
        "text": "<ul>\n<li><code>miss</code>: Was not cached</li>\n<li><code>hit</code>: Found from cache</li>\n</ul>\n"
      },
      "user": {
        "text": "<p>Full username. This can change during authentication, for example due to passdb lookups.</p>\n"
      },
      "original_user": {
        "text": "<p>Original username exactly as provided by the client.</p>\n"
      },
      "translated_user": {
        "text": "<p>Similar to <code>original_user</code>, except after <code><a href=\"/main/core/summaries/settings.html#auth_username_translation\">auth_username_translation</a></code> translations are applied.</p>\n"
      },
      "login_user": {
        "text": "<p>When doing a master user login, the user we are logging in as. Otherwise not set.</p>\n"
      },
      "master_user": {
        "text": "<p>When doing a master user login, the master username. Otherwise not set.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_server_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Service doing the lookup (e.g. <code>imap</code>, <code>pop3</code>, ...).</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_server_common_protocol_added": false
        }
      },
      "session": {
        "text": "<p>Session ID.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address of the client connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address where client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of the client connection.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port where the client connected to.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Same as <code>remote_ip</code>, except if the connection was proxied this is the proxy's IP address.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Same as <code>local_ip</code>, except if the connection was proxied this is the proxy's IP where proxy connected to.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Same as <code>remote_port</code>, except if the connection was proxied this is the proxy connection's port.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Same as <code>local_port</code>, except if the connection was proxied this is the local port where the proxy connected to.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n"
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "passdb": {
        "changed": {
          "events_auth_server_passdb_passdb_changed": false
        },
        "text": "<p>passdb { name }.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.1.0</span></li>\n</ul>\n"
      },
      "passdb_driver": {
        "text": "<p>Driver name.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_server_passdb_passdb_driver_added": false
        }
      },
      "passdb_name": {
        "text": "<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span>:\nRenamed to <code>passdb</code>.</li>\n</ul>\n",
        "removed": {
          "events_auth_server_passdb_passdb_name_removed": "\nRenamed to `passdb`."
        }
      },
      "passdb_id": {
        "text": "<p>Internal ID number of the passdb. May be useful to identify the passdb if it has no name.</p>\n"
      }
    },
    "text": "<p>Processing has ended for a passdb block.</p>\n<p>Most useful for debugging authentication flow.</p>\n"
  },
  "auth_userdb_request_started": {
    "root": "auth",
    "inherit": [
      "auth_server_common",
      "auth_server_userdb"
    ],
    "text": "<p>Processing has begun for a userdb block. This event is also sent for userdb\niterations.</p>\n<p>Most useful for debugging authentication flow.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Full username. This can change during authentication, for example due to passdb lookups.</p>\n"
      },
      "original_user": {
        "text": "<p>Original username exactly as provided by the client.</p>\n"
      },
      "translated_user": {
        "text": "<p>Similar to <code>original_user</code>, except after <code><a href=\"/main/core/summaries/settings.html#auth_username_translation\">auth_username_translation</a></code> translations are applied.</p>\n"
      },
      "login_user": {
        "text": "<p>When doing a master user login, the user we are logging in as. Otherwise not set.</p>\n"
      },
      "master_user": {
        "text": "<p>When doing a master user login, the master username. Otherwise not set.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_server_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Service doing the lookup (e.g. <code>imap</code>, <code>pop3</code>, ...).</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_server_common_protocol_added": false
        }
      },
      "session": {
        "text": "<p>Session ID.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address of the client connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address where client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of the client connection.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port where the client connected to.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Same as <code>remote_ip</code>, except if the connection was proxied this is the proxy's IP address.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Same as <code>local_ip</code>, except if the connection was proxied this is the proxy's IP where proxy connected to.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Same as <code>remote_port</code>, except if the connection was proxied this is the proxy connection's port.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Same as <code>local_port</code>, except if the connection was proxied this is the local port where the proxy connected to.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n"
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "userdb": {
        "changed": {
          "events_auth_server_userdb_userdb_changed": false
        },
        "text": "<p>userdb { name }.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.1.0</span></li>\n</ul>\n"
      },
      "userdb_driver": {
        "text": "<p>Driver name.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_server_userdb_userdb_driver_added": false
        }
      },
      "userdb_name": {
        "text": "<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span>:\nRenamed to <code>userdb</code>.</li>\n</ul>\n",
        "removed": {
          "events_auth_server_userdb_userdb_name_removed": "\nRenamed to `userdb`."
        }
      },
      "userdb_id": {
        "text": "<p>Internal ID number of the userdb. May be useful to identify the userdb if it has no name.</p>\n"
      }
    }
  },
  "auth_userdb_request_finished": {
    "root": "auth",
    "inherit": [
      "auth_server_common",
      "auth_server_userdb"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "result": {
        "text": "<ul>\n<li><code>ok</code></li>\n<li><code>user_unknown</code></li>\n<li><code>internal_failure</code></li>\n</ul>\n"
      },
      "cache": {
        "text": "<ul>\n<li><code>miss</code>: Was not cached</li>\n<li><code>hit</code>: Found from cache</li>\n</ul>\n"
      },
      "user": {
        "text": "<p>Full username. This can change during authentication, for example due to passdb lookups.</p>\n"
      },
      "original_user": {
        "text": "<p>Original username exactly as provided by the client.</p>\n"
      },
      "translated_user": {
        "text": "<p>Similar to <code>original_user</code>, except after <code><a href=\"/main/core/summaries/settings.html#auth_username_translation\">auth_username_translation</a></code> translations are applied.</p>\n"
      },
      "login_user": {
        "text": "<p>When doing a master user login, the user we are logging in as. Otherwise not set.</p>\n"
      },
      "master_user": {
        "text": "<p>When doing a master user login, the master username. Otherwise not set.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_server_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Service doing the lookup (e.g. <code>imap</code>, <code>pop3</code>, ...).</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_server_common_protocol_added": false
        }
      },
      "session": {
        "text": "<p>Session ID.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address of the client connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address where client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of the client connection.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port where the client connected to.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Same as <code>remote_ip</code>, except if the connection was proxied this is the proxy's IP address.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Same as <code>local_ip</code>, except if the connection was proxied this is the proxy's IP where proxy connected to.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Same as <code>remote_port</code>, except if the connection was proxied this is the proxy connection's port.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Same as <code>local_port</code>, except if the connection was proxied this is the local port where the proxy connected to.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n"
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      },
      "userdb": {
        "changed": {
          "events_auth_server_userdb_userdb_changed": false
        },
        "text": "<p>userdb { name }.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.1.0</span></li>\n</ul>\n"
      },
      "userdb_driver": {
        "text": "<p>Driver name.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_server_userdb_userdb_driver_added": false
        }
      },
      "userdb_name": {
        "text": "<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span>:\nRenamed to <code>userdb</code>.</li>\n</ul>\n",
        "removed": {
          "events_auth_server_userdb_userdb_name_removed": "\nRenamed to `userdb`."
        }
      },
      "userdb_id": {
        "text": "<p>Internal ID number of the userdb. May be useful to identify the userdb if it has no name.</p>\n"
      }
    },
    "text": "<p>Processing has ended for a userdb block. This event is also sent for userdb\niterations.</p>\n<p>Most useful for debugging authentication flow.</p>\n"
  },
  "auth_policy_request_finished": {
    "root": "auth",
    "inherit": "auth_server_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mode": {
        "text": "<p>Either <code>allow</code> or <code>report</code>.</p>\n"
      },
      "policy_result": {
        "text": "<p>Value returned from policy server (number).</p>\n"
      },
      "user": {
        "text": "<p>Full username. This can change during authentication, for example due to passdb lookups.</p>\n"
      },
      "original_user": {
        "text": "<p>Original username exactly as provided by the client.</p>\n"
      },
      "translated_user": {
        "text": "<p>Similar to <code>original_user</code>, except after <code><a href=\"/main/core/summaries/settings.html#auth_username_translation\">auth_username_translation</a></code> translations are applied.</p>\n"
      },
      "login_user": {
        "text": "<p>When doing a master user login, the user we are logging in as. Otherwise not set.</p>\n"
      },
      "master_user": {
        "text": "<p>When doing a master user login, the master username. Otherwise not set.</p>\n"
      },
      "mechanism": {
        "text": "<p>Name of used SASL mechanism (e.g. PLAIN).</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_auth_server_common_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Service doing the lookup (e.g. <code>imap</code>, <code>pop3</code>, ...).</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_auth_server_common_protocol_added": false
        }
      },
      "session": {
        "text": "<p>Session ID.</p>\n"
      },
      "client_id": {
        "text": "<p>Expands to client ID request as IMAP arglist. Needs <code><a href=\"/main/core/summaries/settings.html#imap_id_retain\">imap_id_retain = yes</a></code>.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address of the client connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address where client connected to.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port of the client connection.</p>\n"
      },
      "local_port": {
        "text": "<p>Local port where the client connected to.</p>\n"
      },
      "real_remote_ip": {
        "text": "<p>Same as <code>remote_ip</code>, except if the connection was proxied this is the proxy's IP address.</p>\n"
      },
      "real_local_ip": {
        "text": "<p>Same as <code>local_ip</code>, except if the connection was proxied this is the proxy's IP where proxy connected to.</p>\n"
      },
      "real_remote_port": {
        "text": "<p>Same as <code>remote_port</code>, except if the connection was proxied this is the proxy connection's port.</p>\n"
      },
      "real_local_port": {
        "text": "<p>Same as <code>local_port</code>, except if the connection was proxied this is the local port where the proxy connected to.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n"
      },
      "transport": {
        "text": "<p>Transport security indicator. Values:</p>\n<ul>\n<li><code>insecure</code></li>\n<li><code>secured</code>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span> Secure non-TLS connections (e.g. from localhost) are now <code>secured</code> rather than <code>trusted</code>.</li>\n</ul>\n</li>\n<li><code>TLS</code></li>\n</ul>\n"
      }
    },
    "text": "<p>Processing has ended for an auth policy request.</p>\n<p>Most useful for debugging authentication flow.</p>\n"
  },
  "auth_worker_request_finished": {
    "root": "auth",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "command": {
        "text": "<p>Command received by auth worker.</p>\n"
      },
      "command_id": {
        "text": "<p>Command ID received by auth worker (integer).</p>\n"
      },
      "error": {
        "text": "<p>Error message (if request ended in error).</p>\n"
      }
    },
    "text": "<p>An authentication worker request has finished.</p>\n"
  },
  "auth_master_client_login_started": {
    "inherit": "auth_master_common",
    "text": "<p>Authentication master login request started.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "id": {
        "text": "<p>Login request ID.</p>\n"
      },
      "local_ip": {
        "text": "<p>Client connection's local (server) IP.</p>\n"
      },
      "local_port": {
        "text": "<p>Client connection's local (server) port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Client connection's remote (client) IP.</p>\n"
      },
      "remote_port": {
        "text": "<p>Client connection's remote (client) port.</p>\n"
      }
    }
  },
  "auth_master_client_login_finished": {
    "inherit": "auth_master_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the request failed.</p>\n"
      },
      "id": {
        "text": "<p>Login request ID.</p>\n"
      },
      "local_ip": {
        "text": "<p>Client connection's local (server) IP.</p>\n"
      },
      "local_port": {
        "text": "<p>Client connection's local (server) port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Client connection's remote (client) IP.</p>\n"
      },
      "remote_port": {
        "text": "<p>Client connection's remote (client) port.</p>\n"
      }
    },
    "text": "<p>Authentication master login request finished.</p>\n"
  },
  "client_connection_connected": {
    "inherit": "client_connection_common",
    "text": "<p>Server accepted an incoming client connection.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local server IP address where TCP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote TCP client's IP address.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote TCP client's source port.</p>\n"
      },
      "remote_pid": {
        "text": "<p>Remote UNIX socket client's process ID.</p>\n"
      },
      "remote_uid": {
        "text": "<p>Remote UNIX socket client's system user ID.</p>\n"
      }
    }
  },
  "client_connection_disconnected": {
    "inherit": "client_connection_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "net_in_bytes": {
        "changed": {
          "events_net_in_bytes_changed": "This was previously `in_bytes`."
        },
        "text": "<p>Amount of data read, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>in_bytes</code>.</li>\n</ul>\n"
      },
      "net_out_bytes": {
        "changed": {
          "events_net_out_bytes_changed": "This was previously `out_bytes`."
        },
        "text": "<p>Amount of data written, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>out_bytes</code>.</li>\n</ul>\n"
      },
      "reason": {
        "text": "<p>Disconnection reason.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local server IP address where TCP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote TCP client's IP address.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote TCP client's source port.</p>\n"
      },
      "remote_pid": {
        "text": "<p>Remote UNIX socket client's process ID.</p>\n"
      },
      "remote_uid": {
        "text": "<p>Remote UNIX socket client's system user ID.</p>\n"
      }
    },
    "text": "<p>Client connection is terminated.</p>\n"
  },
  "server_connection_connected": {
    "inherit": "server_connection_common",
    "text": "<p>Outgoing server connection was either successfully established or failed.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>Currently it is not possible to know which one happened.</p>\n</div>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "source_ip": {
        "text": "<p>Source IP address used for the outgoing TCP connection. This is set only if a specific source IP was explicitly requested.</p>\n"
      },
      "dest_ip": {
        "text": "<p>TCP connection's destination IP address.</p>\n"
      },
      "dest_port": {
        "text": "<p>TCP connection's destination port.</p>\n"
      },
      "dest_host": {
        "text": "<p>TCP connection's destination hostname, if known.</p>\n"
      },
      "socket_path": {
        "text": "<p>UNIX socket connection's path.</p>\n"
      },
      "remote_pid": {
        "text": "<p>Remote UNIX socket server's process ID.</p>\n"
      },
      "remote_uid": {
        "text": "<p>Remote UNIX socket server's system user ID.</p>\n"
      }
    }
  },
  "server_connection_disconnected": {
    "inherit": "server_connection_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "reason": {
        "text": "<p>Disconnection reason.</p>\n"
      },
      "source_ip": {
        "text": "<p>Source IP address used for the outgoing TCP connection. This is set only if a specific source IP was explicitly requested.</p>\n"
      },
      "dest_ip": {
        "text": "<p>TCP connection's destination IP address.</p>\n"
      },
      "dest_port": {
        "text": "<p>TCP connection's destination port.</p>\n"
      },
      "dest_host": {
        "text": "<p>TCP connection's destination hostname, if known.</p>\n"
      },
      "socket_path": {
        "text": "<p>UNIX socket connection's path.</p>\n"
      },
      "remote_pid": {
        "text": "<p>Remote UNIX socket server's process ID.</p>\n"
      },
      "remote_uid": {
        "text": "<p>Remote UNIX socket server's system user ID.</p>\n"
      }
    },
    "text": "<p>Server connection is terminated.</p>\n"
  },
  "fs": {
    "root": "fs",
    "text": "<p>May be inherited from various different parents (e.g. &quot;Mail User&quot; event) or even from no parent.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      }
    }
  },
  "fs_file": {
    "root": "fs",
    "text": "<p>Inherits from fs or any other specified event (e.g. mail).</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      }
    }
  },
  "mail_user_session_finished": {
    "inherit": "mail_user",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "utime": {
        "text": "<p>User CPU time used in microseconds.</p>\n"
      },
      "stime": {
        "text": "<p>System CPU time used in microseconds.</p>\n"
      },
      "minor_faults": {
        "text": "<p>Page reclaims (soft page faults).</p>\n"
      },
      "major_faults": {
        "text": "<p>Page faults (hard page faults).</p>\n"
      },
      "vol_cs": {
        "text": "<p>Voluntary context switches.</p>\n"
      },
      "invol_cs": {
        "text": "<p>Involuntary context switches.</p>\n"
      },
      "rss": {
        "text": "<p>Resident set size in bytes. (Skipped in non-Linux environments.)</p>\n"
      },
      "vsz": {
        "text": "<p>Virtual memory size in bytes. (Skipped in non-Linux environments.)</p>\n"
      },
      "rchar": {
        "text": "<p>I/O counter: chars (bytes) read from storage. (Skipped in non-Linux environments.)</p>\n"
      },
      "wchar": {
        "text": "<p>I/O counter: chars (bytes) written to storage. (Skipped in non-Linux environments.)</p>\n"
      },
      "syscr": {
        "text": "<p>Number of read syscalls. (Skipped in non-Linux environments.)</p>\n"
      },
      "syscw": {
        "text": "<p>Number of write syscalls. (Skipped in non-Linux environments.)</p>\n"
      },
      "net_in_bytes": {
        "text": "<p>Bytes received during this session (for applicable processes.)</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span>: This was previously <code>in_bytes</code>.</li>\n</ul>\n",
        "added": {
          "events_net_in_bytes_changed": "This was previously `in_bytes`."
        }
      },
      "net_out_bytes": {
        "text": "<p>Bytes sent during this session (for applicable processes.)</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span>: This was previously <code>out_bytes</code>.</li>\n</ul>\n",
        "added": {
          "events_net_out_bytes_changed": "This was previously `out_bytes`."
        }
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    }
  },
  "mail_expunged": {
    "inherit": "mailbox",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "uid": {
        "text": "<p>UID of the expunged mail.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    },
    "text": "<p>A mail was expunged from the mailbox.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>This event inherits from mailbox, not mail.</p>\n</div>\n"
  },
  "mail_metadata_accessed": {
    "added": {
      "events_mail_metadata_accessed_added": false
    },
    "inherit": [
      "mail",
      "mailbox"
    ],
    "text": "<p><span class=\"VPBadge tip\">Added: 3.0.0</span></p>\n<p>A mail was opened for reading its metadata.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>This event is not sent when mails' body is accessed.</p>\n</div>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "seq": {
        "text": "<p>Mail sequence number.</p>\n"
      },
      "uid": {
        "text": "<p>Mail IMAP UID number.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    }
  },
  "mail_opened": {
    "inherit": [
      "mail",
      "mailbox"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "reason": {
        "text": "<p>Reason why the mail was opened. (optional)</p>\n"
      },
      "seq": {
        "text": "<p>Mail sequence number.</p>\n"
      },
      "uid": {
        "text": "<p>Mail IMAP UID number.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    },
    "text": "<p>A mail was opened, e.g., for reading its body.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>This event is not sent when mails' metadata is accessed, even if it causes\nopening the mail file.</p>\n</div>\n"
  },
  "mail_expunge_requested": {
    "inherit": [
      "mail",
      "mailbox"
    ],
    "text": "<p>A mail is set to be expunged.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>Expunges can be rolled back later on, this event is emitted when an expunge\nis requested.</p>\n</div>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "seq": {
        "text": "<p>Mail sequence number.</p>\n"
      },
      "uid": {
        "text": "<p>Mail IMAP UID number.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    }
  },
  "mail_index_recreated": {
    "root": "mail-index",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "filepath": {
        "text": "<p>Path to the index file being recreated.</p>\n"
      },
      "reason": {
        "text": "<p>Human-readable reason why the mail index was recreated.</p>\n"
      }
    },
    "text": "<p>A mail index file was recreated.</p>\n"
  },
  "indexer_worker_indexing_finished": {
    "root": "mail-index",
    "inherit": "mailbox",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "message_count": {
        "text": "<p>Number of messages indexed.</p>\n"
      },
      "first_uid": {
        "text": "<p>UID of the first indexed message.</p>\n"
      },
      "last_uid": {
        "text": "<p>UID of the last indexed message.</p>\n"
      },
      "user_cpu_usecs": {
        "text": "<p>Total user CPU spent on the indexing transaction in microseconds.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    },
    "text": "<p>Indexer worker process completed an indexing transaction.</p>\n"
  },
  "mail_cache_decision_changed": {
    "root": "mail-cache",
    "inherit": "mail_index_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "field": {
        "text": "<p>Cache field name (e.g. <code>imap.body</code> or <code>hdr.from</code>).</p>\n"
      },
      "last_used": {
        "text": "<p>UNIX timestamp of when the field was accessed the last time. This is updated only once per 24 hours.</p>\n"
      },
      "reason": {
        "text": "<p>Reason why the caching decision changed:</p>\n<ul>\n<li><code>add</code>: no -&gt; temp decision change, because a new field was added to cache.</li>\n<li><code>old_mail</code>: temp -&gt; yes decision change, because a mail older than 1 week was accessed.</li>\n<li><code>unordered_access</code>: temp -&gt; yes decision change, because mails weren't accessed in ascending order.</li>\n<li>Other values indicate a reason for cache purging, which changes the caching decision yes -&gt; temp.</li>\n</ul>\n"
      },
      "uid": {
        "text": "<p>IMAP UID number that caused the decision change. This is set only for some reasons, not all.</p>\n"
      },
      "old_decision": {
        "text": "<p>Old <a href=\"#mail_cache_decision_changed_decisions\">cache decision</a>.</p>\n"
      },
      "new_decision": {
        "text": "<p>New <a href=\"#mail_cache_decision_changed_decisions\">cache decision</a>.</p>\n"
      }
    },
    "text": "<p>A field's caching decision changed.</p>\n<span id=\"mail_cache_decision_changed_decisions\" />\n<p>Decisions:</p>\n<table tabindex=\"0\">\n<thead>\n<tr>\n<th>Decision</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>no</code></td>\n<td>The field is not cached.</td>\n</tr>\n<tr>\n<td><code>temp</code></td>\n<td>The field is cached for 1 week and dropped on the next purge.</td>\n</tr>\n<tr>\n<td><code>yes</code></td>\n<td>The field is cached permanently. If the field isn't accessed for 30 days it's dropped.</td>\n</tr>\n</tbody>\n</table>\n"
  },
  "mail_cache_decision_rejected": {
    "root": "mail-cache",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "field": {
        "text": "<p>Cache field name (e.g. <code>hdr.from</code>).</p>\n"
      },
      "reason": {
        "text": "<p>Reason why the caching decision changed:</p>\n<ul>\n<li><code>too_many_headers</code>\n:   This can happen when the count of headers in the cache exceeds the maximum configured with <code><a href=\"/main/core/summaries/settings.html#mail_cache_max_headers_count\">mail_cache_max_headers_count</a></code>.</li>\n</ul>\n"
      }
    },
    "text": "<p>The decision to promote a field (from <code>no</code> to <code>temp</code>) was rejected.</p>\n"
  },
  "mail_cache_purge_started": {
    "root": "mail-cache",
    "inherit": [
      "mail_cache_purge",
      "mail_index_common"
    ],
    "text": "<p>Cache file purging is started.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "file_seq": {
        "text": "<p>Sequence of the new cache file that is created.</p>\n"
      },
      "prev_file_seq": {
        "text": "<p>Sequence of the cache file that is to be purged.</p>\n"
      },
      "prev_file_size": {
        "text": "<p>Size of the cache file that is to be purged.</p>\n"
      },
      "prev_deleted_records": {
        "text": "<p>Number of records (mails) marked as deleted in the cache file that is to be purged.</p>\n"
      },
      "reason": {
        "text": "<p>Reason string for purging the cache file:</p>\n<ul>\n<li>doveadm mailbox cache purge</li>\n<li>copy cache decisions</li>\n<li>creating cache</li>\n<li>cache is too large</li>\n<li>syncing</li>\n<li>rebuilding index</li>\n</ul>\n"
      }
    }
  },
  "mail_cache_purge_drop_field": {
    "root": "mail-cache",
    "inherit": [
      "mail_cache_purge",
      "mail_index_common"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "field": {
        "text": "<p>Cache field name (e.g. <code>imap.body</code> or <code>hdr.from</code>).</p>\n"
      },
      "decision": {
        "text": "<p>Old caching decision: <code>temp</code>, or <code>yes</code>.</p>\n"
      },
      "last_used": {
        "text": "<p>UNIX timestamp of when the field was accessed the last time. This is updated only once per 24 hours.</p>\n"
      },
      "file_seq": {
        "text": "<p>Sequence of the new cache file that is created.</p>\n"
      },
      "prev_file_seq": {
        "text": "<p>Sequence of the cache file that is to be purged.</p>\n"
      },
      "prev_file_size": {
        "text": "<p>Size of the cache file that is to be purged.</p>\n"
      },
      "prev_deleted_records": {
        "text": "<p>Number of records (mails) marked as deleted in the cache file that is to be purged.</p>\n"
      },
      "reason": {
        "text": "<p>Reason string for purging the cache file:</p>\n<ul>\n<li>doveadm mailbox cache purge</li>\n<li>copy cache decisions</li>\n<li>creating cache</li>\n<li>cache is too large</li>\n<li>syncing</li>\n<li>rebuilding index</li>\n</ul>\n"
      }
    },
    "text": "<p>Existing field is dropped from the cache file because it hadn't been accessed\nfor 30 days.</p>\n"
  },
  "mail_cache_purge_finished": {
    "root": "mail-cache",
    "inherit": [
      "mail_cache_purge",
      "mail_index_common"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "file_size": {
        "text": "<p>Size of the new cache file.</p>\n"
      },
      "max_uid": {
        "text": "<p>IMAP UID of the last mail in the cache file.</p>\n"
      },
      "file_seq": {
        "text": "<p>Sequence of the new cache file that is created.</p>\n"
      },
      "prev_file_seq": {
        "text": "<p>Sequence of the cache file that is to be purged.</p>\n"
      },
      "prev_file_size": {
        "text": "<p>Size of the cache file that is to be purged.</p>\n"
      },
      "prev_deleted_records": {
        "text": "<p>Number of records (mails) marked as deleted in the cache file that is to be purged.</p>\n"
      },
      "reason": {
        "text": "<p>Reason string for purging the cache file:</p>\n<ul>\n<li>doveadm mailbox cache purge</li>\n<li>copy cache decisions</li>\n<li>creating cache</li>\n<li>cache is too large</li>\n<li>syncing</li>\n<li>rebuilding index</li>\n</ul>\n"
      }
    }
  },
  "mail_cache_corrupted": {
    "root": "mail-cache",
    "inherit": "mail_index_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "reason": {
        "text": "<p>Reason string why cache was found to be corrupted.</p>\n"
      }
    },
    "text": "<p>Cache file was found to be corrupted and the whole file is deleted.</p>\n"
  },
  "mail_cache_record_corrupted": {
    "root": "mail-cache",
    "inherit": "mail_index_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "reason": {
        "text": "<p>Reason string why cache was found to be corrupted.</p>\n"
      },
      "uid": {
        "text": "<p>IMAP UID of the mail whose cache record is corrupted.</p>\n"
      }
    },
    "text": "<p>Cache record for a specific mail was found to be corrupted and the record\nis deleted.</p>\n"
  },
  "http_request_finished": {
    "root": "http-client",
    "inherit": "http_client",
    "text": "<p>HTTP request is complete.</p>\n<p>This event is useful to track and monitor external services.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "attempts": {
        "text": "<p>Amount of individual HTTP request attempts (number of retries after failures + 1).</p>\n"
      },
      "net_in_bytes": {
        "changed": {
          "events_net_in_bytes_changed": "This was previously `in_bytes`."
        },
        "text": "<p>Amount of data read, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>in_bytes</code>.</li>\n</ul>\n"
      },
      "net_out_bytes": {
        "changed": {
          "events_net_out_bytes_changed": "This was previously `out_bytes`."
        },
        "text": "<p>Amount of data written, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>out_bytes</code>.</li>\n</ul>\n"
      },
      "dest_host": {
        "text": "<p>Destination host.</p>\n"
      },
      "dest_ip": {
        "text": "<p>Destination IP address.</p>\n"
      },
      "dest_port": {
        "text": "<p>Destination port.</p>\n"
      },
      "method": {
        "text": "<p>HTTP verb used uppercased, e.g. <code>GET</code>.</p>\n"
      },
      "redirects": {
        "text": "<p>Number of redirects done while processing request.</p>\n"
      },
      "status_code": {
        "text": "<p>HTTP result status code (integer).</p>\n"
      },
      "target": {
        "text": "<p>Request path with parameters, e.g. <code>/path/?delimiter=%2F&amp;prefix=test%2F</code>.</p>\n"
      }
    }
  },
  "http_request_redirected": {
    "root": "http-client",
    "inherit": "http_client",
    "text": "<p>Intermediate event emitted when an HTTP request is being redirected.</p>\n<p>The <code><a href=\"/main/core/summaries/events.html#http_request_finished\">http_request_finished</a></code> is still sent at the end of the request.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "attempts": {
        "text": "<p>Amount of individual HTTP request attempts (number of retries after failures + 1).</p>\n"
      },
      "net_in_bytes": {
        "changed": {
          "events_net_in_bytes_changed": "This was previously `in_bytes`."
        },
        "text": "<p>Amount of data read, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>in_bytes</code>.</li>\n</ul>\n"
      },
      "net_out_bytes": {
        "changed": {
          "events_net_out_bytes_changed": "This was previously `out_bytes`."
        },
        "text": "<p>Amount of data written, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>out_bytes</code>.</li>\n</ul>\n"
      },
      "dest_host": {
        "text": "<p>Destination host.</p>\n"
      },
      "dest_ip": {
        "text": "<p>Destination IP address.</p>\n"
      },
      "dest_port": {
        "text": "<p>Destination port.</p>\n"
      },
      "method": {
        "text": "<p>HTTP verb used uppercased, e.g. <code>GET</code>.</p>\n"
      },
      "redirects": {
        "text": "<p>Number of redirects done while processing request.</p>\n"
      },
      "status_code": {
        "text": "<p>HTTP result status code (integer).</p>\n"
      },
      "target": {
        "text": "<p>Request path with parameters, e.g. <code>/path/?delimiter=%2F&amp;prefix=test%2F</code>.</p>\n"
      }
    }
  },
  "http_request_retried": {
    "root": "http-client",
    "inherit": "http_client",
    "text": "<p>Intermediate event emitted when an HTTP request is being retried.</p>\n<p>The <code><a href=\"/main/core/summaries/events.html#http_request_finished\">http_request_finished</a></code> is still sent at the end of the request.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "attempts": {
        "text": "<p>Amount of individual HTTP request attempts (number of retries after failures + 1).</p>\n"
      },
      "net_in_bytes": {
        "changed": {
          "events_net_in_bytes_changed": "This was previously `in_bytes`."
        },
        "text": "<p>Amount of data read, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>in_bytes</code>.</li>\n</ul>\n"
      },
      "net_out_bytes": {
        "changed": {
          "events_net_out_bytes_changed": "This was previously `out_bytes`."
        },
        "text": "<p>Amount of data written, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>out_bytes</code>.</li>\n</ul>\n"
      },
      "dest_host": {
        "text": "<p>Destination host.</p>\n"
      },
      "dest_ip": {
        "text": "<p>Destination IP address.</p>\n"
      },
      "dest_port": {
        "text": "<p>Destination port.</p>\n"
      },
      "method": {
        "text": "<p>HTTP verb used uppercased, e.g. <code>GET</code>.</p>\n"
      },
      "redirects": {
        "text": "<p>Number of redirects done while processing request.</p>\n"
      },
      "status_code": {
        "text": "<p>HTTP result status code (integer).</p>\n"
      },
      "target": {
        "text": "<p>Request path with parameters, e.g. <code>/path/?delimiter=%2F&amp;prefix=test%2F</code>.</p>\n"
      }
    }
  },
  "http_server_request_started": {
    "root": "http-server",
    "inherit": "http_server",
    "text": "<p>A new HTTP request has been received and the request headers (but not body\npayload) are parsed.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "request_id": {
        "text": "<p>Assigned ID of the received request.</p>\n"
      },
      "method": {
        "text": "<p>HTTP verb used uppercased, e.g. <code>GET</code>.</p>\n"
      },
      "target": {
        "text": "<p>Request path with parameters, e.g. <code>/path/?delimiter=%2F&amp;prefix=test%2F</code>.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local server IP address where TCP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote TCP client's IP address.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote TCP client's source port.</p>\n"
      },
      "remote_pid": {
        "text": "<p>Remote UNIX socket client's process ID.</p>\n"
      },
      "remote_uid": {
        "text": "<p>Remote UNIX socket client's system user ID.</p>\n"
      }
    }
  },
  "http_server_request_finished": {
    "root": "http-server",
    "inherit": "http_server",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "net_in_bytes": {
        "changed": {
          "events_net_in_bytes_changed": "This was previously `in_bytes`."
        },
        "text": "<p>Amount of request data read, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>in_bytes</code>.</li>\n</ul>\n"
      },
      "net_out_bytes": {
        "changed": {
          "events_net_out_bytes_changed": "This was previously `out_bytes`."
        },
        "text": "<p>Amount of response data written, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>out_bytes</code>.</li>\n</ul>\n"
      },
      "status_code": {
        "text": "<p>HTTP result status code (integer).</p>\n"
      },
      "request_id": {
        "text": "<p>Assigned ID of the received request.</p>\n"
      },
      "method": {
        "text": "<p>HTTP verb used uppercased, e.g. <code>GET</code>.</p>\n"
      },
      "target": {
        "text": "<p>Request path with parameters, e.g. <code>/path/?delimiter=%2F&amp;prefix=test%2F</code>.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local server IP address where TCP client connected to.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote TCP client's IP address.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote TCP client's source port.</p>\n"
      },
      "remote_pid": {
        "text": "<p>Remote UNIX socket client's process ID.</p>\n"
      },
      "remote_uid": {
        "text": "<p>Remote UNIX socket client's system user ID.</p>\n"
      }
    },
    "text": "<p>HTTP request is fully completed, i.e. the incoming request body is read and\nthe full response to the request has been sent to the client.</p>\n"
  },
  "pop3_command_finished": {
    "root": "pop3",
    "inherit": "pop3_command",
    "added": {
      "events_pop3_command_finished_added": false
    },
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "reply": {
        "text": "<p>POP3 reply. Values:</p>\n<ul>\n<li><code>OK</code></li>\n<li><code>FAIL</code></li>\n</ul>\n"
      },
      "net_in_bytes": {
        "text": "<p>Amount of data read for this command, in bytes.</p>\n"
      },
      "net_out_bytes": {
        "text": "<p>Amount of data written for this command, in bytes.</p>\n"
      },
      "cmd_name": {
        "text": "<p>POP3 command name uppercased (e.g. <code>UIDL</code>).</p>\n"
      },
      "cmd_args": {
        "text": "<p>POP3 command's full parameters (e.g. <code>1 1</code>).</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID of the POP3 connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>POP3 connection's local (server) IP.</p>\n"
      },
      "local_port": {
        "text": "<p>POP3 connection's local (server) port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>POP3 connection's remote (client) IP.</p>\n"
      },
      "remote_port": {
        "text": "<p>POP3 connection's remote (client) port.</p>\n"
      }
    },
    "text": "<p><span class=\"VPBadge tip\">Added: 3.0.0</span></p>\n<p>POP3 command is completed.</p>\n<p>This event is useful to track individual command usage, debug specific\nsessions, and/or detect broken clients.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>This event is currently not sent for pre-login POP3 commands.</p>\n</div>\n"
  },
  "imap_client_hibernated": {
    "root": "imap-hibernate",
    "inherit": "imap_client",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mailbox": {
        "text": "<p>Mailbox name where hibernation was started in.</p>\n"
      },
      "error": {
        "text": "<p>Reason why hibernation attempt failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID of the IMAP connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>IMAP connection's local (server) IP.</p>\n"
      },
      "local_port": {
        "text": "<p>IMAP connection's local (server) port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>IMAP connection's remote (client) IP.</p>\n"
      },
      "remote_port": {
        "text": "<p>IMAP connection's remote (client) port.</p>\n"
      }
    },
    "text": "<p>IMAP client is hibernated or the hibernation attempt failed.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>For failures, this event can be logged by either imap or imap-hibernate\nprocess depending on which side the error was detected in.</p>\n</div>\n"
  },
  "imap_client_unhibernated": {
    "root": "imap-hibernate",
    "inherit": "imap_client",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mailbox": {
        "text": "<p>Mailbox name where hibernation was started in.</p>\n"
      },
      "reason": {
        "text": "<p>Reason why client was unhibernated:</p>\n<ul>\n<li><code>idle_done</code>: IDLE command was stopped with DONE.</li>\n<li><code>idle_bad_reply</code>: IDLE command was stopped with some other command than DONE.</li>\n<li><code>mailbox_changes</code>: Mailbox change notifications need to be sent to the client.</li>\n</ul>\n"
      },
      "hibernation_usecs": {
        "text": "<p>Number of microseconds how long the client was hibernated.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID of the IMAP connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>IMAP connection's local (server) IP.</p>\n"
      },
      "local_port": {
        "text": "<p>IMAP connection's local (server) port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>IMAP connection's remote (client) IP.</p>\n"
      },
      "remote_port": {
        "text": "<p>IMAP connection's remote (client) port.</p>\n"
      }
    },
    "text": "<p>IMAP client is unhibernated or the unhibernation attempt failed.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>For failures, this event can be logged by either imap or imap-hibernate\nprocess depending on which side the error was detected in.</p>\n</div>\n"
  },
  "imap_client_unhibernate_retried": {
    "root": "imap-hibernate",
    "inherit": "imap_client",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Reason why unhibernation failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID of the IMAP connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>IMAP connection's local (server) IP.</p>\n"
      },
      "local_port": {
        "text": "<p>IMAP connection's local (server) port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>IMAP connection's remote (client) IP.</p>\n"
      },
      "remote_port": {
        "text": "<p>IMAP connection's remote (client) port.</p>\n"
      }
    },
    "text": "<p>An IMAP client is attempted to be unhibernated, but imap processes are busy\nand the unhibernation attempt is retried.</p>\n<p>This event is sent each time when retrying is done.</p>\n<p>The <code><a href=\"/main/core/summaries/events.html#imap_client_unhibernated\">imap_client_unhibernated</a></code> event is still sent when unhibernation\neither succeeds or fails permanently.</p>\n"
  },
  "imap_command_finished": {
    "root": "imap",
    "inherit": "imap_command",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "tagged_reply_state": {
        "text": "<p>Values:</p>\n<ul>\n<li><code>OK</code></li>\n<li><code>NO</code></li>\n<li><code>BAD</code></li>\n</ul>\n"
      },
      "tagged_reply": {
        "text": "<p>Full tagged reply (e.g. <code>OK SELECT finished.</code>).</p>\n"
      },
      "last_run_time": {
        "text": "<p>Timestamp when the command was running last time. (Command may be followed by internal &quot;mailbox sync&quot; that can take some time to complete.)</p>\n"
      },
      "running_usecs": {
        "text": "<p>How many usecs this command has spent running.</p>\n"
      },
      "lock_wait_usecs": {
        "text": "<p>How many usecs this command has spent waiting for locks.</p>\n"
      },
      "net_in_bytes": {
        "changed": {
          "events_net_in_bytes_changed": "This was previously `in_bytes`."
        },
        "text": "<p>Amount of data read for this command, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>in_bytes</code>.</li>\n</ul>\n"
      },
      "net_out_bytes": {
        "changed": {
          "events_net_out_bytes_changed": "This was previously `out_bytes`."
        },
        "text": "<p>Amount of data written for this command, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>out_bytes</code>.</li>\n</ul>\n"
      },
      "cmd_tag": {
        "text": "<p>IMAP command tag.</p>\n"
      },
      "cmd_name": {
        "text": "<p>IMAP command name uppercased (e.g. <code>FETCH</code>).</p>\n<p>Contains <code>unknown</code> for unknown command names.</p>\n"
      },
      "cmd_input_name": {
        "text": "<p>IMAP command name exactly as sent (e.g. <code>fetcH</code>) regardless of whether or not it is valid.</p>\n"
      },
      "cmd_args": {
        "text": "<p>IMAP command's full parameters (e.g.  <code>1:* FLAGS</code>).</p>\n"
      },
      "cmd_human_args": {
        "text": "<p>IMAP command's full parameters, as human-readable output. Often it's the\nsame as <code>cmd_args</code>, but it is guaranteed to contain only valid UTF-8\ncharacters and no control characters.</p>\n<p>Multi-line parameters are written only as <code>&lt;N byte multi-line literal&gt;</code>.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID of the IMAP connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>IMAP connection's local (server) IP.</p>\n"
      },
      "local_port": {
        "text": "<p>IMAP connection's local (server) port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>IMAP connection's remote (client) IP.</p>\n"
      },
      "remote_port": {
        "text": "<p>IMAP connection's remote (client) port.</p>\n"
      }
    },
    "text": "<p>IMAP command is completed.</p>\n<p>This event is useful to track individual command usage, debug specific\nsessions, and/or detect broken clients.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>This event is currently not sent for pre-login IMAP commands.</p>\n</div>\n"
  },
  "imap_id_received": {
    "root": "imap",
    "inherit": "imap_command",
    "added": {
      "events_imap_id_received_added": false
    },
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "internal": {
        "text": "<p>If <code>yes</code>, ID command parameters include the internally known <code>x-*</code> fields\nto update e.g. the IP or session ID. Typically these fields would be sent only\nby Dovecot proxies. The internal fields are not actually used, unless\n<code>trusted=yes</code> also.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.2.0</span></li>\n</ul>\n",
        "added": {
          "events_imap_id_received_internal_added": false
        }
      },
      "external": {
        "text": "<p>If <code>yes</code>, ID command parameters include fields sent by a regular IMAP client\n(non-internal fields). Dovecot proxy can send an ID command to a backend\ncontaining both internal and external fields. If the IMAP client sends only\n<code>tag ID NIL</code> command, the event is sent but <code>external</code> is not set.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.2.0</span></li>\n</ul>\n",
        "added": {
          "events_imap_id_received_internal_added": false
        }
      },
      "trusted": {
        "text": "<p>If <code>yes</code>, the ID command came from an IP matching\n<code><a href=\"/main/core/summaries/settings.html#login_trusted_networks\">login_trusted_networks</a></code>. If any internal fields were sent, they were\nprocessed.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.2.0</span></li>\n</ul>\n",
        "added": {
          "events_imap_id_received_internal_added": false
        }
      },
      "id_param_<param>": {
        "text": "<p>Received parameters. The event name is the lowercase parameter key prefixed\nwith <code>id_param_</code>, the value is the parameter value.</p>\n"
      },
      "id_invalid<num>": {
        "text": "<p>Each key that contains invalid characters are enumerated starting with 1.\nValid characters are latin alphabetic characters (= <code>a</code> .. <code>z</code>),\nnumerals (= <code>0</code> .. <code>9</code>), the dash (= <code>-</code>) and\nthe underscore (= <code>_</code>), every other character is\nconsidered invalid. The value of this field is the\noriginal parameter key including invalid characters,\nfollowed by a space character, and finally the\noriginal value concatenated into a single string.</p>\n"
      },
      "cmd_tag": {
        "text": "<p>IMAP command tag.</p>\n"
      },
      "cmd_name": {
        "text": "<p>IMAP command name uppercased (e.g. <code>FETCH</code>).</p>\n<p>Contains <code>unknown</code> for unknown command names.</p>\n"
      },
      "cmd_input_name": {
        "text": "<p>IMAP command name exactly as sent (e.g. <code>fetcH</code>) regardless of whether or not it is valid.</p>\n"
      },
      "cmd_args": {
        "text": "<p>IMAP command's full parameters (e.g.  <code>1:* FLAGS</code>).</p>\n"
      },
      "cmd_human_args": {
        "text": "<p>IMAP command's full parameters, as human-readable output. Often it's the\nsame as <code>cmd_args</code>, but it is guaranteed to contain only valid UTF-8\ncharacters and no control characters.</p>\n<p>Multi-line parameters are written only as <code>&lt;N byte multi-line literal&gt;</code>.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID of the IMAP connection.</p>\n"
      },
      "local_ip": {
        "text": "<p>IMAP connection's local (server) IP.</p>\n"
      },
      "local_port": {
        "text": "<p>IMAP connection's local (server) port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>IMAP connection's remote (client) IP.</p>\n"
      },
      "remote_port": {
        "text": "<p>IMAP connection's remote (client) port.</p>\n"
      }
    },
    "text": "<p><span class=\"VPBadge tip\">Added: 3.0.0</span></p>\n<p>This event is emitted when the IMAP ID command was received, both for pre-\nas well as post-login. The parameters slightly differ for an unauthenticated\nclient, e.g. there is no user id.</p>\n"
  },
  "mail_delivery_started": {
    "root": "local-delivery",
    "inherit": "mail_delivery",
    "text": "<p>Message delivery has started.</p>\n<p>This event is useful for debugging mail delivery flow.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "message_id": {
        "text": "<p>Message-ID header value (truncated to 200 bytes).</p>\n"
      },
      "message_subject": {
        "text": "<p>Subject header value, in UTF-8 (truncated to 80 bytes).</p>\n"
      },
      "message_from": {
        "text": "<p>Email address in the From header (e.g. <code>user@example.com</code>).</p>\n"
      },
      "message_size": {
        "text": "<p>Size of the message, in bytes.</p>\n"
      },
      "message_vsize": {
        "text": "<p>Size of the message with CRLF linefeeds, in bytes.</p>\n"
      },
      "rcpt_to": {
        "text": "<p>Recipient address.</p>\n"
      },
      "rcpt_param_notify": {
        "text": "<p>The value of the NOTIFY parameter for the RCPT command.</p>\n"
      },
      "rcpt_param_orcpt": {
        "text": "<p>The address value of the ORCPT parameter for the RCPT command.</p>\n"
      },
      "rcpt_param_orcpt_type": {
        "text": "<p>The address type (typically &quot;rfc822&quot;) of the ORCPT parameter for the RCPT command.</p>\n"
      },
      "session": {
        "text": "<p>The session ID for this connection (same as <code>connection_id</code>).</p>\n"
      },
      "transaction_id": {
        "text": "<p>Transaction ID used by the server for this transaction (this ID is logged, mentioned in the DATA reply and part of the &quot;Received:&quot; header). It is based on the connection_id with a &quot;:&lt;seq&gt;&quot; sequence number suffix.</p>\n"
      },
      "mail_from": {
        "text": "<p>Sender address.</p>\n"
      },
      "mail_param_auth": {
        "text": "<p>The value of the AUTH parameter for the MAIL command.</p>\n"
      },
      "mail_param_body": {
        "text": "<p>The value of the BODY parameter for the MAIL command.</p>\n"
      },
      "mail_param_envid": {
        "text": "<p>The value of the ENVID parameter for the MAIL command.</p>\n"
      },
      "mail_param_ret": {
        "text": "<p>The value of the RET parameter for the MAIL command.</p>\n"
      },
      "mail_param_size": {
        "text": "<p>The value of the SIZE parameter for the MAIL command.</p>\n"
      },
      "data_size": {
        "text": "<p>The number data of bytes received from the client. This field is only present when the transaction finished receiving the DATA command.</p>\n"
      },
      "connection_id": {
        "text": "<p>The session ID for this connection. The connection ID is forwarded through proxies, allowing correlation between sessions on frontend and backend systems.</p>\n"
      },
      "protocol": {
        "text": "<p>The protocol used by the connection; i.e., either <code>smtp</code> or <code>lmtp</code>.</p>\n"
      }
    }
  },
  "mail_delivery_finished": {
    "root": "local-delivery",
    "inherit": "mail_delivery",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the delivery failed.</p>\n"
      },
      "message_id": {
        "text": "<p>Message-ID header value (truncated to 200 bytes).</p>\n"
      },
      "message_subject": {
        "text": "<p>Subject header value, in UTF-8 (truncated to 80 bytes).</p>\n"
      },
      "message_from": {
        "text": "<p>Email address in the From header (e.g. <code>user@example.com</code>).</p>\n"
      },
      "message_size": {
        "text": "<p>Size of the message, in bytes.</p>\n"
      },
      "message_vsize": {
        "text": "<p>Size of the message with CRLF linefeeds, in bytes.</p>\n"
      },
      "rcpt_to": {
        "text": "<p>Recipient address.</p>\n"
      },
      "rcpt_param_notify": {
        "text": "<p>The value of the NOTIFY parameter for the RCPT command.</p>\n"
      },
      "rcpt_param_orcpt": {
        "text": "<p>The address value of the ORCPT parameter for the RCPT command.</p>\n"
      },
      "rcpt_param_orcpt_type": {
        "text": "<p>The address type (typically &quot;rfc822&quot;) of the ORCPT parameter for the RCPT command.</p>\n"
      },
      "session": {
        "text": "<p>The session ID for this connection (same as <code>connection_id</code>).</p>\n"
      },
      "transaction_id": {
        "text": "<p>Transaction ID used by the server for this transaction (this ID is logged, mentioned in the DATA reply and part of the &quot;Received:&quot; header). It is based on the connection_id with a &quot;:&lt;seq&gt;&quot; sequence number suffix.</p>\n"
      },
      "mail_from": {
        "text": "<p>Sender address.</p>\n"
      },
      "mail_param_auth": {
        "text": "<p>The value of the AUTH parameter for the MAIL command.</p>\n"
      },
      "mail_param_body": {
        "text": "<p>The value of the BODY parameter for the MAIL command.</p>\n"
      },
      "mail_param_envid": {
        "text": "<p>The value of the ENVID parameter for the MAIL command.</p>\n"
      },
      "mail_param_ret": {
        "text": "<p>The value of the RET parameter for the MAIL command.</p>\n"
      },
      "mail_param_size": {
        "text": "<p>The value of the SIZE parameter for the MAIL command.</p>\n"
      },
      "data_size": {
        "text": "<p>The number data of bytes received from the client. This field is only present when the transaction finished receiving the DATA command.</p>\n"
      },
      "connection_id": {
        "text": "<p>The session ID for this connection. The connection ID is forwarded through proxies, allowing correlation between sessions on frontend and backend systems.</p>\n"
      },
      "protocol": {
        "text": "<p>The protocol used by the connection; i.e., either <code>smtp</code> or <code>lmtp</code>.</p>\n"
      }
    },
    "text": "<p>Message delivery is completed.</p>\n<p>This event is useful for logging and tracking mail deliveries.</p>\n"
  },
  "dns_worker_request_started": {
    "root": "dns-worker",
    "text": "<p>DNS request started being processed by DNS worker process.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      }
    }
  },
  "dns_request_started": {
    "root": "dns-client",
    "text": "<p>DNS request sent by DNS client library to DNS worker process.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      }
    }
  },
  "dns_worker_request_finished": {
    "root": "dns-worker",
    "inherit": "dns",
    "text": "<p>DNS request finished being processed by DNS worker process.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Human readable error.</p>\n"
      },
      "error_code": {
        "text": "<p>Error code usable with net_gethosterror().</p>\n"
      }
    }
  },
  "dns_request_finished": {
    "root": "dns-client",
    "inherit": "dns",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "cached": {
        "text": "<p>Set to <code>yes</code> or <code>no</code> depending if it was a cached reply or not.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_dns_worker_request_finished_cached_added": false
        }
      },
      "error": {
        "text": "<p>Human readable error.</p>\n"
      },
      "error_code": {
        "text": "<p>Error code usable with net_gethosterror().</p>\n"
      }
    },
    "text": "<p>DNS request sent by DNS client library to DNS worker process has been\nfinished.</p>\n"
  },
  "sql_query_finished": {
    "root": "sql",
    "inherit": "sql_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Human readable error.</p>\n"
      },
      "error_code": {
        "text": "<p>Error code (if available).</p>\n"
      },
      "query_first_word": {
        "text": "<p>First word of the query (e.g. <code>SELECT</code>).</p>\n"
      },
      "consistency": {
        "text": "<p>Requested consistency for the query (Cassandra only).</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_sql_query_finished_consistency_added": false
        }
      },
      "error_consistency": {
        "text": "<p>Consistency attempted to be used by Cassandra for the failed query (Cassandra only).</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_sql_query_finished_consistency_added": false
        }
      },
      "sql_driver": {
        "text": "<p>Name of the sql driver, e.g. <code>mysql</code> or <code>cassandra</code>.</p>\n"
      }
    },
    "text": "<p>Response was received to SQL query.</p>\n"
  },
  "sql_transaction_finished": {
    "root": "sql",
    "inherit": "sql_common",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Human readable error.</p>\n"
      },
      "error_code": {
        "text": "<p>Error code (if available).</p>\n"
      },
      "sql_driver": {
        "text": "<p>Name of the sql driver, e.g. <code>mysql</code> or <code>cassandra</code>.</p>\n"
      }
    },
    "text": "<p>SQL transaction was committed or rolled back.</p>\n"
  },
  "sql_connection_finished": {
    "root": "sql",
    "inherit": "sql_common",
    "text": "<p>Connection to SQL server is closed.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "sql_driver": {
        "text": "<p>Name of the sql driver, e.g. <code>mysql</code> or <code>cassandra</code>.</p>\n"
      }
    }
  },
  "smtp_server_command_started": {
    "root": "smtp-server",
    "inherit": "smtp_server",
    "text": "<p>The command is received from the client.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "cmd_name": {
        "text": "<p>Name of the command.</p>\n"
      },
      "cmd_input_name": {
        "text": "<p>SMTP command name exactly as sent (e.g. <code>MaIL</code>) regardless of whether or not it is valid.</p>\n"
      },
      "cmd_args": {
        "text": "<p>SMTP command's full parameters (e.g. <code>&lt;from@example.com&gt;</code>).</p>\n"
      },
      "cmd_human_args": {
        "text": "<p>SMTP command's full parameters, as human-readable output. For SMTP, this is currently identical to <code>cmd_args</code>.</p>\n"
      },
      "connection_id": {
        "text": "<p>The session ID for this connection. The connection ID is forwarded through proxies, allowing correlation between sessions on frontend and backend systems.</p>\n"
      },
      "protocol": {
        "text": "<p>The protocol used by the connection; i.e., either <code>smtp</code> or <code>lmtp</code>.</p>\n"
      },
      "session": {
        "text": "<p>The session ID for this connection (same as <code>connection_id</code>).</p>\n"
      }
    }
  },
  "smtp_server_command_finished": {
    "root": "smtp-server",
    "inherit": "smtp_server",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "status_code": {
        "text": "<p>SMTP status code for the (first) reply. This is = 9000 for aborted commands (e.g., when the connection is closed prematurely).</p>\n"
      },
      "enhanced_code": {
        "text": "<p>SMTP enhanced status code for the (first) reply. This is &quot;9.0.0&quot; for aborted commands (e.g., when the connection is closed prematurely).</p>\n"
      },
      "error": {
        "text": "<p>Error message for the reply. There is no field for a success message.</p>\n"
      },
      "cmd_name": {
        "text": "<p>Name of the command.</p>\n"
      },
      "cmd_input_name": {
        "text": "<p>SMTP command name exactly as sent (e.g. <code>MaIL</code>) regardless of whether or not it is valid.</p>\n"
      },
      "cmd_args": {
        "text": "<p>SMTP command's full parameters (e.g. <code>&lt;from@example.com&gt;</code>).</p>\n"
      },
      "cmd_human_args": {
        "text": "<p>SMTP command's full parameters, as human-readable output. For SMTP, this is currently identical to <code>cmd_args</code>.</p>\n"
      },
      "connection_id": {
        "text": "<p>The session ID for this connection. The connection ID is forwarded through proxies, allowing correlation between sessions on frontend and backend systems.</p>\n"
      },
      "protocol": {
        "text": "<p>The protocol used by the connection; i.e., either <code>smtp</code> or <code>lmtp</code>.</p>\n"
      },
      "session": {
        "text": "<p>The session ID for this connection (same as <code>connection_id</code>).</p>\n"
      }
    },
    "text": "<p>The command is finished. Either a success reply was sent for it or it\nfailed somehow.</p>\n"
  },
  "smtp_server_transaction_started": {
    "root": "smtp-server",
    "inherit": "smtp_transaction",
    "text": "<p>The transaction is started.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "transaction_id": {
        "text": "<p>Transaction ID used by the server for this transaction (this ID is logged, mentioned in the DATA reply and part of the &quot;Received:&quot; header). It is based on the connection_id with a &quot;:&lt;seq&gt;&quot; sequence number suffix.</p>\n"
      },
      "session": {
        "text": "<p>The session ID for this connection (same as <code>connection_id</code>).</p>\n"
      },
      "mail_from": {
        "text": "<p>Sender address.</p>\n"
      },
      "mail_param_auth": {
        "text": "<p>The value of the AUTH parameter for the MAIL command.</p>\n"
      },
      "mail_param_body": {
        "text": "<p>The value of the BODY parameter for the MAIL command.</p>\n"
      },
      "mail_param_envid": {
        "text": "<p>The value of the ENVID parameter for the MAIL command.</p>\n"
      },
      "mail_param_ret": {
        "text": "<p>The value of the RET parameter for the MAIL command.</p>\n"
      },
      "mail_param_size": {
        "text": "<p>The value of the SIZE parameter for the MAIL command.</p>\n"
      },
      "data_size": {
        "text": "<p>The number data of bytes received from the client. This field is only present when the transaction finished receiving the DATA command.</p>\n"
      },
      "connection_id": {
        "text": "<p>The session ID for this connection. The connection ID is forwarded through proxies, allowing correlation between sessions on frontend and backend systems.</p>\n"
      },
      "protocol": {
        "text": "<p>The protocol used by the connection; i.e., either <code>smtp</code> or <code>lmtp</code>.</p>\n"
      }
    }
  },
  "smtp_server_transaction_finished": {
    "root": "smtp-server",
    "inherit": "smtp_transaction",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "status_code": {
        "text": "<p>SMTP status code for the (first failure) reply. This is = 9000 for aborted commands (e.g., when the connection is closed prematurely).</p>\n"
      },
      "enhanced_code": {
        "text": "<p>SMTP enhanced status code for the (first failure) reply. This is &quot;9.0.0&quot; for aborted commands (e.g., when the connection is closed prematurely).</p>\n"
      },
      "error": {
        "text": "<p>Error message for the first failure reply. There is no field for a success message.</p>\n"
      },
      "recipients": {
        "text": "<p>Total number of recipients.</p>\n"
      },
      "recipients_aborted": {
        "text": "<p>The number of recipients that got aborted before these could either finish\nor fail. This means that the transaction failed early somehow while these\nrecipients were still being processed by the server.</p>\n"
      },
      "recipients_denied": {
        "text": "<p>The number of recipients denied by the server using a negative reply to the RCPT command.</p>\n"
      },
      "recipients_failed": {
        "text": "<p>The number of recipients that failed somehow (includes denied recipients, but not aborted recipients).</p>\n"
      },
      "recipients_succeeded": {
        "text": "<p>The number of recipients for which the transaction finally succeeded.</p>\n"
      },
      "is_reset": {
        "text": "<p>The transaction was reset (RSET) rather than finishing\nwith a DATA/BDAT command as it normally would. This happens when client\nside issues the RSET command. Note that a reset event is a success (no\nerror field is present).</p>\n"
      },
      "transaction_id": {
        "text": "<p>Transaction ID used by the server for this transaction (this ID is logged, mentioned in the DATA reply and part of the &quot;Received:&quot; header). It is based on the connection_id with a &quot;:&lt;seq&gt;&quot; sequence number suffix.</p>\n"
      },
      "session": {
        "text": "<p>The session ID for this connection (same as <code>connection_id</code>).</p>\n"
      },
      "mail_from": {
        "text": "<p>Sender address.</p>\n"
      },
      "mail_param_auth": {
        "text": "<p>The value of the AUTH parameter for the MAIL command.</p>\n"
      },
      "mail_param_body": {
        "text": "<p>The value of the BODY parameter for the MAIL command.</p>\n"
      },
      "mail_param_envid": {
        "text": "<p>The value of the ENVID parameter for the MAIL command.</p>\n"
      },
      "mail_param_ret": {
        "text": "<p>The value of the RET parameter for the MAIL command.</p>\n"
      },
      "mail_param_size": {
        "text": "<p>The value of the SIZE parameter for the MAIL command.</p>\n"
      },
      "data_size": {
        "text": "<p>The number data of bytes received from the client. This field is only present when the transaction finished receiving the DATA command.</p>\n"
      },
      "connection_id": {
        "text": "<p>The session ID for this connection. The connection ID is forwarded through proxies, allowing correlation between sessions on frontend and backend systems.</p>\n"
      },
      "protocol": {
        "text": "<p>The protocol used by the connection; i.e., either <code>smtp</code> or <code>lmtp</code>.</p>\n"
      }
    },
    "text": "<p>Transaction is finished or failed.</p>\n"
  },
  "smtp_server_transaction_rcpt_finished": {
    "root": "smtp-server",
    "inherit": "smtp_recipient",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "status_code": {
        "text": "<p>SMTP status code for the reply. This is = 9000 for aborted commands (e.g., when the connection is closed prematurely).</p>\n"
      },
      "enhanced_code": {
        "text": "<p>SMTP enhanced status code for the reply. This is &quot;9.0.0&quot; for aborted commands (e.g., when the connection is closed prematurely).</p>\n"
      },
      "error": {
        "text": "<p>Error message for the reply if it is a failure. There is no field for a success message.</p>\n"
      },
      "dest_host": {
        "text": "<p>LMTP proxying only: Proxy destination hostname.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_smtp_server_transaction_rcpt_finished_dest_host_added": false
        }
      },
      "dest_ip": {
        "text": "<p>LMTP proxying only: Proxy destination IP address.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_smtp_server_transaction_rcpt_finished_dest_ip_added": false
        }
      },
      "rcpt_to": {
        "text": "<p>Recipient address.</p>\n"
      },
      "rcpt_param_notify": {
        "text": "<p>The value of the NOTIFY parameter for the RCPT command.</p>\n"
      },
      "rcpt_param_orcpt": {
        "text": "<p>The address value of the ORCPT parameter for the RCPT command.</p>\n"
      },
      "rcpt_param_orcpt_type": {
        "text": "<p>The address type (typically &quot;rfc822&quot;) of the ORCPT parameter for the RCPT command.</p>\n"
      },
      "session": {
        "text": "<p>The session ID for this connection (same as <code>connection_id</code>).</p>\n"
      },
      "transaction_id": {
        "text": "<p>Transaction ID used by the server for this transaction (this ID is logged, mentioned in the DATA reply and part of the &quot;Received:&quot; header). It is based on the connection_id with a &quot;:&lt;seq&gt;&quot; sequence number suffix.</p>\n"
      },
      "mail_from": {
        "text": "<p>Sender address.</p>\n"
      },
      "mail_param_auth": {
        "text": "<p>The value of the AUTH parameter for the MAIL command.</p>\n"
      },
      "mail_param_body": {
        "text": "<p>The value of the BODY parameter for the MAIL command.</p>\n"
      },
      "mail_param_envid": {
        "text": "<p>The value of the ENVID parameter for the MAIL command.</p>\n"
      },
      "mail_param_ret": {
        "text": "<p>The value of the RET parameter for the MAIL command.</p>\n"
      },
      "mail_param_size": {
        "text": "<p>The value of the SIZE parameter for the MAIL command.</p>\n"
      },
      "data_size": {
        "text": "<p>The number data of bytes received from the client. This field is only present when the transaction finished receiving the DATA command.</p>\n"
      },
      "connection_id": {
        "text": "<p>The session ID for this connection. The connection ID is forwarded through proxies, allowing correlation between sessions on frontend and backend systems.</p>\n"
      },
      "protocol": {
        "text": "<p>The protocol used by the connection; i.e., either <code>smtp</code> or <code>lmtp</code>.</p>\n"
      }
    },
    "text": "<p>The transaction is finished or failed for this particular recipient. When\nsuccessful, this means the DATA command for the transaction yielded success\nfor that recipient (even for SMTP this event is generated for each\nrecipient separately). Recipients can fail at various stages, particularly\nat the actual RCPT command where the server can deny the recipient.</p>\n"
  },
  "smtp_submit_started": {
    "root": "smtp-submit",
    "text": "<p>Started message submission.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      }
    }
  },
  "smtp_submit_finished": {
    "root": "smtp-submit",
    "inherit": "smtp_submit",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Error message for submission failure.</p>\n"
      },
      "mail_from": {
        "text": "<p>The envelope sender for the outgoing message.</p>\n"
      },
      "recipients": {
        "text": "<p>The number of recipients for the outgoing message.</p>\n"
      },
      "data_size": {
        "text": "<p>The size of the outgoing message.</p>\n"
      }
    },
    "text": "<p>Finished the message submission.</p>\n"
  },
  "push_notification_finished": {
    "root": "push-notification",
    "inherit": "mail_user",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mailbox": {
        "text": "<p>Mailbox for event.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    },
    "text": "<p>Push notification event was sent. See <a href=\"/main/core/config/statistics.html#push-notifications\">push notification stats</a>.</p>\n"
  },
  "sieve_runtime_script_started": {
    "root": "sieve-runtime",
    "inherit": "sieve_runtime",
    "text": "<p>Started evaluating a Sieve script.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "script_name": {
        "text": "<p>The name of the Sieve script as it is visible to the user.</p>\n"
      },
      "script_location": {
        "text": "<p>The full location string of the Sieve script.</p>\n"
      },
      "binary_path": {
        "text": "<p>The path of the Sieve binary being executed (if it is not only in memory).</p>\n"
      },
      "error": {
        "text": "<p>If present, this field indicates that the script execution has failed. The error message itself is very simple.</p>\n"
      },
      "message_id": {
        "text": "<p>The message-id of the message being filtered.</p>\n"
      },
      "mail_from": {
        "text": "<p>Envelope sender address if available.</p>\n"
      },
      "rcpt_to": {
        "text": "<p>Envelope recipient address if available.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      }
    }
  },
  "sieve_runtime_script_finished": {
    "root": "sieve-runtime",
    "inherit": "sieve_runtime",
    "text": "<p>Finished evaluating a Sieve script.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "script_name": {
        "text": "<p>The name of the Sieve script as it is visible to the user.</p>\n"
      },
      "script_location": {
        "text": "<p>The full location string of the Sieve script.</p>\n"
      },
      "binary_path": {
        "text": "<p>The path of the Sieve binary being executed (if it is not only in memory).</p>\n"
      },
      "error": {
        "text": "<p>If present, this field indicates that the script execution has failed. The error message itself is very simple.</p>\n"
      },
      "message_id": {
        "text": "<p>The message-id of the message being filtered.</p>\n"
      },
      "mail_from": {
        "text": "<p>Envelope sender address if available.</p>\n"
      },
      "rcpt_to": {
        "text": "<p>Envelope recipient address if available.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      }
    }
  },
  "sieve_action_finished": {
    "root": "sieve-execute",
    "inherit": "sieve_execute",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "action_name": {
        "text": "<table tabindex=\"0\">\n<thead>\n<tr>\n<th>Action</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>discard</code></td>\n<td>The discard action was executed successfully (only has an effect when no explicit keep is executed).</td>\n</tr>\n<tr>\n<td>ileinto`</td>\n<td>The fileinto action was executed successfully.</td>\n</tr>\n<tr>\n<td><code>keep</code></td>\n<td>The keep action was executed successfully (maps to fileinto internally, so the fields are identical).</td>\n</tr>\n<tr>\n<td><code>notify</code></td>\n<td>The notify action was executed successfully (either from the notify or the enotify extension).</td>\n</tr>\n<tr>\n<td><code>pipe</code></td>\n<td>The pipe action (from vnd.dovecot.pipe extension) was executed successfully.</td>\n</tr>\n<tr>\n<td><code>redirect</code></td>\n<td>The redirect action was executed successfully.</td>\n</tr>\n<tr>\n<td><code>reject</code></td>\n<td>The reject action was executed successfully.</td>\n</tr>\n<tr>\n<td><code>report</code></td>\n<td>The report action (from vnd.dovecot.report extension) was executed successfully.</td>\n</tr>\n<tr>\n<td><code>vacation</code></td>\n<td>The vacation action was executed successfully.</td>\n</tr>\n</tbody>\n</table>\n"
      },
      "action_script_location": {
        "text": "<p>The location string for this Sieve action (a combination of &quot;&lt;script-name&gt;: line &lt;number&gt;&quot;.</p>\n"
      },
      "redirect_target": {
        "text": "<p>The target address for the redirect action.</p>\n"
      },
      "notify_target": {
        "text": "<p>The list of target addresses for the notify action.</p>\n"
      },
      "report_target": {
        "text": "<p>The target address for the report action.</p>\n"
      },
      "report_type": {
        "text": "<p>The feedback type for the report action.</p>\n"
      },
      "fileinto_mailbox": {
        "text": "<p>The target mailbox for the fileinto/keep action.</p>\n"
      },
      "pipe_program": {
        "text": "<p>The name of the program being executed by the pipe action.</p>\n"
      },
      "message_id": {
        "text": "<p>The message-id of the message being filtered.</p>\n"
      },
      "mail_from": {
        "text": "<p>Envelope sender address if available.</p>\n"
      },
      "rcpt_to": {
        "text": "<p>Envelope recipient address if available.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      }
    },
    "text": "<p>Emitted when sieve action is completed successfully.</p>\n"
  },
  "sieve_script_opened": {
    "root": "sieve-storage",
    "inherit": "sieve_storage",
    "text": "<p>Opened a Sieve script for reading (e.g. for ManageSieve GETSCRIPT or\ncompiling it at delivery).</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "storage_driver": {
        "text": "<p>The driver name of the Sieve storage (<code>file</code>, <code>ldap</code>, or <code>dict</code>).</p>\n"
      },
      "script_location": {
        "text": "<p>The location string for the Sieve script.</p>\n"
      },
      "error": {
        "text": "<p>Error message for when storage operation has failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      }
    }
  },
  "sieve_script_closed": {
    "root": "sieve-storage",
    "inherit": "sieve_storage",
    "text": "<p>Closed a Sieve script (after reading it).</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "storage_driver": {
        "text": "<p>The driver name of the Sieve storage (<code>file</code>, <code>ldap</code>, or <code>dict</code>).</p>\n"
      },
      "script_location": {
        "text": "<p>The location string for the Sieve script.</p>\n"
      },
      "error": {
        "text": "<p>Error message for when storage operation has failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      }
    }
  },
  "sieve_script_deleted": {
    "root": "sieve-storage",
    "inherit": "sieve_storage",
    "text": "<p>Deleted a Sieve script.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "storage_driver": {
        "text": "<p>The driver name of the Sieve storage (<code>file</code>, <code>ldap</code>, or <code>dict</code>).</p>\n"
      },
      "script_location": {
        "text": "<p>The location string for the Sieve script.</p>\n"
      },
      "error": {
        "text": "<p>Error message for when storage operation has failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      }
    }
  },
  "sieve_script_activated": {
    "root": "sieve-storage",
    "inherit": "sieve_storage",
    "text": "<p>Activated a Sieve script.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "storage_driver": {
        "text": "<p>The driver name of the Sieve storage (<code>file</code>, <code>ldap</code>, or <code>dict</code>).</p>\n"
      },
      "script_location": {
        "text": "<p>The location string for the Sieve script.</p>\n"
      },
      "error": {
        "text": "<p>Error message for when storage operation has failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      }
    }
  },
  "sieve_script_renamed": {
    "root": "sieve-storage",
    "inherit": "sieve_storage",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "old_script_name": {
        "text": "<p>Old name of the Sieve script.</p>\n"
      },
      "new_script_name": {
        "text": "<p>New name for the Sieve script.</p>\n"
      },
      "storage_driver": {
        "text": "<p>The driver name of the Sieve storage (<code>file</code>, <code>ldap</code>, or <code>dict</code>).</p>\n"
      },
      "script_location": {
        "text": "<p>The location string for the Sieve script.</p>\n"
      },
      "error": {
        "text": "<p>Error message for when storage operation has failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      }
    },
    "text": "<p>Renamed a Sieve script.</p>\n"
  },
  "sieve_storage_save_started": {
    "root": "sieve-storage",
    "inherit": "sieve_storage",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "script_name": {
        "text": "<p>Name of the Sieve script.</p>\n"
      },
      "storage_driver": {
        "text": "<p>The driver name of the Sieve storage (<code>file</code>, <code>ldap</code>, or <code>dict</code>).</p>\n"
      },
      "script_location": {
        "text": "<p>The location string for the Sieve script.</p>\n"
      },
      "error": {
        "text": "<p>Error message for when storage operation has failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      }
    },
    "text": "<p>Started saving a Sieve script.</p>\n"
  },
  "sieve_storage_save_finished": {
    "root": "sieve-storage",
    "inherit": "sieve_storage",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "script_name": {
        "text": "<p>Name of the Sieve script.</p>\n"
      },
      "storage_driver": {
        "text": "<p>The driver name of the Sieve storage (<code>file</code>, <code>ldap</code>, or <code>dict</code>).</p>\n"
      },
      "script_location": {
        "text": "<p>The location string for the Sieve script.</p>\n"
      },
      "error": {
        "text": "<p>Error message for when storage operation has failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      }
    },
    "text": "<p>Finished saving a Sieve script.</p>\n"
  },
  "managesieve_command_finished": {
    "root": "managesieve",
    "inherit": "managesieve",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "script_name": {
        "text": "<p>Name for the Sieve script this command operated on (if any).</p>\n"
      },
      "old_script_name": {
        "text": "<p>Old name of the Sieve script (only set for RENAMESCRIPT).</p>\n"
      },
      "new_script_name": {
        "text": "<p>New name for the Sieve script (only set for RENAMESCRIPT).</p>\n"
      },
      "compile_errors": {
        "text": "<p>The number of compile errors that occurred (only set for PUTSCRIPT, CHECKSCRIPT and SETACTIVE when compile fails).</p>\n"
      },
      "compile_warnings": {
        "text": "<p>The number of compile warnings that occurred (only set for PUTSCRIPT, CHECKSCRIPT and SETACTIVE when script is compiled).</p>\n"
      },
      "cmd_name": {
        "text": "<p>Name of the ManageSieve command.</p>\n"
      },
      "cmd_args": {
        "text": "<p>Arguments for the ManageSieve command.</p>\n"
      },
      "error": {
        "text": "<p>Error message for when the command failed.</p>\n"
      }
    },
    "text": "<p>Finished the ManageSieve command.</p>\n"
  },
  "dict_created": {
    "root": "dict",
    "inherit": "dict_init",
    "text": "<p>Dictionary is initialized.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "dict_name": {
        "text": "<p>Name of the dict as set in configurations.</p>\n"
      },
      "dict_driver": {
        "text": "<p>Name of the dictionary driver, e.g. <code>sql</code> or <code>proxy</code>.</p>\n"
      },
      "error": {
        "text": "<p>Error, if one occurred.</p>\n"
      }
    }
  },
  "dict_destroyed": {
    "root": "dict",
    "inherit": "dict_init",
    "text": "<p>Dictionary is destroyed.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "dict_name": {
        "text": "<p>Name of the dict as set in configurations.</p>\n"
      },
      "dict_driver": {
        "text": "<p>Name of the dictionary driver, e.g. <code>sql</code> or <code>proxy</code>.</p>\n"
      },
      "error": {
        "text": "<p>Error, if one occurred.</p>\n"
      }
    }
  },
  "dict_lookup_finished": {
    "root": "dict",
    "inherit": "dict_lookup",
    "text": "<p>Dictionary lookup finishes.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username, if it's not empty.</p>\n"
      },
      "key": {
        "text": "<p>Key name, starts with <code>priv/</code> or <code>shared/</code>.</p>\n"
      },
      "key_not_found": {
        "text": "<p>Set to <code>yes</code> if key not found.</p>\n"
      },
      "dict_driver": {
        "text": "<p>Name of the dictionary driver, e.g. <code>sql</code> or <code>proxy</code>.</p>\n"
      },
      "error": {
        "text": "<p>Error, if one occurred.</p>\n"
      }
    }
  },
  "dict_iteration_finished": {
    "root": "dict",
    "inherit": "dict_iteration",
    "text": "<p>Dictionary iteration finished.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "rows": {
        "text": "<p>Number of rows returned.</p>\n"
      },
      "user": {
        "text": "<p>Username, if it's not empty.</p>\n"
      },
      "key": {
        "text": "<p>Key name, starts with <code>priv/</code> or <code>shared/</code>.</p>\n"
      },
      "key_not_found": {
        "text": "<p>Set to <code>yes</code> if key not found.</p>\n"
      },
      "dict_driver": {
        "text": "<p>Name of the dictionary driver, e.g. <code>sql</code> or <code>proxy</code>.</p>\n"
      },
      "error": {
        "text": "<p>Error, if one occurred.</p>\n"
      }
    }
  },
  "dict_transaction_finished": {
    "root": "dict",
    "inherit": "dict_transaction",
    "text": "<p>Dictionary transaction has been committed or rolled back.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username, if it's not empty.</p>\n"
      },
      "rollback": {
        "text": "<p>Set to <code>yes</code> when transaction was rolled back.</p>\n"
      },
      "write_uncertain": {
        "text": "<p>Set to <code>yes</code> if write was not confirmed.</p>\n"
      },
      "dict_driver": {
        "text": "<p>Name of the dictionary driver, e.g. <code>sql</code> or <code>proxy</code>.</p>\n"
      },
      "error": {
        "text": "<p>Error, if one occurred.</p>\n"
      }
    }
  },
  "dict_server_lookup_finished": {
    "root": "dict-server",
    "inherit": "dict_lookup",
    "text": "<p>Dictionary server finishes lookup.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username, if it's not empty.</p>\n"
      },
      "key": {
        "text": "<p>Key name, starts with <code>priv/</code> or <code>shared/</code>.</p>\n"
      },
      "key_not_found": {
        "text": "<p>Set to <code>yes</code> if key not found.</p>\n"
      },
      "dict_driver": {
        "text": "<p>Name of the dictionary driver, e.g. <code>sql</code> or <code>proxy</code>.</p>\n"
      },
      "error": {
        "text": "<p>Error, if one occurred.</p>\n"
      }
    }
  },
  "dict_server_iteration_finished": {
    "root": "dict-server",
    "inherit": "dict_iteration",
    "text": "<p>Dictionary server finishes iteration.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "rows": {
        "text": "<p>Number of rows returned.</p>\n"
      },
      "user": {
        "text": "<p>Username, if it's not empty.</p>\n"
      },
      "key": {
        "text": "<p>Key name, starts with <code>priv/</code> or <code>shared/</code>.</p>\n"
      },
      "key_not_found": {
        "text": "<p>Set to <code>yes</code> if key not found.</p>\n"
      },
      "dict_driver": {
        "text": "<p>Name of the dictionary driver, e.g. <code>sql</code> or <code>proxy</code>.</p>\n"
      },
      "error": {
        "text": "<p>Error, if one occurred.</p>\n"
      }
    }
  },
  "dict_server_transaction_finished": {
    "root": "dict-server",
    "inherit": "dict_transaction",
    "text": "<p>Dictionary server finishes transaction.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username, if it's not empty.</p>\n"
      },
      "rollback": {
        "text": "<p>Set to <code>yes</code> when transaction was rolled back.</p>\n"
      },
      "write_uncertain": {
        "text": "<p>Set to <code>yes</code> if write was not confirmed.</p>\n"
      },
      "dict_driver": {
        "text": "<p>Name of the dictionary driver, e.g. <code>sql</code> or <code>proxy</code>.</p>\n"
      },
      "error": {
        "text": "<p>Error, if one occurred.</p>\n"
      }
    }
  },
  "login_aborted": {
    "added": {
      "events_login_aborted_added": false
    },
    "inherit": "pre_login_client",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "reason": {
        "text": "<p>Short reason; see the <a href=\"#pre_login_client_reason_values\">short reason to description mapping</a>.</p>\n"
      },
      "auth_successes": {
        "text": "<p>Number of successful authentications, which eventually failed due to other reasons.</p>\n"
      },
      "auth_attempts": {
        "text": "<p>Total number of authentication attempts, both successful and failed.</p>\n"
      },
      "auth_usecs": {
        "text": "<p>How long ago the first authentication attempt was started.</p>\n"
      },
      "connected_usecs": {
        "text": "<p>How long ago the client connection was created.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_pre_login_client_local_name_added": false
        }
      },
      "local_port": {
        "text": "<p>Local port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port.</p>\n"
      },
      "user": {
        "text": "<p>Full username.</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_pre_login_client_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service e.g. <code>submission</code>, <code>imap</code>.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_pre_login_client_protocol_added": false
        }
      }
    },
    "text": "<p><span class=\"VPBadge tip\">Added: 3.0.0</span></p>\n<span id=\"pre_login_client_reason_values\" />\n<p><code>reason</code> values:</p>\n<table tabindex=\"0\">\n<thead>\n<tr>\n<th>Reason</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>anonymous_auth_disabled</code></td>\n<td>Anonymous authentication is not allowed.</td>\n</tr>\n<tr>\n<td><code>authorization_failed</code></td>\n<td>Master user authentication succeeded, but authorization to access the requested login user wasn't allowed.</td>\n</tr>\n<tr>\n<td><code>auth_aborted_by_client</code></td>\n<td>Client started SASL authentication, but returned &quot;*&quot; reply to abort it.</td>\n</tr>\n<tr>\n<td><code>auth_failed</code></td>\n<td>Generic authentication failure. Possibly due to invalid username/password, but could have been some other unspecified reason also.</td>\n</tr>\n<tr>\n<td><code>auth_nologin_referral</code></td>\n<td>Authentication returned auth referral to redirect the client to another server. This is normally configured to be sent only when the client is a Dovecot proxy, which handles the redirection.</td>\n</tr>\n<tr>\n<td><code>auth_process_comm_fail</code></td>\n<td>Internal error communicating with the auth process.</td>\n</tr>\n<tr>\n<td><code>auth_process_not_ready</code></td>\n<td>Client disconnected before auth process was ready. This may indicate a hanging auth process if <code>connected_usecs</code> is large.</td>\n</tr>\n<tr>\n<td><code>auth_waiting_client</code></td>\n<td>Client started SASL authentication, but disconnected instead of sending the next SASL continuation reply.</td>\n</tr>\n<tr>\n<td><code>cleartext_auth_disabled</code></td>\n<td>Authentication using cleartext mechanism is not allowed at this point. It would be allowed if SSL/TLS was enabled.</td>\n</tr>\n<tr>\n<td><code>client_ssl_cert_untrusted</code></td>\n<td>Client sent an SSL certificate that is untrusted with <code><a href=\"/main/core/summaries/settings.html#auth_ssl_require_client_cert\">auth_ssl_require_client_cert = yes</a></code>.</td>\n</tr>\n<tr>\n<td><code>client_ssl_cert_missing</code></td>\n<td>Client didn't send SSL certificate, but <code><a href=\"/main/core/summaries/settings.html#auth_ssl_require_client_cert\">auth_ssl_require_client_cert = yes</a></code>.</td>\n</tr>\n<tr>\n<td><code>client_ssl_not_started</code></td>\n<td>Client didn't even start SSL with <code><a href=\"/main/core/summaries/settings.html#auth_ssl_require_client_cert\">auth_ssl_require_client_cert = yes</a></code>.</td>\n</tr>\n<tr>\n<td><code>connection_limit</code></td>\n<td>Client reached <code><a href=\"/main/core/summaries/settings.html#mail_max_userip_connections\">mail_max_userip_connections</a></code> limit.</td>\n</tr>\n<tr>\n<td><code>internal_failure</code></td>\n<td>Internal failure. The error log has more details.</td>\n</tr>\n<tr>\n<td><code>invalid_base64</code></td>\n<td>Client sent invalid base64 in SASL response.</td>\n</tr>\n<tr>\n<td><code>invalid_mech</code></td>\n<td>Unknown SASL authentication mechanism requested.</td>\n</tr>\n<tr>\n<td><code>login_disabled</code></td>\n<td>The user has the <a href=\"/main/core/config/auth/passdb.html#nologin\">passdb: Authentication `nologin` Extra Field</a> field set in passdb and is thereby not able to login.</td>\n</tr>\n<tr>\n<td><code>no_auth_attempts</code></td>\n<td>Client didn't send any authentication attempts.</td>\n</tr>\n<tr>\n<td><code>password_expired</code></td>\n<td>The user's password is expired.</td>\n</tr>\n<tr>\n<td><code>process_full</code></td>\n<td><a href=\"/main/core/config/service.html#client-limit\">service configuration (client_limit)</a> and <a href=\"/main/core/config/service.html#process-limit\">service configuration (process_limit)</a> was hit and this login session was killed.</td>\n</tr>\n<tr>\n<td><code>shutting_down</code></td>\n<td>The process is shutting down so the login is aborted.</td>\n</tr>\n<tr>\n<td><code>tls_handshake_not_finished</code></td>\n<td>TLS handshake failed or was not finished.</td>\n</tr>\n<tr>\n<td><code>user_disabled</code></td>\n<td>User is in deny passdb, or in some other way disabled passdb.</td>\n</tr>\n</tbody>\n</table>\n<p>Proxying <code>reason</code> values:</p>\n<table tabindex=\"0\">\n<thead>\n<tr>\n<th>Reason</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>proxy_dest_connect_failed</code></td>\n<td>Local authentication succeeded, but connection to destination hop failed.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_internal_failure</code></td>\n<td>Local authentication succeeded, but internal failure occurred after that.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_remote_failure</code></td>\n<td>Local authentication succeeded, but destination hop reported unspecified failure.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_protocol_failure</code></td>\n<td>Local authentication succeeded, but destination hop unexpectedly violated the protocol standard.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_auth_failed</code></td>\n<td>Local authentication succeeded, but proxying failed to authenticate to the destination hop.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_auth_temp_failed</code></td>\n<td>Local authentication succeeded, but proxying failed to temporarily authenticate to the destination hop.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_redirected</code></td>\n<td>Local authentication succeeded, but destination hop redirected to another host.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_connection_limit</code></td>\n<td><span class=\"VPBadge tip\">Added: 3.2.0</span> Login to backend failed because client reached <code><a href=\"/main/core/summaries/settings.html#mail_max_userip_connections\">mail_max_userip_connections</a></code> limit.</td>\n</tr>\n</tbody>\n</table>\n"
  },
  "proxy_session_started": {
    "inherit": "login_proxy",
    "text": "<p>Connection to proxy destination has started.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "dest_host": {
        "text": "<p>Host name of the proxy destination (if proxying is configured with IP address, will have the same value as <code>dest_ip</code>).</p>\n"
      },
      "dest_ip": {
        "text": "<p>Proxy destination IP.</p>\n"
      },
      "dest_port": {
        "text": "<p>Proxy destination port.</p>\n"
      },
      "source_ip": {
        "text": "<p>Source IP where proxy connection originated from.</p>\n"
      },
      "master_user": {
        "text": "<p>If proxying is done with a master user authentication, contains the full username of master user.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_pre_login_client_local_name_added": false
        }
      },
      "local_port": {
        "text": "<p>Local port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port.</p>\n"
      },
      "user": {
        "text": "<p>Full username.</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_pre_login_client_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service e.g. <code>submission</code>, <code>imap</code>.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_pre_login_client_protocol_added": false
        }
      }
    }
  },
  "proxy_session_established": {
    "inherit": "login_proxy_session",
    "text": "<p>Connection to proxy destination is established and user is successfully\nlogged into the backend.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "source_port": {
        "text": "<p>Source port where proxy connection originated from.</p>\n"
      },
      "reconnect_attempts": {
        "text": "<p>Number of times connection failed and reconnection was attempted.</p>\n"
      },
      "dest_host": {
        "text": "<p>Host name of the proxy destination (if proxying is configured with IP address, will have the same value as <code>dest_ip</code>).</p>\n"
      },
      "dest_ip": {
        "text": "<p>Proxy destination IP.</p>\n"
      },
      "dest_port": {
        "text": "<p>Proxy destination port.</p>\n"
      },
      "source_ip": {
        "text": "<p>Source IP where proxy connection originated from.</p>\n"
      },
      "master_user": {
        "text": "<p>If proxying is done with a master user authentication, contains the full username of master user.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_pre_login_client_local_name_added": false
        }
      },
      "local_port": {
        "text": "<p>Local port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port.</p>\n"
      },
      "user": {
        "text": "<p>Full username.</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_pre_login_client_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service e.g. <code>submission</code>, <code>imap</code>.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_pre_login_client_protocol_added": false
        }
      }
    }
  },
  "proxy_session_finished": {
    "inherit": "login_proxy_session",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>If login to destination failed, contains the error.</p>\n"
      },
      "error_code": {
        "text": "<p>If login to destination failed, contains the <a href=\"#proxy_session_finished_error_code\">error code</a>.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_proxy_session_finished_error_code_added": false
        }
      },
      "disconnect_side": {
        "text": "<p>Which side disconnected: <code>client</code>, <code>server</code>, <code>proxy</code>.</p>\n"
      },
      "disconnect_reason": {
        "text": "<p>Reason for disconnection (empty = clean disconnect).</p>\n"
      },
      "idle_usecs": {
        "changed": {
          "events_proxy_session_finished_idle_usecs_changed": "This was previously named `idle_secs`."
        },
        "text": "<p>Number of seconds the connection was idling before getting disconnected.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously named <code>idle_secs</code>.</li>\n</ul>\n"
      },
      "net_in_bytes": {
        "changed": {
          "events_net_in_bytes_changed": "This was previously `in_bytes`."
        },
        "text": "<p>Amount of data read from client, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>in_bytes</code>.</li>\n</ul>\n"
      },
      "net_out_bytes": {
        "changed": {
          "events_net_out_bytes_changed": "This was previously `out_bytes`."
        },
        "text": "<p>Amount of data written to client, in bytes.</p>\n<ul>\n<li><span class=\"VPBadge info\">Changed: 3.0.0</span>: This was previously <code>out_bytes</code>.</li>\n</ul>\n"
      },
      "source_port": {
        "text": "<p>Source port where proxy connection originated from.</p>\n"
      },
      "reconnect_attempts": {
        "text": "<p>Number of times connection failed and reconnection was attempted.</p>\n"
      },
      "dest_host": {
        "text": "<p>Host name of the proxy destination (if proxying is configured with IP address, will have the same value as <code>dest_ip</code>).</p>\n"
      },
      "dest_ip": {
        "text": "<p>Proxy destination IP.</p>\n"
      },
      "dest_port": {
        "text": "<p>Proxy destination port.</p>\n"
      },
      "source_ip": {
        "text": "<p>Source IP where proxy connection originated from.</p>\n"
      },
      "master_user": {
        "text": "<p>If proxying is done with a master user authentication, contains the full username of master user.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_pre_login_client_local_name_added": false
        }
      },
      "local_port": {
        "text": "<p>Local port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port.</p>\n"
      },
      "user": {
        "text": "<p>Full username.</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_pre_login_client_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service e.g. <code>submission</code>, <code>imap</code>.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_pre_login_client_protocol_added": false
        }
      }
    },
    "text": "<p>Connection to proxy destination has ended, either successfully or with error.</p>\n<span id=\"proxy_session_finished_error_code\" />\n<p>List of error codes:</p>\n<table tabindex=\"0\">\n<thead>\n<tr>\n<th>Error Code</th>\n<th>Explanation</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>authorization_failed</code></td>\n<td>User authorization failed.</td>\n</tr>\n<tr>\n<td><code>temp_fail</code></td>\n<td>Auth service reported temporary failure.</td>\n</tr>\n<tr>\n<td><code>user_disabled</code></td>\n<td>User is disabled.</td>\n</tr>\n<tr>\n<td><code>password_expired</code></td>\n<td>Password is expired.</td>\n</tr>\n<tr>\n<td><code>invalid_base64</code></td>\n<td>Challenge response was invalid base64 encoded.</td>\n</tr>\n<tr>\n<td><code>login_disabled</code></td>\n<td>Login is disabled.</td>\n</tr>\n<tr>\n<td><code>invalid_mech</code></td>\n<td>Used mechanism isn't supported.</td>\n</tr>\n<tr>\n<td><code>cleartext_auth_disabled</code></td>\n<td>Cleartext authentication is not enabled, use TLS.</td>\n</tr>\n<tr>\n<td><code>anonymous_auth_disabled</code></td>\n<td>Anonymous authentication is not enabled.</td>\n</tr>\n</tbody>\n</table>\n<p>Proxying error codes:</p>\n<table tabindex=\"0\">\n<thead>\n<tr>\n<th>Reason</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>proxy_dest_connect_failed</code></td>\n<td>Local authentication succeeded, but connection to destination hop failed.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_internal_failure</code></td>\n<td>Local authentication succeeded, but internal failure occurred after that.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_remote_failure</code></td>\n<td>Local authentication succeeded, but destination hop reported unspecified failure.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_protocol_failure</code></td>\n<td>Local authentication succeeded, but destination hop unexpectedly violated the protocol standard.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_auth_failed</code></td>\n<td>Local authentication succeeded, but proxying failed to authenticate to the destination hop.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_auth_temp_failed</code></td>\n<td>Local authentication succeeded, but proxying failed to temporarily authenticate to the destination hop.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_redirected</code></td>\n<td>Local authentication succeeded, but destination hop redirected to another host.</td>\n</tr>\n<tr>\n<td><code>proxy_dest_connection_limit</code></td>\n<td><span class=\"VPBadge tip\">Added: 3.2.0</span> Login to backend failed because client reached <code><a href=\"/main/core/summaries/settings.html#mail_max_userip_connections\">mail_max_userip_connections</a></code> limit.</td>\n</tr>\n</tbody>\n</table>\n"
  },
  "proxy_session_reconnecting": {
    "inherit": "login_proxy_session",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Reason for the attempt failure.</p>\n"
      },
      "error_code": {
        "text": "<p><a href=\"#proxy_session_finished_error_code\">Error code</a> for the attempt failure.</p>\n"
      },
      "source_port": {
        "text": "<p>Source port where proxy connection originated from.</p>\n"
      },
      "reconnect_attempts": {
        "text": "<p>Number of times connection failed and reconnection was attempted.</p>\n"
      },
      "dest_host": {
        "text": "<p>Host name of the proxy destination (if proxying is configured with IP address, will have the same value as <code>dest_ip</code>).</p>\n"
      },
      "dest_ip": {
        "text": "<p>Proxy destination IP.</p>\n"
      },
      "dest_port": {
        "text": "<p>Proxy destination port.</p>\n"
      },
      "source_ip": {
        "text": "<p>Source IP where proxy connection originated from.</p>\n"
      },
      "master_user": {
        "text": "<p>If proxying is done with a master user authentication, contains the full username of master user.</p>\n"
      },
      "local_ip": {
        "text": "<p>Local IP address.</p>\n"
      },
      "local_name": {
        "text": "<p>TLS SNI hostname, if given.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_pre_login_client_local_name_added": false
        }
      },
      "local_port": {
        "text": "<p>Local port.</p>\n"
      },
      "remote_ip": {
        "text": "<p>Remote IP address.</p>\n"
      },
      "remote_port": {
        "text": "<p>Remote port.</p>\n"
      },
      "user": {
        "text": "<p>Full username.</p>\n"
      },
      "service": {
        "text": "<p>Same as <code>protocol</code></p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_pre_login_client_service_removed": false
        }
      },
      "protocol": {
        "text": "<p>Name of service e.g. <code>submission</code>, <code>imap</code>.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_pre_login_client_protocol_added": false
        }
      }
    },
    "text": "<p>Connection to proxy failed, but reconnect will be attempted.\n<code>reconnect_attempts=1</code> for the first event and increases for each subsequent\nevent.</p>\n"
  },
  "cluster_user_batch_move_started": {
    "root": "cluster",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "reason": {
        "text": "<p>Reason for the batch user move, as given by the\n<code>doveadm cluster user batch move backend/site --reason</code> parameter.</p>\n"
      },
      "users_count": {
        "text": "<p>Maximum number of users to try to move.</p>\n"
      }
    },
    "text": "<p>Moving a cluster user batch started.</p>\n"
  },
  "cluster_user_batch_move_finished": {
    "root": "cluster",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "reason": {
        "text": "<p>Reason for the batch user move, as given by the\n<code>doveadm cluster user batch move backend/site --reason</code> parameter.</p>\n"
      },
      "failed_users": {
        "text": "<p>Number of users for which moving failed.</p>\n"
      },
      "moved_users": {
        "text": "<p>Number of users that were successfully moved.</p>\n"
      },
      "users_count": {
        "text": "<p>Number of users that were asked to be moved.</p>\n"
      }
    },
    "text": "<p>Moving a cluster user batch finished.</p>\n"
  },
  "cluster_user_move_started": {
    "root": "cluster",
    "text": "<p>Moving a cluster user started.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      }
    }
  },
  "cluster_user_move_finished": {
    "root": "cluster",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Error message why moving the user failed.</p>\n"
      }
    },
    "text": "<p>Moving a cluster user finished.</p>\n"
  },
  "cluster_site_reachability_check_started": {
    "root": "cluster",
    "text": "<p>A site reachability check has been started.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      }
    }
  },
  "cluster_site_reachability_check_finished": {
    "root": "cluster",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Error message why the reachability check failed.</p>\n"
      },
      "host": {
        "text": "<p>The site load-balancer targeted with the reachability check.</p>\n"
      },
      "reachable": {
        "text": "<p>Was the site load-balancer reachable or not.</p>\n"
      }
    },
    "text": "<p>A site reachability check has been finished.</p>\n"
  },
  "fts_dovecot_too_many_triplets": {
    "root": "fts-dovecot",
    "inherit": "mail_user",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "triplet_count": {
        "text": "<p>Number of triplets found</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    },
    "text": "<p>Emitted when number of triplets exceeds the limit defined by\n<code><a href=\"/main/core/summaries/settings.html#fts_dovecot_max_triplets\">fts_dovecot_max_triplets</a></code>.</p>\n"
  },
  "fs_iter": {
    "tags": [
      "obox"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened.</p>\n"
      },
      "file_type": {
        "text": "<ul>\n<li><code>mail</code>: Email file</li>\n<li><code>index</code>: Index bundle</li>\n<li><code>box</code>: Mailbox directory (for creating/deleting it, if used by the storage driver)</li>\n<li><code>fts</code>: FTS file</li>\n</ul>\n"
      },
      "reason": {
        "text": "<p>Reason for accessing the file.</p>\n"
      }
    },
    "text": "<p>Inherits from fs or any other specified event (e.g. mailbox).</p>\n"
  },
  "obox_index_merge_started": {
    "inherit": "mailbox",
    "root": "obox",
    "text": "<p>Mailbox index merging was started.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    }
  },
  "obox_index_merge_finished": {
    "inherit": "mailbox",
    "root": "obox",
    "text": "<p>Mailbox index merging was finished.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    }
  },
  "obox_index_merge_uidvalidity_changed": {
    "inherit": "mailbox",
    "root": "obox",
    "text": "<p>Index merging required changing the mailbox's IMAP UIDVALIDITY.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    }
  },
  "obox_index_merge_uids_renumbered": {
    "inherit": "mailbox",
    "root": "obox",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "renumber_count": {
        "text": "<p>Number of UIDs that were renumbered.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    },
    "text": "<p>Index merging required changing some mails' IMAP UIDs because they\nconflicted between the two indexes.</p>\n"
  },
  "obox_index_merge_skip_uid_renumbering": {
    "inherit": "mailbox",
    "root": "obox",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "renumber_count": {
        "text": "<p>Number of UIDs that should have been renumbered.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    },
    "text": "<p>Index merging should have renumbered UIDs due to conflicts, but there were\ntoo many of them (more than <code><a href=\"/main/core/summaries/settings.html#metacache_merge_max_uid_renumbers\">metacache_merge_max_uid_renumbers</a></code>, so\nno renumbering was done after all.</p>\n"
  },
  "metacache_user_refresh_started": {
    "inherit": [
      "mail_user"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Metacache is being refreshed when user is being accessed. Sent only when a\nstorage operation is done to perform the refresh; the event isn't sent if\nthe metacache is used without refreshing.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    }
  },
  "metacache_user_refresh_finished": {
    "inherit": [
      "mail_user",
      "metacache_refresh_finished"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Metacache was refreshed when user is being accessed. Sent only when a\nstorage operation is done to perform the refresh; the event isn't sent if\nthe metacache is used without refreshing.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      },
      "metacache_status": {
        "text": "<p>Status of the refresh operation:</p>\n<ul>\n<li><code>refreshed_changed</code>: Bundles were listed in storage. New bundles were\nfound and downloaded. This is used also when an existing mailbox is\nfirst downloaded to metacache.</li>\n<li><code>refreshed_unchanged</code>: Bundles were listed in storage, but no new changes\nwere found.</li>\n<li>kept: Local metacache was used without any storage operations.</li>\n<li>created: A new user or mailbox is being created.</li>\n</ul>\n"
      },
      "rescan": {
        "text": "<p><code>yes</code>, if mailbox is going to be rescanned.</p>\n"
      },
      "force": {
        "text": "<p>If set, reason why the index was forcibly refreshed:</p>\n<ul>\n<li><code>interval</code>: <span class=\"VPBadge tip\">Added: 3.1.0</span> <code><a href=\"/main/core/summaries/settings.html#metacache_forced_refresh_interval\">metacache_forced_refresh_interval</a></code></li>\n<li><code>once-after</code>: <span class=\"VPBadge tip\">Added: 3.1.0</span> <code><a href=\"/main/core/summaries/settings.html#metacache_refresh_index_once_after\">metacache_refresh_index_once_after</a></code></li>\n<li><code>yes</code>: <span class=\"VPBadge danger\">Removed: 3.1.0</span> <code><a href=\"/main/core/summaries/settings.html#metacache_forced_refresh_interval\">metacache_forced_refresh_interval</a></code></li>\n</ul>\n"
      },
      "error": {
        "text": "<p>Error message if the refresh failed.</p>\n"
      }
    }
  },
  "metacache_mailbox_refresh_started": {
    "inherit": [
      "mailbox"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Metacache is being refreshed when mailbox is being accessed. Sent only when\na storage operation is done to perform the refresh; the event isn't sent if\nthe metacache is used without refreshing.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    }
  },
  "metacache_mailbox_refresh_finished": {
    "inherit": [
      "mailbox",
      "metacache_refresh_finished"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Metacache was refreshed when mailbox is being accessed. Sent only when\na storage operation is done to perform the refresh; the event isn't sent if\nthe metacache is used without refreshing.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      },
      "metacache_status": {
        "text": "<p>Status of the refresh operation:</p>\n<ul>\n<li><code>refreshed_changed</code>: Bundles were listed in storage. New bundles were\nfound and downloaded. This is used also when an existing mailbox is\nfirst downloaded to metacache.</li>\n<li><code>refreshed_unchanged</code>: Bundles were listed in storage, but no new changes\nwere found.</li>\n<li>kept: Local metacache was used without any storage operations.</li>\n<li>created: A new user or mailbox is being created.</li>\n</ul>\n"
      },
      "rescan": {
        "text": "<p><code>yes</code>, if mailbox is going to be rescanned.</p>\n"
      },
      "force": {
        "text": "<p>If set, reason why the index was forcibly refreshed:</p>\n<ul>\n<li><code>interval</code>: <span class=\"VPBadge tip\">Added: 3.1.0</span> <code><a href=\"/main/core/summaries/settings.html#metacache_forced_refresh_interval\">metacache_forced_refresh_interval</a></code></li>\n<li><code>once-after</code>: <span class=\"VPBadge tip\">Added: 3.1.0</span> <code><a href=\"/main/core/summaries/settings.html#metacache_refresh_index_once_after\">metacache_refresh_index_once_after</a></code></li>\n<li><code>yes</code>: <span class=\"VPBadge danger\">Removed: 3.1.0</span> <code><a href=\"/main/core/summaries/settings.html#metacache_forced_refresh_interval\">metacache_forced_refresh_interval</a></code></li>\n</ul>\n"
      },
      "error": {
        "text": "<p>Error message if the refresh failed.</p>\n"
      }
    }
  },
  "metacache_user_bundle_download_started": {
    "inherit": [
      "mail_user",
      "metacache_bundle_download"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>User index bundle file is being downloaded (can happen while the user is\nbeing refreshed).</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      },
      "filename": {
        "text": "<p>Bundle filename.</p>\n"
      },
      "bundle_type": {
        "text": "<p>Bundle type: <code>diff</code>, <code>base</code>, or <code>self</code>.</p>\n"
      },
      "bundle_size": {
        "text": "<p>Size of the bundle file in bytes (uncompressed).</p>\n"
      },
      "error": {
        "text": "<p>Error message if the download failed.</p>\n"
      }
    }
  },
  "metacache_user_bundle_download_finished": {
    "inherit": [
      "mail_user",
      "metacache_bundle_download"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>User index bundle file was downloaded (can happen while the user is being\nrefreshed).</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      },
      "filename": {
        "text": "<p>Bundle filename.</p>\n"
      },
      "bundle_type": {
        "text": "<p>Bundle type: <code>diff</code>, <code>base</code>, or <code>self</code>.</p>\n"
      },
      "bundle_size": {
        "text": "<p>Size of the bundle file in bytes (uncompressed).</p>\n"
      },
      "error": {
        "text": "<p>Error message if the download failed.</p>\n"
      }
    }
  },
  "metacache_mailbox_bundle_download_started": {
    "inherit": [
      "mailbox",
      "metacache_bundle_download"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Mailbox index bundle file is being downloaded (can happen while the mailbox\nis being refreshed).</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      },
      "filename": {
        "text": "<p>Bundle filename.</p>\n"
      },
      "bundle_type": {
        "text": "<p>Bundle type: <code>diff</code>, <code>base</code>, or <code>self</code>.</p>\n"
      },
      "bundle_size": {
        "text": "<p>Size of the bundle file in bytes (uncompressed).</p>\n"
      },
      "error": {
        "text": "<p>Error message if the download failed.</p>\n"
      }
    }
  },
  "metacache_mailbox_bundle_download_finished": {
    "inherit": [
      "mailbox",
      "metacache_bundle_download"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Mailbox index bundle file was downloaded (can happen while the mailbox is\nbeing refreshed).</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      },
      "filename": {
        "text": "<p>Bundle filename.</p>\n"
      },
      "bundle_type": {
        "text": "<p>Bundle type: <code>diff</code>, <code>base</code>, or <code>self</code>.</p>\n"
      },
      "bundle_size": {
        "text": "<p>Size of the bundle file in bytes (uncompressed).</p>\n"
      },
      "error": {
        "text": "<p>Error message if the download failed.</p>\n"
      }
    }
  },
  "metacache_upload_started": {
    "inherit": [
      "metacache_upload",
      "mail_user",
      "mailbox"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Changes in metacache are being uploaded to storage.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the upload failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      }
    }
  },
  "metacache_upload_finished": {
    "inherit": [
      "metacache_upload",
      "mail_user",
      "mailbox"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Changes in metacache were uploaded to storage.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the upload failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      }
    }
  },
  "metacache_user_bundle_upload_started": {
    "inherit": [
      "metacache_bundle_upload",
      "mail_user",
      "mailbox"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>User index bundle file is being uploaded. Can happen while the user is\nbeing uploaded.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>This event can be inherited from a mailbox event, and include the\nmailbox fields, if the user upload was triggered by a mailbox\nupload.</p>\n</div>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "filename": {
        "text": "<p>Bundle filename.</p>\n"
      },
      "bundle_type": {
        "text": "<p>Bundle type: <code>diff</code>, <code>base</code>, or <code>self</code>.</p>\n"
      },
      "bundle_size": {
        "text": "<p>Size of the bundle file in bytes (uncompressed).</p>\n"
      },
      "mailbox": {
        "text": "<p>Full mailbox name in UTF-8</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>Mailbox GUID</p>\n"
      },
      "reason": {
        "text": "<p>Reason for what changed in the indexes to cause this bundle\nto be created and uploaded.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the upload failed.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    }
  },
  "metacache_user_bundle_upload_finished": {
    "inherit": "metacache_bundle_upload",
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>User index bundle file was uploaded. Can happen while the user is being\nuploaded.</p>\n<div class=\"tip custom-block\"><p class=\"custom-block-title\">TIP</p>\n<p>This event can be inherited from a mailbox event, and include the\nmailbox fields, if the user upload was triggered by a mailbox\nupload.</p>\n</div>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "filename": {
        "text": "<p>Bundle filename.</p>\n"
      },
      "bundle_type": {
        "text": "<p>Bundle type: <code>diff</code>, <code>base</code>, or <code>self</code>.</p>\n"
      },
      "bundle_size": {
        "text": "<p>Size of the bundle file in bytes (uncompressed).</p>\n"
      },
      "mailbox": {
        "text": "<p>Name of the mailbox being uploaded.</p>\n<p>Note that this field may or may not exist depending on whether a single mailbox\nor the whole user is being uploaded.</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>GUID of the mailbox being uploaded.</p>\n"
      },
      "reason": {
        "text": "<p>Reason for what changed in the indexes to cause this bundle\nto be created and uploaded.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the upload failed.</p>\n"
      }
    }
  },
  "metacache_mailbox_bundle_upload_started": {
    "inherit": "metacache_bundle_upload",
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Mailbox index bundle file is being uploaded. Can happen while the mailbox\nis being uploaded.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "filename": {
        "text": "<p>Bundle filename.</p>\n"
      },
      "bundle_type": {
        "text": "<p>Bundle type: <code>diff</code>, <code>base</code>, or <code>self</code>.</p>\n"
      },
      "bundle_size": {
        "text": "<p>Size of the bundle file in bytes (uncompressed).</p>\n"
      },
      "mailbox": {
        "text": "<p>Name of the mailbox being uploaded.</p>\n<p>Note that this field may or may not exist depending on whether a single mailbox\nor the whole user is being uploaded.</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>GUID of the mailbox being uploaded.</p>\n"
      },
      "reason": {
        "text": "<p>Reason for what changed in the indexes to cause this bundle\nto be created and uploaded.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the upload failed.</p>\n"
      }
    }
  },
  "metacache_mailbox_bundle_upload_finished": {
    "inherit": "metacache_bundle_upload",
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Mailbox index bundle file was uploaded. Can happen while the mailbox is\nbeing uploaded.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "filename": {
        "text": "<p>Bundle filename.</p>\n"
      },
      "bundle_type": {
        "text": "<p>Bundle type: <code>diff</code>, <code>base</code>, or <code>self</code>.</p>\n"
      },
      "bundle_size": {
        "text": "<p>Size of the bundle file in bytes (uncompressed).</p>\n"
      },
      "mailbox": {
        "text": "<p>Name of the mailbox being uploaded.</p>\n<p>Note that this field may or may not exist depending on whether a single mailbox\nor the whole user is being uploaded.</p>\n"
      },
      "mailbox_guid": {
        "text": "<p>GUID of the mailbox being uploaded.</p>\n"
      },
      "reason": {
        "text": "<p>Reason for what changed in the indexes to cause this bundle\nto be created and uploaded.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the upload failed.</p>\n"
      }
    }
  },
  "metacache_user_clean_started": {
    "inherit": [
      "mail_user"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>User is started to be cleaned from metacache, either entirely or only\npartially (only low priority files).</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      }
    }
  },
  "metacache_user_clean_move_check_finished": {
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "should_clean": {
        "text": "<p>The decision whether the user should be cleaned or not.</p>\n"
      },
      "last_host": {
        "text": "<p>The last metacache host.</p>\n"
      },
      "cluster_backend_name": {
        "text": "<p>The current backend's name (<code><a href=\"/main/core/summaries/settings.html#cluster_backend_name\">cluster_backend_name</a></code>).</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      },
      "min_priority": {
        "text": "<p>Which priority indexes are being cleaned.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the upload failed.</p>\n"
      }
    },
    "inherit": [
      "mail_user",
      "metacache_clean"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Clean command received with IF-MOVED parameter.</p>\n"
  },
  "metacache_user_clean_finished": {
    "inherit": [
      "mail_user",
      "metacache_clean"
    ],
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>User is finished being cleaned from metacache.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "user": {
        "text": "<p>Username of the user.</p>\n"
      },
      "session": {
        "text": "<p>Session ID for the storage session.</p>\n"
      },
      "service": {
        "text": "<p>Name of the service. Examples: <code>imap</code>, <code>pop3</code>, <code>lmtp</code>, ...</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.0.0</span></li>\n</ul>\n",
        "added": {
          "events_mail_storage_service_user_service_added": false
        }
      },
      "min_priority": {
        "text": "<p>Which priority indexes are being cleaned.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the upload failed.</p>\n"
      }
    }
  },
  "metacache_pull_started": {
    "inherit": "metacache_pull_common",
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Metacache pulling has started.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "source_host": {
        "text": "<p>Which host metacache is being pulled from.</p>\n"
      },
      "dest_host": {
        "text": "<p>Which host metacache is being pulled to.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.2.0</span></li>\n</ul>\n",
        "added": {
          "events_metacache_pull_dest_host_added": false
        }
      },
      "type": {
        "text": "<ul>\n<li><code>server</code>: The event is emitted by the host that metacache is being pulled\nfrom. (This host is <code>source_host</code>.)</li>\n<li><code>client</code>: The event is emitted by the host that is pulling metacache\nfrom <code>source_host</code>.</li>\n</ul>\n"
      }
    }
  },
  "metacache_pull_finished": {
    "inherit": "metacache_pull_common",
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "files_count": {
        "text": "<p>Number of files being transferred.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_metacache_pull_counts_added": false
        }
      },
      "import_count": {
        "text": "<p>Number of files that were successfully imported.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.1.0</span></li>\n</ul>\n",
        "added": {
          "events_metacache_pull_counts_added": false
        }
      },
      "exit_code": {
        "text": "<p>Exit code for finished metacache pull commands. If the command finished\nsuccessfully it is <code>0</code>.</p>\n<p>The exit codes are the same as doveadm exit codes.</p>\n<ul>\n<li><span class=\"VPBadge danger\">Removed: 3.1.0</span></li>\n</ul>\n",
        "removed": {
          "events_metacache_pull_exit_code_removed": false
        }
      },
      "error": {
        "text": "<p>Error message if metacache pull failed.</p>\n"
      },
      "source_host": {
        "text": "<p>Which host metacache is being pulled from.</p>\n"
      },
      "dest_host": {
        "text": "<p>Which host metacache is being pulled to.</p>\n<ul>\n<li><span class=\"VPBadge tip\">Added: 3.2.0</span></li>\n</ul>\n",
        "added": {
          "events_metacache_pull_dest_host_added": false
        }
      },
      "type": {
        "text": "<ul>\n<li><code>server</code>: The event is emitted by the host that metacache is being pulled\nfrom. (This host is <code>source_host</code>.)</li>\n<li><code>client</code>: The event is emitted by the host that is pulling metacache\nfrom <code>source_host</code>.</li>\n</ul>\n"
      }
    },
    "text": "<p>Metacache pulling has finished.</p>\n"
  },
  "obox_mailbox_rescan_started": {
    "inherit": "obox_rebuild",
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Mailbox is being rescanned. A rescan happens when a mailbox is opened for\nthe first time in this backend (or after it was cleaned away). All mails\nin the storage are listed and synced against the local indexes in\nmetacache.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mails_new": {
        "text": "<p>Number of new mails found.</p>\n"
      },
      "mails_temp_lost": {
        "text": "<p>Number of mails temporarily lost due to &quot;Object exists in dict, but not in\nstorage&quot;.</p>\n"
      },
      "mails_lost": {
        "text": "<p>Number of mails that existed in index, but no longer exists in storage.</p>\n"
      },
      "mails_lost_during_resync": {
        "text": "<p>Number of new mails found, but when doing GUID the mail no longer existed.</p>\n"
      },
      "mails_kept": {
        "text": "<p>Number of mails found in both the index and in storage.</p>\n"
      },
      "mails_total": {
        "text": "<p>Number of mails that exists in the mailbox now.</p>\n"
      },
      "guid_lookups": {
        "text": "<p>Number of mails whose GUIDs were looked up from the email metadata.</p>\n"
      },
      "guid_lookups_skipped": {
        "text": "<p>Number of mails whose GUIDs were not looked up due to reaching the GUID\nlookup limit.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the rescan/rebuild failed.</p>\n"
      }
    }
  },
  "obox_mailbox_rescan_finished": {
    "inherit": "obox_rebuild",
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Mailbox was rescanned. A rescan happens when a mailbox is opened for\nthe first time in this backend (or after it was cleaned away). All mails\nin the storage are listed and synced against the local indexes in\nmetacache.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mails_new": {
        "text": "<p>Number of new mails found.</p>\n"
      },
      "mails_temp_lost": {
        "text": "<p>Number of mails temporarily lost due to &quot;Object exists in dict, but not in\nstorage&quot;.</p>\n"
      },
      "mails_lost": {
        "text": "<p>Number of mails that existed in index, but no longer exists in storage.</p>\n"
      },
      "mails_lost_during_resync": {
        "text": "<p>Number of new mails found, but when doing GUID the mail no longer existed.</p>\n"
      },
      "mails_kept": {
        "text": "<p>Number of mails found in both the index and in storage.</p>\n"
      },
      "mails_total": {
        "text": "<p>Number of mails that exists in the mailbox now.</p>\n"
      },
      "guid_lookups": {
        "text": "<p>Number of mails whose GUIDs were looked up from the email metadata.</p>\n"
      },
      "guid_lookups_skipped": {
        "text": "<p>Number of mails whose GUIDs were not looked up due to reaching the GUID\nlookup limit.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the rescan/rebuild failed.</p>\n"
      }
    }
  },
  "obox_mailbox_rebuild_started": {
    "inherit": "obox_rebuild",
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Mailbox is being rebuilt. A rebuild happens after some kind of corruption\nhad been detected. All mails in the storage are listed and synced against\nthe local indexes in metacache.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mails_new": {
        "text": "<p>Number of new mails found.</p>\n"
      },
      "mails_temp_lost": {
        "text": "<p>Number of mails temporarily lost due to &quot;Object exists in dict, but not in\nstorage&quot;.</p>\n"
      },
      "mails_lost": {
        "text": "<p>Number of mails that existed in index, but no longer exists in storage.</p>\n"
      },
      "mails_lost_during_resync": {
        "text": "<p>Number of new mails found, but when doing GUID the mail no longer existed.</p>\n"
      },
      "mails_kept": {
        "text": "<p>Number of mails found in both the index and in storage.</p>\n"
      },
      "mails_total": {
        "text": "<p>Number of mails that exists in the mailbox now.</p>\n"
      },
      "guid_lookups": {
        "text": "<p>Number of mails whose GUIDs were looked up from the email metadata.</p>\n"
      },
      "guid_lookups_skipped": {
        "text": "<p>Number of mails whose GUIDs were not looked up due to reaching the GUID\nlookup limit.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the rescan/rebuild failed.</p>\n"
      }
    }
  },
  "obox_mailbox_rebuild_finished": {
    "inherit": "obox_rebuild",
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "text": "<p>Mailbox was rebuilt. A rebuild happens after some kind of corruption\nhad been detected. All mails in the storage are listed and synced against\nthe local indexes in metacache.</p>\n",
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "mails_new": {
        "text": "<p>Number of new mails found.</p>\n"
      },
      "mails_temp_lost": {
        "text": "<p>Number of mails temporarily lost due to &quot;Object exists in dict, but not in\nstorage&quot;.</p>\n"
      },
      "mails_lost": {
        "text": "<p>Number of mails that existed in index, but no longer exists in storage.</p>\n"
      },
      "mails_lost_during_resync": {
        "text": "<p>Number of new mails found, but when doing GUID the mail no longer existed.</p>\n"
      },
      "mails_kept": {
        "text": "<p>Number of mails found in both the index and in storage.</p>\n"
      },
      "mails_total": {
        "text": "<p>Number of mails that exists in the mailbox now.</p>\n"
      },
      "guid_lookups": {
        "text": "<p>Number of mails whose GUIDs were looked up from the email metadata.</p>\n"
      },
      "guid_lookups_skipped": {
        "text": "<p>Number of mails whose GUIDs were not looked up due to reaching the GUID\nlookup limit.</p>\n"
      },
      "error": {
        "text": "<p>Error message if the rescan/rebuild failed.</p>\n"
      }
    }
  },
  "obox_save_throttling": {
    "root": "metacache",
    "tags": [
      "obox"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "pending_save": {
        "text": "<p>Number of message saves pending completion.</p>\n"
      },
      "pending_copy": {
        "text": "<p>Number of message copies pending completion.</p>\n"
      }
    },
    "text": "<p>Obox is throttling the number of concurrent saves/copies.</p>\n<p>This event is used to expose externally the status of the internal parallelism,\ni.e. to let tests assess if we can actually reach the degree of parallelism\nexpected through <code><a href=\"/main/core/summaries/settings.html#obox_max_parallel_writes\">obox_max_parallel_writes</a></code> and\n<code><a href=\"/main/core/summaries/settings.html#obox_max_parallel_copies\">obox_max_parallel_copies</a></code> or if instead anything chokes the\nperformance to less optimal levels.</p>\n"
  },
  "fs_dictmap_dict_write_uncertain": {
    "inherit": "fs_file",
    "root": "fs-dictmap",
    "tags": [
      "obox"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "path": {
        "text": "<p>Virtual FS path to the object (based on dict).</p>\n"
      },
      "object_id": {
        "text": "<p>Object ID in the storage.</p>\n"
      },
      "cleanup": {
        "text": "<p><code>success</code>, <code>failed</code> or <code>disabled</code>. Indicates if uncertain write was\nattempted to be cleaned (deleted) and whether it was successful.</p>\n"
      },
      "error": {
        "text": "<p>Error message why the write initially failed.</p>\n"
      }
    },
    "text": "<p>A dictionary write is uncertain (e.g., writes to Cassandra may\neventually succeed even if the write initially appeared to fail).</p>\n<p>See also <code><a href=\"/main/core/summaries/events.html#fs_object_write_uncertain\">fs_object_write_uncertain</a></code> event.</p>\n"
  },
  "fs_dictmap_object_lost": {
    "inherit": "fs_file",
    "root": "fs-dictmap",
    "tags": [
      "obox"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "path": {
        "text": "<p>Virtual FS path to the object (based on dict).</p>\n"
      },
      "object_id": {
        "text": "<p>Object ID in the storage.</p>\n"
      },
      "deleted": {
        "text": "<p>Set to <code>yes</code>, if the corresponding entry in dict has been deleted because of\n<code><a href=\"/main/core/summaries/settings.html#fs_dictmap_delete_dangling_links\">fs_dictmap_delete_dangling_links = yes</a></code>.</p>\n"
      }
    },
    "text": "<p>&quot;Object exists in dict, but not in storage&quot; error happened.</p>\n<p>Normally this shouldn't happen, because the writes and deletes are\ndone in such an order that Dovecot prefers to rather leak objects in storage\nthan cause this error. A likely source of this error can be resurrected\ndeleted data (see\n<a href=\"/main/storage/troubleshooting/object_exists_in_dict_but_not_in_storage.html#dovecot-obox-object-exists-in-dict-but-not-in-storage\">Obox Troubleshooting: Object exists in dict, but not in storage</a> for\nmore details).</p>\n"
  },
  "fs_dictmap_max_bucket_changed": {
    "inherit": [
      "fs_file",
      "fs_iter"
    ],
    "root": "fs-dictmap",
    "tags": [
      "obox"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened.</p>\n"
      },
      "reason": {
        "text": "<p>Reason for accessing the file.</p>\n"
      },
      "old_max_bucket": {
        "text": "<p>The <code>max_bucket</code> value for the current mailbox, before the event was\nemitted.</p>\n"
      },
      "max_bucket": {
        "text": "<p>The newly set <code>max_bucket</code> value.</p>\n"
      },
      "error": {
        "text": "<p>Error string if error occurred. Only set if setting the new <code>max_bucket</code>\nvalue failed.</p>\n"
      },
      "file_type": {
        "text": "<ul>\n<li><code>mail</code>: Email file</li>\n<li><code>index</code>: Index bundle</li>\n<li><code>box</code>: Mailbox directory (for creating/deleting it, if used by the storage driver)</li>\n<li><code>fts</code>: FTS file</li>\n</ul>\n"
      }
    },
    "text": "<p>This event is sent whenever the <code>max_bucket</code> value for a mailbox changes.\nThere can be three situations when this happens.</p>\n<ul>\n<li>\n<p>A new mail is added to a mailbox, where the current bucket is found to\nbe filled and the next bucket is started to be filled\n(<code>reason = file</code>).</p>\n</li>\n<li>\n<p>Besides the expected situation, Dovecot emits this event if it\nencounters a bucket with a higher index then the current <code>max_bucket</code>\nwhile iterating a mailbox (<code>reason = iter</code>).</p>\n</li>\n<li>\n<p>In addition <code>max_bucket</code> can be shrunk in case an iteration discovers\nempty buckets before the current <code>max_bucket</code> value (<code>reason = iter</code>).</p>\n</li>\n</ul>\n"
  },
  "fs_dictmap_empty_bucket_iterated": {
    "inherit": "fs_iter",
    "root": "fs-dictmap",
    "tags": [
      "obox"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened.</p>\n"
      },
      "empty_bucket": {
        "text": "<p>Index of the empty bucket that was just discovered.</p>\n"
      },
      "max_bucket": {
        "text": "<p>The current <code>max_bucket</code> value.</p>\n"
      },
      "deleted_count": {
        "text": "<p>The count of deleted keys for the empty bucket.</p>\n"
      },
      "file_type": {
        "text": "<ul>\n<li><code>mail</code>: Email file</li>\n<li><code>index</code>: Index bundle</li>\n<li><code>box</code>: Mailbox directory (for creating/deleting it, if used by the storage driver)</li>\n<li><code>fts</code>: FTS file</li>\n</ul>\n"
      },
      "reason": {
        "text": "<p>Reason for accessing the file.</p>\n"
      }
    },
    "text": "<p>An empty bucket is found while iterating which is not the last bucket.</p>\n"
  },
  "fs_object_write_uncertain": {
    "inherit": "fs_file",
    "root": "fs-dictmap",
    "tags": [
      "obox"
    ],
    "added": {
      "event_fs_object_write_uncertain_added": false
    },
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "cleanup": {
        "text": "<p><code>success</code> or <code>failed</code>. Indicates if uncertain write was cleaned (deleted) successfully</p>\n"
      },
      "error": {
        "text": "<p>Error message why the write initially failed.</p>\n"
      }
    },
    "text": "<p><span class=\"VPBadge tip\">Added: 3.0.0</span></p>\n<p>Sent whenever an object write is uncertain.</p>\n<p>When a write HTTP operation times out actual outcome is uncertain.</p>\n<p>See also <code><a href=\"/main/core/summaries/events.html#fs_dictmap_dict_write_uncertain\">fs_dictmap_dict_write_uncertain</a></code> event.</p>\n"
  },
  "message_hashing_msg_full": {
    "tags": [
      "message-hashing"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "append": {
        "text": "<p>If <code>1</code>, the message was saved via IMAP APPEND.</p>\n"
      },
      "attachments": {
        "text": "<p>The number of attachments processed in this message (attachments with size &gt; <code>min_atc_size</code>).</p>\n"
      },
      "hash": {
        "text": "<p>The calculated hash of the entire message.</p>\n"
      },
      "size": {
        "text": "<p>The size (in bytes) of the entire message.</p>\n"
      }
    },
    "text": "<p>If <a href=\"/main/core/plugins/message_hashing.html\">message-hashing plugin</a> is loaded, emitted for every message saved.</p>\n"
  },
  "message_hashing_msg_part": {
    "tags": [
      "message-hashing"
    ],
    "fields": {
      "duration": {
        "text": "<p>Duration of the event (in microseconds)</p>\n"
      },
      "reason_code": {
        "text": "<p>List of reason code strings why the event happened. See <a href=\"./events.html#event-reasons\">event reasons</a> for possible values.</p>\n"
      },
      "append": {
        "text": "<p>If <code>1</code>, the message was saved via IMAP APPEND.</p>\n"
      },
      "hash": {
        "text": "<p>The calculated hash of the attachment.</p>\n"
      },
      "size": {
        "text": "<p>The size (in bytes) of the attachment.</p>\n"
      }
    },
    "text": "<p>If <a href=\"/main/core/plugins/message_hashing.html\">message-hashing plugin</a> is loaded, emitted for every attachment found\nwhen a message is saved.</p>\n"
  }
}