postfix 的 check_recipient_access 映射是否允许正则表达式?

postfix 的 check_recipient_access 映射是否允许正则表达式?

我希望更新我的 postfix 配置,以便限制可以发送电子邮件的域。我正在考虑使用 smtpd_recipient_restrictions 和 check_recipient_access,基于以下解决方案:https://serverfault.com/a/412805 这允许使用正则表达式吗?我想说,只向 *@mydomain.com 发送电子邮件,并阻止其他所有人。像这样:

smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipients

收件人为:

*@mydomain.com PERMIT,
* REJECT,

这可行吗?

编辑:我知道使用 transportmap 可以实现这一点,但是我们已经使用 check_recipient_access 来阻止一些 id,并且如果可能的话我宁愿不引入其他配置。

答案1

是的,明白man 5 regexp_table

格式会有所不同,您需要拼出完整的正则表达式:

/.*@example\.com/ OK
/.*/ REJECT

或者更短,

!/.*@example\.com/ REJECT

(默认操作为“未找到”,因此它将继续执行以下smtpd_recipient_restrictions项目并默认允许)。

将其保存到文件中并像这样挂钩:

smtpd_recipient_restrictions =
...
    check_recipient_access regexp:/etc/postfix/my_regexp_recipients.cf,
...

Postfix 自 3.7 版起允许内联指定正则表达式。您的表格非常短,因此您可能最终会得到

smtpd_recipient_restrictions =
...
    check_recipient_access regexp:{ { !/.*@example\.com/ REJECT } },
...

并且没有其他文件。


要小心。你需要*@example.com有其他限制项目。如果您不针对此或其他smtpd_*_restrictions参数采取措施(reject_sender_login_mismatch等等),仅这样设置就可能使您的服务器成为开放中继。

相关内容