Imapc mailbox format
From:       https://doc.dovecot.org/admin_manual/mailbox_formats/imapc/
and
https://doc.dovecot.org/configuration_manual/mail_location/imapc/#imapc-settings


Imapc Mailbox Format Imapc Format
Imapc Config
Imapc Config Mail Location Config Examples Connection Settings imapc_cmd_timeout
imapc_connection_retry_count imapc_connection_retry_interval
Features
acl delay-login gmail-migration modseq
proxyauth throttle
Optimizations
fetch-bodystructure fetch-headers rfc822.size search
Workarounds
fetch-fix-broken-mails fetch-msn-workarounds no-examine zimbra-workarounds
More Config Directives
imapc_host imapc_list_prefix imapc_master_user imapc_max_idle_time
imapc_max_line_length imapc_password imapc_port imapc_rawlog_dir
imapc_sasl_mechanisms imapc_ssl imapc_ssl_verify imapc_user
imapc_password usage-examples quota




Imapc Mailbox Format
The imapc storage accesses a remote IMAP server as if it were a regular (local) Dovecot mailbox format. Dovecot can treat it as a dummy storage or optionally a more capable storage. For information on how to configure imapc in Dovecot, see Imapc Configuration.
imapc-format
=======================================================
Imapc Configuration
See Imapc for a technical description of Dovecot’s imapc mailbox format.
Mail Location Configuration Examples
# In-memory index files: mail_location = imapc: # Store index files locally: mail_location = imapc:~/imapc
Connection Settings

imapc_cmd_timeout
How long to wait for a reply to an IMAP command sent to the remote IMAP server before disconnecting and retrying.
imapc_connection_retry_count
How many times to retry connection against a remote IMAP server?
imapc_connection_retry_interval
How long to wait between retries against a remote IMAP server?
imapc_features
A space-separated list of features, optimizations, and workarounds that can be enabled.
Features
acl When this feature is enabled and the imap-acl plugin is loaded, using a remote location via imapc will make IMAP ACL commands (MYRIGHTS, GETACL, SETACL, DELETEACL) proxied to the remote. New in version 2.3.15. delay-login Don’t connect to the remote server until some command requires it. By default the server is connected to immediately on login. New in version v2.2.29. gmail-migration Enable GMail-specific migration. Use IMAP X-GM-MSGID as POP3 UIDL. Add $GMailHaveLabels keyword to mails that have X-GM-LABELS except for \Muted keyword (to be used for migrating only archived emails in All Mails). Add pop3_deleted_flag to mails that don’t exist in POP3 server. modseq Access MODSEQ and HIGHESTMODSEQ New in version 2.2.24. proxyauth Use Sun/Oracle IMAP-server specific PROXYAUTH command to do master user authentication. Normally this would be done using the SASL PLAIN authentication. throttle::: When receiving [THROTTLED] response (from GMail), throttling is applied. INIT = initial throttling msecs (default: 50 ms), afterwards each subsequent [THROTTLED] doubles the throttling until MAX is reached (default: 16000 ms). When [THROTTLED] is not received for a while, it’s shrank again. The initial shrinking is done after SHRINK (default: 500 ms). If [THROTTLED] is received again within this timeout, it’s doubled, otherwise both throttling and the next shrinking timeout is shrank to 3/4 the previous value.
Optimizations
fetch-bodystructure Allow fetching BODY and BODYSTRUCTURE FETCH BODY.PEEK[HEADER.FIELDS (..)]. fetch-headers Allow fetching specific message headers from remote server. New in version 2.2.30. rfc822.size Allow passing through message sizes using FETCH RFC822.SIZE. search Allow using SEARCH command.
Workarounds
fetch-fix-broken-mails If a FETCH returns NO (but not NO [LIMIT] or NO [SERVERBUG]), assume the mail is broken in server and just treat it as if it were an empty email. Warning This is often a dangerous option! It’s not safe to assume that NO means a permanent error rather than a temporary error. This feature should be enabled only for specific users who have been determined to be broken. fetch-msn-workarounds Try to ignore wrong message sequence numbers in FETCH replies whenever possible, preferring to use the returned UID number instead. no-examine Use SELECT instead of EXAMINE even when we don’t want to modify anything in the mailbox. This is a Courier-workaround where it didn’t permanently assign UIDVALIDITY to an EXAMINEd mailbox, but assigned it for SELECTed mailbox. zimbra-workarounds Fetch full message using BODY.PEEK[HEADER] BODY.PEEK[TEXT] instead of just BODY.PEEK[] because the header differs between these two when there are illegal control chars or 8bit chars. This mainly caused problems with dsync, but as of v2.2.22+ this should no longer be a problem and there’s probably no need to enable this workaround.
More Config Directives

imapc_host
The remote IMAP host to connect to.
imapc_list_prefix
Access only mailboxes under this prefix. Example, for a source IMAP server that uses an INBOX namespace prefix: imapc_list_prefix = INBOX/
imapc_master_user
The master username to authenticate as on the remote IMAP host. To authenticate as a master user but use a separate login user, the following configuration should be employed, where the credentials are represented by masteruser and masteruser-secret: imapc_user = %u imapc_master_user = masteruser imapc_password = masteruser-secret Mail user variables can be used. See also imapc_password imapc_user
imapc_max_idle_time
Send a command to the source IMAP server as a keepalive after no other command has been sent for this amount of time. Dovecot will send either NOOP or DONE to the source IMAP server.
imapc_max_line_length
The maximum line length to accept from the remote IMAP server. This setting is used to limit maximum memory usage. A value of 0 indicates no maximum.
imapc_password
The authentication password for the remote IMAP server. If using master users, this setting will be the password of the master user. See also imapc_master_user imapc_user
imapc_port
The port on the remote IMAP host to connect to.
imapc_rawlog_dir
Log all IMAP traffic input/output to this directory. See also Rawlog
imapc_sasl_mechanisms
The SASL mechanisms to use for authentication when connection to a remote IMAP server. The first one advertised by the remote IMAP sever is used. Example: imapc_sasl_mechanisms = external plain login
imapc_ssl
Use TLS to connect to the remote IMAP server.
imapc_ssl_verify
Verify remote IMAP TLS certificate? Verification may be disabled during testing, but should be enabled during production use. Only used if imapc_ssl is enabled. See also imapc_ssl
imapc_user
The user identity to be used for performing a regular IMAP LOGIN to the source IMAP server. Mail user variables can be used. See also imapc_master_user
imapc_password

Usage Examples
Do a regular IMAP LOGIN, using STARTTLS, to imap.example.com: imapc_host = imap.example.com imapc_password = secret imapc_port = 143 imapc_ssl = starttls imapc_user = user@example.com
Quota
Using the imapc quota backend allows asking for the quota from remote IMAP server (v2.2.30+). By default it uses GETQUOTAROOT INBOX to retrieve the quota. There are two parameters that can be used to control how the quota is looked up: Example: plugin { quota = imapc:root=User Quota }