配置 postfix 以捕获所有域的所有电子邮件并转发给本地用户

配置 postfix 以捕获所有域的所有电子邮件并转发给本地用户

我想配置 Postfix(在 Ubuntu 上)来捕获所有域的所有电子邮件并将其存储在本地。

我会用它来测试。被测应用程序会向随机地址发送电子邮件([电子邮件保护][电子邮件保护]等等),并且我想在本地(thunderbird)查看这些电子邮件。

我已经知道 main.cf 中的以下内容任何用户@我的目的地至本地用户:

local_recipient_maps=
luser_relay = localuser

但我想转发任何用户@任何域对于本地用户来说也是如此。

最简单的 Postfix 配置是什么?

谢谢你!

答案1

我发现了另一个可行的配置:将“mydestination”指定为接受任何域的正则表达式表。

主文件:

local_recipient_maps=
luser_relay = riskop
mydestination = regexp:/etc/postfix/match_all_destination_re

match_all_destination_re(//匹配所有内容,结果无关紧要):

// this_can_be_anything

我认为这个解决方案比 Esa 的“覆盖 Postfix 的内置默认传输:nexthop”解决方案更直接。

请注意,除了“regexp”表格式,您还可以使用与 perl 兼容的“pcre”格式表。这可能会带来更好的性能(这在我的用例中绝对不是问题)。但是在这种情况下,您需要 Postfix 中的 pcre 支持。本例中的配置:

主文件:

local_recipient_maps=
luser_relay = riskop
mydestination = pcre:/etc/postfix/match_all_destination_re

match_all_destination_pcre(//匹配所有内容,结果无关紧要):

// this_can_be_anything

答案2

这是一个好的开始!虽然可能还有其他方法,但我将从你开始的地方继续,即

local_recipient_maps =
luser_relay = localuser

在这种情况下,您只需将所有域名视为在 中进行处理即可$mydestination

transport:nexthop可以使用以下方法覆盖 Postfix 的内置默认选择运输地图:

transport_maps(默认:空)

可选查找表,其中包含从收件人地址到(消息传递传输、下一跳目的地)的映射。请参阅运输(5) 了解详情。

指定零个或多个type:table查找表,以空格或逗号分隔。将按指定顺序搜索表,直到找到匹配项。如果您将此功能用于本地文件,请 postmap /etc/postfix/transport在进行更改后运行。

在您的中main.cf,添加transport_maps = hash:/etc/postfix/transport

将这/etc/postfix/transport两者结合起来:

  • local_transport(默认:local:$myhostname

    mydestination这是最终投递到 列出的域以及与 或[ipaddress] 匹配的目的地 的默认设置 。默认的下一跳目的地是 MTA 主机名。$inet_interfaces$proxy_interfaces

  • * transport:nexthop

    特殊模式*代表任何地址(即,它充当通配符模式,并且对于 Postfix 传输表是唯一的)。

结果:* local:$myhostname

请将这种非常规配置保留在您的实验室内。

相关内容