后缀:如何将header_checks仅应用于特定的域?

基本上我想要做的是重写From:Header,使用header_checks,但只有当邮件去到某个域。

header_check的问题是,我无法检查To:和From:Headers的组合。

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

在searchnetworking时,我发现了很多关于header_checks和多个头域的信息。 他们都基本告诉我,不能把两个头部结合起来检查。 但是我没有find任何信息,如果只能做一个头部检查,如果一个条件(如邮件去example.com)得到满足。


编辑

在做更多的研究时,我发现下面的文章build议在postfix master.cf中添加一个Service,使用一个transportmap将Domain的邮件传递给该服务,并且使用-o定义一个单独的header_check。

事情是,我不能得到它的工作…

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

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

将followin行添加到transportmap:

 example.com example: 

最后但并非最不重要我有两个正则expression式文件用于头部检查,一个用于新添加的服务,另一个用于将redirect到重写的域的答案。

check_headers_example:

 /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写入[email protected]的所有邮件最终都将被拒绝。

example.com的邮件服务器上的例外是不可能的。

我们并没有真正解决这个问题,但会尝试通过使用列表(mailman)而不是别名来解决这个问题。 这虽然不是很好,也不是一个真正的解决scheme。

我会很感激所有的build议如何以适当的方式完成这一点。

我不确定你是否能够达到你想要的。 我正在testing一个类似的东西,需要每个域的关键字过滤等,并能够使用header_checks每域或我想要使用后缀的多实例function的域。

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

干杯!