如何在查找表机制中执行外部程序?

我需要通过header_checks查找执行一个自定义的algorithm。

我有configurationsmtpd_sasl_authenticated_header = yes在标题中看到什么用户发送消息,例如:

Received: from [0.0.0.0] (unknown [192.168.255.4]) (Authenticated sender: [email protected]) by smtp.mydomain.com (Postfix) with ESMTP id 08333374399 for <[email protected]>; Tue, 28 Oct 2008 10:45:37 -0400 (EDT)

我需要build立一个机制,将(Authenticated sender: [email protected])重写为(Authenticated sender: XXXXXX) …其中XXXXXX是电子邮件地址的md5sum(出于安全原因)。

我可以通过header_checks查找表执行此操作吗?

我知道这是可能的,通过外部守护进程(例如php或perl脚本)作为TCPSOCKETMAP查找表types的服务器,但有没有一个更简单的机制来实现呢?

限制:对于这个解决scheme,你必须列出你所有的用户和它的md5。 除了ttabletable / external守护进程解决scheme, 大多数后缀表不支持MD5计算

你可以使用pcre table和header_checksfunction来实现这一点。 在header_check表中指定这一行。 我在pcre型表中testing了这个expression式。

 /^(Received: .*Authenticated sender:)(.*?\))(.*)$/ REPLACE $1 md5ofstring) $3 

参考文献: man header_checks | 男人pcre_table