ibex
ibex copied to clipboard
🐐 imap client written in go and js
ibex
A full-fledged mail client for GMail users featuring conversations, labels, and server-side search. Server-client architecture, where multiple clients interact with a REST endpoint.
This is pre-alpha software, so expect lots of bugs.
Why another email client?
-
Many don't even have feature parity with the Gmail web interface (conversations, labels, and search).
-
For threading and search functionality, other clients require all emails to be downloaded in advance.
-
Many clients don't feature sync-back: changes made on the client won't reflect in the Gmail web interface, making it impossible to use the web interface/ mobile client.
Gnus and mutt don't do conversations to begin with. Mailr, Mailpile, sup require all emails to be downloaded in advance, so they can be indexed.
Running
Make sure you have a working Go and bower installation; then do:
$ go get github.com/artagnon/ibex
$ cd $GOPATH/src/github.com/artagnon/ibex
$ bower install
Create a ~/.ibex/credentails
with your email and password separated by
a newline. Then run ibex
, navigate to http://localhost:8080
and
wait for the messages to load.
Clients
The debug client application is written using Angular.js, Underscore and Bootstrap.
The Ncurses client, takin, is currently being written.
Technical details
ibex implements Gmail IMAP extensions:
-
Using X-GM-MSGID and X-GM-THRID, it groups individual emails into conversations. This is a very expensive operation, and is the reason mailboxes take a long time to load.
-
Using X-GM-LABELS, it fetches labels for individual messages. Conversation labels are then derived from individual message labels.
-
Using X-GM-RAW, it provides a way to do server-side search using Gmail's syntax.