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

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

我需要通过 header_checks 查找执行自定义算法。

我已配置smtpd_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)

我需要建立一种机制来重写...电子邮件地址的 md5sum 在哪里(出于安全原因)。(Authenticated sender: [email protected])(Authenticated sender: XXXXXX)XXXXXX

我可以通过header_checks查找表来做到这一点吗?

我知道这是可能的,通过一个外部守护进程(例如 php 或 perl 脚本)充当TCPSOCKETMAP查找表类型的服务器,但是否有更简化的机制来实现这一点?

答案1

限制:对于此解决方案,您必须列出所有用户及其 md5。除 tcptable/外部守护进程解决方案外,不支持 MD5 计算大多数后缀表

您可以使用 pcre 表和 header_checks 功能来实现这一点。在 header_check 表中指定此行。我在 pcre 类型的表中测试了这个表达式。

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

参考:手册 header_checks|人 pcre_table

相关内容