|Deletions are marked like this.||Additions are marked like this.|
|Line 64:||Line 64:|
|fetch-bodystructure:: Allow fetching BODY and BODYSTRUCTURE from remote server. (v2.2.30+)|
|Line 71:||Line 72:|
| modseq:: Access MODSEQ and HIGHESTMODSEQ (v2.2.24+)
delay-login:: Don't connect to the remote server until some command requires it. By default the server is connected to immediately on logout. (v2.2.29+)
The imapc storage accesses a remote IMAP server as if it were a regular Dovecot mailbox format. Dovecot can treat it as a very dummy storage or optionally a more capable storage.
# In-memory index files: mail_location = imapc: # Store index files locally: mail_location = imapc:~/imapc
Do a regular IMAP LOGIN to imap.example.com using a LOGIN email@example.com secret:
imapc_host = imap.example.com imapc_password = secret imapc_port = 143 imapc_user = firstname.lastname@example.org
If you want to use a master user login, set:
imapc_master_user = masteruser
For SSL, use either:
imapc_ssl = imaps imapc_port = 993
imapc_ssl = starttls imapc_port = 143
For testing you may want to disable all SSL certificate checks:
imapc_ssl_verify = yes
You can use other SASL mechanisms besides PLAIN by specifying (the first one advertised by IMAP server is used):
imapc_sasl_mechanisms = external plain login
The SASL client mechanisms are implemented in Dovecot's lib-sasl/ code. It's possible to add more with plugins.
- How long to wait for an IMAP command to reply before disconnecting and retrying (default: 5 mins).
Access only mailboxes under this prefix. For example imapc_list_prefix=INBOX/
- Send something (NOOP/DONE) to server after not sending anything for this amount of time (default: 29 mins).
- Log all IMAP traffic input/output to this directory.
Features and workarounds
imapc_features setting is a space-separated list of features and workarounds that can be enabled.
Allow passing through message sizes using FETCH RFC822.SIZE
Allow fetching specific message headers using FETCH BODY.PEEK[HEADER.FIELDS (..)]
- Allow fetching BODY and BODYSTRUCTURE from remote server. (v2.2.30+)
Allow using SEARCH command.
- 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 (to be used for migrating only archived emails in "All Mails"). Add pop3_deleted_flag to mails that don't exist in POP3 server.
- Use Sun/Oracle IMAP-server specific PROXYAUTH command to do master user authentication. Normally this would be done using the SASL PLAIN authentication.
- 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.
- Access MODSEQ and HIGHESTMODSEQ (v2.2.24+)
- Don't connect to the remote server until some command requires it. By default the server is connected to immediately on logout. (v2.2.29+)
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.
- 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.
- Try to ignore wrong message sequence numbers in FETCH replies whenever possible, preferring to use the returned UID number instead.
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. NOTE: 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.