我刚开始尝试使用 postfix 重写发件人地址。我运行一个带有debian-7.11
和 的服务器postfix-2.9.6
。
内容/etc/postfix/main.cf
:
[...]
smtp_generic_maps = hash:/etc/postfix/generic
[...]
内容/etc/postfix/generic
:
[email protected] [email protected]
[email protected] [email protected]
到目前为止一切正常。当用户santiago
发送电子邮件时,它会按[email protected]
我想要的方式发送。
我的问题是,我希望任何用户都可以执行此重写,而无需向中添加更多行/etc/postfix/generic
。所以我想知道是否可以通过某种正则表达式来完成,例如:
(.*)@$hostname [email protected]
这有可能吗?
感谢您的帮助
圣地亚哥
答案1
Postfix 手册明确指出了何时禁止在regexp
或pcre
表中进行插值(主要是因为作者认为在这种情况下使用插值是不安全的)。如果相关映射没有说明禁止,则默认可以使用插值。
您可以使用 SQL 查找进行更复杂的映射,但只要您的主机名是固定的并且只有您拥有的域的子域,正则表达式就完全足够了。
为 postfix 安装合适的正则表达式模块
apt install postfix-pcre
添加新/etc/postfix/generic.pcre
表:
/([a-z]+)@([^.]+)\.caoba\.fr/ [email protected]
更改表类型(这将取代您现有的hash
类型映射!):
postconf -e smtp_generic_maps=pcre:/etc/postfix/generic.pcre
您可能仍想检查是否已append_dot_mydomain
启用(据我所知以前默认启用)。Debian 安装了所有相关手册,因此man 5 generic
会显示说明。