我们有许多外部系统读取我们的电子邮件,有些系统会干扰其他系统。基本上我需要做的是替换电子邮件主题,例如:
[RT #179497] Internal: blah blah
和
[RT 179497] Internal: blah blah
所以删除哈希。有人知道使用 postfix header_checks 实现此目的的正则表达式吗?
答案1
看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
它也许可以做得更优雅或更简短,但这是你现在的工作。
答案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
。
请注意,如果您激活了任何类型的内容过滤器(例如 Amavis),这可能不起作用,尽管在我的情况下我正在运行不同的操作。