我们有一些外部系统从我们的电子邮件中读取,有些正在绊倒别人。 基本上我需要做的是取代一个电子邮件主题,如:
[RT #179497] Internal: blah blah
同
[RT 179497] Internal: blah blah
所以放下哈希。 有谁知道正则expression式来实现这个postfix header_checks?
有关示例,请参阅header_checks(5) ,有关其他信息,请参阅http://www.postfix.org/BUILTIN_FILTER_README.html#limitations 。
在提到的手册页中修改示例并不难:
/etc/postfix/main.cf文件:
header_checks = pcre:/etc/postfix/header_checks.pcre
/etc/postfix/header_checks.pcre:
/^Subject: \[RT #(\d)\] Internal: (.+)$/ REPLACE Subject: [RT $1] Internal: $2
它可能会做得更优雅或更短,但这是你现在的工作。
@joschi添加到答案(我知道这是迟到,但其他人可能会发现这个信息有帮助):你表示,你只是想重写某些电子邮件地址的邮件标题。 这有点棘手:
您需要设置单独的传输,以便您可以使用此传输为消息指定不同的操作:
默认位置: /etc/postfix/transport
[email protected] rewriter: [email protected] rewriter: .anotherdomain.com rewriter:
这指示postfix使用rewriter传输处理发往这些位置的邮件。 然后,在/etc/postfix/master.cf ,可以添加:
rewriter unix - - - - - smtp -o smtp_header_checks=regexp:/etc/postfix/rewrite_headers
最后,指定在/etc/postfix/rewrite_headers文件中实际执行什么样的重写。 它与默认的header_checks文件具有相同的语法,它只是一个自定义版本,仅对通过rewriter传输的邮件有效。
请注意,如果您有任何types的内容filter处于活动状态(例如Amavis),则可能无法正常工作,但在我的情况下,我正在运行不同的操作。