What

PurelyManage is an open-source, self-hosted web UI for PurelyMail. PurelyMail is a paid email hosting service. It handles email well, but its account dashboard is minimal. If you are managing more than a handful of users or domains, you are either writing curl commands against their API or clicking through a basic web interface one action at a time.

PurelyManage wraps that API and adds what is missing: a proper admin panel.

Why

The email billing problem

Google Workspace, Zoho, Microsoft 365: every mainstream email provider bills per seat. That sounds fine until you count the seats. An intern who joined for three months and sends four emails a year costs the same as someone who lives in their inbox. A contractor account you forgot to delete is still on the invoice. It piles up, and at some point you are paying for a graveyard of seats that do nothing.

The honest model would be: pay for what you actually use. PurelyMail does this. You pay for storage. A user who sends nothing takes up nothing. That changes the math completely, especially for organizations where usage is uneven.

Self-hosting is not the answer

The obvious counter is: run your own mail server. Postfix, Dovecot, done.

Except it is not done. Email infrastructure requires ongoing attention: spam filtering, IP reputation monitoring, bounce handling, DKIM and SPF keeping up with provider policy changes. It pulls you out of whatever you are actually trying to build. It is not something you fire and forget. For now, I would rather pay a small amount for someone else to handle that layer and stay focused on the work that matters.

PurelyMail sits at the right point in that tradeoff. They handle the infrastructure. You handle the domain setup and user management. You pay for storage, not seats. It is not Google-grade in terms of UI or ecosystem, but that is not what this is for.

The gear-watching problem

Providers like Zoho or Google Workspace are good if you want less friction. Everything is managed for you, the UI is polished, support exists. That is fine. But I like to see how things work. I want the DNS records in front of me. I want to see which users exist, what their settings are, which routing rules are active. I want to run migrations myself rather than wait for a support ticket.

PurelyMail gives you an API and lets you do all of it. The API has no official public documentation, which is its own adventure (more on that in a later post). But it is there, and it works.

Why build a portal at all

I could have stayed on curl and been fine. But when you need to check status in a hurry, or add a user during an onboarding call, or look at DNS health across twenty domains, a command line is slow. You want a screen. So I built one.

It is a small tool, nothing more. A tiny drop in the ocean of open source. Use it however you like.

What It Does

User Management

List all email users across your domains. Create new users with a built-in password generator, strength indicator, and copy-to-clipboard. Toggle 2FA, reset passwords. Delete users with a 24-hour delay so accidental deletions can be cancelled before they execute.

Domain Management

Add and remove domains. Verify ownership via a TXT record. Get a live DNS health view for each domain: MX, SPF, DKIM (all three CNAMEs), and DMARC. The panel shows which records are missing and the exact values to set.

Routing Rules

Create rules that forward email from one address to one or more destinations. Destination addresses autocomplete from your existing user list.

IMAP Migration

Moving mailboxes from another provider into PurelyMail means running imapsync per account, a slow process you cannot block a request on. The migration system handles the whole flow:

  • IMAP server configs: add source and destination servers once, reuse across jobs
  • Single jobs: pick servers, enter per-job credentials, run
  • Bulk CSV import: upload a file with source/destination pairs, launch dozens of jobs at once
  • Credential gathering campaigns: generate a link, send it to your users, they submit their own credentials through a form, you review and launch all jobs in one click
  • Async queue: jobs run in the background with a configurable concurrency limit. Close the UI mid-migration, reconnect later, see live progress
  • Email notifications: get an email when a job finishes or fails if you are not watching the panel

Security

  • IMAP credentials are encrypted at rest (AES-256-GCM) and never returned to the frontend after save
  • Destructive actions go into a 24-hour pending queue. Any admin can cancel before execution
  • Active sessions are visible and revocable from the Settings page
  • An audit log tracks every mutating action: who did what and when

Dashboard

Shows total users, domains, routing rules, and PurelyMail account credit balance with color-coded warnings when it runs low. DNS health is summarized across all domains. Pending deletions surface as a warning so nothing slips through.

Stack

Backend: Node.js + TypeScript + Fastify + PostgreSQL

Frontend: React + TypeScript + Vite + Tailwind CSS

Infrastructure: Backend runs as a systemd service. Frontend is static files, deployable to nginx, S3 + CloudFront, or anything that can serve a single-page app. imapsync must be installed on the same machine as the backend.

This Series

The posts that follow go deeper into specific parts: