The next webmail client
Try it now: https://maildemo.pmh.codes/
The demo runs with preloaded data and resets automatically, so you can explore the full UI without configuring PostgreSQL, IMAP, SMTP, or OIDC.
Click to zoom in
- Single user only
- Primary OIDC support
- Simple and Modern design
- Fast, SSR-first
You need running PostgreSQL instance.
Want to try it first without local setup? Use the live demo: https://maildemo.pmh.codes/
- Clone this repository
- Copy
.env.exampleto.envand replace placeholders - Run
pnpm ito download dependencies - Run
pnpm devto start
You can use prebuilt container image for deployment.
docker -itp 3000:3000 --env-file=.env \
ghcr.io/pmh-only/mail:latestRun the background worker as a separate container. The worker handles IMAP actions, SMTP sends, and periodic mailbox sync.
docker run --name worker --env-file=.env \
ghcr.io/pmh-only/mail:latest node build-worker/worker.jsFor local container deployment, docker compose up --build starts both web and
worker services.
.env template is here
Set MAIL_SECRET_KEY in both the web and worker environments to encrypt IMAP and
SMTP passwords saved from the settings UI. Existing plaintext database passwords
remain readable without the key, and migrate to enc:v1 encrypted values after
the key is configured and settings are loaded.
Taehyun Lim 💻 |
This is a copyleft software. and there's no rules for contribution.



