我有4台服务器。prod1.example.com、prod2.example.com、dev1.example.com 和 dev2.example.com。他们都将邮件发送到 smtp.example.com。该服务器进行中继。现在我希望 dev1 和 dev2 将他们所有的电子邮件发送到 [email protected],但发送到 [email protected] 的电子邮件除外。来自 prod1 和 prod2 的电子邮件不受任何限制地转发。
我在访问文件中读到,您可以定义服务器必须由过滤器处理,而不是简单的 RELAY(使用 FILTER foo:bar)。我找不到我需要如何以及在哪里定义这个 foo (运输)和 bar (目的地)。所有这些不同的参数都让我感到困惑。不同文件的处理顺序是什么?
有人可以帮帮我吗?
我不是这方面的专家,但我最近一直在弄乱 Postfix,至少可以把你推向正确的方向。
使用后缀,您可以使用别名并将一个地址或一堆地址映射到另一个地址。您可能想要的是 recipient_canonical 映射:
http://www.postfix.org/ADDRESS_REWRITING_README.html#canonical
授予使用此方法意味着您必须将所有可能的地址放入文件中,以确保向 [email protected] 以外的任何地址发送电子邮件到 [email protected],但通过映射您可以使用正则表达式。
https://superuser.com/questions/353488/regex-multiple-catch-all-setup-in-postfix
我的建议是在 Stackoverflow 上询问一个简单的正则表达式来检查地址是否不等于 [email protected],然后发送到 [email protected]。这意味着所有其他地址都将通过此检查,因此会转到 [email protected],而 [email protected] 会失败,因此只会被发送到预期的地址。
希望这可以帮助您朝着正确的方向前进,您的任何问题我都会尽我所能回答。
你的问题可以用这个伪代码来表达
不幸的是,postfix 没有用于处理限制和转发的通用语言(例如用于清漆配置的 vcl)。因此,我们可以尝试使用 postfix 的哈希表功能来解决它。我有两个想法如何解决这个问题。
多端口解决方案
我假设,(默认情况下)您的开发和生产服务器使用相同的端口(端口 25)连接到 smtp.example.com。如果您可以修改代码并调整防火墙限制,那么 dev1 和 dev2 应该使用不同于 25 的端口(例如端口 2525)连接到 smtp.example.com,那么您可以采用简单的解决方案。如果这种情况不可行,您可以跳过这个想法并转到解决方案 2。
要允许开发服务器通过端口 2525 连接到 postfix,请设置另一个 smtpd 实例并添加此行
master.cf
现在,内容
/etc/postfix/devbox
现在,prod 服务器不会像上面那样得到过滤器,因为它们是通过端口 25 连接到 postfix 的。所以,它可以像以前一样通过 postfix。
限制类解决方案
如果第一个想法这样的场景是不可能的,那么你可以通过限制类来实现它。为此,您可以使用称为限制类的后缀功能。看
在 main.cf 添加这一行
内容
/etc/postfix/emailrouting
内容
/etc/postfix/devbox