Sends and receives for you from a public box, so your mail server stays hidden at home and spam stops at the door
On this page
Good to know before you install
Your provider must allow port 25, and the reverse DNS of this server's address must be set to its mail name.
At a glance#
- What it is
- Your mail's own post office Communication ยท made by the LibrePortal project
- Where it opens
- No web page It works in the background
- Updates
- When you choose New versions wait for you to press Update
- Backups
- Left out Not in the scheduled backups unless you switch it on
- Copies
- One per server
- Needs
- A domain for the relay's name (it becomes post.<your domain>)
There's no step-by-step guide for LibrePost here yet. Everything below comes straight from the app catalogue, so it's what LibrePortal really does when you install it. For using LibrePost itself, its own documentation is the place to go: github.com/stalwartlabs/stalwart.
What the install asks#
When you install LibrePost, LibrePortal asks for a little more than usual before it starts:
- Quick settings
Addresses and ports#
LibrePost has 2 ports. LibrePortal picks a free port number for each when you install, so yours will differ from anyone else's. The Config tab's Network section shows them, and the app's Open button uses the right one. "Anyone" means it's reachable from wherever your server is reachable; you can make it private later.
| What it is | Who can reach it | With a domain |
|---|---|---|
| Mail from the world (SMTP) TCP | Anyone | Port only |
| The tunnel to your home server (WireGuard) UDP | Anyone | Port only |
Settings#
These are LibrePost's own settings on its Config tab. The settings every app shares, like backups, updates and where its data lives, are explained in App pages and settings.
| Setting | What it does | Starts as |
|---|---|---|
| Mail Name | The name the world reaches this box by. It is the relay's mail name, and the reverse DNS of this server's address must say the same. Leave empty for post.<your first domain>. | Empty |
| Junk Mail | How firmly spam is turned away while the sender is still connected. Mail it refuses is bounced to its sender at once, so nothing disappears silently. Choices: Normal, Firm, Gentle |
normal |
In its config file#
A few more aren't on the Config tab yet. They live in the app's config file, described here so you know they exist. How to change them.
| Setting | What it does | Starts as |
|---|---|---|
NameCFG_LIBREPOST_DISPLAY_NAME |
What this app is called on your dashboards. Leave empty to use its usual name | Empty |
Show on the LibrePortal DashboardCFG_LIBREPOST_SHOW_ON_DASHBOARD |
Whether this app gets a shortcut on the front page of the LibrePortal WebUI; it has no web page of its own Choices: true, false |
false |
Tools#
LibrePost's Tools tab has 3 buttons for jobs you'd otherwise need a terminal for. Each one runs as a task, so you can watch it on the Tasks page and read what it did. More about Tools.
Look at the tunnel, the queue and the DNS records again, and refresh this page.
Replace the pairing. The tunnel to the current home server stops until it uses the new code, which then shows on this page.
Take the home server's end of the tunnel away. The relay then accepts mail for no domain.
Works with#
These are the other apps LibrePost knows how to work with. Once it's installed, its page shows the same list with whether each one is connected. How this works.
- Grafana: Shows dashboards for the apps that have one. works with every app
- Prometheus: Collects metrics from the apps that can export them. works with every app
- Uptime Kuma: Watches your apps and shows when one goes down. works with every app
Privacy and security#
Worth knowing LibrePost reads your mail while it passes through the public box, to filter spam, and keeps none once it is delivered. It sends no reports, downloads spam rules from GitHub and does normal mail lookups.
What leaves this server#
- Spam-filter rules and the web admin are downloaded from GitHub, which sees this server's address
- Normal mail traffic: DNS blocklists, SPF and DMARC lookups, and the mail itself to wherever it is addressed
What LibrePortal turns off#
- Open relaying: mail is accepted only for the domains your home server registered
- Every mail service but port 25 for the world: no IMAP, POP, web admin or JMAP is published
Licence: AGPL-3.0 (community); optional paid Enterprise licence. Audited: 22 October 2026. See the privacy of every app and the Promise.
Sources#
Under the hood#
- It runs these images:
stalwartlabs/stalwart:v0.16.27@sha256:c429b311c93db5606598abc1c68225a85a6953183848ae01bee9c6a98885836c,ghcr.io/wg-easy/wg-easy:15.4.0@sha256:0e7bc9d34e86ddcaa92bc700d4d7dc9b33291dbc07ac8d13382f7c2095f949ec. The version is pinned, and moves only when you update it. - It can sit behind Authelia's sign-in once Authelia is installed.
- Its own project and documentation: github.com/stalwartlabs/stalwart
Ports, settings, tools and connections on this page are read from LibrePortal v0.10.97's app catalogue each time the guide is built.