Mailflare
Mailflare is a self-hosted email inbox for custom domains, built on Cloudflare.
Screenshots
![]() Inbox |
![]() Manage domains |
![]() Manage inboxes |
|---|
Featured sponsors
Want to support the mailflare? Start sponsoring
What you can do
- Connect domains and set up Cloudflare Email Routing from the dashboard.
- Create personal and shared mailboxes with delegated access.
- Send and receive email with attachments, rich formatting, signatures, and automatic replies.
- Organize mail with search, custom folders, stars, snoozing, archive, spam, and trash.
- Create routing rules to store, forward, reject, or categorize incoming messages.
- Get real-time inbox updates and new-message notifications.
- Import and export mail, manage contacts, and block unwanted senders.
- Manage accounts, permissions, API keys, webhooks, audit logs, and database backups.
- Use an AI assistant to search mail, work with threads, and prepare drafts for a selected mailbox.
- Connect external AI clients through MCP with mailbox or admin permissions chosen for each key.
How it works
Mailflare runs in your Cloudflare account. Email Routing delivers incoming messages to the app, while Cloudflare's email service handles outgoing messages. Your mail data stays in your own D1 database and attachments are stored in your own R2 bucket.
Email assistant and MCP
Configure the AI provider in Admin → Agent. Mailflare supports Cloudflare Workers AI and OpenAI-compatible providers. You can configure multiple models, then choose a model for each mailbox in the assistant's Settings view. Assistant chat is available by default once a provider is configured; an admin can turn it off in Admin → Agent. The assistant works within the selected mailbox. Mailbox managers can set writing instructions, a draft reviewer, and a daily auto-draft limit. Automatic reply drafts are off until enabled for that mailbox, and a person must review a draft before sending it. Admin → Agent → View Usage shows AI request totals, estimated spend, daily usage, and a paginated activity log.
To connect an external AI client, create a key in Settings → API keys and enable Allow MCP access. Choose the permitted mailboxes and mail tools. After creation, copy the key or the ready-made AI agent instructions; the key is shown only once. Connect the client to https://<your-mailflare-origin>/mcp using Streamable HTTP and Authorization: Bearer <key>. Mail MCP access is limited to the selected mailboxes and the key owner's current permissions. An alias shares its parent mailbox, so selecting that mailbox also includes mail delivered to its aliases. The MCP request_send tool creates a review request; sending still requires confirmation in Mailflare. MCP mail tools do not require an AI provider.
For management tools, create a separate MCP key in Admin → API keys. Its selected domain, account, and mailbox management permissions do not grant access to mail content. This page also provides copyable AI agent instructions after key creation.
How much does it cost?
You can setup Mailflare and receive email for free
A Paid Worker plan ($5/month) is required to send email (and it's recommend to have a smooth experience)
Deploy
Getting started takes three steps:
- Deploy the app. Click Deploy to Cloudflare and keep the app name as
mailflare. The app will not work correctly under another Worker name. - Complete setup. Open the deployed app and follow
/setupto check the installation and create your admin account. - Connect your domain. Add a domain managed by the same Cloudflare account. Mailflare configures its email routing and helps you create the first mailbox.
⚠️ IMPORTANT: CF_TOKEN is required during deployment. Create a scoped Cloudflare API token with the following permissions for the domains you want to connect.
- All accounts - Email Sending:Edit, DNS Settings:Edit, Email Routing Addresses:Edit
- All zones - DNS Settings:Edit, Email Routing Rules:Edit, Zone Settings:Edit, DNS:Edit
See the deployment guide for required permissions, manual deployment, backups, and updates.
Self-host with Docker instead
Mailflare also runs as one container on any server, with SQLite and local files in place of D1 and R2, a built-in SMTP listener for inbound mail (or a small Cloudflare relay Worker if you want to keep MX on Cloudflare), and any SMTP relay or Cloudflare Email Sending for outbound.
cp .env.docker.example .env.docker
docker compose up -d --build
See docs/self-hosting.md.
Local development
cp .dev.vars.example .dev.vars
npm install
npm run db:migrate:local
npm run dev
Add your Cloudflare credentials to .dev.vars, then open http://localhost:3000. For sample local data, run npm run db:seed while the development server is running.
Documentation
License
See LICENSE.


