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¶m2=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_msecs=<ms> | Maximum total time for an HTTP request to finish. Overrides all timeout configuration | none | 
| addhdr=<name>:<value> | Add the specified header to all HTTP requests. This can only be specified once. This may be useful for load balancing | none | 
| bucket=<n> | Used by some backends to specify the bucket to save the data into | none | 
| bulk_delete=1 | Set to 1 if backend supports bulk deletes | 0 | 
| connect_timeout_msecs=<ms> | Timeout for establishing a TCP connection | timeout_msecs | 
| delete_max_retries=<n> | Max number of HTTP request retries for delete actions | max_retries | 
| delete_timeout_msecs=<ms> | Timeout for sending a delete HTTP response | timeout_msecs | 
| max_connect_retries=<n> | Number of connect retries | 2 | 
| max_retries=<n> | Max number of HTTP request retries | 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_msecs=<ms> | Timeout for a receiving reada HTTP response | 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_msecs=<ms> | Log a warning about any HTTP request that takes longer than this many milliseconds | 5s | 
| timeout_msecs=<ms> | Default timeout for HTTP responses, unless overwritten by the read/write/delete_timeout_msecs | 10s | 
| write_max_retries=<n> | Max number of HTTP request retries for write actions | max_retries | 
| write_timeout_msecs=<ms> | Timeout for a write HTTP response | 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+)