Migrate From Purelymail to JustEmails: IMAP and DNS Cutover Guide
Purelymail to JustEmails migration: imapsync export, MX cutover, DNS rotation, and mail-tester verification for budget email switchers.
Purelymail to JustEmails migration: imapsync export, MX cutover, DNS rotation, and mail-tester verification for budget email switchers.
Scott's email landed on a Friday. Subject line: "Purelymail usage summary." The breakdown showed $3 for the account fee, $9 for three domains, $15 for five users, $7 for storage, and $4 for message volume. $38/month. Not outrageous — but the trend was obvious. Every time we added a domain for a side project or created a mailbox for a contractor, the bill ticked up.
Look, Purelymail is exactly what it claims to be: pay for what you use, no per-user gouging from enterprise vendors, direct support from the developer who built it. If you're running one domain with one mailbox and sending maybe 200 emails a month, staying on Purelymail makes sense. The economics work. Scott deserves the business.
But if you've hit the point where tracking usage feels like overhead — where you're second-guessing whether to create that catch-all because it'll bump the per-domain fee — flat pricing starts to look pretty good. (I say this as someone who once ran a spreadsheet to calculate whether a fourth alias was "worth it." It wasn't worth my time to calculate. That's the problem.)
We're the JustEmails team, part of Velocity Digital Labs. We wrote the JustEmails vs Purelymail comparison already. This guide assumes you've read it and decided to switch. Here's the actual runbook.
All your Purelymail email history moved to JustEmails. MX records pointing to our servers. SPF, DKIM, and DMARC configured and passing authentication. Your aliases and catch-all addresses recreated.
One thing you won't have: Purelymail's Roundcube webmail. JustEmails has its own webmail interface — functional, not fancy. If you live in desktop clients like Thunderbird or Apple Mail, you won't notice a difference. If Roundcube's keyboard shortcuts are burned into your muscle memory, there's a small adjustment period. Honestly, I miss the Roundcube shortcuts. Our webmail is fine. It's not Roundcube.
Before you start:
That last point catches people. Every. Single. Time. If you've enabled two-factor auth on Purelymail, you need to generate an app password for the migration. Check Settings → Security in your Purelymail dashboard.
Note the sending ceiling while you're planning the cutover window. The per-account cap is 20/day for the first week, 200/day in the second, and 500/day from day 15 on, with mailbox sends and API sends counted against the same number. Warm-up is measured from domain verification rather than signup, so a domain added to a long-standing account starts back at the bottom of that ramp. The imapsync run isn't affected — this is about mail you send after MX moves.
Before touching anything, inventory what you have. Purelymail's dashboard shows your domains, users, and routing rules — screenshot or export everything.
Make a list:
Domains:
- mydomain.com
- sideproject.io
Primary mailboxes:
- me@mydomain.com
- support@mydomain.com
- hello@sideproject.io
Aliases:
- team@mydomain.com → me@mydomain.com
- info@sideproject.io → hello@sideproject.io
Catch-all:
- *@mydomain.com → me@mydomain.com (enabled)
You'll recreate these in JustEmails later. Aliases don't migrate automatically — you're setting up equivalent routing on a new server, not transferring configuration. This part is annoying. I won't pretend otherwise.
Log into JustEmails. Add your domains — verification is a TXT record that typically propagates within minutes.
Create a mailbox for every primary address you're migrating. Match them exactly: me@mydomain.com in Purelymail becomes me@mydomain.com in JustEmails.
JustEmails includes unlimited mailboxes on the $49/year plan. No per-user fee. Create all of them now — primary addresses, role accounts, everything.
Write down the IMAP credentials for each mailbox. You'll need them for imapsync.
Don't touch MX records yet. We're syncing mail first, cutting over later.
imapsync copies mail between IMAP servers. It preserves folders, dates, read/unread flags — everything. It's the standard tool for IMAP-to-IMAP migrations, and it handles Purelymail's folder structure cleanly.
On Ubuntu/Debian:
sudo apt update && sudo apt install imapsync
On macOS with Homebrew:
brew install imapsync
Verify it's working:
imapsync --version
Purelymail's IMAP server is imap.purelymail.com. Here's the command template:
imapsync \
--host1 imap.purelymail.com --port1 993 --ssl1 \
--user1 "me@mydomain.com" --password1 "purelymail-password" \
--host2 mail.justemails.app --port2 993 --ssl2 \
--user2 "me@mydomain.com" --password2 "justemails-password" \
--automap
Run this for each mailbox. For multiple accounts, use a CSV and a bash loop:
while IFS=, read -r user pmpass jpass; do
imapsync \
--host1 imap.purelymail.com --port1 993 --ssl1 \
--user1 "$user" --password1 "$pmpass" \
--host2 mail.justemails.app --port2 993 --ssl2 \
--user2 "$user" --password2 "$jpass" \
--automap
done < users.csv
CSV format: email,purelymail-password,justemails-password. One row per mailbox.
First sync takes time depending on archive size. A 5GB mailbox took us about two hours over a decent connection. imapsync is resumable — if it crashes or your laptop sleeps (learned that one the hard way), run the same command again and it picks up where it stopped.
Let it run. Come back later. Make a sandwich. Touch grass. Whatever.
This is the boring-but-critical step that people skip and then regret.
Your MX records have a TTL — maybe 3600 (1 hour), maybe 86400 (24 hours). When you change MX records, some mail servers will keep delivering to Purelymail until the cached TTL expires. That means lost mail if you're not careful.
In your DNS panel:
Now wait at least as long as your old TTL was. If it was 3600, wait an hour minimum. If it was 86400, wait 24 hours. Tedious? Yes. Necessary? Also yes.
While you're waiting, grab the JustEmails DNS records from your domain settings — MX, SPF, DKIM. You'll need them for cutover day.
I skipped this once. "TTL lowering is for paranoid sysadmins," I told myself. Then I spent six hours wondering why mail kept arriving at the old server. Don't be me. I am not a smart person sometimes.
Delete your Purelymail MX records. They look something like:
mx1.purelymail.com (priority 10)
mx2.purelymail.com (priority 20)
Add the JustEmails MX record from your dashboard. Where Purelymail gave you two rows, we use one:
mail1.justemails.app (priority 10)
Check your JustEmails domain settings for the exact value — it's displayed right there.
Your SPF record probably includes Purelymail. It looks something like:
v=spf1 include:_spf.purelymail.com ~all
Change it to:
v=spf1 a:mail1.justemails.app ~all
Purelymail authorises through an include; JustEmails doesn't publish one. You name the sending host directly with a:, and receivers resolve mail1.justemails.app to the IP that's allowed to send for you. If you have other senders (Mailchimp, Resend, your app's transactional emails), keep those includes. Just drop Purelymail's and add ours:
v=spf1 a:mail1.justemails.app include:spf.resend.com ~all
One SPF record total. Multiple SPF records cause validation failures. We covered this in depth in our DMARC guide.
For DKIM, add the new records from JustEmails — they're typically CNAMEs:
je1._domainkey.mydomain.com → je1.dkim.justemails.app
je2._domainkey.mydomain.com → je2.dkim.justemails.app
Delete the old Purelymail DKIM records. Keeping dead records doesn't break anything but it clutters your DNS and future-you will hate present-you for the mess.
Remember that list from Step 1? Now's when you use it.
In JustEmails, go to your domain settings. Add aliases — for each one, specify which primary mailbox should receive the mail.
For catch-all, enable it in domain settings. It's a toggle per domain. Any address at that domain routes to the designated mailbox.
If you had complex routing rules in Purelymail (messages to sales@ split between three people, for example), recreate those as forwarding rules in JustEmails. The interface differs, but the capability is there.
Don't trust "it looks fine." Verify it.
https://mxtoolbox.com/SuperTool.aspx?action=mx:mydomain.com
You should see the single JustEmails MX host. Check SPF and DKIM too. Any warnings should be about propagation timing, not configuration.
Send test emails from an external account (personal Gmail, Outlook.com) to your migrated addresses. Verify they arrive in JustEmails, not Purelymail.
Send from your JustEmails addresses to external accounts. Check they land in inbox, not spam. If they're spam-foldered, check SPF/DKIM alignment — our guide on custom domain email setup covers debugging authentication failures.
Mail that arrived at Purelymail between your initial sync and the MX cutover is still sitting in Purelymail. Run imapsync again for each mailbox:
imapsync \
--host1 imap.purelymail.com --port1 993 --ssl1 \
--user1 "me@mydomain.com" --password1 "purelymail-password" \
--host2 mail.justemails.app --port2 993 --ssl2 \
--user2 "me@mydomain.com" --password2 "justemails-password" \
--automap
Same command as before. imapsync only copies new or changed messages — it won't duplicate. This delta sync is usually fast. Minutes, not hours.
Your mail clients need new server settings. If you're unsure about the difference between SMTP and IMAP ports, our email ports explainer covers everything:
Incoming (IMAP):
Outgoing (SMTP):
Thunderbird, Apple Mail, Outlook, mobile apps — all of them. Budget time for this. Some people update settings in two minutes. Others need screenshots of every field. One person will somehow add the account twice and wonder why they're seeing duplicate drafts. It happens every time. I don't know how. It just does.
"Authentication failed" on imapsync
Your Purelymail password is wrong or you need an app-specific password. If you have 2FA enabled, check Settings → Security in Purelymail and generate one. Make sure you're using the mailbox password, not any other credential.
Mail still arriving at Purelymail after cutover
DNS propagation. Some servers cache aggressively — we've seen mail arrive at old providers 48 hours after cutover. Keep Purelymail active and run delta syncs daily until traffic stops.
DKIM fails validation
Wait 15-60 minutes for CNAME propagation. If it still fails, check the record names — the underscore matters. It's je1._domainkey.mydomain.com, not je1.domainkey.mydomain.com.
SPF validation fails
You probably have two SPF records. Only one is allowed. Delete the old Purelymail SPF include and keep only the JustEmails one. Run dig TXT mydomain.com to verify there's exactly one v=spf1 record.
Catch-all not working
Catch-all is configured in JustEmails, not migrated from Purelymail. Go to your domain settings in JustEmails and explicitly enable it. Check that it's routing to a valid primary mailbox.
Real talk: if you're currently under $30/year on Purelymail with minimal usage, switching to JustEmails at $49/year might not make financial sense. Purelymail's pay-as-you-go model wins for light users. Our flat-fee vs per-mailbox pricing comparison breaks down the math for different team sizes.
But if you're over $40/year and growing — multiple domains, several mailboxes, decent message volume — flat pricing removes the cognitive overhead. No more calculating whether adding a catch-all is worth a few bucks. No more wondering if that tenth domain pushes you over budget.
And if you need transactional email, the math changes entirely. Purelymail doesn't offer an API — you'd add Resend or Postmark at $15-20/month for meaningful volume. JustEmails bundles 1,000 API emails/month free, with additional tiers at $25/year per 10,000 emails/month. For SaaS builders, that bundling covers both mailbox hosting and app-generated email in one subscription. See our SMTP vs API comparison if you're unsure which approach fits your stack.
For tracking engagement across multiple client domains, JustAnalytics handles analytics without the complexity of Google Analytics. And if you're running paid campaigns alongside email, ClickzProtect catches click fraud before it burns your ad budget.
Don't cancel Purelymail immediately. Some mail servers cache DNS records longer than they should. Keep the account active and run imapsync every few days for two weeks after cutover. Once you verify no new mail is arriving at Purelymail, you're safe to close it.
Purelymail's billing is monthly, so there's no penalty for overlapping a couple weeks. Worth it.
No — keep Purelymail active until you've confirmed the migration is complete. Run delta syncs for at least a week after cutover to catch any mail that arrives at Purelymail from servers with aggressive DNS caching. Once you verify no new mail is landing there, cancel. Purelymail's monthly billing makes this easy — you're not locked into annual payments, so there's no penalty for overlapping a few weeks.
Plan for 3-4 days. Day 1 is account setup in JustEmails and the initial imapsync. Day 2 is TTL lowering on your DNS. Day 3 is the MX cutover and SPF/DKIM rotation. Day 4 is delta sync and verification. Hands-on work totals 2-3 hours — the rest is waiting for DNS propagation. Don't rush the TTL window or you'll lose mail to the old server.
Yes, but that's the point of switching. Purelymail charges per user, per domain, and per message — great for light usage, expensive once you scale. JustEmails is $49/year flat regardless of how many domains, mailboxes, or messages you have. If you're migrating because per-use fees started adding up, flat pricing removes that overhead. If you're still under $30/year on Purelymail and don't need the extras, staying might actually make sense.
Yes. Add all domains to JustEmails upfront — unlimited domains are included. For imapsync, use a CSV batch script with all mailboxes across all domains in one file. The MX and DNS changes need to happen per-domain, so we recommend staggering: migrate one domain first as a proof run, verify it works, then batch the rest. One domain per day keeps troubleshooting manageable if something goes wrong.
Unlimited custom domain email hosting for $49/year flat — unlimited domains, unlimited mailboxes, 10 GB storage (expandable), full IMAP/SMTP/POP3. Built for agencies, freelancers, and anyone managing email across more than one domain.