# Crockery design ## Overview We need: * SMTP server * Receive emails -> middlewares -> storage * https://github.com/emersion/go-smtp ? * IMAP server * Receive logins * HTTP server * Serve autodiscovery bumpf * ActiveSync protocol * Storage * Accounts * Passwords! * Emails * TLS keys + certificates * Search emails - some sort of inverted index necessary * https://github.com/blevesearch/bleve ? * Embedded database best. Ideally we have a single file to work with * https://github.com/coreos/bbolt * https://github.com/asdine/storm ## Database structure I'm not sure what storm does under the hood. It seems clever. We have the following, though: * K-V store * `config/domain` * `domains//config/cert` * `domains//config/key` * ORM * `Account` * `Username` * `Admin` * `PasswordHash`