There are 2 ways to create usernames depending on the value of <enableVirtualHosting/> in James.xml
1.- false: a String (without @). In this case, the associated email will be the username + the default domain defined in James.xml
2.- true: the option 1.- or a email address.
Mapping is always from a mail address (firstname.lastname@example.org) to a username (so : mail -> username).
For XMLVirtualUserTable, mappings are defined in virtualusertable-store.xml and are statically read at startup (so you need to restart).
For JDBCVirtualUserTable, mappings can be created via management console and are taken into account without the need to restart.
In both cases, the mail of the mapping ("mail -> username) can be a mail of a domain listed as a james local domain, or any other external domain.
For multidomain support, the classical path is:
- create the list of local domains
- create the username such as "email@example.com".
After, create your mappings : addmapping any_email_address username
With this change, we don't support anymore something like "the list of domains is generated from a list of existing mappings" (I guess this is what was done with the previous impl).
But with that, I think there was a mix of 2 things : the domains list, and the mapping list.
For the record, the forward and alias stuff are no more supported.
If still ok to everyone to remove the "implements DomainList", the possible configs will be documented on James 3.0 web site.