Alpha 0.1
Pre-release
Pre-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.