Previously, I made a help post in this thread (“Are there any good open-source unified email inboxes?”) looking for a lightweight solution that could run on Serv00 and aggregate multiple email accounts. Are there any good open-source unified email inboxes? - Technology & Creation / Open Source - NodeLoc
After looking around:
- Roundcube is too heavy and troublesome to configure
- Some open-source projects require Docker / a VPS
- There are pure-PHP options, but most only support one email account, or require plugins for multiple accounts
- Serv00’s free hosting is also unsuitable for running persistent processes
In the end, I had no choice but to write one myself.
Zmail System
In one sentence: A multi-email aggregation system deployed on shared hosting that puts Gmail, QQ, Outlook, and 163 into a single web interface.
No Docker or VPS is required—any shared host supporting PHP + IMAP will work.
Features
Multi-email aggregation — Gmail / QQ / Outlook / 163 / 126 / custom IMAP
Local filtering — Emails containing keywords such as “unsubscribe” and “opt out” are filtered locally only; cloud emails are left completely untouched
Attachment downloads — Automatically downloads attachments, with one-click downloads from the web interface
Email forwarding — Automatically forwards emails containing keywords to Telegram / Server酱 / Webhook
Labels — Starred / important / unread, switch between them anytime
Dark mode — Switch with one click
Mobile support — Drawer-style layout, with the list and details displayed in split view
Automatic email fetching — Scheduled fetching via Cron, with a minimum interval of 1 minute
Scheduled cleanup — Automatically deletes expired emails and attachments
Screenshots
(Insert a screenshot of the dark-mode inbox here)
Three-step deployment
1. Upload the code
Upload the project folder to public_html/mail/.
2. Open the installation wizard
https://your-domain/mail/install.php
Complete the five steps: environment check → create database → create administrator → add email account → finish.
3. Configure Cron
* * * * * /usr/local/bin/php /home/username/public_html/mail/fetch_mail.php
It runs very reliably on Serv00 in my testing, with very low CPU / memory usage.
Requirements
- PHP 7.4+ (8.0+ recommended)
- Extensions:
imap,pdo_sqlite,mbstring,curl,session - Works with Serv00 / Baota / cPanel
Project
MIT licensed—modify it and use it however you like.
Some design trade-offs
I intentionally made several decisions while writing it, so here’s an explanation:
1. Why SQLite instead of MySQL?
Applying for a database is troublesome for shared-hosting users. SQLite handles everything in a single file, without needing to create a database or users. It’s more than sufficient on Serv00.
2. Why Cron instead of a persistent connection?
Serv00’s free hosting does not allow persistent processes, so a persistent imap_open + IMAP IDLE connection won’t work. Polling every minute with Cron is the only viable solution, with a delay of ≤1 minute.
3. Why “local filtering” instead of cloud deletion?
Some aggregation tools delete emails containing “unsubscribe” directly from the cloud. But if there’s a false positive, you’ll lose that email permanently. My approach is to filter locally only while keeping the cloud copy unchanged—when you check Gmail/QQ in a browser, the email is still there.
4. Why not make it a Docker image?
The target users are shared-hosting users. Docker would only raise the barrier to entry.
Welcome to try it and share feedback
If you encounter problems deploying it on Serv00 or another shared host, feel free to reply here or open an issue. PRs are welcome.
If this project helps you, give it a
to show your support ![]()






