Postfix:拒绝某些收件人地址,即使它们列在虚拟别名映射中

Postfix:拒绝某些收件人地址,即使它们列在虚拟别名映射中

这听起来有点令人头疼,但我们正在从 Sendmail 服务器转移到 Postfix 服务器来处理网络上的邮件路由,有选择地确定哪些地址会导致邮件被路由到不同的位置(或只​​是简单地重写到不同的 @domain)。因此,此系统处理的域在列表中virtual_alias_domains

问题是,我们有一些地址我们总是想拒绝,而且我们virtual_alias_domains请参阅配置末尾的 catch-alls中的地址。我们主要执行以下操作,并在virtual_alias_maps指令中引用此文件:

/etc/postfix/virtusertable:
    ...
    @domain.tld            @internal.domain.tld

我们希望能够REJECT同时执行“收件人根据策略拒绝”的消息,因此我们尝试将其表示如下:

/etc/postfix/recipient-access:
    [email protected]    REJECT Recipient rejected by policy.
    baduser@              REJECT Recipient rejected by policy.

以及配置中引用的文件smtpd_recipient_restrictionssmtp_relay_restrictions... check_recipient_access hash:/etc/postfix/recipient-access ...

问题是,当发往该目标的邮件被递送到邮件服务器,并在重写并转发到链中的下一个链接之前,我们预计它会返回“已拒绝”或类似的“不允许”响应。然而,当使用 进行测试时,Postfix 表示邮件是可递送的(即使没有尝试递送) - 而不是“已拒绝”或类似的。sendmail -bv [email protected]

我不知道该如何设置这样的“拒绝”规则。我们似乎在 Sendmail 系统中已经实现了这一点,但我们想摆脱这个邪恶的系统,用 Postfix 系统取而代之。

请注意,我们正在尝试尽可能地匹配 Sendmail 配置。我们现在除了拒绝某些地址外,一切正常,但不确定如何继续......

答案1

我终于找到了解决方案,但我不得不去#postfixFreenode 上的 IRC 频道获取它。他们建议改用header_checks正则表达式或类似方法正确处理标头以确定拒绝策略。

header_checks = regexp:/etc/postfix/header_checks所以,我这样做了。我在PostFix 文件中放置了以下main.cf内容,然后在/etc/postfix/header_checks文件中设置了如下规则:

/etc/postfix/header_checks:
    /^To: [email protected]/    REJECT Recipient rejected by policy.
    /^To: baduser@/              REJECT Recipient rejected by policy.

这可以扩展以检查某些“发件人”字段或标题中的其他项目。话虽如此,您必须对正则表达式有一点了解才能使其工作。您可以将其用于发件人字段或任何其他内容,但您需要正则表达式开头的部分才能正常工作。/^From: [email protected]//^

遗憾的是,没有更清晰的记录,但我能够解决这个问题header_checks,所以这算是一个答案。

相关内容