Skip to content

pmh-only/mail

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

153 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✉️ mail

All Contributors

The next webmail client

Live demo

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.

Screenshots

Click to zoom in

Focused on

  • Single user only
  • Primary OIDC support
  • Simple and Modern design
  • Fast, SSR-first

Inspired by

How to run

You need running PostgreSQL instance.

Want to try it first without local setup? Use the live demo: https://maildemo.pmh.codes/

  1. Clone this repository
  2. Copy .env.example to .env and replace placeholders
  3. Run pnpm i to download dependencies
  4. Run pnpm dev to start

How to deploy

You can use prebuilt container image for deployment.

docker -itp 3000:3000 --env-file=.env \
  ghcr.io/pmh-only/mail:latest

Run 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.js

For local container deployment, docker compose up --build starts both web and worker services.

.env template is here

Secret storage

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.

Contributors

Taehyun Lim
Taehyun Lim

💻

License / Contribution Rules

This is a copyleft software. and there's no rules for contribution.

About

The next webmail client

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors