SMTP 标头重写规则

SMTP 标头重写规则

我们有一个 SMTP 中继(postfix),我们需要根据某些标准动态重写标头:

如果>标题包含x-自定义标头:类型 1
并且如果>至:@customer1.com
重写>从:<[email protected]>来自:友好名称<[email protected]>

目前我正在使用 3 个实例后多仅针对一次客户端,对规则集的每个组件都有一个 header_check。

但是由于后缀的限制,您不能在同一个规则中同时对 TO 和 FROM 字段进行标头检查,因此这种方法将为每个规则生成/要求一个新实例。

问题是:我该如何有效地扩展它?有没有更好的方法来格式化/利用标头检查。

或者是否有其他系统可以轻松管理 SMTP 中继中标头重写的高级规则集,比如通过 GUI?

要求是针对至少三个具有多个客户端的 x-custom-headers 制定多条规则。

Postfix 配置: 实例 1

#main.cf instance 1:
...
header_checks = pcre:/etc/postfix/header_checks
multi_instance_wrapper = ${command_directory}/postmulti -p --
multi_instance_enable = yes
multi_instance_directories = /etc/postfix-instance2 /etc/postfix-instance3
...
#header_checks instance 1
/^x-custom-header: type 1/ FILTER smtp:127.0.0.1:10025
#need to add this next /^x-custom-header: type 2/ FILTER smtp:127.0.0.1:10026
#need to add this next /^x-custom-header: type 3/ FILTER smtp:127.0.0.1:10027

实例 2

#master.cf instance 2
127.0.0.1:10025      inet  n       -       n       -       -       smtpd
#main.cf instance 2
...
queue_directory = /var/spool/postfix-instance2
data_directory = /var/lib/postfix-instance2
header_checks = pcre:/etc/postfix-instance2/header_checks
multi_instance_name = postfix-instance2
multi_instance_enable = yes
...
#header_checks instance 2
/^To: (.*)@customer1.com/ FILTER smtp:127.0.0.1:10028

实例 3

#master.cf instance 3
127.0.0.1:10028      inet  n       -       n       -       -       smtpd
#main.cf instance 3
...
queue_directory = /var/spool/postfix-instance3
data_directory = /var/lib/postfix-instance3
header_checks = pcre:/etc/postfix-instance3/header_checks
multi_instance_name = postfix-instance3
multi_instance_enable = yes
...
#header_checks instance 3
^From: (.*?)@mycompany.com/ REPLACE From: Friendly Name <[email protected]>

答案1

我采取了不同的方法后缀管道按照以下一些资源中所建议的脚本:

只是因为我在尝试避免循环时遇到了这个问题:

对于我的默认 postfix 的 master.cf

external unix - n n - - pipe flags=Fq user=mail null_sender= argv=/opt/scripts/external.sh ${recipient} ${domain} ${sender}

我必须添加第二个实例的 main.cf authorized_submit_users = mailuser,并在 master.cf 中监听单独的端口127.0.0.1:10025 inet n - n - - smtpd

然后我仍然忙于编写 bash 脚本的逻辑,但我想我会使用与这个帖子,但值得注意的是 sendmail 命令使用第二个实例/usr/sbin/sendmail -G -i -t -C /etc/postfix-sender/main.cf

相关内容