这听起来有点让人头疼,但是我们正在从 Sendmail 服务器转移到 Postfix 服务器来处理我们网络上的邮件路由,有选择地确定哪些地址导致邮件被路由到不同的位置(或者只是简单地重写到不同的@domain)。因此,该系统处理的域在virtual_alias_domains
列表中。
问题是,我们有一些我们想要始终拒绝的地址,并且我们还在virtual_alias_domains
配置末尾的全部内容中看到了这些地址。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_restrictions
以及配置中提到的smtp_relay_restrictions
文件... check_recipient_access hash:/etc/postfix/recipient-access ...
问题是,当发往该目标的邮件被传递到邮件服务器时,并且在它重写并中继到链中的下一个链接之前,我们希望它返回“拒绝”或类似的“不允许”响应。然而,在处理时,通过使用 进行测试sendmail -bv [email protected]
,Postfix 说邮件是可以投递的(即使没有尝试投递)——而不是“拒绝”之类的。
我不确定在哪里设置这样的“拒绝”规则。我们似乎在 Sendmail 系统中完成了这个“工作”,但我们想摆脱那个邪恶的系统并用 Postfix 系统代替它。
请注意,我们正在尝试尽可能地匹配 Sendmail 配置。除了拒绝某些地址外,我们目前一切正常,但不知道如何继续......
我终于找到了解决方案,但我不得不去
#postfix
Freenode 上的 IRC 频道获取它。他们建议改用header_checks
正则表达式或类似方法正确处理标头以确定拒绝策略。所以,我做到了。
header_checks = regexp:/etc/postfix/header_checks
我在文件中放置main.cf
了 PostFix,然后在文件中设置如下规则/etc/postfix/header_checks
:这可以扩展为检查某些“发件人”字段或标题中的其他项目。话虽这么说,您必须稍微了解一下您的正则表达式才能使其正常工作。您可以使用
/^From: [email protected]/
From 字段或任何内容,但您需要/^
正则表达式开头的部分才能正常运行。遗憾的是,这没有更清楚地记录,但我能够用 解决这个问题
header_checks
,所以这算是一个答案。