HTTP-Based Object StoragesΒΆ

The HTTP-based object storages use an HTTP URL to specify how the object storage is accessed.

The parameters are specified as URL-style parameters, such as http://url/?param1=value1&param2=value2.

Similarly the URL uses URL escaping, so for example if password is foo/bar the URL is http://user:foo%2fbar@example.com/.

Additionally, because Dovecot expands %variables inside plugin section, the % needs to be escaped. So the final string would be e.g.:

plugin {
  obox_fs = s3: https://user:foo%%2fbar@example.com/ # password is foo/bar
}

The parameters common to all object storages include:

Parameter

Description

Default

absolute_timeout=<Millisecond Time>

Maximum total time for an HTTP request to finish. Overrides all timeout configuration

New in version 2.3.0.

none

absolute_timeout_msecs=<ms>

Maximum total time for an HTTP request to finish. Overrides all timeout configuration

Deprecated since version 2.3.0.

none

addhdr=<name>:<value>

Add the specified header to all HTTP requests.

New in version 2.3.10: Can be specified multiple times.

none

addhdrvar=<name>:<variable>

Add the specified header to all HTTP requests and set the value to the expanded variables value.

New in version 2.3.10.

none

bucket=<n>

Used by some backends to specify the bucket to save the data into

none

bulk_delete_limit=<n>

Number of deletes supported within the same bulk delete request. 0 disables bulk deletes. Note that this setting works only for the backends that support bulk deletion.

New in version 2.2.36.

scality: 1000 s3: 1000

bulk_delete=1

Set to 1 if backend supports bulk deletes

Deprecated since version 2.2.36.

v2.2: 0

connect_timeout=<Millisecond Time>

Timeout for establishing a TCP connection

New in version 2.3.0.

timeout

connect_timeout_msecs=<ms>

Timeout for establishing a TCP connection

Deprecated since version 2.3.0.

timeout_msecs

delete_max_retries=<n>

Max number of HTTP request retries for delete actions

max_retries

delete_timeout=<Millisecond Time>

Timeout for sending a delete HTTP response

New in version 2.3.0.

timeout

delete_timeout_msecs=<ms>

Timeout for sending a delete HTTP response

Deprecated since version 2.3.0.

timeout_msecs

loghdr=<name>

Headers with the given name in HTTP responses are logged as part of any error, debug or warning messages related to the HTTP request. These headers are also included in the http_request_finished event as fields prefixed with http_hdr_. Can be specified multiple times.

New in version 2.3.10.

none

max_connect_retries=<n>

Number of connect retries

2

max_retries=<n>

Max number of HTTP request retries. Retries happen for 5xx errors as well as for 423(locked) with sproxyd and 409(conflict) with cdmi. There is a wait between attempting next retry. The initial retry is done after 50ms. The following retries are done after waiting ten times as long as the previous attempt, so 50ms -> 500 ms -> 5s ->10s. The maximum wait time per attempt before retry is limited to 10 seconds. Please note that if the overall request time exceeds the configured absolute_timeout it takes precedence, emits an error and prevents further retries. While the configured timeout value determines how long HTTP responses are allowed to take before an error ascertained.

Changed in version 2.3.15: Earlier versions had the same initial retry(50ms), followed by doubling the wait time to 100ms, 200ms, 400ms and so forth.

4

no_trace_headers=1

Set to 1 to not add X-Dovecot-User or X-Dovecot-Session headers to HTTP request Useful to correlate object storage requests to AS/Dovecot sessions. If not doing correlations via log aggregation, this is safe to disable.

0

read_max_retries=<n>

Max number of HTTP request retries for read actions

max_retries

read_timeout=<Millisecond Time>

Timeout for a receiving reada HTTP response

New in version 2.3.0.

timeout

read_timeout_msecs=<ms>

Timeout for a receiving reada HTTP response

Deprecated since version 2.3.0.

timeout_msecs

reason_header_max_length=<n>

Maximum length for X-Dovecot-Reason HTTP header If header is present, it contains information why obox operation is being done

0

slow_warn=<Millisecond Time>

Log a warning about any HTTP request that takes longer than this time

New in version 2.3.0.

5s

slow_warn_msecs=<ms>

Log a warning about any HTTP request that takes longer than this many milliseconds

Deprecated since version 2.3.0.

5000

timeout=<Millisecond Time>

Default timeout for HTTP responses, unless overwritten by the read/write/delete_timeout_msecs

New in version 2.3.0.

10s

timeout_msecs=<ms>

Default timeout for HTTP responses, unless overwritten by the read/write/delete_timeout_msecs

Deprecated since version 2.3.0.

10000

write_max_retries=<n>

Max number of HTTP request retries for write actions

max_retries

write_timeout=<Millisecond Time>

Timeout for a write HTTP response

New in version 2.3.0.

timeout

write_timeout_msecs=<ms>

Timeout for a write HTTP response

Deprecated since version 2.3.0.

timeout_msecs

Dovecot sends the following HTTP headers towards storage. They should be logged for troubleshooting purposes:

  • X-Dovecot-Username

  • X-Dovecot-Session-Id

  • X-Dovecot-Reason (v2.2.36.1+ and v2.3.5+)