我有一个在职的Postfix 配置包含一些本地邮箱、一些本地别名和一些纯虚拟别名域。因为我觉得将所有配置都添加到 很繁琐,所以virtual_alias_domains
我想问:如何通过在 中使用它们来定义它们virtual_alias_maps
?
例子:
### /etc/postfix/main.cf
myhostname = mx.example.com
virtual_alias_domains =
foo.example
bar.example
virtual_alias_maps = hash:/etc/postfix/virtual
### /etc/postfix/virtual
[email protected] [email protected]
@bar.example [email protected]
# this one is missing in virtual_alias_domains and won't work
@baz.example [email protected]
当添加新条目时,baz.example
我可能会忘记将它们列在 中virtual_alias_domains
。这也违反了不要重复自己。
如何摆脱virtual_alias_domains
或“动态编译它”?
http://www.postfix.org/postconf.5.html#virtual_alias_domains说的默认值virtual_alias_domains
是$virtual_alias_maps
:
默认值为 $virtual_alias_maps,以便您可以将有关虚拟别名域的所有信息保存在一个地方。
但这对我来说似乎不起作用。
Jan 31 00:09:25 HOSTNAME postfix/smtpd[5064]: NOQUEUE: reject: RCPT from FROM_HOSTNAME[185.XXX.XXX.XXX]: 454 4.7.1 <FROM_ADDRESS>:
Relay access denied; from=<FROM_ADDRESS> to=<TO_ADDRESS> proto=ESMTP helo=<FROM_HOSTNAME>
(匿名日志,插入换行符以方便阅读)我的实际配置:
# postconf -n | egrep ^virtual_
virtual_alias_maps = hash:/etc/postfix/virtual
# postconf | egrep ^virtual_alias
virtual_alias_address_length_limit = 1000
virtual_alias_domains = $virtual_alias_maps
virtual_alias_expansion_limit = 1000
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_alias_recursion_limit = 1000
不幸的是我不知道转储的配置virtual_alias_domains
后变量扩展。
答案1
我也遇到了同样的问题。 这个答案是正确的,但我不太明白它的意思。
virtual_alias_maps
要对和使用单个文件virtual_alias_domains
,您需要分别包含要转发的每个域,不带@
。为了让 Postfix 满意,键和值都是必需的,但对于这些域条目,值可以是您想要的任何值,因为 Postfix 只检查键(域)是否存在。
例子/etc/postfix/virtual
:
# These are the virtual aliases:
[email protected] [email protected]
@bar.example [email protected]
@baz.example [email protected]
# Repeat the bare domains:
foo.example LITERALLY_ANYTHING
bar.example LITERALLY_ANYTHING
baz.example LITERALLY_ANYTHING
您可以保留一个仅包含别名映射的文件,并通过脚本运行它以提取域并创建组合输出文件,但此时您也可以将域传递给postconf -e
,或将域条目放在单独的文件中并在其上运行postmap
,然后告知virtual_alias_domains
使用该文件。对我来说,手动添加额外的域条目很好,但将它们全部放在一个地方会更好。