English · 简体中文
A self-hosted home for your mail, contacts, and calendar.
Download ·
Screenshots ·
Setup guide
Classic, Minimal, and Express, left to right
I wanted a webmail I'd enjoy using. I also wanted to host it myself and keep all my accounts in it. I couldn't find one that did all three, so I started writing Gofer.
It's a single Go binary with a SQLite database. Run it on your laptop or on a server and open it in a browser. Your Gmail, Outlook, iCloud and IMAP accounts share one inbox, with their contacts and calendars right there too.
I've used it every day for months, with six accounts and around 100k emails. It's pre-1.0 so things still change between versions. It holds up fine though.
Gofer does mail, contacts and calendar. All your accounts land in one inbox. Contacts fill in as you type an address. Meeting invites show up in the email with buttons to answer them, and the event goes straight into your calendar.
Rules, signatures, identities, a one-time From, scheduled send, translation, labels, threads (or no threads), cards or a table, multiple layouts (side by side, stacked, no reading pane at all), single-click open, drag and drop, right-click menus, a selection mode, search in one folder or one account or everywhere, search commands, Local folders, creating and renaming folders, folder roles, folder icons and colors, mbox import and export, moving mail between accounts, profile export, push notifications, the unread count in the tab title, printing, empty Trash in one click, sender pictures, blocked remote images, passkeys, 2FA, three themes, a theme builder, a card layout editor, account ordering, English, Spanish, Brazilian Portuguese and Simplified Chinese (简体中文, with more languages to come), date and time formats, an installable Android app, a contacts Trash, creating calendars and address books, .ics import and export, calendar subscriptions, RSVP from the email, Meet and Teams links, dragging events around, month and week views, an update check on the About page, and probably a few more I'm forgetting.
| Contacts | Calendar | New mail | Signing in | ||
|---|---|---|---|---|---|
| Gmail | Gmail API | Google People API | Google Calendar API | scheduled checks for the whole account | your own OAuth app, for now |
| Outlook | Microsoft Graph | Microsoft Graph | Microsoft Graph | webhooks, or scheduled checks | sign in with Microsoft, nothing to set up |
| iCloud | IMAP/SMTP | CardDAV | CalDAV | IDLE, plus scheduled checks | app-specific password |
| JMAP (Fastmail, Stalwart…) | Gofer's JMAP client | Gofer's JMAP client | Gofer's JMAP client, or CalDAV | JMAP push (EventSource), plus scheduled checks | password or API token |
| IMAP/SMTP | go-imap and go-smtp | CardDAV, if you have a server | CalDAV, if you have a server | IDLE, plus scheduled checks | password |
Outlook webhooks are off until you set GOFER_OUTLOOK_WEBHOOKS=true, and they need an install reachable over HTTPS (details). IMAP servers that don't mark their Sent or Trash folders let you pick them yourself.
Note
Without a mailbox, you can still add a CalDAV or CardDAV server as an account of its own, for calendars or contacts only. You can also subscribe to a calendar by its .ics link. It's read-only, and Gofer refreshes it as often as you choose, from every 15 minutes to once a day.
Gofer has three looks. Classic and Minimal are the sensible ones. Express is retro and my favorite. If none of them fit, the theme builder makes a new one to fit your taste, choosing primary and secondary colors, elements radius, and more. Folders can get their own icons and colors, and the mail cards can be rearranged. Gofer is in English, Spanish, Brazilian Portuguese and Simplified Chinese, and more languages are on the way.
On Android you can install it as an app.
Mailboxes export as mbox. You can also move a whole setup to another Gofer with a profile export. Passwords and tokens are encrypted on disk. Remote images stay blocked until you allow them. For sign-in there are passkeys, and 2FA through an authenticator app.
There are three auth modes:
- open: no login at all, for a machine only you use
- personal (the default): one protected profile with all your accounts
- managed: several users, each with their own database and an admin panel. This mode is very much WiP. It does work but the usefulness of the admin panel is still green
Binary. Download one from the releases page and start it. Then open http://localhost:8090. The terminal prints a setup token for the first sign-in.
Docker. There are images for amd64 and arm64 at ghcr.io/cristianadrielbraun/gofer. Set GOFER_BASE_URL in the example compose.yaml, then:
docker compose up -d
docker compose logs gofer # shows the first-run setup tokenKubernetes. There's a Helm chart for a single-replica install.
From source. You need Go 1.27.1+, templ, tailwindcss, and task:
task dev # dev server with hot reload, at http://local.localhost:8090
task release # self-contained binary at ./dist/goferEverything else, like reverse proxies and OAuth clients, is in docs/setup.md and .env.example.
Important
Back up your data/ directory before upgrading. An older version can't open the database once a newer one has updated it.
The big one is Gmail without your own OAuth app. I'd also like first-run setup to be easier. More shortcuts and more languages would be nice too. If something breaks or you're missing a feature, open an issue. I read them all.
- templ for Go-based views, with templUI components and Lucide icons
- HTMX for server-driven interactions
- Tailwind CSS for styling
- modernc.org/sqlite for storage
- emersion's Go libraries, go-imap, go-smtp, go-message, go-sasl, go-vcard, and go-ical, which carry much of the mail, contact, and calendar work
- golang.org/x/oauth2 for OAuth, go-webauthn for passkeys, and webpush-go for push notifications
Gofer is MIT licensed.
