pl_mail README

The project's README from github.com/karatektus/pl_mail. As one markdown file: README.md.

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.

PHP Symfony PostgreSQL License

📖 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

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.

The plMail inbox

Highlights

A look around

Reading a thread Writing a message
Threads — replies collapse into one conversation. Compose — rich text, autocomplete, undo send.
Dark mode Calendar
Themes — 41 of them, light and dark. Calendar — docked beside the mail, or its own page.
Filters Admin
Filters — counted before you save. Admin — workers, push health, logs, queue.
Choosing an icon Choosing its colours
Icons — ten of them, a blue horn among them. Colourways — each icon in its own colours, or any of 32.

Screenshots use demo data — none of the accounts, senders or messages shown are real.

Install

Images are published for linux/amd64 and linux/arm64. Nothing to fill in first: the secrets are generated on first start, and the public address is asked for on the setup screen.

Docker

git clone https://github.com/karatektus/pl_mail.git
cd pl_mail
docker compose up -d

Open https://localhost and create your account. From another machine, open https:// and the server's address instead; the browser warns about the self-signed certificate once and lets you continue.

TrueNAS

plMail is in the TrueNAS app catalogue. Apps → Discover Apps, search for plMail, and install it. The form asks for one thing, a database password; everything else has a default that works.

Reach it on port 30519, and put a reverse proxy in front of it if it should be reachable from outside. Updates arrive through the catalogue like any other app's.

Then

Add an IMAP mailbox in Settings → Mail accounts and you're done. Gmail and Outlook need OAuth credentials from Google or Microsoft first — the handbook walks through both, including the optional Pub/Sub topic for instant Gmail delivery.

Back up two things, separately: the PostgreSQL data and var/secrets/generated.env. The database holds your mail; the key inside that file unlocks the credentials in it. Keeping them apart is the point — and losing the key means the stored mailbox passwords are gone.

Contributing

Bug reports and pull requests welcome — see CONTRIBUTING.md for the dev setup, the test suites and the console commands.

License

AGPL-3.0.

pl_mail (karatektus/pl_mail)

Searching Database…

Что это?plMail — self-hosted почтовый клиент в духе Gmail, который подключается к уже имеющимся ящикам IMAP, Gmail и Outlook, синхронизирует их в вашу собственную базу PostgreSQL и даёт единый инбокс, строку поиска и набор меток в браузере.
Это почтовый сервер или просто клиент для уже имеющейся у меня почты?Просто клиент. Он не принимает почту из интернета и не хостит ваш домен — он синхронизирует существующие аккаунты IMAP, Gmail и Outlook в свою базу, чтобы у вас был единый инбокс локально.
Как его запустить?Склонируйте репозиторий и выполните 'docker compose up', затем откройте адрес сервера и создайте аккаунт. Настраивать заранее ничего не нужно — секреты генерируются при первом старте, а публичный адрес задаётся с экрана настройки.
Нужны ли учётные данные OAuth для подключения Gmail или Outlook?Для аккаунтов Gmail и Outlook — да: нужны учётные данные OAuth от Google или Microsoft, что пошагово разобрано в руководстве, включая опциональную тему Pub/Sub для мгновенного push в Gmail. Обычные IMAP-ящики просто добавляются в Settings без дополнительной настройки.
Что будет, если я потеряю сгенерированный файл секретов?Ключ шифрования в var/secrets/generated.env расшифровывает учётные данные ящиков, хранящиеся в PostgreSQL; если потерять этот файл без отдельной резервной копии, сохранённые пароли ящиков пропадут навсегда.
Можно ли запустить plMail на NAS вместо обычного сервера?Да — plMail есть в каталоге приложений TrueNAS и устанавливается вводом лишь пароля базы данных; кроме того, готовые Docker-образы публикуются для linux/amd64 и linux/arm64 под любой другой Docker-хост.
Покидает ли мою сеть какая-либо почта или AI-данные?Нет. Учётные данные шифруются ещё до попадания в базу, а опциональные AI-функции работают с экземпляром Ollama в вашей же сети, по умолчанию выключены, и ничего из них сеть не покидает.
Есть ли мобильные приложения?Да — сопутствующие приложения для Android (karatektus/plmailandroid) и iOS (karatektus/plmailios) подключаются к вашему собственному self-hosted серверу plMail.
Может ли plMail автоматически раскладывать почту по вкладкам?Да — либо правилами по заголовкам, которые всегда сортируют одинаково, либо тем, что локальная AI-модель читает каждое письмо; для Gmail есть опция, позволяющая любому из них переопределять собственную классификацию Google; кнопка Report сообщает администратору об ошибках.
Есть ли в нём календарь?Да — календарь соседствует с почтой: двусторонняя синхронизация с Google, Microsoft и CalDAV, недельная сетка с перетаскиванием, ответы на приглашения на месте, а также ссылки для общего доступа и записи.
Насколько настраиваемый интерфейс?plMail поставляется с 41 светлой и тёмной темами, десятью иконками приложения/домашнего экрана в 32 цветовых вариантах каждая и вариантами языка интерфейса, включая английский, немецкий и «пиратский» режим.
Creator
karatektus
Size
31.6 MB
Stars
331
Updated
CommitOct 16
Age
3mo
Commits · 90 Days