使用正则表达式的 postfix smtp_generic_maps

使用正则表达式的 postfix smtp_generic_maps

我刚开始尝试使用 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 手册明确指出了何时禁止在regexppcre表中进行插值(主要是因为作者认为在这种情况下使用插值是不安全的)。如果相关映射没有说明禁止,则默认可以使用插值。

您可以使用 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会显示说明。

相关内容