FreeSoft Labs All articles
Cost Analysis

Mailcow After Week One: The Real Bill for Self-Hosted Email at a 10-Person Shop

FreeSoft Labs
Mailcow After Week One: The Real Bill for Self-Hosted Email at a 10-Person Shop

The pitch for self-hosted email is simple: pay $12 a month for a VPS, install Mailcow, and kiss Google Workspace goodbye. We wanted to know what that pitch looks like after the first week, when the DNS records are set and the novelty wears off. So we moved a 10-person shop in the Midwest off Google Workspace and ran Mailcow for 60 days. We tracked every hour, every invoice, and every weird deliverability hiccup. This is not a migration guide. It is a bill of materials for the version of self-hosted email that happens after week one.

The Setup: A $12 VPS and a Lot of DNS

The shop had 10 mailboxes, shared calendars, and a habit of forwarding invoices. We used Mailcow on a 2 vCPU/4GB VPS in a US datacenter. Cash cost: $12/mo. We added Backblaze B2 for restic backups at $5/mo, and reused an existing Uptime Kuma instance for monitoring. SPF, DKIM, DMARC, rDNS, and a clean IP were table stakes. The first surprise: the IP that came with the cheap VPS had a mediocre reputation. We spent two days checking blocklists and requesting delisting from one. That was free in cash and expensive in time.

Deliverability: Gmail and Outlook Have Different Personalities

We sent 300 controlled test messages over 60 days to Gmail and Outlook accounts, mixing plain text, PDF attachments, and links. After warmup, Gmail put 93% in the inbox, 5% in spam, and lost 2% entirely. Outlook was less forgiving: 88% inbox, 9% spam, 3% missing. Week one was worse: Gmail inbox rate was 74% before we fixed a missing DKIM selector and slowed our sending. The lesson is not that Mailcow cannot deliver. It is that deliverability is a reputation product, and a $12 VPS does not come with a reputation manager. We also learned that Microsoft's filtering does not care that you followed all the guides. It wants consistency, low complaint rates, and time.

Spam: The False Positive Tax

Inbound volume was about 1,200 messages over 60 days. Rspamd caught the obvious junk, but we logged 37 false positives, roughly 3.1% of legitimate mail. Most were invoices, one was a signed PDF from a vendor, and two were newsletters the owner actually read. Tuning took 4.5 hours: adjusting scores, whitelisting a domain, and turning off greylisting for one forwarder that delayed time-sensitive quote requests. Greylisting was effective, but it made the shop look slow to customers. If you run Mailcow, budget for spam tuning as a recurring chore, not a one-time checkbox.

Backups and Restore: The 2 a.m. Test

Backups are where free email gets honest. We ran nightly restic backups to B2. The Mailcow volume was 22GB after two months. A full restore to a fresh VPS took 38 minutes, including DNS cutover and a final mail queue check. That is a good number, but it only happened because we tested it. The first restore attempt failed because we had backed up the mail store but not the Mailcow config volume. We fixed the script and added a monthly restore drill. Cash cost: $5/mo. Time cost: 3 hours to build and verify, plus 45 minutes per drill. If nobody owns that drill, the backup is a rumor.

The Admin Tax

We logged 11.5 hours of admin time in the first two weeks: migration, DNS, user password resets, mobile sync issues, and one Outlook profile that refused to autodiscover. After that, it settled to about 2.3 hours per week. Add 4.5 hours of spam tuning and 3 hours of backup work, and month one landed near 18 hours. Month two was 9.2 hours. At an internal rate of $75/hour, that is about $1,350 in month one and $690 in month two. Cash costs stayed at $17/mo. Google Workspace for 10 users was around $70/mo on the plan the shop used. On a cash basis, Mailcow wins easily. On an owner-time basis, the math depends on whether those hours come out of billable work, family time, or sleep.

Item Month 1 Month 2
VPS $12 $12
Backup storage $5 $5
Migration labor 9 hrs 0
Tuning and restore testing 6.5 hrs 3 hrs
Ongoing admin 2.3 hrs/wk 2.3 hrs/wk
Cash total $17 $17
Labor at $75/hr $1,350 $690

What We'd Do Differently

Use a VPS provider with a known-good IP and a reputation dashboard. Set up DMARC reporting before the migration, not after. Move shared calendars last, because that is where users get loud. And write the restore script before the first mailbox exists.

The Bottom Line

Mailcow is real software. It worked for 60 days, delivered most mail, and cost $17 a month in cash. It also demanded about 18 hours in month one and 9 hours in month two. For a 10-person shop, that is not free. It is a trade: subscription dollars for owner hours and operational risk. If you have a tinkerer who enjoys DNS and has a restore drill, self-hosted email can pencil out. If your idea of a good weekend is not debugging autodiscover, Google Workspace is still the cheaper bill in the way that matters.

All Articles

Related Articles

The One-Person LLC With No Subscriptions: 60 Days on a Fully Open-Source Back Office

The One-Person LLC With No Subscriptions: 60 Days on a Fully Open-Source Back Office

Linux Mint for a Week: The Invoice Nobody Shows You

Linux Mint for a Week: The Invoice Nobody Shows You

My $75 Thin Client Ran My Home-Office Firewall for 90 Days: An OPNsense Diary

My $75 Thin Client Ran My Home-Office Firewall for 90 Days: An OPNsense Diary