Runbox 7 Webmail recently entered open beta, and if you haven’t tried it yet you are missing out!
When you log into Runbox 7 the first thing you’ll notice — aside from its beautiful design — is the speed.
Your folders and messages will load instantly, and no matter how many messages you have the message list will scroll without delay and without any limit.
Gone are the days of waiting for the next screen-full of messages to load, or having to click to navigate between pages. Switching between folders, sorting the message list, and moving messages — any action you perform is executed instantly.
And the message search is lightning fast — results will show up immediately while you type into the search field. Combined with message threading and inline message previews, this makes email management extremely efficient with Runbox 7.
Under the hood
We have modified Xapian by porting Xapian to WebAssembly using the C to WebAssembly compiler from emscripten, which lets it run both in NodeJS on the server and in the browser. Our fork of Xapian will be merged into Xapian’s repository on Github so that it will become available for others to use.
This is accomplished by utilizing a custom version of the open source Xapian email indexer. We have always been impressed with Xapian’s processing speed, reliability, and adaptability, and it’s ability to index large amounts of messages.
The Runbox 7 Webmail App is open source and is available in our main repo at https://github.com/runbox/runbox7. We encourage you to check out our code base, and invite you to join the Runbox revolution by getting involved in our growing community at https://community.runbox.com!
A separate repo at https://github.com/runbox/runbox-searchindex generates the xapian.wasm module in WebAssembly in C++.
The Xapian database is stored in the browser using IndexedDB, which is available through the IDBFS file system of emscripten.
Combined with a central message database and the use of websockets, this allows the indices to stay in sync when new email arrives on the server and when changes are made locally.
The user interface
The power of the WebAssembly Xapian port is matched by the message listing which is written in HTML5 Canvas. This makes it possible to handle large tables and quick re-rendering, and provides good control of the rendering process.
Ordinary HTML tables would suffer slowdown penalties on sorting, filtering, and resizing, and would require pagination, and would not be efficient enough for our needs.
The Canvas element is wrapped in a user interface written in HTML/Typescript using Angular 2+, and is built using UI elements from https://material.angular.io/.
Mail parsing is done using the HTML parser from Andris Reinmann which is written for NodeJS and can be found here: https://github.com/andris9/mailparser.



We are very excited to announce that we are now making the 





ctivities:


Profiles in Runbox 6









In the last blog post we outlined how you can use aliases to help organise you email, and also how they can help you deal with unsolicited or marketing email. Aliases offer alternative addresses for your account so that you don’t have to use the same address for everything. However, there is a quicker way to create new addresses on your account that doesn’t need you to log in to your account and set anything up. This is sub-addressing (sometimes called plus addressing or tagged addressing).
Although sub-addressing is part of the official specification for email systems, not all email providers implement it. That might mean some websites will not accept an email address with a + in it, and some email services may not allow sending to addresses in that format. If you do come across problems, please let the website or email provider know that they could be supporting this useful address format. If you prefer, let us know and we will try to get in touch with them.

You may not be able to tell if a website is reputable or not, but if you use aliases for different kinds of use and you start getting too much unsolicited email to one or more of them, the easier option might be to decide not to use a particular alias any longer and to replace it with another one.