Security and data handling

Fluxmail is self-hosted, so your mailbox credentials and data stay on a machine you control. This page explains what Fluxmail stores, how it limits what each agent can do, and what it sends back to us.

Your mail stays on infrastructure you run

Fluxmail runs on your computer, in Docker, or on a server you control. It connects directly to Gmail, Microsoft Graph, or your IMAP and SMTP server. Fluxmail does not copy email content to a service it operates.

An MCP client may send the email it reads to its own model provider. That provider's data policies apply to what the agent sees.

Architecture

Credentials are encrypted at rest

Fluxmail keeps its SQLite database on the machine where it runs. Google and Microsoft OAuth tokens, OAuth application secrets, license state, and IMAP and SMTP passwords are encrypted with AES-256-GCM. The encryption key is stored outside the configuration file.

Configuration

Every connection has a member, a mailbox scope, and a permission profile

Each request acts for one active member and can only reach mailboxes that member owns or has been granted. An API key can be limited further to selected mailboxes. Administrators manage members and mailbox access, but the role does not grant access to another member's private mail.

Permission profiles decide what a connection can do. The read-only profile can search, read, and download attachments. The read-write profile adds drafts, organizing, and Trash. Only the full profile can send or permanently delete mail. Fluxmail has no unauthenticated mail mode.

Permissions

Sessions and API keys

People log in with member sessions that last up to 90 days. Logout, suspension, removal, password reset, and revocation take effect immediately. Remote CLI profiles require HTTPS, and the CLI refuses redirects on authenticated requests.

MCP clients and scripts use API keys. Fluxmail shows each key once. A key's authority is the intersection of its capabilities, its mailbox allowlist, and its owner's current role and access, so changing a member's access also changes what their keys can reach.

Authentication and instances

Audit events

Authentication and management operations add rows to an audit table. Database triggers stop those rows from being changed or deleted. Entries store identifiers and outcome codes, not passwords, tokens, request bodies, or provider credentials. Administrators can read them through the REST API.

List audit events

What the license check sends

Paid plans validate the license key about once a day. The request contains the license key and a random instance ID, and the response is a signed lease that Fluxmail verifies with a pinned public key. Limits keep working offline, and a license server outage does not stop a running instance.

Ending a paid plan returns the instance to Personal limits and never deletes mailboxes or data.

Teams and plans

Anonymous telemetry, and how to turn it off

By default, Fluxmail sends anonymous operation events: the CLI command, MCP tool, or REST operation, its outcome and duration, a random installation ID, and basic runtime details. It never sends email or mailbox data, search text, command arguments, credentials, file paths, request payloads, or error text.

Run fluxmail telemetry disable, or set FLUXMAIL_TELEMETRY=0 or DO_NOT_TRACK=1, to turn it off for the installation.

Telemetry settings

The code is source available on GitHub under the Elastic License 2.0, so you can review how any of this works. To report a security issue, email hello@fluxmail.ai.

Build on top of email

Run Fluxmail on your own infrastructure and use it through MCP, REST API, or CLI.