go-imap-sql
go-imap-sql copied to clipboard
SQL-based storage backend for go-imap v2
We should retry on serialization error (possibly, with a small delay). Currently we hard-fail and reject modifications. Related to #12, we might able to decrease rate of serialization failures. But...
Instead of putting all files into one directory, use first byte as a name for subdirectory. This is important to amortize lookup time.
Makes it easy to migrate storage from other implementations.
Needs driver support, depends on #21 for generic interfaces, needs to be carefully designed to work well with external storage (e.g. FS, etc).
https://github.com/emersion/go-imap-uidplus https://tools.ietf.org/html/rfc4315 https://github.com/emersion/go-imap-uidplus/issues/3
Set \Noselect attribute and disallow select if mailbox does have any childrens. Don't allow to delete with \Noselect and childrens.
https://tools.ietf.org/html/rfc4551 https://github.com/foxcpp/go-sqlmail/projects/1#card-18307191 (ENABLE extension)
Fetching and doing matching against all messages is simply inefficient. Each RDBMS we support (even SQLite) includes a FTS engine implementation, we can't miss that as it allows us to...
* Current roadmap: https://github.com/foxcpp/go-imap-sql/projects/1 Note: "In progress" often represents state only of my local repository clone, not upstream here. If you want to help - don't work on tasks in...