Skip to content

Releases: emersion/go-imap

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

2.0.0-alpha.1

17 Mar 19:57
v2.0.0-alpha.1
Compare
Choose a tag to compare
2.0.0-alpha.1 Pre-release
Pre-release
go-imap v2.0.0-alpha.1

Simon Ser (140):
      Initial commit
      imapwire: add IMAP encoder and decoder
      imapclient: add IMAP client
      imapwire: add support for encoding literals
      imapclient: add support for continuation requests
      imapclient: add APPEND
      imapwire: add Decoder.Skip
      imapwire: include last unread byte in error messages
      imapclient: add SELECT
      imapwire: add Encoder.{Special,Number,Number64}
      imapwire: add Decoder.Number64
      imapwire: add support for decoding literals
      imapclient: add FETCH
      imapclient: add STARTTLS
      imapclient: add IDLE
      imapclient: make beginCommand take the command as input
      imapclient: add commandEncoder
      imapclient: track continuation requests per-command
      imapclient: use per-command encoder
      imapwire: make literals cancellable
      imapwire: add some docs
      imapclient: move Client.read up
      imapclient: return data from SELECT command
      imapclient: add Options
      imapclient: add basic support for unilateral data
      imapclient: fix races in StartTLS and Idle
      imapwire: don't panic on number64 overflow
      imapwire: add number decoding methods
      imapclient: add STATUS
      imapwire: add Encoder.List
      imapwire: add Decoder.ExpectList
      imapclient: simplify FetchCommand.Next
      imapclient: fix FETCH replies dropped by FetchCommand.Next
      imapwire: add Decoder.Quoted
      imapclient: add LIST
      imapclient: add ListCommand.Collect
      imapclient: add FetchItem
      imapclient: decode FETCH FLAGS
      imapclient: add FetchCommand.Collect and FetchMessageData.Collect
      imapclient: add FetchMessageData.SeqNum
      imapwire: accept literals in Decoder.ExpectAString
      imapclient: handle nil literal in FETCH BODY[]
      imapclient: add FETCH ENVELOPE
      imap: add toplevel package doc comment
      imapclient: add FETCH INTERNALDATE
      imapclient: split FetchMessageBuffer item handling in function
      imapclient: add FETCH RFC822.SIZE
      imapclient: add FETCH UID
      imapclient: add FETCH BODYSTRUCTURE
      imapclient: add BodyStructureSinglePart.Filename
      imapclient: add BodyStructure.Walk
      imapclient: add BodyStructure.Disposition
      imap: add SeqSet
      imapclient: take SeqSet as input in Client.Fetch
      imapwire: make SP optional before parenthesized list
      imapclient: add FetchItemDataBodyStructure.IsExtended
      imap: move over MailboxAttr
      imap: add Flag
      imapclient: add Options.WordDecoder
      internal/utf7: new package
      imapwire: encode/decode UTF-7 in mailbox names
      imapclient: use imapwire.Decoder.ExpectMailbox
      imapclient: turn FetchItem into an interface
      imapclient: decode FETCH BINARY.SIZE[]
      imapclient: handle FETCH BODY[] and BINARY[]
      imapclient: collect BINARY.SIZE[] in FetchMessageBuffer
      imapclient: add UIDFetch
      imapclient: add DialStartTLS
      imapclient: populate tls.Config.NextProtos
      imapclient: split into per-command files
      imapclient: add EXPUNGE
      imapclient: add STORE
      imapclient: add MOVE
      imapclient: add COPY
      imapclient: make text optional when decoding continuation request
      imapwire: add ContinuationRequest
      imapclient: add AUTHENTICATE
      imapclient: complete commands when decoder goroutine exits
      imapclient: recover from panics in decoder goroutine
      imapclient: handle initial greeting
      imapclient: add EXAMINE
      imap: add StatusResponse and Error
      imapclient: add options to Client.Append
      imap: add SeqSet.Nums
      imapclient: add SEARCH
      imapclient: add CREATE and DELETE
      imapclient: add RENAME
      imapclient: add SUBSCRIBE and UNSUBSCRIBE
      imapclient: add UNSELECT
      imapclient: add CLOSE
      imapclient: add UID EXPUNGE
      imapclient: decode PERMANENTFLAGS, UIDNEXT and UIDVALIDITY
      imap: add FlagWildcard
      imapclient: add State
      imapclient: drop LogoutCommand
      imapclient: always use string for LIST pattern
      imapclient: add extended LIST
      imapclient: attach STATUS responses to ListData
      imap: add Cap and CapSet
      imapclient: add ENABLE
      imapclient: add Client.Caps
      imapclient: replace FetchItemDataSection with two variants
      imapclient: drop FetchItemData.FetchItem
      imapwire: use pointer args for Number/Number64
      imapclient: decode and expose APPENDUID
      imapclient: parse and expose COPYUID in reply to COPY command
      imapclient: handle ENABLED response
      imapclient: handle COPYUID response code for MOVE commands
      imapclient: add SelectData.List
      imapclient: document optional SelectData fields in RFC 2060
      imapclient: validate flags before encoding them
      imapclient: document requirements for IMAP4rev2
      imapclient: switch unilateral data handler to a struct
      imapclient: add Client.{Mailbox,NumMessages}
      fixup! imapclient: switch unilateral data handler to a struct
      imapclient: print stack trace on panic in decoder goroutine
      imapclient: add SelectedMailbox
      imapclient: propagate decoder goroutine errors
      imapclient: fix deadlock when server sends unilateral FETCH
      imapclient: set read timeout
      imapclient: set write timeout
      imapclient: add support for LITERAL-
      imapclient: add flags to UnilateralDataMailbox
      imapclient: add UnilateralDataHandler.Fetch
      imap: STATUS=SIZE is part of IMAP4rev2
      imapclient: add support for APPENDLIMIT
      imapclient: fix command priority in STATUS response handler
      imapclient: match mailbox when handling STATUS response
      imapclient: restrict generic type in findPendingCmdByType
      imapclient: improve FETCH response routing
      imapclient: fix command priority in LIST response handler
      imapclient: implement fallback for MOVE
      imapclient: add support for NAMESPACE
      imapclient: add example
      ci: add .build.yml
      imapwire: rename Decoder.Skip to DiscardUntilByte
      imapwire: add Decoder.DiscardValue
      readme: add CI badge
      imapclient: add METADATA
      imapclient: drop ALL from criteria in SEARCH command

1.2.1

01 May 15:13
v1.2.1
Compare
Choose a tag to compare
go-imap v1.2.1

Leander Beernaert (1):
      Fix FETCH command with ALL, FAST and FULL macro as fetch items

Mikhail Faraponov (2):
      Update mailbox.go
      Use EqualFold to compare case insensitively

Simon Ser (1):
      readme: narrow CI badge to master branch

Stephen Benjamin (1):
      Add link to notmuch backend

fox.cpp (1):
      Add IDLE to capabilities list

1.2.0

06 Oct 08:14
v1.2.0
Compare
Choose a tag to compare
go-imap v1.2.0

This release merges support for a few IMAP extensions in go-imap,
instead of relying on external repositories.

René 'Necoro' Neumann (1):
      Ignore unilateral updates from the server in FETCH

Simon Ser (10):
      github: switch to Libera Chat for questions
      Merge client support for ENABLE extension
      Add missing ENABLE command and response
      Merge support for MOVE extension
      Merge support for IDLE extension
      Ignore IDLE in Server.Enable
      Add missing IDLE command and response
      readme: mark IDLE as built-in
      readme: sort built-in ext list
      github: redirect to Libera webchat for questions

Zhang Huangbin (1):
      Update dependent packages: [email protected], x/[email protected].

fox.cpp (2):
      Merge support for the UNSELECT extension
      Merge support for APPENDLIMIT extension

1.1.0

12 May 13:22
v1.1.0
Compare
Choose a tag to compare
go-imap v1.1.0

This release adds built-in support for SPECIAL-USE, CHILDREN and
IMPORTANT. Moving forward more extensions will be merged back into
go-imap.

A handful of bugfixes are also included.

Adam Chalkley (1):
      Fix small typo in example's doc comment

René 'Necoro' Neumann (1):
      Update dependencies

Ryan Westlund (1):
      Fix #421: Correct docstring on client.Append

Simon Ser (8):
      Add the IMPORTANT extension
      readme: remove pointless `go get` command
      readme: switch GoDoc links to godocs.io
      ci: drop codecov
      readme: remove codecov badge
      Add issue template
      github: add issue template front-matter
      github: add about field to issue template

daichitakahashi (1):
      utf7: reset ascii boolean after decode while destination is short.

fox.cpp (4):
      Add section about "built-in" extensions to README
      Merge support for SPECIAL-USE extension
      Add constant with builtin extensions for tests
      Merge support for CHILDREN extension

liangping (1):
      Message chan not closed

1.0.6

26 Oct 20:57
v1.0.6
Compare
Choose a tag to compare
go-imap v1.0.6

James (2):
      Support NIL hierarchy delimiter
      server: error when selecting should unselect

Michal Horejsek (1):
      utf7: reset ascii boolean at EOF while destination is short

Patrick Hahn (1):
      remove "should not be called directly" comments and replaced them with links to the GitHub wiki pages

Simon Ser (1):
      readme: add NAMESPACE extension

fox.cpp (3):
      Write NIL for empty ENVELOPE fields
      backendutil: Improve Match function
      client: Drop syscall.ECONNRESET hack from Client.readOnce

proletarius101 (1):
      utf7: fix package doc comment

sqwishy (1):
      imap: lower some fields + content disposition keys

y0ast (2):
      return empty reader instead of nil when BODY is found but server returns nil
      add support for empty groups in address lists

1.0.5

22 Jun 12:40
v1.0.5
f9bd228
Compare
Choose a tag to compare
go-imap v1.0.5

Kiyan Yazdani (1):
      Fix empty envelope address fields

Max Mazurov (1):
      backendutil: Implement message size and lines counting

Michal Horejsek (1):
      Add MailboxInfoUpdate

Simon Ser (2):
      Fix BodyStructure fields documented as encoded
      readme: update CI badge to only show status for commits

fox.cpp (3):
      Move ErrStatusResp to the root package
      Replace empty string result in ErrStatusResp.Error
      server: Return proper BAD response for cancelled SASL negotiation

1.0.4

29 Feb 17:11
v1.0.4
6b825b4
Compare
Choose a tag to compare
go-imap v1.0.4

Robert G. Jakabosky (2):
      sevrer: add Login test for already authenticated
      server: add tests for StartTLS errors

Simon Ser (2):
      readme: add link to go-imap-metadata
      all: go fmt

Xiaobin Huang (1):
      fix rfc822XXX issue (#332)

1.0.3

20 Jan 14:35
v1.0.3
8078e02
Compare
Choose a tag to compare
go-imap v1.0.3

Adirelle (3):
      Fix SearchCriteria formatting of keywords flags.
      Test STORE with keyword flags.
      Test APPEND with keyword flag.

Arnold Bechtoldt (1):
      Search for ALL messages by default (#330)

Simon Ser (8):
      Introduce BodyStructure.Filename
      Improve BodyStructure docs
      Add Address.Address helper
      Simplify BodyStructure.Filename
      Introduce BodyStructure.Walk
      Add TryCreateFlag
      client: fix channels not closed on error
      Update dependencies

1.0.2

06 Dec 10:58
v1.0.2
c2b755f
Compare
Choose a tag to compare
go-imap v1.0.2

Mostly server and backendutils fixes.

Robert G. Jakabosky (7):
      Fix issue with backendutils.UpdateFlags().
      Server - allow single flag in STORE command.
      Server - Fix deadlocks when client connection closes early.
      Add tests for Recent flag.
      Backendutils - Improve tests for UpdateFlags.
      Test FETCH with no mailbox selected.
      Test NOOP on selected mailbox.

Simon Ser (1):
      Update dependencies

fox.cpp (2):
      Provide a useful error message if written literal is smaller than expected
      client: Close the connection on mismatched literal length