我正在寻找一个简单的 Postfix 服务器,它可以修改某些特定 SMTP 消息的内容和收件人。
到目前为止,我对自己的方法并不是很有信心,并且觉得我缺少一些关于 Postfix 如何做事的基础知识,所以我希望能得到一些指导。
语境
我工作的组织的设置最初对像我这样从未真正使用过 Postfix 的人来说有点令人生畏,所以希望我的解释是有道理的。
我能够了解到的是,DMZ 网络中的一台 Linux 机器{1}
正在运行一个 Postfix 服务器,并且是所有传入电子邮件都集中到的地方。
然后,服务器在其文件中定义了一些规则,这些规则根据域(例如, )/etc/postfix/transport
确定要将消息中继到哪些其他邮件服务器。如果域只是基本名称(例如),则消息将传递到员工登录的主电子邮件服务器并检查他们的邮件等。{3..N}
@domain1.company.org
@domain2.company.org
@company.org
{2}
INTERNET | DMZ | INTERNAL
SMTP ---|---> {1} ---|---> {2}
\---> {3..N}
我提到的“特定 SMTP 消息”是来自一些工程师正在设置的一些简单设备的集合。这些设备在可以发送的内容上有些限制。
工程师:我无法更改主题的内容或电子邮件正文的某些区域。
当这些设备发送消息时,我的理解是网络会将消息汇集到{1}
,然后将消息中继到适当的电子邮件服务器。
要求的解决方案
工程师:我们是否可以要求当来自特定地址的电子邮件具有可预测的简单主题和主体时,在转发给收件人之前由我们的系统拦截和修改?例如在主题和正文中,将发送“泄漏”一词,我们可以在转发消息之前将其更改为“冷冻机”吗?
因此,我基本上需要在将邮件转发到任何其他电子邮件服务器之前修改邮件的内容。在消息到达之前{1}
或附近需要发生一些事情。{1}
{2..N}
到目前为止我的方法
鉴于一切顺利{1}
,并且我不想对邮件通过这台机器的方式进行任何重大更改,我想我会启动另一台 Linux 机器来运行另一台 Postfix 服务器(我将调用它mailmunger
,如图所示作为{1a}
)。
然后,工程师将配置设备并指定它将发送的消息的收件人,例如[email protected]
.
最后,我将添加另一条规则(/etc/postfix/transport
我认为是在 中),{1}
以便将邮件*@mailmunger.company.org
转发到我的新 Linux 机器。
然后{1a}
,我会使用诸如队列后内容过滤器之类的东西来处理消息,根据请求修改内容,从收件人地址中删除mailmunger.
,然后将消息传递回{1}
.
这是因为 Postfix server 的relay_host
属性{1a}
会被配置为 server 的名字{1}
。
INTERNET | DMZ | INTERNAL
SMTP ---|---> {1} ---|---> {2}
/ ^ \---> {3..N}
| |
v /
{1a}
我认为这种方法尽可能安全,因为它会限制编写错误的过滤器的影响。但是,也许我在这个设计中犯了一个我没有注意到的错误。
我希望所有正常的邮件流都应该按预期继续,并且只有邮件[email protected]
会卡在我的新mailmunger
机器上。
问题
- 我是否在使用“队列后内容过滤器”的正确轨道上?或者我应该看一个不同的机制,比如队列前内容过滤器?
{1a}
服务器真的需要transport
配置它的文件吗?还是我误解了该属性的使用?- 这些简单的设备如何知道将 SMTP 消息发送到哪个服务器?
- 有什么我应该注意的问题吗?