karatektus / pl_mail
git clone https://github.com/karatektus/pl_mail.git
v0.3.7 Β· today
π₯ on GitHub Trending today
Self-hosted, Gmail-style mail client. Multi-account IMAP, threaded conversations, real-time push via IMAP IDLE + Mercure. Built with Symfony, FrankenPHP, Hotwire Turbo. Clone and docker compose up.
β
stars, 24h
+90
stars, 7 days Β· #586
β
stars, 30 days
388
β
total Β· +30% this week
31
forks Β· 41 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguagePHP
LicenseAGPL-3.0
Created2026-07-02 (3mo ago)
Last pushtoday
Watchers2
OwnerUser
Seen on GitHub Trending
- 2026-10-20 β #7 weekly in php Β· +90 β
Links
- GitHub: github.com/karatektus/pl_mail
- Releases Β· Issues Β· Hacker News mentions
README excerpt
# plMail Self-hosted mail with a calendar beside it. Connect the mailboxes you already have β IMAP, Gmail, Outlook β and read them side by side in one inbox, on a server you own. ### π Read the handbook β Installing on Docker, Linux, WSL2, macOS or a NAS Β· every feature in detail Β· connecting Gmail and Outlook, with the exact permissions to tick Β· how the internals work. Also on the wiki and in `docs/` β all three are built from the same files. ### π± Apps for your phone - **Android** β karatektus/pl_mail_android - **iOS** β karatektus/pl_mail_ios Both connect to your own plMail server. --- ## What it is A mail client you host yourself. It connects to the mailboxes you already have β IMAP, Gmail, Outlook β syncs them into your own PostgreSQL database, and gives them one inbox, one search box and one set of labels in the browser. It is **not** a mail server: it doesn't receive mail from the internet or host your domain. Because everything is synced locally, search runs against your database, and your mail stays readable when a provider doesn't. ## Highlights - **Every account in one place** β IMAP, Gmail and Outlook side by side, sending aliases included. Credentials are encrypted before they touch the database. - **New mail arrives on its own** β IMAP IDLE, Gmail and Outlook push, browser notifications. - **Search that means it** β full text plus `from:`, `subject:`, `label:`, `has:`, `before:` and friends, completed as you type. Every hit shows the words it matched on, marked, in a window of the message around them. What the words found comes first; what the model merely thought looked similar follows, labelled, and never pushes a real match off the page. - **Filters as a tree** β any/all/none, nested, restated in plain English and counted against real mail before you save. Apply one to mail that arrived before it existed. - **Filed where you drop it** β drag a conversation onto a folder, a label or one of the inbox tabs, several at once if they are ticked. A folder moves it and a label just adds itself, so dropping on "Receipts" does not take the mail out of your inbox; **Starred** stars it and **Unread** β an optional list of every unread conversation, whatever folder it is in β marks it unread, both where it lies. Only the targets that will accept it light up, and a tab you choose by hand stays chosen when the next message in the thread arrives. - **A calendar beside the mail** β two-way sync with Google, Microsoft and CalDAV, a drag-to-move week grid that pans rather than squeezes on a phone, invitations answered in place and landing in the calendar as you answer them, share and booking links. The time is always in view β on the Happening Soon button, under the name, or at the foot of the sidebar with the next thing coming up. - **Files where you keep them** β attach from and save to Drive, Photos, OneDrive, Dropbox, Nextcloud, Immich and Paperless-ngx. - **A language model, if you want one** β point plMail at an Ollama box on y