我希望更新我的 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
等等),仅这样设置就可能使您的服务器成为开放中继。