LoginDaddy
Blog · alternatives

Mailinator alternative: when public inboxes are the point (and when they aren't)

Start with the threat model, not the tool. Mailinator's mailboxes are deliberately public — no login, anyone can read anything. For one class of work that is exactly right. For another it is disqualifying. This post sorts the two.

Q: What is a public inbox good for?

A: Testing. You are checking that your own app sends the welcome email. You want five teammates to watch the same mailbox. Nothing in it matters and everything in it is yours anyway. Mailinator has served this niche for well over a decade and remains good at it.

Q: What breaks when the code matters?

A: A password-reset link or a signup OTP in a public inbox is readable by whoever opens that inbox name first. The attack is trivial — no phishing required, just timing. If the message grants access to something, the mailbox must not be world-readable.

Q: What does the alternative look like?

A: A session-bound box: the server maps mail to your browser session, not to a public name. That is how this inbox works — one Turnstile check, an assigned address, mail for about two days, rotation that purges the old box. Nobody else's tab can open your session's mail by guessing a string.

Q: So Mailinator is bad?

A: No. It is a public tool doing a public job. The mistake is using a public job's tool for a private job's mail. Match the mailbox to the message: testing goes public, codes go private.

Open the inbox · all notes

Public inboxes in CI: the legitimate stronghold

Give the public model its full due, because in testing it is not merely adequate but structurally ideal. A QA engineer verifying welcome emails wants exactly what Mailinator provides: an address that requires no setup, mail visible to the whole team without credential sharing, and zero retention management. Parallel test runs can each use a distinct public name with no coordination overhead. Flaky-mail debugging benefits from visibility — anyone can open the run's mailbox and see what arrived. Webhook-based private alternatives add moving parts (endpoint maintenance, signature verification, payload logging) that earn their keep in production but tax a test suite. The economics agree: testing generates enormous mailbox counts with near-zero per-mailbox value, which is precisely the workload public inboxes price at zero. Teams that route test mail through private session boxes pay coordination costs on every run for privacy nobody needed. Match the mailbox to the message was the thesis; testing is the existence proof.

Enumeration: harvesting public mail at scale

State the attack plainly so the threat model stays concrete. Public inboxes are enumerable: iterate plausible names, fetch each mailbox, parse for codes, links, and personal data. Automation makes this cheap — a modest script covers dictionary names continuously, and targeted attackers enumerate names associated with a specific victim (usernames reused across services are the bridge). Harvested codes enable account takeovers where the signup used a public inbox; harvested personal data feeds phishing with unnerving context ("here is the receipt you just received"). Defenses exist on the operator side — rate limits, CAPTCHAs on aggressive patterns, short retention shrinking the archive — but enumeration of current mail is fundamentally hard to stop without breaking legitimate access, because legitimate access is unauthenticated by design. The user-side defense is total and simple: never let sensitive mail touch a public namespace. Every exception ever made to this rule has a story, and none of the stories end well.

Rate limiting design: buckets, windows, and dignity

Rate limits are the immune system of public infrastructure, and good ones share a shape: token buckets that allow bursts (humans click in bursts) while capping sustained rates (scripts do not burst, they grind). Per-IP limits catch naive scrapers; per-inbox limits catch targeted harvesting; global limits protect the servers themselves. The dignity constraint matters: limits must block abuse without punishing legitimate use, which means generous bursts, clear error messages, and no CAPTCHA walls on first contact. Our own gate (one Turnstile check, then the box opens) follows the same philosophy — verify humanity once, then stay out of the way. Users experience rate limits only when sharing infrastructure with abusers, which on public mail is always; understanding the mechanism converts frustration ("why am I blocked?") into diagnosis ("someone's script shares my exit IP — wait, retry, or rotate network"). Shared infrastructure means shared ceilings, and private boxes are the exit from the tragedy of the commons.

Abuse controls on public infrastructure

Running world-readable mail at scale invites abuse, and public operators defend with layered controls worth knowing about. Rate limiting per IP and per inbox name slows enumeration and harvesting. Content filtering and retention caps bound storage and legal exposure. Blocklists flow both ways: senders block public domains aggressively (which is why test mail sometimes never arrives from strict providers), and operators block abusive senders and content. Paid tiers typically buy private namespaces, longer retention, and API access — the same monetization shape as the rest of the category. What operators cannot do is make a public inbox private without breaking its defining property; the privacy fix is always a different product, not a setting. Users sometimes ask whether deleting a message from a public inbox protects it — it removes that copy from that view, but anything observed in the window between arrival and deletion was observable, and nothing about the model promises otherwise.

A decision tree for mailbox choice

Consolidate the series into procedure. One: is the mail mine to protect, or nobody's? Test data and newsletters go public; codes, resets, and personal correspondence go private. Two: does anyone else need to see it? Team-visible testing goes public; solo jobs go session-bound. Three: how long must it live? Minutes favor auto-destruct; slow senders favor waiting rooms. Four: will the sender accept the domain? Strict forms reject known public and disposable domains alike — test with the actual form, and keep a fallback product from a different category. Five: what happens if a stranger reads it? If the answer is "nothing," publicity is free and correct. If the answer involves account access, money, or identity, privacy is not optional and convenience arguments expire. Run these five questions per job rather than per product loyalty, and the right tab opens itself.

Legal exposure of public mail: the operator's view

Running world-readable mail creates legal surface worth understanding as a user, because it shapes what operators must do. Public inboxes inevitably receive illegal content, credentials, and personal data belonging to third parties — the operator did not solicit any of it, but hosts all of it. Responses follow the standard playbook: terms prohibiting misuse, automated filtering for known-bad content, takedown processes for reported material, and short retention bounding exposure windows. Law enforcement requests arrive like they do for any host, answered under the operator's jurisdiction with whatever is retained — another argument for short retention as a design choice rather than a limitation. For users, the implications are practical, not theoretical: do not route anything sensitive through public namespaces (it may be preserved in legal holds beyond stated retention), do not use public mail for anything you would not want read aloud in a proceeding, and understand that "deleted" on someone else's infrastructure is a request, not a physical guarantee. Private session boxes narrow this exposure without eliminating it; the operator can still see stored mail during its window. Email is a postcard that passes through many hands — public inboxes just make the metaphor literal.

Teaching with public mail: headers, SMTP, and trust

The most wholesome use of public inboxes is educational: they make email's internals visible. Students can inspect full headers (received chains showing every hop, SPF/DKIM authentication results, spam scores with rule breakdowns), watch greylisting delays in real time, and observe how the same message renders across different reading views. Exercises practically design themselves: trace a message's path from headers alone, explain why a code took eleven minutes (queue, greylist, retry — the timeline from the earlier post), identify which authentication checks passed and what each proves. Public inboxes are ideal lab equipment precisely because they are unguarded — no account setup, no privacy review, just observable infrastructure. Teachers: pair a public inbox with a sending tool and let students watch the whole protocol breathe. The lesson that sticks is email's trust model — every hop trusted implicitly, authentication bolted on decades later, privacy absent by original design. No lecture conveys what one traced header does.

Open the inbox · all notes

Carry the decision tree as a pocket card: nobody's mail goes public, shared-team mail goes public, slow senders get waiting rooms, strict forms get tested twice, and stranger-readable consequences veto publicity every time. Five questions, ten seconds, correct tab. Most email security advice fails because it demands vigilance as a lifestyle; this card demands ten seconds per job, which humans can actually sustain. Tape it to the monitor if you run a team — the junior engineer about to paste a production reset link into a public inbox will thank you, or rather, will never need to, which is the entire point of procedures that fit in a pocket.

Open inbox