summaryrefslogtreecommitdiff
path: root/go.mod
AgeCommit message (Collapse)Author
2022-06-22imap: add option to cache headersTim Culverhouse
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-09msgviewer: parse and display authentication resultsKoni Marti
Parse the Authentication-Results header and display it in the message viewer (not enabled by default). DKIM, SPF and DMARC authentication methods are supported. Implement recommendation from RFC 7601 Sec 7.1 to have an explicit list of trustworthy hostnames before displaying the authentication results. Be aware that the authentication headers can be forged. To display the results for a specific authentication method, add the corresponding name to the layout of headers in the viewer section of aerc.conf, e.g. to display all three, use: header-layout = From|To,Cc|Bcc,Date,Subject,DKIM|SPF|DMARC More information will be displayed when "+" is appended to the authentication method name, e.g. DKIM+ or SPF+ or DMARC+. Also, add the trustworthy hosts per account with the trusted-authres parameter, e.g. trusted-authres = * to trust every host or use regular expressions for a finer control. Multiple hosts can be entered as a comma-separated list. Authentication results will only be displayed when the host is listed in the trusted-authres list. Link: https://datatracker.ietf.org/doc/html/rfc7601 Signed-off-by: Koni Marti <koni.marti@gmail.com> Tested-by: Tim Culverhouse <tim@timculverhouse.com> Acked-by: Robin Jarry <robin@jarry.cc>
2022-05-31invites: reply with accept, accept-tentative or declineKoni Marti
Reply to iCalendar invitations with three commands: :accept, :accept-tentative or :decline. Parse a text/calendar request, create a reply and append it to the composer. Suggested-by: Ondřej Synáček <ondrej@synacek.org> Signed-off-by: Koni Marti <koni.marti@gmail.com> Acked-by: Robin Jarry <robin@jarry.cc>
2022-03-07commands: implement fuzzy completion for commands and optionskt programs
Change the option to enable fuzzy completion to be fuzzy-complete, since it's no longer only used for folders Signed-off-by: Kt Programs <ktprograms@gmail.com> Acked-by: Koni Marti <koni.marti@gmail.com>
2022-02-24threading: implement on-the-fly message threadingKoni Marti
implement message threading on the message store level using the jwz algorithm. Build threads on-the-fly when new message headers arrive. Use the references header to create the threads and the in-reply-to header as a fall-back option in case no references header is present. Does not run when the worker provides its own threading (e.g. imap server threads). Include only those message headers that have been fetched and are stored in the message store. References: https://www.jwz.org/doc/threading.html Signed-off-by: Koni Marti <koni.marti@gmail.com> Tested-by: Inwit <inwit@sindominio.net> Tested-by: akspecs <akspecs@gmail.com> Acked-by: Robin Jarry <robin@jarry.cc>
2022-02-20main: use terminfo to set window titleRobin Jarry
Parse the terminal capabilities from the TERM environment variable instead of using a hard coded list of terminals. tcell does not expose the status line capabilities. Use another library for this: github.com/xo/terminfo Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-07pgp: update openpgp packages (go-crypto and go-pgpmail)Koni Marti
Replaces golang.org/x/crypto with github.com/ProtonMail/go-crypto consistently and updates go-pgpmail to v0.2.0 Signed-off-by: Koni Marti <koni.marti@gmail.com>
2021-11-05go.mod: cleanupRobin Jarry
Run go mod tidy. Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-11-05go.mod: change base git urlRobin Jarry
I'm not sure what are the implications but it seems required. Link: https://github.com/golang/go/issues/20883 Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-11-02imap: use builtin idle supportRobin Jarry
go-imap supports IDLE since 1.2.0. Remove dependency to go-imap-idle. Link: https://github.com/emersion/go-imap/commit/ac3f8e195ef1b6d Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-11-01go: update all dependenciesRobin Jarry
Signed-off-by: Robin Jarry <robin@jarry.cc>
2020-12-18update tcell to v2 and enable TrueColor supporty0ast
Also update to the tcell v2 PaletteColor api, which should keep the chosen theme of the user intact. Note, that if $TRUECOLOR is defined and a truecolor given, aerc will now stop clipping the value to one of the theme colors. Generally this is desired behaviour though.
2020-12-02notmuch: remove gc close hooksReto Brunner
We frequently had issues with notmuch segfaulting and my guess is that this was due to the garbage collection magic used in the module. This changes to a fork that ripped the functionality out.
2020-11-14compose: use a proper header instead of a string mapReto Brunner
Prior to this commit, the composer was based on a map[string]string. While this approach was very versatile, it lead to a constant encoding / decoding of addresses and other headers. This commit switches to a different model, where the composer is based on a header. Commands which want to interact with it can simply set some defaults they would like to have. Users can overwrite them however they like. In order to get access to the functions generating / getting the msgid go-message was upgraded.
2020-10-18update go-imap-sortthready0ast
Fixes a problem with "Missing Sort Criteria" because go-imap-sortthread wasn't sending the sort request in an RFC compliant way. This has been fixed in the latest commit.
2020-10-15update go-imapy0ast
This fixes the problem that when the header contains "undisclosed-recipients:;", which got parsed by go-imap as "<undisclosed-recipients@>, <@>". If we do reply all, aerc adds these malformed emails to the To: field.
2020-10-11imap: add sort supportReto Brunner
2020-09-15Update go-imap to latest commitReto Brunner
* return empty reader instead of nil when BODY is found but server returns nil * utf7: fix package doc comment * imap: lower some fields + content disposition keys * remove "should not be called directly" comments and replaced them with links to the GitHub wiki pages * backendutil: Improve Match function * Write NIL for empty ENVELOPE fields * readme: add NAMESPACE extension * server: error when selecting should unselect * Support NIL hierarchy delimiter * backendutil: Implement message size and lines counting * readme: update CI badge to only show status for commits * Fix empty envelope address fields * server: Return proper BAD response for cancelled SASL negotiation * Replace empty string result in ErrStatusResp.Error * Move ErrStatusResp to the root package * Add MailboxInfoUpdate * Fix BodyStructure fields documented as encoded
2020-08-31update go-messageReto Brunner
2020-08-28Revert "Upgrade tcell version to 1.4.0 to support truecolor"Drew DeVault
This reverts commit 2ada00de1e682c43327d8cecf090b58528020ffc.
2020-08-28Upgrade tcell version to 1.4.0 to support truecolory0ast
2020-07-09Update go-message, fixes various bugsReto Brunner
Changelog: d262af7 (tag: v0.12.0) textproto: check header characters 5b97b1b Remove hz-gb-2312 encoding as it can crash 0e60ea0 writer: add Mime-Version header when missing c512562 textproto: add Header.Raw and HeaderFields.Raw 4af4c77 textproto: Add HeaderFields.Len f828d02 Add test converting an Entity to quoted-printable 8c6ac6b Add CreateInlineWriter to get a writer that allows alternatives, but no attachments. fee642d (tag: v0.11.2) Fix incorrect line folding of RFC2047-encoded strings 9c4415e textproto: add limits for header field length and total amount of fields 46fe03d mail: add Message-Id test with IPv6 address 6c32091 textproto: add MultipartReader tests 9ce1b6f textproto: remove unused skipSpace function a41879c mail: add tests for Header.{MessageID,MsgIDList} 82eb31c mail: add Header.MessageID and Header.MsgIDList 7e482a2 mail: add headerParser 40e7be6 textproto: minor doc improvements f119d5f readme: remove stability badge e48b6c5 mail: minor comments and docs improvements 8ade7dd textproto: add error on invalid header key
2020-05-08creak/pty got force pushed: fix versionReto Brunner
2020-05-06Use stdout as controlling terminalGuillaume J. Charmes
Soves an issue with go1.15 not letting ctty be a parent. See https://github.com/creack/pty/pull/97 for more details. Signed-off-by: Guillaume J. Charmes <git+guillaume@charmes.net>
2020-05-06Revert "Dont detach process under vterm"Drew DeVault
This reverts commit d07cf6c667a0d497c67196fca9967db71c1e02f6.
2020-05-06Dont detach process under vtermGuillaume J. Charmes
Signed-off-by: Guillaume J. Charmes <git+guillaume@charmes.net>
2020-04-20Bump ProtonMail/crypto to fix build on OpenBSDAnirudh Oppiliappan
Signed-off-by: Anirudh Oppiliappan <x@icyphox.sh>
2020-03-20Requires Go 1.13Simon Ser
We use errors.Is, which has been introduced in Go 1.13.
2020-03-03Initial support for PGP decryption & signaturesDrew DeVault
2020-03-03Update dependenciesSimon Ser
This brings in some bug fixes.
2020-03-03Mark sent messages as "seen" in maildirGalen Abell
- Add maildir flags to complement a messages imap flags - Set the "seen" flag on sent messages when using the maildir backend - Cleanup AppendMessage interface to use models.Flag for both IMAP and maildir
2020-01-24Contextual UI ConfigurationSrivathsan Murali
+ Adds parsing of contextual ui sections to aerc config. + Add GetUiConfig method for AercConfig that is used to get the specialized UI config. + Add UiConfig method to AccountView to get specialized UI Config. + Modifies Aerc codebase to use specialized UIConfig instead. + Adds documentation for Contextual UI Configuration
2020-01-16Switch back to upstream pty libraryBen Fiedler
The relevant change was merged upstream, and thus allows us to clean up unneeded forks.
2019-12-19Update go-maildir to latestBen Burwell
This fixes an upstream issue where improperly named maildir files could cause a panic. Now, we simply show an error and don't display the message if the backing file is not named according to the maildir spec.
2019-11-01Add support for AUTH LOGIN submissionLuke Drummond
`go-sasl` upstream added support [1] for the obsolete [2] AUTH LOGIN method which enables aerc to send email via servers which remain common in the wild. Fixes ~sircmpwn/aerc2#263 [1] https://github.com/emersion/go-sasl/commit/61afe53d [2] https://datatracker.ietf.org/doc/draft-murchison-sasl-login/
2019-09-16notmuch: sync maildir flagsReto Brunner
Syncs back special notmuch tag like unread to the underlying maildir store
2019-08-20upgrade go-messageReto Brunner
Fixes date parsing bug in the maildir / notmuch workers.
2019-08-16bump go-message, fixes address list parsing failureReto Brunner
2019-08-08add github.com/zenhack/go.notmuchReto Brunner
2019-08-07Update tcellDrew DeVault
2019-07-27Update tcellDrew DeVault
2019-07-27Update dependenciesSimon Ser
A bug corrupting long In-Reply-To headers has been fixed upstream in go-message: https://github.com/emersion/go-message/issues/44
2019-07-19Use latest go-maildirBen Burwell
2019-07-17maildir: Watch for new messagesBen Burwell
When a directory is opened, start watching its "new" subdirectory for incoming messages using the fsnotify library. When creation events are detected, run the Unseen routine to move the message from new to cur and add new UIDs to the store, updating the UI's list of directory contents as we go.
2019-07-12Handle the invalid "utf8" encodingBen Burwell
See commit 0bfc369eb68a1d34ea0ee983f218e97a14099959 in the go-message package.
2019-07-12Add maildir backend workerBen Burwell
Add the initial implementation of a backend for Maildir accounts. Much of the functionality required is implemented in the go-message and go-maildir libraries, so we use them as much as possible. The maildir worker hooks into a new maildir:// URL scheme in the accounts.conf file which points to a container of several maildir directories. From there, the OpenDirectory, FetchDirectoryContents, etc messages work on subdirectories. This is implemented as a Container struct which handles mapping between the symbolic email folder names and UIDs to the concrete directories and file names.
2019-07-11Support imaps with oauthbearer authentication (Gmail)Frode Aannevik
imaps+oauthbearer://user:token@host?token_endpoint=... - the config Source password is used as access token if no token_endpoint parameter is set - the config Source password is used as refresh token if token_endpoint parameter is set, and used to exchange with an access token The implementation has only been tested with Gmail. source = imaps+oauthbearer://{username}:{refersh_token}@imap.gmail.com:993? \ client_id=XX&\ client_secret=XX&\ token_endpoint=https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Ftoken client credentials created with https://console.developers.google.com/apis/credentials refresh token created with https://github.com/google/gmail-oauth2-tools/blob/master/python/oauth2.py rel: https://todo.sr.ht/~sircmpwn/aerc2/42
2019-06-27Set the required go version for this module, aercDaniel Lublin
This is the way to declare which compiler version a module requires to build. I read up on https://golang.org/doc/go1.12#modules
2019-06-15Update tcellDrew DeVault
2019-06-09Update reply to use getopt posix optind formatClayton Craft
This changes the handling of optind for the 'reply' command to match recent changes to getopt.