Issue Description
On the latest stalwart I moved a user between two different email/stalwart servers.
This user (me) had several masked email addresses.
I re-created the masked emails as aliases on the new server, and no email is arriving to them.
I can confirm emailing the user regularly works fine.
Expected Behavior
Aliases should work
Actual Behavior
They don’t work
Reproduction Steps
Create an alias such as:
xzfxjvhdz9g6vzzd.9b7xicgxhb6hsd93rgf3czey
And it doesn’t work
Relevant Log Output
N/A
Stalwart Version
v0.16.x
Installation Method
Binary (Linux)
Database Backend
PostgreSQL
Blob Storage
PostgreSQL
Search Engine
PostgreSQL
Directory Backend
Internal
I have reviewed the documentation and FAQ and confirm that my issue is NOT addressed there.
on
I have searched this support forum (open and closed topics) and confirm this is not a duplicate.
on
I understand that topics in this category are triaged by a bot first but a human reply will follow up. If I’d prefer a human-only reply, I’ll add the no-ai tag to my topic.
on
Let me look into how aliases work in Stalwart to help diagnose this.
There are two important things happening here that likely explain why the aliases aren’t working.
The core issue is almost certainly that masked email addresses are an Enterprise Edition feature, not standard aliases.
The address format you described (xzfxjvhdz9g6vzzd.9b7xicgxhb6hsd93rgf3czey) matches the auto-generated format of Stalwart’s Masked Email feature - not a regular account alias. These are distinct objects in Stalwart:
- Regular aliases are simple email address entries linked to an account (e.g.
[email protected]).
- Masked emails are disposable addresses managed as
MaskedEmail objects via the JMAP API. They must be created through Stalwart’s masked email system (WebUI Account Manager, CLI, or JMAP API), not simply added as an alias string on an account.
Key points:
- Masked email is an Enterprise Edition feature only. If your new server does not have an Enterprise license, these addresses cannot be routed at all, even if you manually create aliases with those names.
- Even with an Enterprise license, you cannot simply re-create a masked address as a plain alias. You need to recreate the masked email records as proper
MaskedEmail objects (via WebUI under Account > Masked Addresses, the CLI with stalwart-cli create masked-email, or the JMAP API). The server resolves them differently from regular aliases.
- The
emailPrefix field (the generated local part) only accepts characters a-z, 0-9, and _ (underscore) - and notably dots (.) are not permitted in the prefix. If the original addresses contained dots in the local part, that could also be a complication to be aware of.
What to do:
- If you have an Enterprise license, recreate the addresses as proper
MaskedEmail objects via the WebUI (Account > Masked Addresses) rather than as plain aliases.
- If you don’t have an Enterprise license, masked email routing is not available and you would need to use regular aliases with different (non-masked) addresses instead.
See the docs for full details: Masked email | Stalwart
This is an automated reply from the Stalwart Help Bot. Other community members may follow up if this answer is incomplete or wrong.
Thanks but:
A) This is an enterprise server
B) Even if it wasn’t, it’s still an alias and should work (it is not a masked address anymore).
Also since this is a fresh/new installation that never had the masked addresses on it originally, it should be possible to create them as an alias.
I setup a catch all email and removed (one) of the aliases and I’m not seeing that email hit my catch all account.
This is very interesting..