Chrome and Firefox extension to manage aliases for a self-hosted Mailcow instance directly from the browser.
No local server required. The extension directly contacts your Mailcow API.
- List, create, delete and toggle aliases
- Direct connection to your Mailcow instance (no proxy/backend)
- Secure API key storage via
chrome.storage.sync - HTTPS enforced (localhost exception for development)
- 13 languages supported
- Manifest V3 compatible (Chrome & Firefox)
Extension (popup / options)
↓ fetch() with X-API-Key header
↓ host_permissions: https://*/* (Manifest V3)
Self-hosted Mailcow API (https://your-domain.com/api/v1/)
- Open
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" → select the
extension/folder
- Open
about:debugging - "This Firefox" → "Load Temporary Add-on"
- Select
extension/manifest.json
- Click on the extension icon → "Configure now" (or open the Options page)
- Enter:
- Mailcow URL:
https://mail.your-domain.com - API Key: generated in Mailcow → Configuration → Access → API
- Mailcow URL:
- "Test connection" → "Save"
.
├── extension/
│ ├── manifest.json # Manifest V3 (host_permissions)
│ ├── js/
│ │ ├── mailcow-api.js # ES Module — Mailcow API client
│ │ └── i18n.js # Internationalization helper
│ ├── popup/ # Main interface (alias list + CRUD)
│ ├── options/ # Configuration page (URL + API key)
│ ├── background/ # Service worker (badge + first-install)
│ └── _locales/ # 13 languages (en, fr, de, es, it, ja, ko, nl, pl, pt_BR, ru, tr, zh_CN)
├── package.sh # Build script for Chrome/Firefox distribution
└── .github/ # Copilot instructions, agents and skills
- API key stored in
chrome.storage.sync(natively encrypted by browser/OS) - Never sent to a third-party server — only to your Mailcow instance
- HTTPS enforced for all non-localhost connections
- User input validation (email format)
- AbortController timeout (10s) on each request
- Connection tested before saving credentials
To generate .zip files ready for store publication:
chmod +x package.sh
./package.sh
# → dist/mailcow-alias-v0.1.0-chrome.zip
# → dist/mailcow-alias-v0.1.0-firefox.zipVersion is read automatically from extension/manifest.json.
- Go to the Chrome Web Store Developer Dashboard
- Create a new item and upload
dist/mailcow-alias-vX.Y.Z-chrome.zip
- Go to the Add-on Developer Hub
- "Submit a New Add-on" and upload
dist/mailcow-alias-vX.Y.Z-firefox.zip
MIT