2019-05-17 19:45:20 +02:00
|
|
|
aerc-imap(5)
|
|
|
|
|
|
|
|
# NAME
|
|
|
|
|
|
|
|
aerc-imap - IMAP configuration for *aerc*(1)
|
|
|
|
|
|
|
|
# SYNOPSIS
|
|
|
|
|
|
|
|
aerc implements the IMAP protocol as specified by RFC 3501, with the following
|
|
|
|
IMAP extensions:
|
|
|
|
|
|
|
|
- IDLE (RFC 2177)
|
|
|
|
|
|
|
|
# CONFIGURATION
|
|
|
|
|
|
|
|
IMAP configuration may be done interactively with the :new-account command.
|
|
|
|
|
|
|
|
In accounts.conf (see *aerc-config*(5)), the following IMAP-specific options are
|
|
|
|
available:
|
|
|
|
|
|
|
|
*source*
|
2019-07-10 21:00:28 +02:00
|
|
|
imap[s][+insecure|+oauthbearer]://username[:password]@hostname[:port]?[:oauth2_params]
|
2019-05-17 19:45:20 +02:00
|
|
|
|
|
|
|
Remember that all fields must be URL encoded. The "@" symbol, when URL
|
|
|
|
encoded, is *%40*.
|
|
|
|
|
|
|
|
The meaning of the scheme component is:
|
|
|
|
|
|
|
|
*imap://*:
|
|
|
|
IMAP with STARTTLS
|
|
|
|
|
|
|
|
*imap+insecure://*:
|
|
|
|
IMAP without STARTTLS
|
|
|
|
|
|
|
|
*imaps*:
|
|
|
|
IMAP with TLS/SSL
|
|
|
|
|
2019-07-10 21:00:28 +02:00
|
|
|
*imaps+oauthbearer://*
|
|
|
|
IMAP with TLS/SSL using OAUTHBEARER Authentication
|
|
|
|
|
|
|
|
*oauth2_params:*
|
|
|
|
|
2022-08-21 19:10:49 +02:00
|
|
|
If specified and a token_endpoint is provided, the configured password
|
|
|
|
is used as a refresh token to obtain an access token. If token_endpoint
|
|
|
|
is omitted, refresh token exchange is skipped, and the password acts
|
|
|
|
like an access token instead.
|
2019-07-10 21:00:28 +02:00
|
|
|
|
2022-08-21 19:10:49 +02:00
|
|
|
- token_endpoint (optional)
|
2019-07-10 21:00:28 +02:00
|
|
|
- client_id (optional)
|
|
|
|
- client_secret (optional)
|
|
|
|
- scope (optional)
|
|
|
|
|
|
|
|
Example:
|
|
|
|
imaps+oauthbearer://...?token_endpoint=https://...&client_id=
|
|
|
|
|
2019-05-23 13:29:20 +02:00
|
|
|
*source-cred-cmd*
|
2019-05-18 21:34:16 +02:00
|
|
|
Specifies the command to run to get the password for the IMAP
|
|
|
|
account. This command will be run using `sh -c [command]`. If a
|
|
|
|
password is specified in the *source* option, the password will
|
|
|
|
take precedence over this command.
|
2019-05-18 21:29:26 +02:00
|
|
|
|
2019-05-18 21:34:16 +02:00
|
|
|
Example:
|
2019-05-18 21:29:26 +02:00
|
|
|
|
2019-05-18 21:34:16 +02:00
|
|
|
pass hostname/username
|
2019-05-18 21:29:26 +02:00
|
|
|
|
2021-12-07 00:05:36 +01:00
|
|
|
*connection-timeout*
|
|
|
|
Maximum delay to establish a connection to the IMAP server. See
|
|
|
|
https://pkg.go.dev/time#ParseDuration.
|
|
|
|
|
|
|
|
Default: 30s
|
|
|
|
|
|
|
|
*keepalive-period*
|
|
|
|
The interval between the last data packet sent (simple ACKs are not
|
|
|
|
considered data) and the first keepalive probe. After the connection is
|
|
|
|
marked to need keepalive, this counter is not used any further. See
|
|
|
|
https://pkg.go.dev/time#ParseDuration.
|
|
|
|
|
|
|
|
By default, the system tcp socket settings are used.
|
|
|
|
|
|
|
|
*keepalive-probes*
|
|
|
|
The number of unacknowledged probes to send before considering the
|
|
|
|
connection dead and notifying the application layer.
|
|
|
|
|
|
|
|
By default, the system tcp socket settings are used.
|
|
|
|
If keepalive-period is specified, this option defaults to 3 probes.
|
|
|
|
|
2021-12-11 20:53:10 +01:00
|
|
|
This option is only supported on linux. On other platforms, it will be
|
|
|
|
ignored.
|
|
|
|
|
2021-12-07 00:05:36 +01:00
|
|
|
*keepalive-interval*
|
|
|
|
The interval between subsequential keepalive probes, regardless of what
|
|
|
|
the connection has exchanged in the meantime. Fractional seconds are
|
|
|
|
truncated.
|
|
|
|
|
|
|
|
By default, the system tcp socket settings are used.
|
|
|
|
If keepalive-period is specified, this option defaults to 3s.
|
|
|
|
|
2021-12-11 20:53:10 +01:00
|
|
|
This option is only supported on linux. On other platforms, it will be
|
|
|
|
ignored.
|
|
|
|
|
2022-05-30 14:34:18 +02:00
|
|
|
*check-mail-include*
|
|
|
|
Specifies the comma separated list of folders to include when checking for
|
|
|
|
new mail with *check-mail*. Names prefixed with ~ are interpreted as regular
|
|
|
|
expressions.
|
|
|
|
|
|
|
|
Default: all folders
|
|
|
|
|
|
|
|
*check-mail-exclude*
|
|
|
|
Specifies the comma separated list of folders to exclude when checking for
|
|
|
|
new mail with *check-mail*. Names prefixed with ~ are interpreted as regular
|
|
|
|
expressions.
|
|
|
|
Note that this overrides anything from *check-mail-include*.
|
|
|
|
|
|
|
|
Default: no folders
|
|
|
|
|
imap: add option to cache headers
Add option to cache headers for imap accounts. Cache db is located at
$XDG_CACHE_DIR/aerc/{account name}. The cache is cleaned of stale
entries when aerc is first opened.
Two new account level configuration options are introduced:
* cache-headers (Default: false)
* cache-max-age (Default: 30 days (720 hours))
The change in worker/imap/open.go is to set the selected directory. This
is required to access the UIDVALIDITY field, which is used in
combination with the message ID to form the key for use in the cache db.
The key structure is: "header.{UIDVALIDITY}.{UID}"
Where reasonable, cache does not stop aerc from running. In general, if
there is an error in the cache, aerc should continue working as usual.
Errors are either displayed to the user or logged.
All messages are stored without flags, and when retrieved have the flags
set to SEEN. This is to prevent UI flashes. A new method to
FetchMessageFlags is introduced to update flags of cached headers. This
is done asynchronously, and the user will see their messages appear and
then any flags updated. The message will initially show as SEEN, but
will update to unread. I considered updating the cache with the
last-known flag state, however it seems prudent to spare the R/W cycle
and assume that - eventually - all messages will end up read, and if it
isn't the update will occur rather quickly.
Note that leveldb puts a lock on the database, preventing multiple
instances of aerc from accessing the cache at the same time.
Much of this work is based on previous efforts by Vladimír Magyar.
Implements: https://todo.sr.ht/~rjarry/aerc/2
Thanks: Vladimír Magyar <vladimir@mgyar.me>
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
Tested-by: inwit <inwit@sindominio.net>
Reviewed-by: Koni Marti <koni.marti@gmail.com>
Acked-by: Robin Jarry <robin@jarry.cc>
2022-06-15 14:23:51 +02:00
|
|
|
*cache-headers*
|
|
|
|
If set to true, headers will be cached. The cached headers will be stored
|
|
|
|
in $XDG_CACHE_HOME/aerc, which defaults to ~/.cache/aerc.
|
|
|
|
|
|
|
|
Default: false
|
|
|
|
|
|
|
|
*cache-max-age*
|
|
|
|
Defines the maximum age of cached files. Note: the longest unit of time
|
|
|
|
cache-max-age can be specified in is hours. Set to 0 to disable cleaning
|
|
|
|
the cache
|
|
|
|
|
|
|
|
Default: 720h (30 days)
|
|
|
|
|
2022-09-15 02:52:45 +02:00
|
|
|
*idle-timeout*
|
|
|
|
The length of time the client will wait for the server to send any final
|
|
|
|
update before the IDLE is closed.
|
|
|
|
|
|
|
|
Default: 10ms
|
|
|
|
|
|
|
|
*idle-debounce*
|
|
|
|
Specifies the length of time from the last client command until the
|
|
|
|
idler starts.
|
|
|
|
|
|
|
|
Default: 10ms
|
|
|
|
|
2019-05-17 19:45:20 +02:00
|
|
|
# SEE ALSO
|
|
|
|
|
2019-07-27 17:19:49 +02:00
|
|
|
*aerc*(1) *aerc-config*(5)
|
2019-05-17 19:45:20 +02:00
|
|
|
|
|
|
|
# AUTHORS
|
|
|
|
|
2022-01-26 11:41:20 +01:00
|
|
|
Originally created by Drew DeVault <sir@cmpwn.com> and maintained by Robin
|
2021-11-09 20:11:42 +01:00
|
|
|
Jarry <robin@jarry.cc> who is assisted by other open source contributors. For
|
|
|
|
more information about aerc development, see https://sr.ht/~rjarry/aerc/.
|