# 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 ``` config/ domain: "example.com" domains/ example.com/ accounts/ foo@example.com/ config/ emails/ config/ key: []byte(...) cert: []byte(...) ```