Incoming E-mail messages can be sorted based on the recipient domain name with the virtusertable utility. Because user accounts are not directly associated with any specific domain names, a virtusertable must be used to differentiate between recipient domain names. For example, a virtusertable mapping will allow you to direct E-mail messages for webmaster@mydomain.name and webmaster@subhost.name to different users on your VPS v2.

Configuring Virtusertable mappings

In order to create virtusertable mappings, you must first create a text file in the /etc/mail/ directory of your server (there is a sample file in that directory named virtusertable.sample). This file will contain virtusertable mappings.

Each entry in a virtusertable should be on a single line. The original recipient address on the left hand side, with one or more spaces or tabs separating it from the right hand side, which contains the destination address. Using the example above, the virtusertable mapping would be as follows:

webmaster@mydomain.name     tom
webmaster@subhost.name      steve  

The original recipient is the E-mail address that people will send messages to, and can be either a full address (username@domain.name), or a catch all for all messages to the specified domain (@domain.name). If you want to create multiple virtusertable entries for a single domain, make sure that you put the catch all below any other entries for that same domain name. For example:

webmaster@mydomain.name    tom
support@mydomain.name      someuser@hotmail.com
john@mydomain.name         john
@mydomain.name             john

The destination address should be a local user, an alias, or a remote E-mail address. You may also use a %1 to indicate that the original user should be prepended to a catch all.

Any time you make a change to the /etc/mail/virtusertable text file, you will need to create a db file that sendmail can read. The following command will create the /etc/mail/virtusertable.db file when run by root:

# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

Alternatively, a shorter version of this same command can be used:

# vnewvirtmaps

Example Virtusertable Entries

The following entry would deliver any message sent to floyd@example.com to the local account floydr.

floyd@example.com		floydr

The next entry will deliver a message sent to john@example.com to his personal E-mail account with his ISP.

john@example.com		jfranklin@my-isp.com

Any other E-mail sent to the super-host.com domain will go to Floyd's local account.

@super-host.com			floydr

Anything sent to a user at example.net will be sent to example.com, but will not change the username the message was originally sent to (only the domain is modified).

@example.net			%1@example.com

The following entry will reject mail addressed to any address at the example.net domain that is not defined in the virtusertable file. The sender will receive an appropriate error code plus the description, "User unknown."

@example.net			error:nouser User unknown

Please note: the information on this page applies to ITS web hosting plans. It may or may not apply to other environments. If you are looking for a feature described here, or better support from your hosting provider, please consider hosting your site with ITS!

1555 N Naperville/Wheaton Road, Suite 107
Naperville, IL 60563
phone 630.420.2550
fax 630.420.2771