Skip to content

Alpha 0.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@foxcpp foxcpp released this 05 May 15:32
· 210 commits to dev since this release

This is the basic implementation of a working go-imap backend with several IMAP extensions supported.

This release is a small step out of many on the road to the 1.0 release. I decided to release 0.1 as a base point of reference and allow people to actually rely on some frozen code base instead of always moving 'dev' branch.

Initially, the project was named go-sqlmail because I thought it was necessary to implement special support to handle SMTP delivery. Now it is renamed to go-imap-sql because all SMTP-related features can be implemented outside of this project.

Implemented features

  • Almost RFC 3501-conforming implementation of go-imap's Backend interface
  • Correct unilateral updates support
  • IMAP MOVE extension support
  • IMAP APPENDLIMIT extension support
  • IMAP CHILDREN extension support
  • Auxiliary interfaces for users management
  • Good black-box tests coverage
  • Support for three major SQL engines: SQLite, MySQL, and PostgreSQL.
  • Helper utility for database management (imapsql-ctl)

Missing features / known problems / quirks

  • Mailbox deletion is not handled correctly. Current behavior may confuse clients as it actually breaks RFC 3501.
  • MySQL 5.7 support is poorly implemented and considered deprecated. It will be removed before 1.0 release.
  • ListMessages uses suboptimal SQL queries.
  • SearchMessage always iterates all messages in a mailbox.

Maddy

Currently, maddy uses go-imap-sql 0.1 with SQLite by default as both storage and authentication backend.