Start free · Watch the tour · Pricing · Apps · FAQ · API · Self-host
Forward Email is a 100% open-source, privacy-focused email service for custom domains. Point your domain at us and you get you@yourdomain.com in a few minutes. Forward that mail to Gmail, Outlook, iCloud, or any inbox you already use, for free. When you want more, upgrade to encrypted mailboxes that work in Apple Mail, Outlook, Thunderbird, and our own apps.
This repository is the code that runs the service: the website, the API, and every mail server. You can read it, audit it, and run it on your own server.
- Start here
- Watch the 2-minute tour
- What you get
- Plans
- Who uses Forward Email
- Why open source
- What's in this repository
- Related projects
- Developer guide
- Get help
- Security
- Contributing
- License
Find what you want to do in the left column and follow the link.
| I want to… | Go here |
|---|---|
| Get email at my own domain (no coding) | Create a free account |
| Forward my domain's mail to Gmail, Outlook, or iCloud | Step-by-step setup |
Send mail as me@mydomain.com from Gmail |
Send Mail As with Gmail |
| Set up Apple Mail, Outlook, Thunderbird, or my phone | Email client setup guides |
| Read my mail in an app | Download the apps |
| Compare plans and prices | Pricing |
| Send email from my app or website | Email API and SMTP guide |
| Run Forward Email on my own server | Self-hosting guide |
| Check if the service is up | status.forwardemail.net |
| Ask a question or get help | FAQ or Get help |
| Report a security issue | Security |
| Work on this code | Developer guide |
Click the picture to play the video on forwardemail.net. It has captions, so you can watch with the sound off.
- Unlimited domains on every plan, and unlimited aliases on paid plans, with no per-user fees.
- Forward mail to any inbox, or keep it in an encrypted mailbox with 10 GB of storage.
- Catch-all addresses, regex filters, disposable addresses, and webhooks.
- Send as your domain over SMTP, with SPF, DKIM, DMARC, MTA-STS, and DANE support.
- Set up your DNS records in one click at supported providers with Domain Connect.
- We process forwarded mail in memory and never write it to disk.
- Each mailbox is its own encrypted SQLite file that only your password can open.
- Quantum-resistant encryption, plus OpenPGP and Web Key Directory (WKD) support.
- No third-party analytics or telemetry. Read our privacy policy for the details.
- Use any email client over IMAP, POP3, and SMTP: Apple Mail, Gmail, Outlook, Thunderbird, and more.
- Sync calendars and contacts over CalDAV and CardDAV.
- Let email clients find your server settings on their own with autodiscovery.
- Use our open-source apps in a browser, on desktop and mobile, or in your terminal.
- Write mail filters with Sieve and manage them over ManageSieve.
- Everything the dashboard does is a REST API call.
- Receive mail as JSON webhooks.
- Send over SMTP or the API. Your daily sending limit grows with your sender reputation.
- Connect AI assistants with the MCP server, or manage domains with the Terraform provider.
- Self-host the whole stack with Docker.
| Plan | Price | Good for |
|---|---|---|
| Free | $0 | Forwarding mail from your domain to an inbox you already have |
| Enhanced Protection | $3/mo | Sending and receiving as you@yourdomain.com, with unlimited aliases, 10 GB of storage, the apps, and the API |
| Team | $9/mo | Families and organizations: unlimited team members, permissions, and priority support |
| Enterprise | $250/mo | Education, government, and healthcare, with dedicated support and onboarding |
Every plan includes unlimited domains. See pricing for the full comparison.
More than 1.6 million domains use Forward Email, including:
- Open source: The Linux Foundation, Ubuntu, Canonical, jQuery, and LineageOS
- Education: University of Cambridge, Carnegie Mellon, University of Maryland, Tufts, and Swarthmore
- Government: US Naval Academy, Government of South Australia, and Government of the Dominican Republic
- Business: Netflix Games, Disney Ad Sales, Fox News Radio, and RCD Hotels
Read the case studies for The Linux Foundation, Canonical and Ubuntu, and university alumni email.
Your email holds your most private conversations. You shouldn't have to take a company's word for what happens to it. Every line of code that runs Forward Email lives in this repository, so you, or anyone you trust, can check our privacy claims against the code.
Forward Email runs as a set of small Node.js services. Each one has an entry point in the root of this repository:
| Service | What it does | Start it locally | Local port |
|---|---|---|---|
| Web | Website and dashboard | npm start web |
3000 |
| API | REST API used by the dashboard, the apps, and developers | npm start api |
4000 |
| MX | Receives inbound mail, filters spam, and forwards it | npm start mx |
2525 |
| SMTP | Sends outbound mail for users | npm start smtp |
2432 |
| IMAP | Mailbox access for email clients | npm start imap |
2113 |
| POP3 | Mailbox download for email clients | npm start pop3 |
2115 |
| SQLite | Stores each mailbox in its own encrypted SQLite file | npm start sqlite |
3456 |
| CalDAV | Calendar sync | npm start caldav |
5000 |
| CardDAV | Contact sync | npm start carddav |
6000 |
| ManageSieve | Mail filter management for email clients | node managesieve.js |
4190 |
| Bree | Background jobs (billing, reports, cleanup, and checks) | npm start bree |
None |
The rest of the code lives in these folders:
| Folder | Contents |
|---|---|
app |
Models, controllers, and Pug views for the website and the API |
helpers |
Shared code used by every service |
jobs |
Background jobs run by Bree |
config |
Configuration and environment defaults |
routes |
Website and API routes |
emails |
Templates for the emails we send you |
locales |
Translations |
test |
Test suite |
ansible |
Server provisioning playbooks |
self-hosting |
Docker setup for running your own instance |
| Repository | What it is |
|---|---|
| mail.forwardemail.net | Webmail, desktop, mobile, and terminal apps |
| mcp-server | MCP server that connects AI assistants to your account |
| terraform-provider-forwardemail | Manage domains and aliases with Terraform |
| forwardemail-api-go | Go client for the API |
| status.forwardemail.net | Status page |
| spamscanner | Our open-source spam and phishing filter |
| bree | Job scheduler for Node.js |
| tangerine | DNS over HTTPS resolver for Node.js |
| caldav-adapter | CalDAV server for Node.js and Koa |
| email-templates | Create, preview, and send email templates from Node.js |
| supertest and superagent | HTTP testing and client libraries we maintain |
-
Install n and Node v18.20.4:
curl -L https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s -- -y 18.20.4 -
Make sure you are running Node v18.20.4:
node --version v18.20.4
-
Install brew and the following dependencies using the
brewcommand:brew tap mongodb/brew brew install mongodb-community redis libtool automake autoconf nasm brew services start mongodb-community brew services start redis
-
Install pnpm:
corepack enable corepack prepare pnpm@9.15.9 --activate -
Clone your fork (replace
YOUR_USERNAMEwith your GitHub username):git clone git@github.com:YOUR_USERNAME/forwardemail.net.git cd forwardemail.net -
Install npm dependencies:
pnpm install
-
Install wkhtmltopdf (optional: only used for generating PDF receipts).
-
Install n and Node v18.20.4:
curl -L https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s -- -y 18.20.4 -
Make sure you are running Node v18.20.4:
node --version v18.20.4
-
Install pnpm:
corepack enable corepack prepare pnpm@9.15.9 --activate -
Clone your fork (replace
YOUR_USERNAMEwith your GitHub username):git clone git@github.com:YOUR_USERNAME/forwardemail.net.git cd forwardemail.net -
Install npm dependencies:
pnpm install
-
Install fonts:
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
sudo apt-get install xfonts-75dpi fontconfig libxrender1 xfonts-base ttf-mscorefonts-installer libfontconfig fonts-powerline
-
Install wkhtmltopdf (optional: only used for generating PDF receipts):
wget "https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.$(lsb_release -c -s)_$(dpkg --print-architecture).deb" sudo dpkg -i "wkhtmltox_0.12.6.1-2.$(lsb_release -c -s)_$(dpkg --print-architecture).deb"
-
Install MongoDB by following the guide at https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/#install-mongodb-community-edition.
-
Install Redis by following the guide at https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-20-04.
Once you have the requirements installed, start the website:
npm start webAndWatchIt builds the assets, starts the web server, and opens http://localhost:3000 in your browser. The terminal shows logs from consola.
Start any other service with the commands in What's in this repository. All of them use nps. To start the web, API, Bree, SMTP, IMAP, POP3, and SQLite servers at once:
npm start allLocal servers don't require TLS. You can connect to the local SMTP, IMAP, POP3, CalDAV, and CardDAV servers with Thunderbird, telnet, or openssl.
If http://localhost:3000 loads without styles or images, run the build first:
npm run buildTo stop every Node process at once, run killall node.
pnpm testThis lints the code, builds the assets, and runs the test suite. The tests start an in-memory MongoDB and a mock Redis, so you don't need either service running.
For verbose error logs, set these environment variables:
AXE_SILENT=false AXE_SHOW_STACK=true AXE_SHOW_META=true pnpm testPUSH_NOTIFICATIONS.md documents backend setup for APNs, FCM HTTP v1, and UnifiedPush. It explains how to get every environment value, deploy file-based credentials, copy the required public values to mail.forwardemail.net, and validate the setup.
APNs reuses the existing APPLE_TEAM_ID, APPLE_KEY_ID, and APPLE_KEY_PATH values used for Sign in with Apple. Do not create separate APNs-specific credential variables.
DEPLOYMENT.md covers running Forward Email in production: server naming, provisioning with Ansible, deploying with pm2, certificates and DANE, bare metal setup, storage mirroring, and Domain Connect.
For server tuning, monitoring, and database operations, see ansible/README.md.
To run a single-server instance with Docker instead, see the self-hosting guide.
- Answers: FAQ and guides
- Questions: GitHub Discussions
- Support: support@forwardemail.net or forwardemail.net/help
- Service status: status.forwardemail.net
- Bugs in this code: open an issue
- Community: Matrix, X, and YouTube
Please don't report security issues in public issues, discussions, or pull requests. Email security@forwardemail.net instead. See SECURITY.md, our security page, and our signed security.txt.
We welcome bug reports and pull requests. Before you open a pull request:
- Follow the developer guide to set up the project.
- Write commit messages in the Conventional Commits format.
- Run
pnpm testand make sure it passes.

