The Mail section in the rail is a mail catcher: a small SMTP server inside DevCatz that accepts every mail your sites send and keeps it on your computer. Nothing is delivered anywhere unless you press Forward… yourself. Password resets, order confirmations and newsletters land in one inbox where you can read, check and delete them. The catcher, its site tab and its settings are the same on macOS and Windows.
How the catcher works
| Address | 127.0.0.1, port 2525 (change it in Settings → Mail) |
| Authentication | Any username and password is accepted. The username names the site, so the inbox can tell sites apart. |
| Encryption | None: STARTTLS is refused. Point your mailer at plain SMTP. |
| Size limit | 50 MB per mail |
| How much is kept | 500 mails by default, and at most 200 MB; the oldest go first |
The catcher listens on 127.0.0.1 only — nothing from outside your computer can reach it, and
Windows Firewall has no reason to ask about it. It runs inside the app, so it stops when DevCatz quits. It
starts with DevCatz unless you switch that off.
Point a site at the catcher
The quickest way is the site’s Mail tab → Write to .env (below). By hand, the lines look like this for Laravel:
MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=shop
MAIL_ENCRYPTION=null
MAIL_HOST can also be the web inbox name (mail.localhost with the default domain).
The inbox
Open Mail in the rail. The list shows every caught mail, newest first:
- All sites filters the list to one site; Read / Unread marks mail, and the search box narrows the list.
- Select mails to delete or mark several at once, or use Delete all (it asks first).
- Mail with attachments is marked in the list; in an open mail, click an attachment to save it.
Reading a mail
A mail opens in four views:
| View | Shows |
|---|---|
| HTML | The rendered mail, in a sandbox. Remote images are blocked until you press Load images. |
| Text | The plain-text part |
| Headers | Every header |
| Source | The raw message |
Desktop shows it full width; Mobile squeezes it to 375 px, like a phone.
Checks
Each mail gets a Checks line that points out common mistakes before your users find them:
- no plain-text part
- images without
alttext - links that still point at a dev domain
- a missing
List-Unsubscribe,Message-IDorDateheader - big attachments
Forward to a real inbox
Forward… sends the mail through your own SMTP account (set it up first in Settings → Mail, below). The original sender becomes Reply-To, so replies still go to the right place. Handy when a client wants to see the real thing in their own mail app.
The web inbox
The same inbox is served at https://mail.<tld> — https://mail.localhost by default. Open it from the
Web inbox button. Shared through Expose, it works on a phone too, which is the easiest way to
see how a mail looks on a real small screen.
The site’s Mail tab
A site gets a Mail tab when its .env has mailer keys. It shows:
- whether the catcher is running (if it is stopped: start it on the Mail page, or let it start with DevCatz),
- Write to .env, with the right lines for the site’s stack — Laravel
MAIL_*, DjangoEMAIL_*, FlaskMAIL_*, andSMTP_*for Nodemailer and Go — shown before anything is written, - Recent mail from this site, with Open Mail to jump to the inbox.
When .env has no mail settings yet, the tab says so and offers the lines to write.
Settings → Mail
| Option | What it does |
|---|---|
| SMTP port | The catcher’s port, 2525 by default. The catcher restarts when it changes. |
| Web inbox domain | The name of the web inbox, mail by default (mail.<tld>). The same name works as MAIL_HOST. |
| Mails kept | How many mails to keep (500). The oldest are deleted beyond this, and beyond 200 MB. |
| Start the mail server when DevCatz launches | Off means you start it by hand on the Mail page. |
| Notification when a mail arrives | A macOSWindows notification per caught mail — site: subject, caught by DevCatz. Clicking it opens the inbox. |
| Send a test mail | Drops a test mail into the inbox, to see that it works |
| Open data folder | Opens ~/Library/Application Support/DevCatz/mail in Finder%APPDATA%\DevCatz\mail in File Explorer |
Forwarding account
The account Forward… sends through:
| Field | Notes |
|---|---|
| SMTP host | For example smtp.gmail.com |
| Port and Security | STARTTLS (587), TLS (465) or None |
| Username and Password | The password is encrypted with the macOS KeychainWindows’ protected storage (DPAPI), for your account only, never kept in plain text |
| Send as (From) | An address the account may send from. The original sender becomes Reply-To. |
Save keeps it; Remove forgets it.
In the menu bar
The DevCatz icon in the menu bar (the system tray on Windows) has a mail line — Mail · N new, N caught or Mail · catcher off — with Open Inbox and Start Mail Server / Stop Mail Server. See Monitoring and the menu bar.
Mail gateways
Need a real mail server — IMAP, inbound mail, an HTTP sending API? The Gateways section has Stalwart and Postal. Both deliver into this same catcher, so nothing leaves your computer there either.
Limits
- No TLS: the catcher refuses STARTTLS, so a mailer that insists on encryption needs it switched off for local work.
- 50 MB per mail; 500 mails and 200 MB in total by default.
- The catcher lives inside DevCatz: when the app is not running, mail sent by a site fails to connect.
Last updated 2026-11-01