Virtual hosting is when a single mail host accepts mail for multiple domains. James has full support for this feature, including a very capable VirtualUserTable facility rivaling that in any other database server.
The confusion about Virtual Hosting is that people make the naive assumption that if you have joe@domaina and joe@domainb, that just because they receive e-mail as "joe@", that their POP3 account has the same name. This is the issue that causes the most errors. However, the only real relationship between an SMTP localpart ("joe" in our example) and the POP3 mailbox is the relationship that the mail server creates. This is why your mail client (MUA) has places to specify your POP3 login information, rather than using your e-mail address. By default, in other words without a mapping, James would expect to store and retrieve using the same key. However, as soon as you add a mapping, that changes. So you can use joe-smith and joe-jones, or joe-domaina and joe-domainb, or mailbox-1 and mailbox-2, or any other mapping that you wish in order to have unique mailbox names. And that is what you use in your POP3 account.
At present, James does not allow the use of "@" in a POP3 mailbox name. Some people have made different patches to allow POP3 mailbox names of the type they prefer. Here is a link to one such message from a user who has patched James to accept and map the '@' symbol:
At such point as James has POP3 mapping built-in, it is likely to be by allowing the POP3 handler to access virtual user table information.