Postfix:如何仅对特定域应用 header_checks?

Postfix:如何仅对特定域应用 header_checks?

基本上我想要做的是使用 header_checks 重写发件人:标题,但前提是邮件发送到某个域。

header_check 的问题在于我无法检查 To: 和 From: 标题的组合。

现在我想知道是否可以将 header_checks 与 smtpd_restriction_classes 或类似的东西结合使用。

我在网上搜索时发现了很多有关 header_checks 和多个 header 字段的信息。所有这些信息基本上都告诉我,不能将两个 header 组合起来进行检查。但我没有找到任何信息,说明是否可以仅在满足某个条件(例如,邮件发送到 example.com)时才进行 header 检查。


编辑

在进行更多研究时,我发现了以下内容文章建议在 postfix master.cf 中添加一个服务,使用 transportmap 将域的邮件传递给该服务,并使用 -o 定义单独的 header_check。

问题是我无法让它工作......

到目前为止我所做的就是将服务添加到master.cf:

example      unix  -       -       n       -       -       smtpd
    -o header_checks=regexp:/etc/postfix/check_headers_example

将以下行添加到传输图中:

example.com                 example:

最后但并非最不重要的一点是,我有两个用于标头检查的正则表达式文件,一个用于新添加的服务,一个用于将答案重定向到重写的域。

check_headers_示例:

/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2

显然如果有人回答,邮件就会进入涅槃状态,因此我在主 postfix 进程中定义了以下 check_headers:

/To:(.*)<(.*)@mydomain.example.com>(.*)/ REDIRECT [email protected]$2

不知何故,传输被忽略了。任何帮助都值得感激。


编辑2:

我仍然被困住了...我确实尝试了以下操作:

smtpd_restriction_classes = header_rewrite 
header_rewrite = regexp:/etc/postfix/rewrite_headers_domain 
smtpd_recipient_restrictions = (some checks) check_recipient_access hash:/etc/postfix/rewrite_table, (more checks) 

存在rewrite_table以下条目:

/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2 

我得到的只是NOQUEUE: reject: 451 4.3.5 Server configuration error。我找不到任何关于如何做到这一点的资源,但有些人说这是不可能的。


编辑3:

我问这个问题的原因是,我们有一位客户(假设为 customer.com),他使用一些别名将邮件转发到一个域,假设为 example.com。

example.com 的邮件服务器不接受来自发件人@example.com 的任何外部服务器的邮件。

因此,从 example.com 发往[电子邮件保护]最终都会被拒绝。

example.com 的邮件服务器不可能出现异常。

我们并没有真正解决这个问题,但会尝试使用列表(mailman)而不是别名来解决这个问题。但这不是一个好办法,也不是真正的解决方案。

我将非常感激所有关于如何以适当方式完成此事的建议。

答案1

我不确定您是否能够实现您想要的。我正在测试类似的东西,需要在每个域的基础上进行关键字过滤等,并且能够在每个域上使用 header_checks,或者使用 postfix 的多实例功能对我想要的域使用 header_checks。

您创建一个实例,只需更改该特定实例上的 smtp 端口。您在主实例上使用 transport_maps 将特定域的电子邮件路由到辅助实例的 smtp 端口。并在那里执行所有 header_checks 并转发电子邮件!

干杯!

答案2

您可以设置一个新服务器,使用传输文件路由您想要处理的所有域,然后在新服务器上应用 header_checks 规则。

相关内容