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.
Settings
imapc_cmd_timeout
Default | 5 mins |
---|---|
Value | time |
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
Default | 1 |
---|---|
Value | unsigned integer |
How many times to retry connection against a remote IMAP server?
imapc_connection_retry_interval
Default | 1 secs |
---|---|
Value | time (milliseconds) |
How long to wait between retries against a remote IMAP server?
imapc_features
Default | [None] |
---|---|
Value | string |
Changes |
|
A space-separated list of features, optimizations, and workarounds that can be enabled.
- Features
-
no-acl
-
If the imap-acl plugin is loaded, the imapc acl feature is automatically enabled. With it IMAP ACL commands (MYRIGHTS, GETACL, SETACL, DELETEACL) are proxied to the imapc remote location. Note that currently these commands are attempted to be used even if the remote IMAP server doesn't advertise the ACL capability.
To disable this feature either unload the imap-acl plugin or provide this feature.
Changed: 2.4.0
Earlier versions had an "acl" feature, which is now enabled by default.
-
no-delay-login
-
Immediately connect to the remote server. By default this is delayed until a command requires a connection.
Changed: 2.4.0
Earlier versions had a "delay-login" feature, which is now enabled by default.
-
gmail-migration
- Enable GMail-specific migration. Use IMAP
X-GM-MSGID
as POP3 UIDL. Add$GMailHaveLabels
keyword to mails that haveX-GM-LABELS
except forMuted
keyword (to be used for migrating only archived emails inAll Mails
). Addpop3_deleted_flag
to mails that don't exist in POP3 server.
-
no-modseq
-
Disable access to
MODSEQ
andHIGHESTMODSEQ
fields. By default these fields are available if the remote server advertises the CONDSTORE or the QRESYNC capability. If modseqs are disabled, or not supported by the new server, they can still be used if imapc is configured to have local index files.Changed: 2.4.0
Earlier versions had a "modseq" feature, which is now enabled by default.
-
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:<INIT>:<MAX>:<SHRINK>
-
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 shrunk 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
-
no-fetch-bodystructure
-
Disable fetching of IMAP
BODY
andBODYSTRUCTURE
from the remote server. Instead, the whole message body is fetched to regenerate them.Changed: 2.4.0
Earlier versions had a "fetch-bodystructure" feature, which is now enabled by default.
-
no-fetch-headers
-
Disable fetching of specific message headers from the remote server using the IMAP
FETCH BODY.PEEK[HEADER.FIELDS(...)]
command. Instead, the whole header is fetched and the wanted headers are parsed from it.Changed: 2.4.0
Earlier versions had a "fetch-headers" feature, which is now enabled by default.
-
no-fetch-size
-
Disable fetching of message sizes from the remote server using the IMAP
FETCH RFC822.SIZE
command. Instead, the whole message body is fetched to calculate the size.Changed: 2.4.0
Earlier versions had a "rfc822.size" feature, which is now enabled by default.
-
no-metadata
- Disable the detection of the
METADATA
capability from the remote server. The client will receive aNO [UNAVAILABLE]
response for any request that requires access to metadata on the remote server (the same happens if the server does not announce the capability at all).
-
no-search
-
Disable searching messages using the IMAP
SEARCH
command. Instead, all the message headers/bodies are fetched to perform the search locally.Changed: 2.4.0
Earlier versions had a "search" feature, which is now enabled by default.
- Workarounds
-
fetch-fix-broken-mails
-
If a
FETCH
returnsNO
(but notNO [LIMIT]
orNO [SERVERBUG]
), assume the mail is broken in server and just treat it as if it were an empty email.DANGER
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 ofEXAMINE
even when we don't want to modify anything in the mailbox. This is a Courier-workaround where it didn't permanently assignUIDVALIDITY
to anEXAMINE
d mailbox, but assigned it forSELECT
ed mailbox.
-
no-qresync
Added: 2.4.0- This can be used to work around a Zimbra bug where it doesn't send untagged "OK [CLOSED]" imap-resp-code when selecting a folder.
-
zimbra-workarounds
- Fetch full message using
BODY.PEEK[HEADER] BODY.PEEK[TEXT]
instead of justBODY.PEEK[]
because the header differs between these two when there are illegal control chars or 8bit chars. This mainly caused problems with dsync, but this should no longer be a problem and there's probably no need to enable this workaround.
imapc_host
Default | [None] |
---|---|
Value | string |
The remote IMAP host to connect to.
imapc_list_prefix
Default | [None] |
---|---|
Value | string |
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
Default | [None] |
---|---|
Value | string |
See Also |
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.
imapc_max_idle_time
Default | 29 mins |
---|---|
Value | 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
Default | [None] |
---|---|
Value | size |
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
Default | [None] |
---|---|
Value | string |
See Also |
The authentication password for the remote IMAP server.
If using master users, this setting will be the password of the master user.
imapc_port
Default | 143 |
---|---|
Value | unsigned integer |
The port on the remote IMAP host to connect to.
imapc_rawlog_dir
Default | [None] |
---|---|
Value | string |
See Also |
Log all IMAP traffic input/output to this directory.
imapc_sasl_mechanisms
Default | plain |
---|---|
Value | string |
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.
imapc_sasl_mechanisms = external plain login
imapc_ssl
Default | no |
---|---|
Value | string |
Allowed Values | no imaps starttls |
Use TLS to connect to the remote IMAP server.
Value | Description |
---|---|
no |
No TLS |
imaps |
Explicitly connect to remote IMAP port using TLS |
starttls |
Use IMAP STARTTLS command to switch to TLS connection |
imapc_ssl_verify
Default | yes |
---|---|
Value | boolean |
See Also |
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.
imapc_user
Default | [None] |
---|---|
Value | string |
See Also |
The user identity to be used for performing a regular IMAP LOGIN to the source IMAP server.
Mail user variables
can be used.
Configuration Example
Do a regular IMAP LOGIN, using STARTTLS, to imap.example.com:
# In-memory index files:
mail_location = imapc:
# OR, Store index files locally:
#mail_location = imapc:~/imapc
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. 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:
box = <mailbox>
: UseGETQUOTAROOT <mailbox>
root = <name>
: UseGETQUOTA <name>
Example:
plugin {
quota = imapc:root=User Quota
}