Skip to content

Releases: emersion/go-imap

2.0.0-beta.3

25 Apr 10:55
v2.0.0-beta.3
Compare
Choose a tag to compare
2.0.0-beta.3 Pre-release
Pre-release
go-imap v2.0.0-beta.3

Conrad Hoffmann (1):
      imapclient: add DialInsecure() for plain-text IMAP

Simon Ser (25):
      imapclient: treat io.ErrClosedPipe as net.ErrClosed
      imapclient: stop IdleCommand.run when connection is closed
      imapclient: allow IdleCommand.Wait to be called before Close
      imapclient: add Create test
      imapclient: UTF-7-encode pattern in List
      utf7: use named field in struct literal
      utf7: accept raw UTF-8 when decoding
      utf7: add AcceptUTF8Encoding
      imapwire: don't encode UTF-8 in mailboxes with UTF8=ACCEPT
      imapclient: add Create test with UTF-8 characters
      utf7: simplify implementation
      utf7: drop repl
      Upgrade github.com/emersion/go-message
      imapclient: fix data race with Command.tag
      imapclient: add basic SELECT test
      imapclient: fix race condition in test initialization
      imapserver: fix race condition in Server.Close
      imapclient: add STARTTLS test
      imapclient: wait for handshake to complete during STARTTLS
      imapclient: document upgradeStartTLS
      imapclient: use defer to close startTLSCommand.upgradeDone
      imapclient: add STATUS test
      imapclient: add LIST test
      imapclient: set separator to "/" in Dovecot tests
      imapclient: fix timeout for initial greeting

2.0.0-beta.2

20 Mar 15:26
v2.0.0-beta.2
f438355
Compare
Choose a tag to compare
2.0.0-beta.2 Pre-release
Pre-release
go-imap v2.0.0-beta.2

Ksenia Roshchina (1):
      imapclient: handle nil options in Client.Status

Shugyousha (1):
      imapclient/search: handle UID SEARCH results without hits

Simon Ser (11):
      imapclient: add NewStartTLS
      imapclient: ensure nil Options are correctly handled
      imapclient: accept IMAP4rev2 in ENABLE command
      imapclient: set debug writer when running verbose tests
      imapclient: use IMAP command to append test data
      imapclient: add env var to run tests with Dovecot
      ci: run client tests with Dovecot
      imapclient: set default dial timeout to 30s
      imapclient: fix missing SelectCommand.Wait call in Idle example
      imapclient: add basic ESEARCH test
      imapclient: turn on IMAP4rev2 for imapmemserver

jebbs (1):
      imapwire: accept trailing space in CAPABILITY/SEARCH responses

2.0.0-beta.1

07 Feb 15:56
v2.0.0-beta.1
Compare
Choose a tag to compare
2.0.0-beta.1 Pre-release
Pre-release
go-imap v2.0.0-beta.1

This is the first beta release. The API hasn't stabilized yet but no
more major/invasive changes are expected.

Diana F (1):
      imapclient: fix deadlock on error before greeting

Matthieu Rakotojaona (1):
      Write all found params keys in lowercase, mime-decode values

Simon Ser (23):
      imapserver: fix encoding ESEARCH response with no result
      imapmemserver: fix dynamic NumSet handling in nested search criteria
      imapserver: add support for SEARCHRES
      imapmemserver: implement SEARCHRES
      Decode In-Reply-To and Message-ID
      imapwire: add -1 workaround for body-fld-octets
      imapwire: limit max list nesting depth
      imapclient: add Options.TLSConfig
      imapclient: check for nil in Options.tlsConfig
      imapclient: unexport Client.StartTLS
      imapclient: keep track of enabled capabilities
      imapclient: add basic support for UTF8=ACCEPT
      imap: QRESYNC implicitly advertises CONDSTORE
      imapclient: only allow users to enable supported extensions
      imapclient: omit CHARSET in SEARCH when UTF8=ACCEPT is enabled
      imapserver: add support for UTF8=ACCEPT
      imap: UTF8=ONLY implies UTF8=ACCEPT
      imapclient: drop GetMetadataData.EntryList
      imapclient: add UnilateralDataHandler.Metadata
      imapclient: handle split METADATA responses
      imapclient: improve METADATA routing robustness
      imapserver: add BINARY support
      imapclient: add TODO for the APPEND side of BINARY

2.0.0-alpha.8

10 Jan 17:34
v2.0.0-alpha.8
Compare
Choose a tag to compare
2.0.0-alpha.8 Pre-release
Pre-release
go-imap v2.0.0-alpha.8

This release introduces a new UID type, as well as separate types for
message sequence number sets and UID sets. SeqSet now contains only
sequence numbers, and the new UIDSet type contains only UIDs. The NumSet
type is used when both SeqSet and UIDSet are accepted. Client.UID*
methods have been removed (the non-UID variant now accepts UIDSet).

Alexander Kazantsev (1):
      imapmemserver: fix usage NumUnseen instead of NumDeleted

Diana F (3):
      add rfc 8457 mailbox attr
      imapclient: fix closing unread Fetch body
      imapclient: Close returned err.NetClosed after Logout

Matthieu Rakotojaona (1):
      imapclient: allow NIL Content-Transfer-Encoding in body structure

Simon Ser (26):
      imap: add examples for SearchCriteria.Not and Or
      imapclient: accept missing message and text fields in body structure
      imapclient: move examples to example_test.go
      imapclient: add basic login test
      imapclient: add basic idle test
      imapclient: fix panic on nil options in Fetch
      imapclient: make encoding errors fatal
      imapclient: add invalid fetch command test
      Introduce a UID type
      imapwire: add dedicated UID functions
      Rename SeqSet to NumSet
      Rename Seq to NumRange
      Move NumSet parsing to imapwire
      ci: add gofmt check
      imapclient: fix routing for FETCH responses to STORE commands
      imapclient: add STORE test
      imapclient: fix net.ErrClosed decoder check
      Upgrade dependencies
      imapclient: add Fetch example which parses the body
      imap: add a few examples to FetchItemBodySection docs
      imapclient: fix typo in example name
      imapclient: remove outdated TODO
      imapclient: ensure SEARCH ALL set is not dynamic
      imapclient: ensure COPYUID set is not dynamic
      imapclient: add basic Append test
      Add SeqSet and UIDSet

2.0.0-alpha.7

05 Oct 10:45
v2.0.0-alpha.7
Compare
Choose a tag to compare
2.0.0-alpha.7 Pre-release
Pre-release
go-imap v2.0.0-alpha.7

Simon Ser (13):
      imapclient: add CONDSTORE
      imapserver: add UNAUTHENTICATE support
      imapclient: drop special case for BYE response-data handling
      imapclient: fix stalled commands on readResponseTagged() error
      imapclient: relax text requirements for resp-cond-bye
      imapclient: relax text requirements for resp-cond-state
      imapwire: accept trailing space before CRLF
      imapclient: fix missing import in charset decoding docs
      imapclient: simplify charset instructions
      imapclient: drop unused Client.unregisterContReq
      imap: add AuthCap
      imapclient: add AUTHENTICATE example
      imapclient: restart IDLE automatically

Tim Culverhouse (1):
      imapclient: add SPECIAL-USE LIST option support

2.0.0-alpha.6

05 Jul 07:41
v2.0.0-alpha.6
Compare
Choose a tag to compare
2.0.0-alpha.6 Pre-release
Pre-release
go-imap v2.0.0-alpha.6

Andrew Regner (1):
      imapclient: fix FetchItems to end encoded list

2.0.0-alpha.5

29 Jun 08:42
v2.0.0-alpha.5
Compare
Choose a tag to compare
2.0.0-alpha.5 Pre-release
Pre-release
go-imap v2.0.0-alpha.5

The main change is around FETCH: the items to fetch are no longer passed
as a list, instead FetchOptions struct fields are used.

Simon Ser (6):
      go fmt
      imapclient: add IDLE example
      imapclient: add docs about charset decoding
      imapserver: pass extended bool to writeBodyStructure
      imap: turn FetchItem into FetchOptions
      imap: improve docs for various FETCH-related structs

2.0.0-alpha.4

30 Apr 13:29
v2.0.0-alpha.4
Compare
Choose a tag to compare
2.0.0-alpha.4 Pre-release
Pre-release
go-imap v2.0.0-alpha.4

Simon Ser (13):
      cmd/imapmemserver: fix -tls-cert/key flags
      imap: switch Envelope.Date to time.Time
      imap: convert SearchReturnOption into struct fields
      imap: replace StatusItem with StatusOptions
      imapserver: add LITERAL+
      imapwire: remove misleading UTF8=ACCEPT reference
      imapclient: add LITERAL+
      imapclient: fix deadlock during STARTTLS
      imap: allow multiple SeqSets per SearchCriteria
      imap: add SearchCriteria.And
      imapserver: simplify readSearchKeyWithAtom
      imapclient: remove SeqNum special case when encoding SEARCH
      Add support for SEARCHRES

2.0.0-alpha.3

17 Apr 08:57
v2.0.0-alpha.3
Compare
Choose a tag to compare
2.0.0-alpha.3 Pre-release
Pre-release
go-imap v2.0.0-alpha.3

Simon Ser (42):
      cmd/imapmemserver: new command
      cmd/imapmemserver: fix -password flag
      imapmemserver: add per-mailbox UIDVALIDITY
      imapmemserver: bump UIDVALIDITY when a mailbox is re-created
      imapmemserver: return NONEXISTENT/ALREADYEXISTS response codes
      imapmemserver: return TRYCREATE for COPY and MOVE
      readme: add usage and note about v1
      imapserver: add Server.ListenAndServe{,TLS}
      imapclient: make text after resp-text-code optional
      imapwire: use unicode.MaxASCII
      imapclient: use CHARSET for SEARCH when necessary
      imapclient: refuse PREAUTH when using STARTTLS
      imapclient: fix typo
      imapserver: error greeting can only be BYE
      imapserver: add support for custom SASL mechanisms
      imapserver: rename variable in handleAuthenticate
      imap: add placeholder for Error with no text
      imap: include response code in Error message
      imapclient: ignore literal8 marker for FETCH BINARY[]
      imapserver: send literal8 marker for FETCH BINARY[]
      imapwire: add Encoder.SeqSet
      imap: add SelectOptions
      imap: add CreateOptions
      imapserver: add missing CreateOptions argument
      imapclient: don't encode UTF-8 quoted strings with UTF8=ACCEPT
      imap: add FetchOptions
      imap: add StoreOptions
      imapclient: add support for UNAUTHENTICATE
      Add support for CREATE-SPECIAL-USE
      imapserver: allow CREATE-SPECIAL-USE to be advertised by the backend
      imapserver: allow CREATE-SPECIAL-USE to be advertised with IMAP4rev2
      imapclient: simplify UIDNEXT/UIDVALIDITY parsing
      imapclient: request capabilities if needed
      internal: rename ReadFlag{,List} to ExpectFlag{,List}
      imapwire: add Encoder.MailboxAttr
      internal: add ExpectMailboxAttr{,List}
      internal: canonicalize well-known flags and mailbox attrs
      imapserver: add support for PREAUTH
      imapclient: add a few more examples
      imapclient: add streaming LIST example
      imapclient: add pipelining example
      imapserver: forbid unknown commands before authentication

mariwilliam (1):
      imapclient: fix deadlock in commandEncoder.Literal

2.0.0-alpha.2

04 Apr 08:21
v2.0.0-alpha.2
Compare
Choose a tag to compare
2.0.0-alpha.2 Pre-release
Pre-release
go-imap v2.0.0-alpha.2

This new alpha adds the server side of the library. It also includes some
bugfixes for the client.

Simon Ser (160):
      readme: add badge for docs
      imap, imapclient: improve top-level package docs
      imapclient: move over handlers to separate files
      imapclient: warn about command pipelining
      imapclient: document goroutine safety
      imapclient: add support for ESEARCH
      imapwire: add Encoder.Text
      imapclient: add support for QUOTA
      imap: add CapSet.AuthMechanisms
      imapclient: add SORT
      imapclient: add THREAD
      imapwire: accept lone LF
      imap: add missing ThreadAlgorithm
      imapserver: add basic server skeleton
      imapserver: recover from panics in connection goroutine
      imapserver: add basic CAPABILITY handler
      imap: move over imapclient.State
      imapserver: use imap.ConnState
      imapserver: add basic IDLE support
      imapserver: use a fresh decoder for each command
      imapwire: add DecoderExpectError
      imapserver: send back syntax errors to clients
      imapserver: introduce Session
      imapserver: send BAD when IDLE isn't stopped correctly
      imapserver: add LOGIN
      imapserver: add ErrAuthFailed
      imapserver: add AUTHENTICATE
      imapserver: check connection state in IDLE handler
      imapwire: make Decoder.ExpectMailbox take a pointer
      imap: move over STATUS types from imapclient
      imapserver: add STATUS
      imap: move over imapclient.List{Options,Data}
      imapserver: introduce newClientBugError
      imapserver: add LIST
      imap: move over imapclient.SelectData
      imapserver: add SELECT and EXAMINE
      imapserver: add CLOSE and UNSELECT
      internal: move over imapclient.readFlag and readFlagList
      imapwire: add Decoder.ExpectLiteralReader
      imap: move over imapclient.LiteralReader
      imap: move over imapclient.Append{Options,Data}
      internal: move over imapclient.{dateTimeLayout,readDateTime}
      imapserver: add APPEND
      imap: move over imapclient.FetchItem
      imapserver: add basic FETCH support
      imap: move over imapclient.Envelope
      imapserver: add FetchResponseWriter.WriteEnvelope
      imapwire: introduce ConnSide
      imapserver: add FetchResponseWriter.WriteBodySection
      imapserver: add FetchResponseWriter.WriteBinarySection{,Size}
      imapserver: add UID FETCH
      imapserver: add EXPUNGE
      imapwire: use escape sequence for special chars in Decoder errors
      imapserver: use default logger when Options.Logger is nil
      imapclient: fix deadlock in Authenticate
      imapserver: add STARTTLS
      imapserver: add ListWriter
      imapserver: add Server.InsecureAuth
      imapserver: add COPY and MOVE
      imap: move over imapclient.StoreFlags
      imapserver: add STORE
      imapclient, imapserver: fix decoding BODY[] without section-part
      imap: move over imapclient.Search{Options,Criteria}
      internal: move over imapclient.searchDateLayout
      imap: move over imapclient.SearchData
      imap: add FlagRecent
      internal: add ExpectDate
      iampserver: add SEARCH
      imap: move over imapclient.BodyStructure
      imapserver: add FetchResponseWriter.WriteBodyStructure
      imapserver: sort Session methods by connection state
      imapserver: move CAPABILITY, IDLE and LOGIN handlers to separate files
      imapserver: add ENABLE
      imapserver: add CREATE, DELETE and RENAME
      imapserver: add SUBSCRIBE and UNSUBSCRIBE
      imap: move over imapclient.NamespaceData
      imapserver: add NAMESPACE
      imapwire: server-sent literals are never synchronizing
      imapserver: send continuation requests for all literals
      imapclient: encode strings as literals if necessary
      imapserver: allow clients to ENABLE IMAP4rev2
      imapserver: protect conn.enabled with a mutex
      imapserver: add timeouts
      imapclient: rename respWriteTimeout to cmdWriteTimeout
      imapserver: send CAPABILITY code in greeting
      imapserver: send APPENDUID
      imap: move over imapclient.CopyData
      imapserver: send back OK [COPYUID] in response to COPY commands
      imapserver: expose connection type
      imapserver: add Conn.NetConn
      imapserver: lock Conn.encMutex during STARTTLS
      imapserver: keep Conn.encMutex locked until OK during AUTHENTICATE
      imapserver: don't keep Conn.encMutex locked during IDLE
      imapserver: add ExpungeWriter
      imapserver: add MatchList
      imapserver: validate flags in responses
      imapserver: move server options to separate struct
      imapserver: add more docs
      imapclient: note that sensitive info is written to Options.DebugWriter
      imapserver: add Options.DebugWriter
      imapserver: send COPYUID and EXPUNGE in response to MOVE
      imapserver: add Conn.Bye
      imapserver: add Session.Poll
      imapserver: handle implicit unselect in SELECT
      imapserver: add MailboxTracker
      imapserver: add Session.Idle
      imapserver: add SessionTracker.Idle
      imapserver: ignore EOF while idling
      imapserver: return IMAP4rev1 SEARCH response if ESEARCH isn't used
      imapserver: add stub for STATUS RECENT
      imapclient, imapserver: fix BODY[] parsing with specifier
      imap: move obsolete FlagRecent to internal
      imapserver: fix FETCH keywords comparisons
      imapserver: decode obsolete IMAP4rev1 FETCH data items
      imapserver: expand FETCH macros
      imapserver: accept nil envelope in FetchWriter.WriteEnvelope
      imapserver: decode STORE without flag list
      imapserver: add obsolete CHECK
      imapserver: announce IMAP4rev1 capabilities
      imapserver: ignore net.ErrClosed when reading command
      imapserver: add Server.Close
      imapwire: add Encoder.Quoted
      imapwire: reject atoms in Decoder.ExpectNStringReader
      imapserver: add obsolete LSUB
      imapclient, imapserver: use case-insensitive comparisons
      imapwire: make INBOX case-insensitive in Decoder.ExpectMailbox
      fixup! imapclient, imapserver: use case-insensitive comparisons
      imapwire: add Decoder.ExpectSeqSet
      imapserver: properly discard half-consumed command lines on error
      imapserver: send OK [READ-WRITE/READ-ONLY] on SELECT/EXAMINE
      imapserver: bail on sequence number OOB in SessionTracker
      imapserver: ensure envelope UTF-8 is encoded
      imapserver: make LIST select options case-insensitive
      imapserver: return error on unknown LIST select option
      imapserver: implement multiple patterns for LIST-EXTENDED
      imapserver: return ESEARCH response on empty return option list
      imapserver: do not write empty ALL/MIN/MAX ESEARCH response fields
      imapserver: write obsolete RECENT response after SELECT/EXAMINE
      imapserver: default Sender and Reply-To to From
      imap: drop BodyStructureSinglePartExt.MD5
      imapserver: fix nil deref when writing text/* body structure
      imapserver, imapclient: fix handling of lowercase section specifier
      imapserver: fix decoding of partial body section
      imapserver: fix FETCH BODY[] and BINARY[] items not returned
      imapclient, imapserver: fix decoding of body section specifier
      imapserver: return back obsolete FETCH items to client
      imapserver: add UpdateWriter.WriteMessageFlags
      imapserver: add MailboxTracker.QueueMessageFlags
      imapserver: add UID to FETCH FLAGS unilateral updates
      imapserver: fix expunged messages in SessionTracker.EncodeSeqNum
      imapserver: allow specifying source in MailboxTracker.QueueMessageFlags
      imapserver: decode modified UTF-7 in LIST patterns
      imapserver: unwrap imap.Error in Conn.readCommand
      imapserver/imapmemserver: new package
      imapserver: make capabilities customizable
      imapserver: send CAPABILITY response code after authentication
      imapserver: make Session.Namespace and Move optional
      imapmemserver: remove unused return value in message.store
      imapserver: add FLAGS unilateral update
      Add GitHub issue template