{"id":"01a08351-4f37-7400-87c9-5c771bfa48e5","slug":"mailflare","name":"Mailflare","oneLiner":"Self-hosted webmail for your own domains, with routing rules, a calendar and an AI assistant whose drafts need approval","logoUrl":null,"primaryCategory":{"slug":"email","name":"Email"},"services":[{"slug":"workers","name":"Cloudflare Workers","shortName":"Workers"},{"slug":"static-assets","name":"Workers Static Assets","shortName":"Static Assets"},{"slug":"d1","name":"Cloudflare D1","shortName":"D1"},{"slug":"r2","name":"Cloudflare R2","shortName":"R2"},{"slug":"durable-objects","name":"Durable Objects","shortName":"Durable Objects"},{"slug":"queues","name":"Cloudflare Queues","shortName":"Queues"},{"slug":"workers-ai","name":"Workers AI","shortName":"Workers AI"},{"slug":"email-workers","name":"Email Workers","shortName":"Email Workers"},{"slug":"cron-triggers","name":"Cron Triggers","shortName":"Cron"},{"slug":"images","name":"Cloudflare Images","shortName":"Images"}],"deploy":"one_click","hasOneClick":true,"licenseName":"AGPL-3.0","licenseClass":"open_source","freeTierStatus":"likely_sufficient","isTested":false,"lastTestedAt":null,"stars":4612,"isArchived":false,"publishedAt":"2026-10-02T16:54:16.566Z","contentUpdatedAt":"2026-10-05T13:27:57.629Z","latestCommitAt":"2026-10-06T08:21:05Z","screenshot":{"url":"/media/apps/01a08351-4f37-7400-87c9-5c771bfa48e5/01a10251-df70-7e06-99bb-2da23c3d5296.png","alt":"Mailflare inbox under a custom brand name, with an open message and the compose window"},"sourceHealth":"healthy","shortDescription":"Mailflare runs webmail for your own domains from one Worker in your Cloudflare account. Mail and attachments stay in your D1 database and R2 bucket, whichever provider receives or sends them. The Community edition is free, and one-time licenses sold on mailflare.co add branding and team features.","longDescription":"Connecting a domain that already uses Cloudflare DNS turns on Email Routing and writes the DNS records. Each domain can instead receive or send through Resend or Amazon SES, chosen separately for each direction, with the provider's credentials added on the domain page. The mail client handles attachments, rich text, signatures, automatic replies, search, folders, stars, snooze, archive and spam. A calendar handles repeating events and emails invitations to attendees, and a public booking link lets anyone reserve free time on it.\n\nRouting rules store, forward, reject or sort incoming messages. Administrators manage API keys, webhooks, audit logs and scheduled database backups. Users can import and export mail, keep contacts and block senders. The optional assistant runs on Workers AI or an OpenAI-compatible provider. It searches mail, manages calendar events and prepares drafts that a person reviews before sending. External AI clients connect over MCP with separate permissions per key, and the homepage lists JMAP access for desktop and mobile mail apps.\n\nThe Worker is built with vinext. Three Queues process inbound, outbound and assistant jobs, a Durable Object pushes real-time updates, and the Images binding handles image optimization. Two cron triggers run a daily backup and, every five minutes, assistant maintenance and trash retention. Mailflare also runs as a single Docker container on any server, with SQLite and local files in place of D1 and R2.","useCases":["Run custom-domain mail for a side project without per-seat hosting","Share hello@ and support@ inboxes across a team with a Team license","Automate mail handling with routing rules, webhooks and the REST API","Draft replies with an AI assistant and approve them before sending","Let anyone book free time on your calendar through a public link"],"targetAudience":"Founders, freelancers and small teams who want custom-domain email in their own Cloudflare account, with a one-time license for team features.","knownLimitations":"Without an active Team license, the admin cannot create shared inboxes or manage other user accounts, and custom branding needs a Professional or Team license. New Amazon SES accounts start in a sandbox that delivers only to verified addresses. The Worker must keep the name mailflare. There are no tagged releases, and updates run through a GitHub Actions workflow that replaces the installation repository's tree with upstream.","editorialNote":null,"ownershipDisclosure":null,"homepageUrl":"https://mailflare.co","demoUrl":null,"docsUrl":"https://github.com/hieunc229/mailflare/blob/main/docs/deployment.md","repository":{"provider":"github","owner":"hieunc229","name":"mailflare","url":"https://github.com/hieunc229/mailflare","defaultBranch":"main","stars":4612,"forks":610,"openIssues":9,"licenseSpdx":"AGPL-3.0","isArchived":false,"latestRelease":null,"latestReleaseAt":null,"latestCommitAt":"2026-10-06T08:21:05Z","metadataFetchedAt":"2026-10-07T03:50:53.593Z"},"secondaryCategories":[],"servicesDetailed":[{"slug":"workers","name":"Cloudflare Workers","shortName":"Workers","detectionKind":"explicit","note":null},{"slug":"static-assets","name":"Workers Static Assets","shortName":"Static Assets","detectionKind":"explicit","note":null},{"slug":"d1","name":"Cloudflare D1","shortName":"D1","detectionKind":"explicit","note":null},{"slug":"r2","name":"Cloudflare R2","shortName":"R2","detectionKind":"explicit","note":null},{"slug":"durable-objects","name":"Durable Objects","shortName":"Durable Objects","detectionKind":"explicit","note":null},{"slug":"queues","name":"Cloudflare Queues","shortName":"Queues","detectionKind":"explicit","note":null},{"slug":"workers-ai","name":"Workers AI","shortName":"Workers AI","detectionKind":"manual","note":null},{"slug":"email-workers","name":"Email Workers","shortName":"Email Workers","detectionKind":"explicit","note":null},{"slug":"cron-triggers","name":"Cron Triggers","shortName":"Cron","detectionKind":"explicit","note":null},{"slug":"images","name":"Cloudflare Images","shortName":"Images","detectionKind":"explicit","note":null}],"connectors":[],"externalRequirements":[{"slug":"amazon-ses","name":"Amazon SES","requirementKind":"optional","purpose":"Sends and receives mail for a domain that uses it","selfHostedAlternative":null,"hasSelfHostedAlternative":false,"evidenceUrl":null},{"slug":"openai","name":"OpenAI API","requirementKind":"optional","purpose":"Runs the AI assistant as an alternative to Workers AI","selfHostedAlternative":null,"hasSelfHostedAlternative":true,"evidenceUrl":null},{"slug":"resend","name":"Resend","requirementKind":"optional","purpose":"Sends and receives mail for a domain that uses it","selfHostedAlternative":null,"hasSelfHostedAlternative":true,"evidenceUrl":null}],"deployMethods":[{"id":"01a08352-e27f-7c69-a4ba-ffa962c346cb","methodType":"one_click","url":"https://deploy.workers.cloudflare.com/?url=https://github.com/hieunc229/mailflare","command":null,"docsUrl":null,"branch":"main","isOneClick":true,"isPrimary":true,"requiredPlan":null,"notes":null},{"id":"01a08352-e3d3-71f8-9a3e-53139d4eabc5","methodType":"cli","url":null,"command":"npm install\nnpm run deploy\nnpx wrangler secret put CF_TOKEN","docsUrl":null,"branch":"main","isOneClick":false,"isPrimary":false,"requiredPlan":null,"notes":null}],"deployRequirements":[],"bindings":[{"bindingType":"d1_databases","bindingName":"DB","resourceName":"mailflare"},{"bindingType":"durable_objects","bindingName":"REALTIME","resourceName":"RealtimeHub"},{"bindingType":"images","bindingName":"IMAGES","resourceName":null},{"bindingType":"queues.consumers","bindingName":null,"resourceName":"mailflare-inbound"},{"bindingType":"queues.consumers","bindingName":null,"resourceName":"mailflare-inbound"},{"bindingType":"queues.producers","bindingName":"INBOUND_QUEUE","resourceName":"mailflare-inbound"},{"bindingType":"queues.producers","bindingName":"OUTBOUND_QUEUE","resourceName":"mailflare-outbound"},{"bindingType":"r2_buckets","bindingName":"BUCKET","resourceName":"mailflare-raw"},{"bindingType":"send_email","bindingName":"EMAIL","resourceName":null}],"envVars":[],"screenshots":[{"id":"01a10251-e0d4-7512-b9ce-f0489e304547","url":"/media/apps/01a08351-4f37-7400-87c9-5c771bfa48e5/01a10251-df70-7e06-99bb-2da23c3d5296.png","width":1557,"height":1010,"altText":"Mailflare inbox under a custom brand name, with an open message and the compose window","isPrimary":true,"sourceType":"repository"},{"id":"01a106ca-214a-747b-8340-2029418cc224","url":"/media/apps/01a08351-4f37-7400-87c9-5c771bfa48e5/01a106ca-1f8b-7ad2-9bce-909d272d57e2.png","width":1440,"height":900,"altText":"Mailflare homepage header with Deploy Mailflare and View on GitHub links above a preview of the inbox","isPrimary":false,"sourceType":"upload"},{"id":"01a10251-e311-7852-9d15-6b79b2afb035","url":"/media/apps/01a08351-4f37-7400-87c9-5c771bfa48e5/01a10251-e195-72a2-a5f0-93d7babc8d45.png","width":1536,"height":1024,"altText":"Admin Domains page with MX, SPF, DKIM and DMARC records found and Email Routing configured","isPrimary":false,"sourceType":"repository"},{"id":"01a10251-e542-7849-a1d8-cfe768727eaa","url":"/media/apps/01a08351-4f37-7400-87c9-5c771bfa48e5/01a10251-e411-75fe-a2fc-741a5d61747c.png","width":1672,"height":941,"altText":"Admin Mailboxes table listing personal and shared inboxes with their role and status","isPrimary":false,"sourceType":"repository"}],"licenseUrl":"https://github.com/hieunc229/mailflare/blob/c5cfa1be6da1c8a2e4d293ba1c4520796bc3b6a7/LICENSE","freeTierNote":"Receiving through Email Routing, plus D1, R2, Durable Objects, Queues (10,000 operations per day) and cron triggers, fits Workers Free. For sending, the README suggests Resend's free tier (3,000 emails a month, 100 a day) or Amazon SES; Cloudflare Email Sending requires Workers Paid ($5 per month with 3,000 emails included).","freeTierSourceUrl":"https://developers.cloudflare.com/email-service/platform/pricing/","freeTierCheckedAt":null,"setupComplexity":"medium","setupComplexityNote":"Create the scoped CF_TOKEN API token by hand, deploy with the button, run the /setup wizard, then connect a domain and choose whether Cloudflare, Resend or Amazon SES receives its mail.","verification":{"status":"untested","testedAt":null,"versionRef":null,"deploymentMethod":null,"coreUseCase":null,"publicNote":null,"resources":[],"steps":[],"screenshots":[],"staleReason":null},"alternatives":[{"slug":"fastmail","name":"Fastmail"},{"slug":"forward-email","name":"Forward Email"},{"slug":"gmail","name":"Gmail"},{"slug":"google-workspace","name":"Google Workspace"},{"slug":"improvmx","name":"ImprovMX"},{"slug":"migadu","name":"Migadu"},{"slug":"outlook-com","name":"Outlook.com"},{"slug":"proton-mail","name":"Proton Mail"},{"slug":"titan-email","name":"Titan Email"},{"slug":"tuta","name":"Tuta"},{"slug":"zoho-mail","name":"Zoho Mail"}],"sources":[{"sourceType":"repository","url":"https://github.com/hieunc229/mailflare","lastSeenAt":"2026-10-07T12:17:19.324Z"},{"sourceType":"homepage","url":"https://mailflare.co","lastSeenAt":"2026-10-07T03:45:49.701Z"},{"sourceType":"docs","url":"https://github.com/hieunc229/mailflare/blob/main/docs/deployment.md","lastSeenAt":"2026-10-07T03:45:49.701Z"}],"lastSourceRefreshAt":"2026-10-07T03:50:53.593Z","lastReviewedAt":"2026-10-02T16:54:16.566Z","seoTitle":"Mailflare: self-hosted webmail for your domain on Cloudflare","seoDescription":"Open-source webmail for custom domains with routing rules, webhooks, backups, a calendar and an AI assistant, on Workers, D1, R2 and Email Routing.","changeEvents":[{"id":"01a0fd89-b9af-7da8-b249-354606e4e8d2","kind":"listed","summary":"Mailflare listed","createdAt":"2026-10-02T16:54:16.566Z","app":{"slug":"mailflare","name":"Mailflare"}}]}