aboutsummaryrefslogtreecommitdiffstats
path: root/go.mod
Commit message (Collapse)AuthorAgeFilesLines
* lint: use gofumpt instead of gofmtMoritz Poldrack2022-08-011-1/+1
| | | | | | Link: https://github.com/mvdan/gofumpt Signed-off-by: Moritz Poldrack <git@moritz.sh> Acked-by: Robin Jarry <robin@jarry.cc>
* mbox: implement an mbox backend workerKoni Marti2022-07-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Implement an mbox backend worker. Worker can be used for testing and development by mocking a backend for the message store. Worker does not modify the actual mbox file on disk; all operations are performed in memory. To use the mbox backend, create an mbox account in the accounts.conf where the source uses the "mbox://" scheme, such as source = mbox://~/mbox/ or source = mbox://~/mbox/file.mbox If the mbox source points to a directory, all files in this directory with the .mbox suffix will be opened as folders. If an outgoing smtp server is defined for the mbox account, replies can be sent to emails that are stored in the mbox file. Signed-off-by: Koni Marti <koni.marti@gmail.com> Acked-by: Robin Jarry <robin@jarry.cc>
* imap: add option to cache headersTim Culverhouse2022-06-221-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* msgviewer: parse and display authentication resultsKoni Marti2022-06-091-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* invites: reply with accept, accept-tentative or declineKoni Marti2022-05-311-1/+3
| | | | | | | | | | 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>
* commands: implement fuzzy completion for commands and optionskt programs2022-03-071-0/+1
| | | | | | | | 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>
* threading: implement on-the-fly message threadingKoni Marti2022-02-241-0/+1
| | | | | | | | | | | | | | | | | | | | 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>
* main: use terminfo to set window titleRobin Jarry2022-02-201-0/+1
| | | | | | | | | | 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>
* pgp: update openpgp packages (go-crypto and go-pgpmail)Koni Marti2022-01-071-2/+3
| | | | | | | 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>
* go.mod: cleanupRobin Jarry2021-11-051-5/+0
| | | | | | Run go mod tidy. Signed-off-by: Robin Jarry <robin@jarry.cc>
* go.mod: change base git urlRobin Jarry2021-11-051-1/+1
| | | | | | | 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>
* imap: use builtin idle supportRobin Jarry2021-11-021-1/+0
| | | | | | | 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>
* go: update all dependenciesRobin Jarry2021-11-011-26/+29
| | | | Signed-off-by: Robin Jarry <robin@jarry.cc>
* update tcell to v2 and enable TrueColor supporty0ast2020-12-181-4/+1
| | | | | | | | | 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.
* notmuch: remove gc close hooksReto Brunner2020-12-021-0/+2
| | | | | | | 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.
* compose: use a proper header instead of a string mapReto Brunner2020-11-141-2/+1
| | | | | | | | | | | | | 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.
* update go-imap-sortthready0ast2020-10-181-1/+1
| | | | | | 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.
* update go-imapy0ast2020-10-151-1/+1
| | | | | | 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.
* imap: add sort supportReto Brunner2020-10-111-1/+2
|
* Update go-imap to latest commitReto Brunner2020-09-151-1/+2
| | | | | | | | | | | | | | | | | | | | * 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
* update go-messageReto Brunner2020-08-311-1/+1
|
* Revert "Upgrade tcell version to 1.4.0 to support truecolor"Drew DeVault2020-08-281-1/+4
| | | | This reverts commit 2ada00de1e682c43327d8cecf090b58528020ffc.
* Upgrade tcell version to 1.4.0 to support truecolory0ast2020-08-281-4/+1
|
* Update go-message, fixes various bugsReto Brunner2020-07-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | 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
* creak/pty got force pushed: fix versionReto Brunner2020-05-081-1/+1
|
* Use stdout as controlling terminalGuillaume J. Charmes2020-05-061-1/+1
| | | | | | | 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>
* Revert "Dont detach process under vterm"Drew DeVault2020-05-061-1/+1
| | | | This reverts commit d07cf6c667a0d497c67196fca9967db71c1e02f6.
* Dont detach process under vtermGuillaume J. Charmes2020-05-061-1/+1
| | | | Signed-off-by: Guillaume J. Charmes <git+guillaume@charmes.net>
* Bump ProtonMail/crypto to fix build on OpenBSDAnirudh Oppiliappan2020-04-201-1/+1
| | | | Signed-off-by: Anirudh Oppiliappan <x@icyphox.sh>
* Requires Go 1.13Simon Ser2020-03-201-1/+1
| | | | We use errors.Is, which has been introduced in Go 1.13.
* Initial support for PGP decryption & signaturesDrew DeVault2020-03-031-1/+5
|
* Update dependenciesSimon Ser2020-03-031-19/+22
| | | | This brings in some bug fixes.
* Mark sent messages as "seen" in maildirGalen Abell2020-03-031-1/+1
| | | | | | | - 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
* Contextual UI ConfigurationSrivathsan Murali2020-01-241-0/+1
| | | | | | | | | + 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
* Switch back to upstream pty libraryBen Fiedler2020-01-161-1/+1
| | | | | The relevant change was merged upstream, and thus allows us to clean up unneeded forks.
* Update go-maildir to latestBen Burwell2019-12-191-1/+1
| | | | | | 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.
* Add support for AUTH LOGIN submissionLuke Drummond2019-11-011-1/+1
| | | | | | | | | | | `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/
* notmuch: sync maildir flagsReto Brunner2019-09-161-1/+1
| | | | Syncs back special notmuch tag like unread to the underlying maildir store
* upgrade go-messageReto Brunner2019-08-201-3/+1
| | | | Fixes date parsing bug in the maildir / notmuch workers.
* bump go-message, fixes address list parsing failureReto Brunner2019-08-161-3/+3
|
* add github.com/zenhack/go.notmuchReto Brunner2019-08-081-0/+1
|
* Update tcellDrew DeVault2019-08-071-1/+1
|
* Update tcellDrew DeVault2019-07-271-2/+2
|
* Update dependenciesSimon Ser2019-07-271-14/+17
| | | | | | A bug corrupting long In-Reply-To headers has been fixed upstream in go-message: https://github.com/emersion/go-message/issues/44
* Use latest go-maildirBen Burwell2019-07-191-1/+1
|
* maildir: Watch for new messagesBen Burwell2019-07-171-0/+1
| | | | | | | | 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.
* Handle the invalid "utf8" encodingBen Burwell2019-07-121-1/+1
| | | | | See commit 0bfc369eb68a1d34ea0ee983f218e97a14099959 in the go-message package.
* Add maildir backend workerBen Burwell2019-07-121-0/+1
| | | | | | | | | | | | | 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.
* Support imaps with oauthbearer authentication (Gmail)Frode Aannevik2019-07-111-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Set the required go version for this module, aercDaniel Lublin2019-06-271-0/+2
| | | | | | 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