This service mimics the Addy.io API to allow Bitwarden to generate email aliases directly on your email providers. It uses coolname for human-readable aliases. These services are supported at this moment:
- Purelymail
- MXRoute
Although there's authentication to the app, diligence is needed when exposing this utility to the public.
I'm not responsible for any compromised data.
- Configure the environment variables in a
.envfile or use them directly inside yourdocker-compose.yml:SERVER_API_TOKEN=your_secure_token_here ALIAS_PROVIDER=<your_provider> # available options: mxroute, purelymail # "mxroute" ALIAS_PROVIDER MXROUTE_SERVER=<your_server>.mxrouting.net MXROUTE_USERNAME=<control_pane_username> MXROUTE_API_KEY=<control_pane_api_key> # "purelymail" ALIAS_PROVIDER PURELYMAIL_API_KEY=<api_key> SERVER_ADDRESS=http://bitwarden-alias-provider-server:6123 # Optional for web app
- Grab the example docker-compose file from here.
- Start the service:
docker-compose up -d
The application will be running on http://localhost:6123 by default.
Configure Bitwarden's "Generator" Tab:
- Type: Forwarded email alias
- Service: Addy.io
- Email domain:
- Since we are "hacking" the Addy.io API spec for this plugin to work, all the customization is done through this field. The Web UI has an options configurator for ease of use, although optional
- Refer to the Available Options section below
- API Key: Use the value of
SERVER_API_TOKEN - Self-host server URL:
http://<server_address>:6123/add - Click the "Generate email" icon
Configure these in the "Email domain" field using key=value format, separated by commas.
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
domain |
String | yes | None | The domain to create the alias on. |
destination |
String | yes | None | The destination email address. |
template |
String | no | <slug> |
Format template. Allowed: <slug>, <hex>. |
prefix |
String | no | None | Prefix added to the alias. |
suffix |
String | no | None | Suffix added to the alias. |
hex_length |
Number | no | 6 | Length of the random hex string. |
slug_length |
Number | no | 2 | Number of words in the slug. |
slug_separator |
String | no | _ | Separator between slug words. |
alias_separator |
String | no | _ | Separator between alias components. |
Example Input:
domain=test.com,destination=hello@test.com,prefix=foo,template=<slug><hex>,alias_separator=-
Result: foo-good_morning-8ed379@test.com
Note: If you encounter issues, try clearing the extension cache.
This project includes a web interface for managing aliases and an API for direct access.
- Web App:
http://localhost:6124(default) - API Status:
GET / - List Aliases:
GET /list/<domain> - Add Alias:
POST /add - Delete Alias:
DELETE /delete/<alias_email>
This project provides a helper browser extension (Chrome & Firefox) that allows you to easily generate option strings and manage your aliases without opening the full web app.
- Download: Download the
bitwarden-alias-provider-extension.zipfrom the latest GitHub Actions run - Unzip: Extract the zip file to a folder
- Go to
chrome://extensions/ - Enable Developer mode (top right toggle)
- Click Load unpacked
- Select the folder where you extracted the extension
- Go to
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on...
- Select the
manifest.jsonfile inside the extracted folder
The only method that I support right now is using a Nix shell.
- Enter the development shell:
nix develop - Run services:
docker compose up