I am @JoshData. By day (and night) I am a civic entrepreneur/hacker.

I run GovTrack.us and recently co-founded if.then.fund.

Today I am going to tell you about my side-project:

https://mailinabox.email



Decentralized. Secure.







https://github.com/mail-in-a-box/mailinabox

Readable. Idempotent. Fool-proof.


~20 installs per day

No idea how many Mail-in-a-Boxes are actually running.

Small but great open source community.

Ultimate goal: Let people tinker with email again.


The control panel is a client to
the Management API
(via AJAX --- no <form>s).

Create Mailboxes
GET /admin/mail/users(list users)
POST /admin/mail/users/add(add user)
POST /admin/mail/users/password(set user pw)
Modify DNS
PUT /admin/dns/custom/<qname>/<rtype>(set DNS record)
Other Management
POST /admin/ssl/install(install SSL cert)
POST /admin/system/status(self monitoring - JSON)

curl -X POST --user me@joshmail.xyz:123456 https://box.joshmail.xyz/admin/system/status

[
  {
    "extra": [],
    "text": "System",
    "type": "heading"
  },
  {
    "extra": [],
    "text": "All system services are running.",
    "type": "ok"
  },
  {
    "extra": [],
    "text": "SSH disallows password-based login.",
    "type": "ok"
  },
  {
    "extra": [],
    "text": "System updates have been installed
      and a reboot of the machine is required.",
    "type": "error"
  },
  ...

To create a dynamic DNS service:

curl -X PUT --user me@joshmail.xyz:123456 https://box.joshmail.xyz/admin/dns/custom/laptop.joshmail.xyz



Stay in touch.

@JoshData. @Mailinabox. https://mailinabox.email.