1.4. 用 virtusertable 管理虚拟域

如同Apache一样,sendmail也允许使用虚拟主机功能,这是通过FEATURE(virtusertable)功能实现的,而虚拟主机的文件缺省是/etc/mail/virtusertable。这个文件的形式类似于aliases文件,即:左地址 右地址 ,中间用Tab键分开。还需要注意的是,虚拟域(左地址的域名),应该属于本机接收之列

joe@yourdomain.com      jschmoe                         1
bogus@yourdomain.com    error:nouser No such user here  2
@testdomain.com         test@mydomain.com               3
@yourdomain.com         %1@othercompany.com             4
1

这样一行意味着本来应该发送给 joe@yourdomain.com 的邮件现在要发送给本机的 用户 jschmoe。

2

发向 bogus@yourdomain.com 的邮件,返回错误信息。

3

意味着所有发往 xxx@testdomain 的邮件都会被发送到 test@mydomain.com。

4

代表参数转义,例如 user1@yourdomain.com 的邮件被发送到user1@othercompany.com。

aliases 文件同样可以将本地用户,映射到其它地址,那么和 virtusertable 的优先级如何?[1]

  1. 当接收者邮件地址的域部分在 /etc/mail/local-host-names 中又在/etc/mail/virtusertable中时,优先检查virtusertable文件,应用该文件中的定义规则.

  2. 要应用virtusertable规则,则接收者邮件地址的域部分必须在 /etc/mail/local-host-names 文件中存在

  3. 若接收者邮件地址的域部分在 /etc/mail/local-host-names 文件中但不在 virtusertable 文件中有相应的定义则先只应用 aliases 中的定义去扩展别名,一旦扩展出的别名接收者邮件的域部分在 virtusertable 中有定义行时则决不再别名下去,马上运行virtusertable中的定义规则。