参考: http://davidsj.co.uk/blog/setup-virtual-domains-in-postfix-without-a-database/

  1. 创建用户,并修改为指定的 uid, gid
    # useradd -m vmail
    # usermod -u 5000 vmail

    # groupmod -g 5000 vmail

  2. 修改 /etc/postfix/main.cf

添加如下行:

virtual_mailbox_domains = /etc/postfix/vhosts.txt
# virtual_mailbox_domains = example1.com, example2.com, example3.com
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmaps.txt
virtual_uid_maps = static:5000 
virtual_gid_maps = static:5000 
virtual_alias_maps = hash:/etc/postfix/valias.txt
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:115
virtual_gid_maps = static:115
virtual_alias_maps = hash:/etc/postfix/virtual
vhosts.txt 文件内容为域名列表,每行一个邮件域名
vmaps.txt 文件内容为映射列表,例如:
joe@domain1.internal domain1.internal/joe/
pete@domain2.internal domain2.internal/pete/

可以设置一个全局抓取的地址,使所有那个域名下的邮件都被接收到指定的邮件夹下。
@domain1.internal domain1.internal/catchall/
valias.txt 和 vmaps.txt 类似, 但是可以设置转发到多个目的地,例如:
tom@domain1.internal joe@domain1.internal, pete@domain2.internal
修改完以上文件后,都要对对应的文件做 postmap,以生成对应的 Berkeley DB 文件。 
postmap /etc/postfix/vmaps.txt
postmap /etc/postfix/valias.txt

重启 postfix 后,即可生效。