Created and developed by CBS Team
A modern, mobile-ready Roundcube webmail experience with a custom Cybrense/CBS UI skin, plugin layer, PWA support, and synchronized per-user label management.
About • Preview • Highlights • Features • Architecture • Contributions • Technology • Links
| Destination | Purpose | Link |
|---|---|---|
| Live product website | Explore the public CBS Mail experience and product presentation. | Open cbsmail.cybrense.com |
| Official source | Browse the maintained codebase, documentation, releases, and CI. | Cybrense-IT-Services/CBS_Mail |
| Contribution history | Review commits authored by MrBoodj011 in the official repository. | View authored commits |
| Project contributors | See the full CBS Team contribution graph. | View contributors |
| Roundcube upstream | Explore the open-source webmail foundation used by CBS Mail. | roundcube/roundcubemail |
Important
This repository is a focused project showcase. The actively maintained source, issues, releases, security policy, and contribution workflow live in the official CBS Mail repository.
CBS Mail is a modern, mobile-ready webmail experience developed by the CBS Team at Cybrense IT Services. It keeps Roundcube as the reliable mail engine and adds a polished product layer for organizations that need a branded, responsive, and app-like interface.
The project brings together:
- a custom Cybrense/CBS visual system,
- a responsive desktop, tablet, and mobile shell,
- a dedicated Roundcube plugin layer,
- synchronized per-user email labels,
- PWA installation and safe offline behavior,
- privacy-aware remote-content controls,
- Docker-based deployment,
- and automated browser, security, and quality checks.
CBS Mail is an enhancement layer around Roundcube. IMAP and SMTP remain handled by the configured mail infrastructure, while CBS Mail focuses on the user experience, branding, integration, and deployment workflow.
Desktop workspace |
Mobile mailbox |
Explore the live website • Browse the official source • View the latest release
| Highlight | What it delivers | |
|---|---|---|
| 01 | Branded interface | A consistent Cybrense/CBS identity across login, mail, compose, contacts, settings, dialogs, and notifications. |
| 02 | Responsive workflow | Desktop, tablet, and mobile layouts with touch-friendly navigation and focused message actions. |
| 03 | App-like delivery | PWA metadata, installable icons, a lightweight service worker, and a safe offline fallback. |
| 04 | Personal labels | Multiple labels per message, filtering, counts, assignment controls, and synchronized Roundcube user preferences. |
| 05 | Privacy controls | A branded remote-content trust flow for known senders and explicitly configured domains. |
| 06 | Reproducible deployment | A Docker overlay image, Compose configuration, health checks, backup guidance, and production examples. |
- Branded Roundcube Elastic UI overlay.
- Dark app shell with a clean content workspace.
- Unified styling for Mail, Contacts, Settings, Login, Compose, and message views.
- Responsive drawers, message cards, toolbars, forms, and dialogs.
- Mobile-first interaction targets and PWA-friendly viewport behavior.
- Account-specific labels stored in Roundcube user preferences.
- One-click assignment and removal.
- Multiple labels on a single message.
- Sidebar filtering and live label counts.
- Label badges in the message list and message view.
- Migration support for earlier account-scoped browser data.
- Installable desktop and mobile experience.
- Web app manifest, icons, Apple touch icon, and service worker.
- Network-first behavior that avoids caching authenticated email content.
- Official Roundcube browser notifications.
- Configurable new-mail refresh behavior.
- Roundcube's remote-resource privacy model remains enabled.
- Known-sender and trusted-domain controls are integrated into the CBS interface.
- Trusted sender preferences remain account-specific.
- Deployment documentation explains the security boundary of trusted domains.
- Static web app manifest.
- App icons and Apple touch icon.
- Lightweight service worker.
- Installable desktop and mobile web app.
- Safe offline fallback without caching authenticated mail or message bodies.
- Official Roundcube browser notifications, configurable per account under
Settings > Preferences > Mailbox. - One-minute new-mail refresh by default.
- Optional ManageSieve integration for server-side filters and vacation responses when the configured mail platform supports it.
- Container health checks and a protected backup workflow.
Roundcube blocks remote resources for privacy. CBS Mail keeps that model and adds a branded trust flow for known senders and trusted domains.
Trusted domains are an explicit deployment choice, not proof that an email sender was authenticated. Keep the list narrow because a spoofed sender can otherwise cause remote images to load and expose tracking information.
Trusted sender data is account-specific. Default trusted senders/domains can be
configured in config/config.inc.php.
- Not a mail server.
- Not a replacement for IMAP or SMTP.
- Not a fork of Roundcube core.
- Not server-side IMAP keywords. Labels are CBS Mail metadata stored in Roundcube user preferences, so other mail clients do not see them.
Requirements:
- Docker Desktop or Docker Engine
- Docker Compose
Clone:
git clone https://github.com/Cybrense-IT-Services/CBS_Mail.git
cd CBS_MailCreate local config:
cp .env.example .env
cp config/config.inc.example.php config/config.inc.phpWindows PowerShell:
Copy-Item .env.example .env
Copy-Item config\config.inc.example.php config\config.inc.phpEdit .env and config/config.inc.php for your IMAP/SMTP server.
Set a unique 24-character Roundcube DES key:
$config['des_key'] = 'CHANGE_ME_24_CHAR_SECRET';Build and start:
docker compose up -d --buildOpen:
http://127.0.0.1:8090/
The real local config is ignored by Git:
.env
config/config.inc.php
config/config.docker.inc.php
db/
scratch/
Safe templates included in the repository:
.env.example
config/config.inc.example.php
Default Docker values:
ROUNDCUBEMAIL_DEFAULT_HOST=ssl://imap.example.com
ROUNDCUBEMAIL_DEFAULT_PORT=993
ROUNDCUBEMAIL_SMTP_SERVER=ssl://smtp.example.com
ROUNDCUBEMAIL_SMTP_PORT=465
ROUNDCUBEMAIL_TRUSTED_HOST=mail.example.comSQLite data is persisted through the ./db:/var/roundcube/db mount used by the
official Roundcube image.
The CBS Mail overlay is baked into a local cbs-mail:local image. Only runtime
state and private configuration are mounted, which prevents partial UI updates
and avoids upstream entrypoint warnings from file-level UI mounts.
The currently pinned upstream image contains Roundcube 1.7.1. Dependabot checks the Docker base weekly; digest updates still pass the full desktop/mobile suite before they can be merged.
flowchart LR
User["Browser / Installed PWA"] --> App["CBS Mail Experience"]
subgraph CBS["CBS Mail Overlay"]
Skin["Cybrense UI Skin"]
Plugin["Roundcube Plugin"]
Labels["Label Preferences"]
PWA["PWA Assets"]
Brand["Branding and Templates"]
end
App --> Skin
Skin --> Roundcube["Roundcube Container"]
Plugin --> Roundcube
Labels --> Roundcube
PWA --> App
Brand --> Skin
Roundcube --> IMAP["IMAP Server"]
Roundcube --> SMTP["SMTP Server"]
The official project is delivered as a focused overlay on top of Roundcube. This keeps upstream mail handling separate from the custom interface, plugin, branding, preferences, and deployment assets maintained by the CBS Team.
MrBoodj011 contributes to CBS Mail as part of the CBS Team. The links in this showcase point to the official repository so authorship and project history remain verifiable at commit level.
| Area | Contribution highlights |
|---|---|
| Interface | Cybrense/CBS visual system across login, mail, compose, contacts, settings, dialogs, and notifications. |
| Responsive UI | Desktop, tablet, and mobile layouts designed for an app-like webmail workflow. |
| Roundcube integration | Plugin hooks, asset loading, trusted senders, trusted domains, and user-preference integration. |
| Labels | Synchronized per-user labels with assignment, filtering, counts, persistence, and migration behavior. |
| PWA | Manifest, installable experience, icons, safe offline fallback, and service-worker behavior. |
| Deployment | Docker overlay, Compose setup, public environment templates, Nginx examples, and production guidance. |
| Quality | Browser tests, security checks, CSS checks, CI workflows, and technical documentation. |
The official repository includes an automated quality workflow covering the interface, configuration, and deployment surface.
| Layer | Validation |
|---|---|
| JavaScript | Syntax validation and browser-level interaction coverage. |
| PHP | Plugin and label-store syntax checks inside the Roundcube container. |
| CSS | Quality rules, duplicate detection, and structural checks. |
| Security | Sensitive-data checks and documented private reporting guidance. |
| Docker | Compose validation, container health checks, and reproducible overlay builds. |
| Browser coverage | Playwright flows across desktop, tablet, and mobile layouts. |
| Public website | Dedicated responsive browser tests for the CBS Mail landing site. |
View GitHub Actions • Security policy • Contribution guide
| Guide | Description |
|---|---|
| Configuration | Environment variables, config keys, labels, PWA, and remote-content settings. |
| Deployment | Production deployment checklist and operational guidance. |
| Branding | Logos, favicons, product identity, and branding replacement guidance. |
| Maintenance | CI, release, dependency, and repository hygiene workflow. |
| Troubleshooting | Setup, cache, PWA, label, and mobile troubleshooting. |
| Roadmap | Short-term and long-term project direction. |
| Mail Server Administration | Mailbox administration and ManageSieve boundaries. |
- Website: cbsmail.cybrense.com
- Source: Cybrense-IT-Services/CBS_Mail
- Latest release: CBS Mail v1.0.1
- Releases: Release history
- Issues: Bug reports and feature requests
- Contributors: CBS Team contribution graph
- Organization: Cybrense IT Services
- Company: cybrense.com
- Upstream: Roundcube Webmail
CBS Mail is developed by the CBS Team and is built on top of Roundcube Webmail. Roundcube remains under its own upstream license. Unless a file states otherwise, the custom source and documentation in the official CBS Mail repository are released under GPL-3.0-or-later.
The Cybrense/CBS names, logos, and visual assets remain part of the project's brand identity and do not grant independent trademark rights.
CBS Mail
Modern webmail. Roundcube foundation. Cybrense experience.
CONTRIBUTING.md- local setup, verification, and pull request guidance.SECURITY.md- private security reporting and sensitive-data rules.SUPPORT.md- support expectations and bug report guidance.CODE_OF_CONDUCT.md- community behavior expectations.docs/CONFIGURATION.md- config keys, env vars, labels, PWA, and remote-content settings.docs/TROUBLESHOOTING.md- common setup, cache, PWA, labels, and mobile issues.docs/DEPLOYMENT.md- generic production deployment checklist.docs/BRANDING.md- branding assets and forking guidance.docs/MAINTENANCE.md- CI, release, and repo hygiene workflow.docs/MAIL_SERVER_ADMIN.md- mailbox administration and ManageSieve boundaries.docs/ROADMAP.md- short-term and long-term project direction.
Install development dependencies:
npm ciJavaScript:
node --check plugins/cybrense_skin/cybrense_ui.js
node --check plugins/cybrense_skin/cybrense_pwa.jsDocker Compose:
docker compose config --quiet
docker compose -f tests/docker-compose.e2e.yml config --quietPHP, after the container is running:
docker exec roundcube php -l /var/www/html/plugins/cybrense_skin/cybrense_skin.php
docker exec roundcube php -l /var/www/html/plugins/cybrense_skin/cybrense_label_store.phpSecurity, CSS quality, and real desktop/mobile browser tests:
npm run check:security
npm run check:css
docker compose -f tests/docker-compose.e2e.yml up -d
npm run test:e2e
docker compose -f tests/docker-compose.e2e.yml down -vCSS brace sanity check:
node - <<'NODE'
const fs = require('fs');
const files = [
'plugins/cybrense_skin/cybrense_ui.css',
'plugins/cybrense_skin/cybrense_mobile.css',
'plugins/cybrense_skin/cybrense_compact.css',
'plugins/cybrense_skin/cybrense_labels.css',
'plugins/cybrense_skin/cybrense_login.css'
];
for (const file of files) {
const css = fs.readFileSync(file, 'utf8');
let depth = 0;
let min = 0;
for (const ch of css) {
if (ch === '{') depth++;
else if (ch === '}') depth--;
if (depth < min) min = depth;
}
console.log(`${file}: depth=${depth}, min=${min}`);
if (depth !== 0 || min < 0) process.exitCode = 1;
}
NODEIf the browser keeps showing old UI after CSS/JS changes:
- Hard refresh the page.
- For installed PWA mode, close and reopen the app.
- If needed, unregister the service worker in browser devtools.
The service worker is deliberately network-first. It caches only static PWA fallback assets and never stores authenticated mail content.
CBS Mail is built on top of Roundcube Webmail. Roundcube remains under its own upstream license. See:
Unless a file states otherwise, custom source code and documentation in this
repository are released under GPL-3.0-or-later. See LICENSE.
Branding note:
- The Cybrense/CBS names, logos, and visual assets are included so the interface works as designed.
- They are not a grant of trademark rights.
- Forks for other organizations should replace the branding, product name, PWA metadata, and default trusted sender/domain settings.
See NOTICE for details.
Contributions are welcome. See CONTRIBUTING.md.
Please do not open public issues for exploitable security problems. See
SECURITY.md.