Email server on moneta
Feasibility study for self-hosting SMTP/IMAP on the lab box
(moneta, Dell PowerEdge R720xd) behind Verizon FiOS at
96.241.219.199. Probed 2026-09-12. Scope: personal / small
household & @gliffy.tv — not a commercial ESP.
Hardware can run a mail stack easily. Deliverability and ISP posture cannot. Running a full internet-facing MTA (inbound MX + direct outbound port 25) on this residential FiOS IP is a poor idea: the PTR is a Verizon pool name, there is no custom reverse DNS, and residential ranges are treated as spam-prone by major receivers. Prefer a hybrid: keep mailbox storage (IMAP) and webmail on moneta if you want, and send/receive through a relay or hosted MX (SES, Mailgun, Migadu, Fastmail, a $5 VPS, or Cloudflare Email Routing inbound).
| Resource | Measured | Mail relevance |
|---|---|---|
| Chassis | Dell PowerEdge R720xd · Ubuntu 22.04 | Server-class, fine for always-on mail |
| CPU | 2× Xeon E5-2670 v2 · 40 threads @ 2.5 GHz | Overkill; mail is I/O + idle RAM, not CPU |
| RAM | 126 GiB total · ~71 GiB available | Mailcow-class stack wants ~6–10 GiB; easy |
| Disk | Root 914 G (83% used) · /data 44 T (59%) |
Put maildirs on /data; avoid filling root |
| Swap | 8 GiB · fully used | Host is memory-pressure prone; don’t starve mail of RAM limits |
| Workload today | ~78 Docker containers · load ~3–5 | Busy homelab; mail is light if capped |
| Existing mail | None (no Postfix/Dovecot/Mailcow/Stalwart) | Greenfield; no migration conflict |
This is where feasibility flips from “easy Docker compose” to “will Gmail accept your mail?”
| Check | Result (2026-09-12) | Implication |
|---|---|---|
| Outbound TCP/25 | Succeeds to Gmail / Google MX / other MXes | FiOS is not currently blocking outbound 25 on this line |
| Outbound TCP/587 | Succeeds (submission) | Relay / smart-host path always available |
| Inbound TCP/25 | Nothing listening; public :25 refused |
Need MTA + router forward; ISP inbound block still possible |
| PTR / rDNS | pool-96-241-219-199.washdc.fios.verizon.net. |
Screams residential. No mail.gliffy.tv PTR |
gliffy.tv MX / SPF / DMARC |
Empty (no MX, no TXT, no DMARC) | Domain not mail-ready yet — easy to fix in Route 53 |
| Public IP | 96.241.219.199 (FiOS washdc pool) |
Shared reputation class with consumer CPE |
| DNS for zone | AWS Route 53 nameservers | You control MX/SPF/DKIM/DMARC once you choose a design |
Even with outbound 25 open, major receivers score
*.fios.verizon.net reverse DNS poorly. Verizon residential
almost never lets you set a matching PTR for a custom hostname. Without
aligned PTR + A + HELO, expect spam folders, soft rejects, or hard
blocks at Outlook/Gmail after volume or first complaints. Port 25 open
≠ deliverable.
| Role | Needs | On moneta alone? |
|---|---|---|
| IMAP / storage | Disk + TLS + auth | Yes — best use of this box |
| Webmail (Roundcube / SnappyMail) | HTTP reverse proxy via Caddy | Yes |
| Submission (clients → you on 587) | Auth + TLS; then relay outbound | Yes (LAN / VPN preferred) |
| Inbound MX (world → you on 25) | Stable IP, open inbound 25, clean lists | Risky on FiOS residential |
| Outbound MTA (you → world on 25) | PTR, SPF, DKIM, warm IP, not PBL | Poor on this PTR |
| Outbound via smart host | SES / Mailgun / Migadu SMTP | Yes — recommended |
| Stack | Footprint | Fit on moneta | Notes |
|---|---|---|---|
| Stalwart Mail Server | ~0.5–2 GB RAM | Excellent | Modern all-in-one; JMAP/IMAP/SMTP; good Docker story |
| docker-mailserver | ~1–3 GB | Excellent | Postfix+Dovecot; well documented; easy relay |
| Mailcow | ~6–10 GB + many containers | OK if capped | Heavier; nicer UI; compete with existing 78 containers |
| Maddy / Haraka + Dovecot | Small | Excellent | More DIY; fine for a nerd lab |
| Hosted MX only (Migadu / Fastmail / Cloudflare Routing) | Zero on moneta | N/A | Least ops; skip self-host entirely for @gliffy.tv |
Point gliffy.tv MX at Migadu / Fastmail / Google Workspace.
Use moneta only for apps that send via that provider’s SMTP on 587.
Feasibility: high. Ops: low.
/data/mail.mail.gliffy.tv for webmail; keep 25/587 off the public internet if you can (WireGuard).Feasibility: high. Deliverability: good.
mail.gliffy.tv A → 96.241.219.199.Feasibility: technically runnable. Success as primary email: low. Expect spam classification, intermittent rejects, and pain when the residential IP reputation wobbles. Only sensible as a lab experiment, not for mail you care about.
$5–10/mo VPS with proper PTR hosts Postfix (MX + outbound). Moneta holds Dovecot maildirs over WireGuard, or syncs via IMAP. Best of both: clean IP reputation + fat local disk.
Feasibility: high. Cost: small. Ops: medium.
| Item | Suggestion |
|---|---|
| Compose project | /dock/mail (match other stacks) |
| Maildir / DB volume | /data/mail (not root LV — root is 83% full) |
| RAM limit | Hard-cap 4–8 GiB; host swap is already exhausted |
| DNS (Route 53) | MX, SPF, DKIM TXT, DMARC (p=none first), optional MTA-STS |
| Caddy | mail.gliffy.tv → webmail only; don’t publish raw SMTP on 443 |
| Backups | Daily maildir + DB snapshot to /data2 or offsite |
| Auth | Prefer SSO later via Authentik; start with strong app passwords |
| Question | Answer |
|---|---|
| Can the hardware run Postfix/Dovecot/Stalwart? | Yes — CPU/RAM/disk are ample |
| Can apps on the LAN send via a local submission port? | Yes |
| Can you relay outbound through SES/Mailgun today? | Yes (587 works) |
Should @gliffy.tv primary MX live only on this FiOS IP? |
No — PTR / residential reputation |
| Should you send bulk or important mail direct from this IP? | No |
| Is a lab / hobby mail experiment fine? | Yes — treat as throwaway addresses |
Feasible as storage + submission + relay client.
Not feasible as a clean, standalone internet mail endpoint
on this Verizon FiOS residential path without accepting deliverability
pain. If you want self-hosted mail that actually works for humans,
choose architecture B or D. If you just
need @gliffy.tv inboxes, architecture A wins
on time.
Probe notes: hostname moneta · WAN 96.241.219.199 ·
PTR pool-96-241-219-199.washdc.fios.verizon.net. · outbound 25/587
open · no local listeners on 25/465/587/993 · ~78 containers · swap full ·
Route 53 for gliffy.tv · no MX/SPF/DMARC yet.