我以为我了解“别名域”,因为它只是另一个域的别名! 所以,当我build立一个像“[email protected]”的邮箱,并添加“alias.com”作为“main.com”的域别名时,地址“[email protected]”也将工作…但没有!
所以,我已经添加了这些域名:
我已经创build了这个邮箱:
然后我映射这些别名域:
然后当我发送邮件到[email protected]我收到此错误:
Recipient address rejected: User unknown in virtual mailbox table (state 13).
我不想为每个域创build一个别名,因为我有一些。 我也不想使用通配符(如info @ *),因为还有其他域不是main.com别名
那么…究竟是什么呢?
解释在文档中: http : //www.postfix.org/VIRTUAL_README.html#virtual_alias
你想“别名邮箱”又名virtual_mailbox_alias和virtual_mailbox_maps,但谈论“别名域”: http : //www.postfix.org/ADDRESS_CLASS_README.html#virtual_alias_class
将alias.com添加到virtual_alias_domains是正确的第一步,但这只是告诉Postfix您想要使用该域别名。 它没有说别名应该是什么。 为此,您需要使用虚拟别名地图。
首先,在main.cf添加如下内容:
virtual_alias_domains = alias.com virtual_alias_maps = hash:/etc/postfix/virtual
添加virtual_alias_maps会得到一个用作虚拟别名映射的文件( /etc/postfix/virtual )。 但是你把那个文件放在什么地方? 根据虚拟(5)手册 :
postmap(1)命令的input格式如下:
pattern address, address, ...当模式匹配邮件地址时,将其replace为相应的地址。
和
使用DB或DBM等索引文件或NIS,LDAP或SQL等联网表格进行查找时,每个user @ domain查询将生成一系列查询模式,如下所述。 在尝试下一个查询模式之前,每个查询模式都会发送到每个指定的查找表,直到find匹配项。
…
@domain address, address, ...redirect邮件给域中的其他用户来解决。
和
查找结果受到地址重写的影响:当结果具有
@otherdomainforms@otherdomain,结果成为其他otherdomain的相同用户。 这仅适用于多地址查找结果中的第一个地址。
因此,把它放在/etc/postfix/virtual中将实现你想要的全域别名:
# map any <user>@alias.com to the matching <user>@main.com @alias.com @main.com
那么,由于该文件是一个哈希表,您需要运行postmap ( 说明 ,手册页 ):
postmap /etc/postfix/virtual
您可以在Postfix Virtual Domain HOWTO中find关于虚拟域的更多信息,以及Postfix Address Rewriting HOWTO中的别名。
@Josh M.
我不知道这是正确的方法和/或良好的做法,但我使用这样的东西:
virtual_alias_maps = regexp:/etc/postfix/domain_rewriting pgsql:/etc/postfix/pgsql/ virtual_alias_maps.cf $ cat /etc/postfix/domain_rewriting /^(.*)@domain1.com$/ ${1}@domain2.com
这是@ sam-hanes的答案的简短版本(对我有效)
在你的virtual_alias_maps中添加:
@from.domain <tab> @to.domain
在命令行中执行:
postmap /path/to/yourvirtualalismapsfile
在你的main.cf文件中添加:
virtual_alias_domains : from.domain
virtual_alias_domains告诉postfix,邮箱forms为[email protected]的所有邮箱地址都是别名。